571 lines
21 KiB
C#
571 lines
21 KiB
C#
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;
|
|
}
|
|
}
|
|
} |