old_flsystem/应用/SignContacts/MainForm.cs

571 lines
21 KiB
C#
Raw Normal View History

2022-09-20 03:10:29 +00:00
using Api.Framework;
using Api.Framework.Enums;
using Api.Framework.Model;
using Api.Framework.SDK;
using System.Text;
using Api.Framework.Tools;
using Chat.Framework;
using Chat.Framework.WXSdk.Implement;
using DevExpress.XtraEditors;
using SignContacts.Entitys;
using SignContacts.Enums;
using SignContacts.Properties;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using UI.Framework.Forms;
using System.Reflection;
using System.Data;
namespace SignContacts
{
public partial class MainForm : BaseForm
{
SqlSugarClient session = null;
public MainForm()
{
InitializeComponent();
this.Text = Resources.MainFormTitle;
session = ApiClient.GetSession();
}
public void Initialization()
{
try
{
var caption = string.Empty;
switch (radioGroup1.SelectedIndex)
{
case 0:
caption = "订单笔数低于";
break;
case 1:
caption = "查询次数低于";
break;
case 2:
caption = "提现次数低于";
break;
case 3:
caption = "邀请人数低于";
break;
default:
caption = "数量低于";
break;
}
var session = ApiClient.GetSession();
var groups = session.FindSigns(int.Parse(this.radioGroup1.EditValue.ToString()), true);
}
catch (Exception ex)
{
BaseForm.ShowError(ex);
}
}
public void CloseForm()
{
try
{
if (!this.IsDisposed)
{
this.Invoke(new Action(delegate
{
this.Close();
this.Dispose();
}));
}
}
catch (Exception ex)
{
ShowError(ex);
}
}
private void MainForm_Load(object sender, EventArgs e)
{
try
{
te_NotesFormat.Text = Class1.Config.NotesFormat;
bc_NotesSwitch.Checked = Class1.Config.NotesSwitch == SwitchType.;
te_NewFriend.Text = Class1.Config.NotesFormat_NewFirend;
te_QueryNotOrder.Text = Class1.Config.NotesFormat_QueryNotOrder;
te_FirstOrder.Text = Class1.Config.NotesFormat_FirstOrder;
_RefreshData();
}
catch (Exception ex)
{
ShowError(ex);
}
}
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
try
{
if (listView1.SelectedItems.Count == 0)
{
_ButtonEnabled(false);
return;
}
else
{
var id = long.Parse(listView1.SelectedItems[0].SubItems[0].Text);
List<fl_plugin_signcontacts_sign_info> signInfoS = null;
if (listView1.Tag != null)
signInfoS = listView1.Tag as List<fl_plugin_signcontacts_sign_info>;
else
signInfoS = session.Find<fl_plugin_signcontacts_sign_info>("select * from fl_plugin_signcontacts_sign_info where signtype = @signtype order by amount asc", new { signtype = xtraTabControl1.TabIndex });
if (signInfoS != null && signInfoS.Count != 0)
{
var signInfo = signInfoS.FirstOrDefault(f => f.id == id);
if (signInfo == null) return;
_FillDate(signInfo);
_ButtonEnabled(true);
}
}
}
catch (Exception ex)
{
ShowError(ex);
}
}
/// <summary>
/// 填充数据到控件中
/// </summary>
private void _FillDate(fl_plugin_signcontacts_sign_info signInfo)
{
radioGroup1.SelectedIndex = (int)signInfo.signtype;
var variate = string.Empty;
switch ((int)signInfo.signtype)
{
case 0:
variate = Class1.Config.DayVariate;
break;
case 1:
variate = Class1.Config.QueryVariate;
break;
case 2:
variate = Class1.Config.OrderVariate;
break;
case 3:
variate = Class1.Config.RefundVariate;
break;
case 4:
variate = Class1.Config.InviteVariate;
break;
}
textEdit5.Text = variate;
numericUpDown1.Value = (decimal)signInfo.amount;
textEdit4.Text = signInfo.sign;
groupControl4.Tag = signInfo;
}
/// <summary>
/// 按钮状态
/// </summary>
/// <param name="flag"></param>
private void _ButtonEnabled(bool flag)
{
simpleButton2.Enabled = simpleButton3.Enabled = flag;
}
/// <summary>
/// 增加
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void simpleButton1_Click(object sender, EventArgs e)
{
try
{
fl_plugin_signcontacts_sign_info signInfo = new fl_plugin_signcontacts_sign_info();
//if (groupControl4.Tag != null)
// signInfo = groupControl4.Tag as fl_plugin_signcontacts_sign_info;
//else
// signInfo = new fl_plugin_signcontacts_sign_info();
signInfo.id = 0;
signInfo.signtype = (SignType)radioGroup1.SelectedIndex;
signInfo.amount = (long)numericUpDown1.Value;
List<fl_plugin_signcontacts_sign_info> signInfoS = null;
//if (listView1.Tag != null)
// signInfoS = listView1.Tag as List<fl_plugin_signcontacts_sign_info>;
//else
signInfoS = session.Find<fl_plugin_signcontacts_sign_info>("select * from fl_plugin_signcontacts_sign_info where signtype = @signtype order by amount asc", new { signtype = xtraTabControl1.TabIndex });
if (signInfoS != null && signInfoS.Count != 0)
{
var _signInfo = signInfoS.FirstOrDefault(f => f.signtype == signInfo.signtype && f.amount == signInfo.amount);
if (_signInfo != null) throw new Exception("该条件已经存在,无法增加");
}
signInfo.sign = textEdit4.Text.Trim();
session.Insertable(signInfo).ExecuteCommand();
_RefreshData((int)signInfo.signtype);
simpleButton2.Enabled = simpleButton3.Enabled = false;
}
catch (Exception ex)
{
if (ex.Message.Contains("not unique"))
ShowError("数据重复");
else
ShowError(ex);
}
}
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void simpleButton2_Click(object sender, EventArgs e)
{
try
{
fl_plugin_signcontacts_sign_info signInfo = null;
if (groupControl4.Tag != null)
{
signInfo = groupControl4.Tag as fl_plugin_signcontacts_sign_info;
signInfo.signtype = (SignType)radioGroup1.SelectedIndex;
signInfo.amount = (long)numericUpDown1.Value;
signInfo.sign = textEdit4.Text.Trim();
List<fl_plugin_signcontacts_sign_info> signInfoS = null;
if (listView1.Tag != null)
signInfoS = listView1.Tag as List<fl_plugin_signcontacts_sign_info>;
else
signInfoS = session.Find<fl_plugin_signcontacts_sign_info>("select * from fl_plugin_signcontacts_sign_info where signtype = @signtype order by amount asc", new { signtype = xtraTabControl1.TabIndex });
if (signInfoS != null && signInfoS.Count != 0)
{
var _signInfo = signInfoS.FirstOrDefault(f => f.signtype == signInfo.signtype && f.amount == signInfo.amount);
//if (_signInfo != null) throw new Exception("该条件已经存在,无法增加");
}
session.Updateable(signInfo).ExecuteCommand();
_RefreshData((int)signInfo.signtype);
}
}
catch (Exception ex)
{
ShowError(ex);
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void simpleButton3_Click(object sender, EventArgs e)
{
try
{
fl_plugin_signcontacts_sign_info signInfo = null;
if (groupControl4.Tag != null)
{
signInfo = groupControl4.Tag as fl_plugin_signcontacts_sign_info;
session.Deleteable(signInfo).ExecuteCommand();
_RefreshData((int)signInfo.signtype);
}
}
catch (Exception ex)
{
ShowError(ex);
}
}
/// <summary>
/// tab下标改变 (可以当刷新用)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void xtraTabControl1_SelectedPageChanging(object sender, DevExpress.XtraTab.TabPageChangingEventArgs e)
{
_RefreshData(e.Page.TabIndex);
}
/// <summary>
/// 数显数据
/// </summary>
private void _RefreshData(int index = 0)
{
try
{
listView1.Tag = null;
if (groupControl4.Tag == null)
_ButtonEnabled(false);
var signInfoS = session.Find<fl_plugin_signcontacts_sign_info>("select * from fl_plugin_signcontacts_sign_info where signtype = @signtype order by amount asc", new { signtype = index });
listView1.Items.Clear();
foreach (var sign in signInfoS)
{
var item = new ListViewItem();
item.Text = sign.id.ToString();
item.SubItems.Add(sign.amount.ToString());
item.SubItems.Add(sign.sign.ToString());
listView1.Items.Add(item);
}
listView1.Tag = signInfoS;
session.FindSignInfos((SignType)index, true);
}
catch (Exception ex)
{
ShowError(ex);
}
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
SaveConfig();
}
private void SaveConfig()
{
try
{
Class1.Config.NotesFormat = te_NotesFormat.Text;
Class1.Config.NotesSwitch = bc_NotesSwitch.Checked ? SwitchType. : SwitchType.;
Class1.Config.NotesFormat_NewFirend = te_NewFriend.Text;
Class1.Config.NotesFormat_QueryNotOrder = te_QueryNotOrder.Text;
Class1.Config.NotesFormat_FirstOrder = te_FirstOrder.Text;
Util.Save(Class1.Config);
}
catch (Exception ex)
{ }
}
private void radioGroup1_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
var variate = string.Empty;
switch (radioGroup1.SelectedIndex)
{
case 0:
variate = Class1.Config.DayVariate;
break;
case 1:
variate = Class1.Config.QueryVariate;
break;
case 2:
variate = Class1.Config.OrderVariate;
break;
case 3:
variate = Class1.Config.RefundVariate;
break;
case 4:
variate = Class1.Config.InviteVariate;
break;
}
textEdit5.Text = variate;
xtraTabControl1.SelectedTabPageIndex = radioGroup1.SelectedIndex;
}
catch (Exception ex)
{
ShowError(ex);
}
}
private void hyperlinkLabelControl1_Click(object sender, EventArgs e)
{
try
{
if (sender is HyperlinkLabelControl)
{
var label = sender as HyperlinkLabelControl;
if (index == 0)
te_NewFriend.Text += label.Text;
else if (index == 1)
te_QueryNotOrder.Text += label.Text;
else if (index == 2)
te_FirstOrder.Text += label.Text;
else if (index == 3)
te_NotesFormat.Text += label.Text;
else
te_NotesFormat.Text += label.Text;
}
}
catch (Exception ex)
{
ShowError(ex);
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
Class1.Config.NotesSwitch = SwitchType.;
SaveConfig();
if (string.IsNullOrWhiteSpace(Class1.Config.NotesFormat) &&
string.IsNullOrWhiteSpace(Class1.Config.NotesFormat_NewFirend) &&
string.IsNullOrWhiteSpace(Class1.Config.NotesFormat_QueryNotOrder) &&
string.IsNullOrWhiteSpace(Class1.Config.NotesFormat_FirstOrder))
{
throw new Exception("请先设置所有备注格式");
}
if (MessageBox.Show(@"是否同步用户标记?
", "", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
SaveConfig();
button1.Enabled = false;
var t = Task.Run(() =>
{
SyncMembersSign();
try
{
this.Invoke(new Action(() =>
{
button1.Enabled = true;
}));
}
catch (Exception)
{ }
});
}
}
catch (Exception ex)
{
ShowErrorAutoClose(ex);
}
}
#region
private void SyncMembersSign()
{
try
{
var wxs = ChatClient.WXClient.Values.Where(f => f.Status == Chat.Framework.WXSdk.WxStatus.线).ToList();
List<Task> tasks = new List<Task>();
for (int i = 0; i < wxs.Count; i++)
{
var wx = wxs[i];
var client = wx as WXClientImpl_IPAD;
if (client == null) continue;
tasks.Add(Task.Run(() =>
{
if (!client.IsRefreshContact)
client.RefreshContact();
var endTmp = DateTime.Now.AddMinutes(15);
do
{
if (!client.IsRefreshContact)
break;
Thread.Sleep(500);
} while (endTmp >= DateTime.Now);
if (client.Friends == null)
{
EventClient.OnEvent("", $"获取{client.WeixinHao}({client.User.Nick}),好友列表异常,终止同步!");
return;
}
var friends = client.Friends.Where(f => !f.Key.Contains("@") && f.Key != "newsapp" && f.Key != "weixin" && !f.Key.StartsWith("gh_")).Select(f => f.Value).ToList();
if (friends != null && friends.Count != 0)
{
//#region 导出用户
//this.Invoke(new Action(() =>
//{
// gridControl1.DataSource = friends;
//}));
//#endregion
var c = new Class1();
var session = ApiClient.GetSession();
foreach (var friend in friends)
{
var member = session.Find<fl_member_info>("select * from fl_member_info where username = @username", new { username = friend.UserName }).FirstOrDefault();
if (member == null)
{
member = new fl_member_info() { crt_time = DateTime.Now, usernick = friend.NickName, realnick = friend.NickName, robot_name = client.WeixinHao, robot_type = client.WeixinType == WeixinType.QYHook微信 ? ChatType. : ChatType., username = friend.UserName, alipay_name = string.Empty, alipay_num = string.Empty, remark = string.Empty };
member = session.Saveable(member).ExecuteReturnEntity();
}
c.NewUsername(client, member, UserType.);
}
}
EventClient.OnEvent("", $"{client.WeixinHao}({client.User.Nick}),同步好友标记执行完毕!");
}));
Thread.Sleep(10);
}
Task.WaitAll(tasks.ToArray());
}
catch (Exception ex)
{ }
}
#endregion
private void labelControl11_Click(object sender, EventArgs e)
{
}
private void EceToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if (this.gridControl1 == null) throw new Exception("没有需要导出的数据!");
if (XtraMessageBox.Show("确定要将本页面数据导入到Excel内?", "请选择", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
{
var table = this.gridControl1.DataSource as DataTable;
//if (table == null || table.Rows.Count == 0) throw new Exception("没有需要导出的数据!");
this.saveFileDialog1.Filter = "Excel文件(*.xls)|*.xls";
if (this.saveFileDialog1.ShowDialog(this) == DialogResult.OK)
{
DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions();
this.gridControl1.ExportToXls(this.saveFileDialog1.FileName);
XtraMessageBox.Show("恭喜您,已完成数据导出!", "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
catch (Exception vErr)
{
XtraMessageBox.Show(vErr.Message, "导出错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void tabPage3_MouseClick(object sender, MouseEventArgs e)
{
}
public int index = 0;
private void te_NewFriend_Enter(object sender, EventArgs e)
{
index = 0;
}
private void te_QueryNotOrder_Enter(object sender, EventArgs e)
{
index = 1;
}
private void te_FirstOrder_Enter(object sender, EventArgs e)
{
index = 2;
}
private void te_NotesFormat_Enter(object sender, EventArgs e)
{
index = 3;
}
}
}