using Api.Framework.Config;
using Api.Framework.Config;
using Api.Framework.Enums;
using Api.Framework.Model;
using Api.Framework.SDK;
using Api.Framework.Timers;
using Api.Framework.Tools;
using Api.Framework.UIForm;
using Chat.Framework;
using CsharpHttpHelper;
using Api.Framework.Tools;
using SqlSugar;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using ZXing;
using ZXing.Common;
using System.Reflection;
using Chat.Framework.WXSdk;
using System.Threading.Tasks;
using System.Collections.Concurrent;
using SuperSocket.SocketBase;
using System.Text.RegularExpressions;
using System.Security.Cryptography;
using Chat.Framework.PCRobotSDK.WechatEvents;
using PCRobot.Pack;
using SuperSocket.SocketEngine;
using Chat.Framework.PCRobotSDK;
using Chat.Framework.WXSdk.Events;
using Chat.Framework.WXSdk.Implement;
using Chat.Framework.PCRobotSDK.WorkWechatEvents;
using Grant.Framework;
using Newtonsoft.Json.Linq;
using System.Web.Configuration;
using System.Web.Security;
using static Api.Framework.Cps.AlimamaApi;
using Robot.Framework.Entities;
using Chat.Framework.QQSdk.QPlus;
namespace Api.Framework
{
public class ApiClient
{
private static Version _version;
///
/// 当前版本
///
public static Version CurVersion
{
get
{
if (_version == null)
{
string file = Util.MapFile("VersionUpdate.xml");
if (!File.Exists(file)) file = Util.MapFile("OnlineUpdate.xml");
if (!File.Exists(file)) throw new Exception("文件丢失[VersionUpdate.xml],不存在!");
var xml = File.ReadAllText(file).Trim();
if (!string.IsNullOrWhiteSpace(xml))
{
var reg = Regex.Match(xml, @"File\s+?Name=""核心组件""\s+?Version=""(?<版本号>([^""]*?))""");
if (reg.Success)
{
var version = reg.Groups["版本号"].Value.Trim();
_version = Version.Parse(version);
}
}
}
return _version;
}
}
public static SoperSocketServer Server { get; private set; }
public static void StopSocketServer()
{
try
{
if (Server != null)
{
Server.Stop();
Server.NewSessionConnected -= appServer_NewSessionConnected;
Server.SessionClosed -= appServer_NewSessionClosed;
}
}
catch (Exception)
{ }
}
public static bool StartSocketServer(int port, string password)
{
try
{
StopSocketServer();
Server = new SoperSocketServer();
var serconfig = new SuperSocket.SocketBase.Config.ServerConfig();
serconfig.TextEncoding = "UTF-8";
serconfig.Ip = "Any";
serconfig.Port = port;
serconfig.SendBufferSize = 1024 * 40;
serconfig.ReceiveBufferSize = 10240 * 40;
serconfig.MaxRequestLength = 10240 * 40;
serconfig.SendingQueueSize = 50;
Console.WriteLine(serconfig.MaxConnectionNumber);
// serconfig.MaxConnectionNumber = 5000;
//SuperSocket.SocketBase. appServer = new AppServer();
if (!Server.Setup(serconfig)) throw new Exception("监听端口失败,请检查是否关闭防火墙或端口被占用!");
//var cfg = new SuperSocket.SocketBase.Config.ServerConfig();
//cfg.ReceiveBufferSize = int.MaxValue;
//var rfg = new SuperSocket.SocketBase.Config.RootConfig();
////Try to start the appServer
if (!Server.Start()) throw new Exception("初始化端口失败,请检查是否关闭防火墙或端口被占用!");
ApiClient.Setting.ServerConfig.SocketPassword = password;
ApiClient.Setting.ServerConfig.SocketPort = port;
ApiClient.Setting.ServerConfig.SocketIsOpen = true;
//var cfg = Server.Config;
////var rfg = Server.RootConfig;
//Server.Config.ReceiveBufferSize = int.MaxValue;
ChatClient.SocketPassword = password;
Server.NewSessionConnected += appServer_NewSessionConnected;
Server.SessionClosed += appServer_NewSessionClosed;
////SocketCMD 是KEY
Server.NewRequestReceived += Server_NewRequestReceived;
//Server.r
Util.Save(Setting.ServerConfig);
return true;
//return true;
}
catch (Exception ex)
{
ApiClient.Setting.ServerConfig.SocketIsOpen = false;
Util.Save(Setting.ServerConfig);
throw ex;
}
return false;
}
///
/// HOOK机器人消息事件
///
///
///
private static void Server_NewRequestReceived(SupperSocketSession _session, SuperSocket.SocketBase.Protocol.StringRequestInfo _requestInfo)
{
var session = _session;
var requestInfo = _requestInfo;
var action = new Action(delegate ()
{
try
{
int key;
//var cmd = (PCRobot.Pack.PCRobotCMD)Enum.Parse(typeof(PCRobot.Pack.PCRobotCMD), requestInfo.Key);
PCRobot.Pack.PCRobotCMD cmd;
if (!Enum.TryParse(requestInfo.Key, out cmd)) return;
var data = PackTool.DecompressString(requestInfo.Body);
var dic = CsharpHttpHelper.HttpExtend.JsonToDictionary(data);
if (dic.ContainsKey("Key") && dic["Key"].ToString() != Setting.ServerConfig.SocketPassword)
{
var RobotUsernick = string.Empty;
if (dic.ContainsKey("RobotUsernick"))
RobotUsernick = dic["RobotUsernick"].ToString();
var RobotUsername = string.Empty;
if (dic.ContainsKey("RobotUsername"))
RobotUsername = dic["RobotUsername"].ToString();
RobotType robotType;
if (dic.ContainsKey("RobotType"))
{
var type = dic["RobotType"].ToString();
if (Enum.TryParse(type, out robotType))
throw new Exception($"{(robotType == RobotType.客户端微信 ? ChatType.微信 : robotType == RobotType.客户端企业微信 ? ChatType.企业微信 : robotType == RobotType.客户端扣扣 ? ChatType.QQ : ChatType.微信公众号)}:{RobotUsernick}({RobotUsername}) 易转发与软件秘钥不匹配,无法通讯!");
}
}
var cmd_int = (int)cmd;
var events = ChatClient.Events;
//心跳包处理
//if (cmd == PCRobotCMD.heartBreak)
//{
// var json = HttpHelper.JsonToObject(data) as WechatStatus;
// var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatStatusEvents(json);
// if (evt == null) return;
// if (evt.Key != Setting.ServerConfig.SocketPassword) throw new Exception("秘钥不匹配,无法连接!");
// //var robot = GetRobotInfo(evt.RobotUsername, evt.RobotUsernick, evt.RobotType == RobotType.客户端企业微信 ? ChatType.企业微信 : ChatType.微信, evt.Uin);
// //Chat.Framework.ChatClient.PCRobotPool.Update(evt.RobotUsername, session);
// //var hook = FindHookRobot(robot, evt.RobotType);
// //if (hook != null)
// //{
// // hook.Receive(evt);
// //}
// //EventClient.OnEvent(null,$"收到{robot.name}({robot.nick})的心跳包!");
// session.Send("heartBreak $");
//}
if (cmd.ToString().StartsWith("offline"))
{
var json = HttpHelper.JsonToObject(data) as WechatStatus;
var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatStatusEvents(json);
if (evt == null)
{
EventClient.OnEvent(null, $"{json.RobotUsername}({json.Uin})心跳发送失败");
return;
}
if (evt.Key == Setting.ServerConfig.SocketPassword)
session.TrySend(data);
else
EventClient.OnEvent(null, $"{json.RobotUsername}({json.Uin})心跳发送失败,秘钥不一致");
}
//个人微信消息
if (cmd_int >= 2000 && cmd_int <= 2999)
{
switch (cmd)
{
case PCRobot.Pack.PCRobotCMD.rcvTxt:
case PCRobot.Pack.PCRobotCMD.rcvFile:
case PCRobot.Pack.PCRobotCMD.rcvImg:
{
var json = HttpHelper.JsonToObject(data) as WechatReceiveMsg;
var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatReceiveMsgEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
//EventClient.OnEvent(evt, evt);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
{
hook.Receive(evt);
}
}
break;
case PCRobotCMD.applyFriend:
{
var json = HttpHelper.JsonToObject(data) as WechatApplyFriend;
var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatApplyFriendEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
}
break;
case PCRobot.Pack.PCRobotCMD.receivePay:
{
var json = HttpHelper.JsonToObject(data) as WechatReicevePay;
var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatReicevePayEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
}
break;
case PCRobotCMD.applyGroup:
{ }
break;
case PCRobotCMD.newfriend:
{
var json = HttpHelper.JsonToObject(data) as WechatNewFriend;
var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatNewFriendEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
}
break;
case PCRobotCMD.offline:
{
var json = HttpHelper.JsonToObject(data) as WechatStatus;
var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatStatusEvents(json);
if (evt == null)
{
EventClient.OnEvent(null, $"{json.RobotUsername}({json.Uin})心跳发送失败,秘钥不一致");
return;
}
var robot = GetRobotInfo(evt.RobotUsername, evt.RobotUsernick, ChatType.微信, json.Uin);
robot.is_login = evt.Status == Status.在线;
Chat.Framework.ChatClient.PCRobotPool.Update(evt.RobotUsername, session);
var hook = FindHookRobot(robot, evt.RobotType);
if (hook != null)
{
hook.Receive(evt);
if (string.IsNullOrWhiteSpace(robot.end_time))
{
var softId = (robot.type == Api.Framework.SDK.ChatType.QQ) ? 1002 : 1001;
var custm = GrantClient.Get().Refresh(robot.uin.ToString(), softId);
if (custm != null)
{
robot.end_time = custm.endTime;
ApiClient.GetSession().SaveOrUpdate(robot);
ApiClient.GetSession().FindRobots(true);
}
}
}
}
break;
case PCRobotCMD.newMember:
{
var json = HttpHelper.JsonToObject(data) as WechatNewMemer;
var evt = new WechatNewMemerEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
}
break;
case PCRobotCMD.rcvContactList:
{
var json = HttpHelper.JsonToObject(data) as WechatContact;
var evt = new WechatContactListEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
Chat.Framework.ChatClient.PCRobotPool.PackHist.SetResult(json);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
}
break;
case PCRobotCMD.rcvContact:
{
var json = HttpHelper.JsonToObject(data) as WechatContact;
var evt = new WechatContactListEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
Chat.Framework.ChatClient.PCRobotPool.PackHist.SetResult(json);
}
break;
case PCRobotCMD.rcvCheckUrl:
{
var json = HttpHelper.JsonToObject(data) as CheckUrl;
Chat.Framework.ChatClient.PCRobotPool.PackHist.SetResult(json);
}
break;
case PCRobotCMD.rcvCreateRoom:
{
var json = HttpHelper.JsonToObject(data) as CreateRoom;
Chat.Framework.ChatClient.PCRobotPool.PackHist.SetResult(json);
}
break;
case PCRobotCMD.rcvGroupMember:
{
var json = HttpHelper.JsonToObject(data) as WechatGroupMember;
var evt = new WechatGroupMemberEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
}
break;
}
}
//企业微信消息处理
else if (cmd_int >= 3000 && cmd_int <= 3999)
{
switch (cmd)
{
case PCRobotCMD.rcvTxt_workWeChat:
case PCRobotCMD.rcvFile_workWeChat:
case PCRobotCMD.rcvImg_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatReceiveMsg;
var evt = new Chat.Framework.PCRobotSDK.WorkWechatEvents.WorkWechatReceiveMsgEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
//EventClient.OnEvent(evt, evt);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
else
{ }
}
break;
case PCRobotCMD.applyFriend_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatApplyFriend;
var evt = new Chat.Framework.PCRobotSDK.WorkWechatEvents.WorkWechatApplyFriendEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
else
{ }
}
break;
case PCRobotCMD.receivePay_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatReicevePay;
var evt = new Chat.Framework.PCRobotSDK.WorkWechatEvents.WorkWechatReicevePayEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
else
{ }
}
break;
case PCRobotCMD.applyGroup_workWeChat:
{ }
break;
case PCRobotCMD.newfriend_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatNewFriend;
var evt = new Chat.Framework.PCRobotSDK.WorkWechatEvents.WorkWechatNewFriendEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
else
{ }
}
break;
case PCRobotCMD.offline_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WechatStatus;
var evt = new Chat.Framework.PCRobotSDK.WechatEvents.WechatStatusEvents(json);
if (evt == null)
{
EventClient.OnEvent(null, $"{json.RobotUsername}({json.Uin})心跳发送失败,秘钥不一致");
return;
}
var robot = GetRobotInfo(evt.RobotUsername, evt.RobotUsernick, ChatType.企业微信, json.Uin);
robot.is_login = evt.Status == Status.在线;
Chat.Framework.ChatClient.PCRobotPool.Update(evt.RobotUsername, session);
var hook = FindHookRobot(robot, evt.RobotType);
if (hook != null)
{
hook.Receive(evt);
if (string.IsNullOrWhiteSpace(robot.end_time))
{
var softId = (robot.type == Api.Framework.SDK.ChatType.QQ) ? 1002 : 1001;
var custm = GrantClient.Get().Refresh(robot.uin.ToString(), softId);
if (custm != null)
{
robot.end_time = custm.endTime;
ApiClient.GetSession().SaveOrUpdate(robot);
ApiClient.GetSession().FindRobots(true);
}
}
}
else
{ }
}
break;
case PCRobotCMD.newMember_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatNewMemer;
var evt = new WorkWechatNewMemerEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
else
{ }
}
break;
case PCRobotCMD.rcvContact_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatContact;
var evt = new WorkWechatContactListEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
Chat.Framework.ChatClient.PCRobotPool.PackHist.SetResult(json);
}
break;
case PCRobotCMD.rcvContactList_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatContact;
var evt = new WorkWechatContactListEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
else
{ }
}
break;
case PCRobotCMD.rcvGroupMember_workWeChat:
{
var json = HttpHelper.JsonToObject(data) as WorkWechatGroupMember;
var evt = new WorkWechatGroupMemberEvents(json);
if (evt == null) return;
var robot = GetRobotInfo(evt.Data.RobotUsername, evt.Data.RobotUsernick, ChatType.企业微信);
Chat.Framework.ChatClient.PCRobotPool.Update(evt.Data.RobotUsername, session);
var hook = FindHookRobot(robot, evt.Data.RobotType);
if (hook != null)
hook.Receive(evt);
else
{ }
}
break;
}
}
}
catch (Exception ex)
{
EventClient.OnEvent(null, $"{ex.Message}.");
}
});
action.BeginInvoke(null, null);
}
///
/// 锁获取机器人对象,确保唯一
///
private static readonly object GetRobotLock = new object();
///
/// 获取机器人对象
///
///
///
private static WeixinBase FindHookRobot(fl_robot_info robot, RobotType robotType)
{
lock (GetRobotLock)
{
var v = ChatClient.WXClient.FirstOrDefault(f => f.Key == robot.name).Value;
if (!robot.is_login && v == null)
return null;
switch (robotType)
{
case RobotType.客户端系统:
break;
case RobotType.客户端微信:
if (v == null)
v = new WXClientImpl_HOOK(robot.name, robot.nick, long.Parse(robot.uin));
break;
case RobotType.客户端企业微信:
if (v == null)
v = new WXClientImpl_QYHOOK(robot.name, robot.nick, long.Parse(robot.uin));
break;
case RobotType.客户端扣扣:
break;
}
return v;
}
}
///
/// 获取机器人对象
///
///
///
///
///
[Obsolete("这个函数已经过时了", true)]
private static WeixinBase FindHookRobot(string username, string usernick, RobotType robotType)
{
lock (GetRobotLock)
{
var v = ChatClient.WXClient.FirstOrDefault(f => f.Key == username).Value;
switch (robotType)
{
case RobotType.客户端系统:
break;
case RobotType.客户端微信:
if (v == null)
v = new WXClientImpl_HOOK(username, usernick);
break;
case RobotType.客户端企业微信:
if (v == null)
v = new WXClientImpl_QYHOOK(username, usernick);
break;
case RobotType.客户端扣扣:
break;
}
return v;
}
}
///
/// 删除机器人对象
///
///
//private static void RemoveHookRobot(string weixinhao)
//{
// lock (GetRobotLock)
// {
// if (ChatClient.WXClient.ContainsKey(weixinhao))
// ChatClient.WXClient.Remove(weixinhao);
// }
//}
private readonly static object robot_lock = new object();
private static fl_robot_info GetRobotInfo(string robotUsername, string robotUsernick, ChatType chatType, string uin = "")
{
var s = ApiClient.GetSession();
fl_robot_info robot = null;
if (string.IsNullOrWhiteSpace(robotUsername))
return null;
lock (robot_lock)
{
robot = s.FindRobotInfo(robotUsername, chatType);
if (robot == null)
{
robot = new fl_robot_info()
{
name = robotUsername,
nick = Util.RemoveEmoji(robotUsernick),
uin = uin,
type = chatType,
remark = "PCWechat HOOK"
};
s.Insertable(robot).ExecuteCommandIdentityIntoEntity();
s.FindRobots(true);
}
else
{
if (!string.IsNullOrWhiteSpace(uin))
{
robot.nick = Util.RemoveEmoji(robotUsernick);
robot.uin = uin;
robot.remark = "PCWechat HOOK";
s.Updateable(robot).ExecuteCommand();
s.FindRobots(true);
}
else
{ }
}
robot.is_login = true;
}
return robot;
}
private static void appServer_NewSessionClosed(SupperSocketSession session, SuperSocket.SocketBase.CloseReason value)
{
try
{
EventClient.OnEvent(session, $"{session.RemoteEndPoint.Address}-{session.RemoteEndPoint.Port}--> 已关闭!");
var con = ApiClient.GetSession();
var name = Chat.Framework.ChatClient.PCRobotPool.Remove(session);
var r = con.FindRobots().FirstOrDefault(f => f.name == name);
if (r != null)
{
r.is_login = false;
con.Updateable(r).ExecuteCommand();
}
}
catch (Exception)
{
}
}
private static void appServer_NewSessionConnected(SupperSocketSession session)
{
EventClient.OnEvent(session, $"{session.RemoteEndPoint.Address}-{session.RemoteEndPoint.Port} --> 连接成功!");
}
public static Setting Setting { get; set; }
///
/// 清理垃圾
///
private static ClearGarbageTimer _ClearGarbage;
public static bool SelectDbbase()
{
Setting = new Setting();
//选择数据库
if (string.IsNullOrEmpty(Setting.DbConfig.ConnectionString))
{
SetConnectionConfig connection = new SetConnectionConfig();
connection.ShowDialog();
if (!connection.IsOk) return false;
return true;
}
return true;
}
///
/// 初始化
///
public static bool Initialization()
{
try
{
Cache = CacheTool.GetSingleObj();
//初始化
var session = GetSession();
try
{
bool first = CreateTables(session);
Setting.Iniconfig();
Setting.SystemConfig.cps_server_api = "http://cps.api.52cmg.cn/";
if (first)
{
Setting.Plugins.Add("PointManage.Class1");
Setting.Plugins.Add("TBRebate.Class1");
Setting.Plugins.Add("PDDRebate.Class1");
Setting.Plugins.Add("UserFission.Class1");
Setting.Plugins.Add("AutoAnswer.Class1");
}
string key = "2lThVzrziUuYbxfzgQ9CpivZANcSOVzUaV9Uacw8gCaudDjT6Vn6Mv+HyMKUnZB4zCwBOYkFuMjS8gfoog3Dk26TkHxAp7izE3RK8ptL7vzqozaMioqak05binUrZxLiy4X/5D9+Ny+lueuQjCIjn6eXL0D595NbAlTw/uOHodE=AQAB";
CpsClient.SetEnckey(10003, ApiClient.Setting.SystemConfig.cps_server_api, key);
//var ip = (CpsClient.SendServer("find_config", "webtool.asmx", new { name = "Grpc微信服务器" }) as string).Split(',');
ChatClient.GetServerDataMethod = GetServerConfig;
// var ip = "193.112.217.56:81".Split(','); ;
//var ip = "193.112.217.56:81".Split(','); ;
// ip = new string[] { "118.25.53.240:9888" };
ChatClient.SetWeixinCore(null, new string[] { "1001", "13101A4D25A0C46B97BB58799C0D5CC7" });
ChatClient.Events.WXGetDeviceEvent += Events_WXGetDeviceEvent;
ChatClient.GetDBWechatFriend = GetDBWechatFriend;
PluginClient.LodingPlugin();//加载插件
ResetTimer();
if (Setting.ServerConfig.IsOpen)
{
WebClient.Start(Setting.ServerConfig.Host, ApiClient.Setting.ServerConfig.Port, false);
}
if (Setting.ServerConfig.SocketIsOpen)
{
StartSocketServer(Setting.ServerConfig.SocketPort, Setting.ServerConfig.SocketPassword);
}
return true;
}
catch (Exception ex)
{
throw ex;
return false;
// session.Rollback();
}
}
catch (Exception ex)
{
throw ex;
//MessageBox.Show(ex.Message + ex.StackTrace != null ? "\r\n" + ex.StackTrace : "", "初始化失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}
private static Chat.Framework.WXSdk.Friend GetDBWechatFriend(string username)
{
try
{
var session = GetSession();
var member = session.FindSingle("select * from fl_member_info where (robot_type = @robot_type1 or robot_type = @robot_type2) and username = @username", new { username = username, robot_type1 = ChatType.微信, robot_type2 = ChatType.企业微信 });
if (member != null)
return new Chat.Framework.WXSdk.Friend() { UserName = member.username, NickName = member.usernick, Alias = member.wechatid };
}
catch (Exception)
{ }
return new Chat.Framework.WXSdk.Friend() { UserName = username };
}
private static void Events_WXGetDeviceEvent(object sender, Chat.Framework.WXSdk.Events.WXGetDevice e)
{
try
{
var session = GetSession();
//var device = session.Queryable().Where(f => f.weixinhao == e.Client.WeixinHao).Single();
var device = session.FindSingle("select * from fl_wechat_device where weixinhao = @weixinhao", new { weixinhao = e.Client.WeixinHao });
if (device != null)
{
e.DeviceInfo = string.IsNullOrEmpty(device.device_info) ? string.Empty : device.device_info;
}
}
catch (Exception)
{ }
}
public static string GetServerConfig(string key)
{
return CpsClient.SendServer("find_config", "webtool.asmx", new { name = key }) as string;
}
#region 临时用的,返回false不用管,返回true表示已经删除了(删除了,重新新建索引)
private static bool checkIndex(SqlSugarClient session, string tableName, params object[] values)
{
try
{
if (session.CurrentConnectionConfig.DbType == DbType.MySql)
{
if (session.IndexExist(tableName, values[0].ToString()))
return session.DeleteIndex(tableName, values[0].ToString());
}
else if (session.CurrentConnectionConfig.DbType == DbType.Sqlite)
{
if (session.IndexExist(tableName, tableName + "_" + string.Join("_", values)))
return session.DeleteIndex(tableName, tableName + "_" + string.Join("_", values));
}
}
catch (Exception)
{ }
return false;
}
#endregion
///
/// 创建表,没有表则创建
///
///
///
public static bool CreateTables(SqlSugarClient session)
{
try
{
//全额免单
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("name");//增加索引.以后数据多了.查询速度会比较快
session.AddUnique("name");//增加唯一约束
}
//全额免单订单
if (!session.TableExist())
{
session.CreateTable();
}
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("order_id");
session.AddUnique("order_id");
}
//推广位组
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("cps_type");
session.AddUnique("name");
}
else
{
if (!session.ColumnExist("fl_adzone_group", "remark"))
{
session.AddColumn("fl_adzone_group", "remark", "varchar(255) default ''");
}
}
//推广位
if (!session.TableExist())
{
session.CreateTable();
}
else
{
if (!session.ColumnExist("fl_adzone_info", "is_auto_bind"))
{
session.AddColumn("fl_adzone_info", "is_auto_bind", "boolean default 0");
}
if (!session.ColumnExist("fl_adzone_info", "adzone_group"))
{
session.AddColumn("fl_adzone_info", "adzone_group", "integer default 0");
}
}
//用户自定义变量
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("variate");
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("user_name");
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("name");
}
//dubug日志
if (!session.TableExist())
{
session.CreateTable();
}
//群负责人
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("groupid");
}
//私人pid
if (!session.TableExist())
{
session.CreateTable();
}
//阿里妈妈维权表
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("tbtradeparentid", "tbtradeid");
}
else
{
#region 以后可以删除
try
{
if (session.CurrentConnectionConfig.DbType == DbType.Sqlite)
{
session.ExcuteSQL("drop index fl_order_refund_alimama_tbTradeParentId_", new { });
}
else if (session.CurrentConnectionConfig.DbType == DbType.MySql)
{
session.ExcuteSQL("ALTER TABLE fl_order_refund_alimama DROP INDEX tbTradeParentId", new { });
}
}
catch (Exception ex)
{
}
#endregion
}
//微信设备信息
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("fl_wechat_device", "weixinhao");
}
else
{
#region 修改mysql中varchar类型,类中text的类型 以后可以删除
if (session.CurrentConnectionConfig.DbType == DbType.MySql)
{
try
{
PropertyInfo[] Propertys = typeof(fl_wechat_device).GetProperties();
foreach (var item in Propertys)
{
string _name = item.Name;
if (_name.ToLower() == "device_info".ToLower())
{
if (item.PropertyType.FullName == typeof(string).ToString())
session.ExcuteSQL("ALTER TABLE fl_wechat_device MODIFY COLUMN " + _name + " Text", new { });
}
}
}
catch (Exception ex)
{ }
}
#endregion
}
//用户信息表
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("robot_type", "username");
//session.AddIndex("inviter_id", "robot_type", "username");
//session.AddIndex("status", "robot_name");
session.AddIndex("robot_type", "username");
session.AddIndex("crt_time", "robot_name");
session.AddIndex("status");
session.AddIndex("inviter_id");
session.AddIndex("usernick");
}
else
{
//if (!session.IndexExist("inviter_id"))
//{
// session.AddIndex("inviter_id", "status", "robot_name");
//}
var flag1 = checkIndex(session, "fl_member_info", "inviter_id", "robot_type", "username");
var flag2 = checkIndex(session, "fl_member_info", "status", "robot_name");
var flag3 = checkIndex(session, "fl_member_info", "inviter_id", "status", "robot_name");
if (flag1 || flag2 || flag3)
{
session.AddIndex("robot_type", "username");
session.AddIndex("crt_time", "robot_name");
session.AddIndex("status");
session.AddIndex("inviter_id");
session.AddIndex("usernick");
}
if (!session.ColumnExist("fl_member_info", "ignore_group_update"))
{
session.AddColumn("fl_member_info", "ignore_group_update", "integer default 0");
}
if (!session.ColumnExist("fl_member_info", "chat_count"))
{
session.AddColumn("fl_member_info", "chat_count", "integer default 0");
session.AddColumn("fl_member_info", "blackout_time", "datetime default '2000-01-01 00:00:00'");
}
if (!session.ColumnExist("fl_member_info", "identity_card"))
{
session.AddColumn("fl_member_info", "identity_card", "varchar(255)");
}
if (!session.ColumnExist("fl_member_info", "identity_name"))
{
session.AddColumn("fl_member_info", "identity_name", "varchar(255)");
}
if (!session.ColumnExist("fl_member_info", "ban_exchange_time"))
{
session.AddColumn("fl_member_info", "ban_exchange_time", "datetime default '2000-01-01 00:00:00'");
}
if (!session.ColumnExist("fl_member_info", "private_ratio"))
{
session.AddColumn("fl_member_info", "private_ratio", "double default 0");
}
if (!session.ColumnExist("fl_member_info", "realnick"))
{
session.AddColumn("fl_member_info", "realnick", "varchar(255) default ''");
session.AddColumn("fl_member_info", "wechatid", "varchar(255) default ''");
}
if (!session.ColumnExist("fl_member_info", "check_cloud_black_time"))
{
session.AddColumn("fl_member_info", "check_cloud_black_time", "datetime default '2000-01-01 00:00:00'");
session.AddColumn("fl_member_info", "is_cloud_black", "boolean default 0");
}
if (!session.ColumnExist("fl_member_info", "bind_order"))
{
session.AddColumn("fl_member_info", "bind_order", "integer default 0");
var members = session.Find("select * from fl_member_info").Where(f => f.finish_order != 0).ToList();
for (int i = 0; i < members.Count; i++)
{
members[i].bind_order = members[i].finish_order;
}
var _num = (int)Math.Ceiling((decimal)members.Count / 500m);
for (int o = 1; o <= _num; o++)
{
var _list = members.Skip((o - 1) * 500).Take(500).ToList();
session.Updateable(_list.ToArray()).ExecuteCommand();
}
}
}
//云黑名单
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("memberid");
}
//用户其他信息记录表
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("uid");
session.AddUnique("uid");
}
else
{
try
{
var result = session.FindTable("select uid from fl_statistics_record group by uid having count(uid) > 1 order by uid");
if (result.Rows.Count != 0)
{
for (int i = 0; i < result.Rows.Count; i++)
{
var uid = result.Rows[i]["uid"].ToString();
var records = session.Find("uid = @uid", new { uid = uid });
fl_statistics_record _record = null;
foreach (var record in records)
{
if (_record == null)
_record = record;
else
{
if (_record.ex1 == 0)
_record.ex1 += record.ex1;
if (_record.ex2 == 0)
_record.ex2 += record.ex2;
_record.ex3 += record.ex3;
_record.ex4 += record.ex4;
_record.ex5 += record.ex5;
_record.ex6 += record.ex6;
_record.ex7 += record.ex7;
_record.ex8 += record.ex8;
_record.ex9 += record.ex9;
_record.ex10 += record.ex10;
_record.ex11 += record.ex11;
_record.ex12 += record.ex12;
_record.querynum += record.querynum;
session.Deleteable().In(record.id).ExecuteCommand();
}
}
if (_record != null)
session.Updateable(_record).ExecuteCommand();
}
}
if (!session.ExistUnique("fl_statistics_record", "uid"))
session.AddUnique("uid");
}
catch (Exception ex)
{ }
}
if (!session.TableExist())
{
session.CreateTable();
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("cpsname");
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("itemid");
session.AddIndex("itemid", "expiredate");
}
if (!session.TableExist())
{
session.CreateTable();
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("name", "type");
}
else
{
if (!session.ColumnExist("fl_robot_info", "is_receives"))
{
session.AddColumn("fl_robot_info", "is_receives", "integer default 1");
}
if (!session.ColumnExist("fl_robot_info", "off_line_tip"))
{
session.AddColumn("fl_robot_info", "off_line_tip", "integer default 1");
}
if (!session.ColumnExist("fl_robot_info", "off_line_auto_login"))
{
session.AddColumn("fl_robot_info", "off_line_auto_login", "integer default 1");
}
}
if (session.TableExist("fl_member_private_config"))
{
session.DropTable("fl_member_private_config");
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("robot_id");
}
else
{
//这个字段没有什么用,最早之前不知道为什么要给fl_weixin_password继承base_model
if (!session.ColumnExist("fl_weixin_password", "db_status_time"))
{
session.AddColumn("fl_weixin_password", "db_status_time", "varchar(25)");
}
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("username", "cpstype");
}
else
{
if (!session.ColumnExist("fl_cps_member", "abnormal_tip"))
{
session.AddColumn("fl_cps_member", "abnormal_tip", "integer default 1");
}
if (!session.ColumnExist("fl_cps_member", "is_download"))
{
session.AddColumn("fl_cps_member", "is_download", "integer default 1");
}
if (!session.ColumnExist("fl_cps_member", "is_valid"))
{
session.AddColumn("fl_cps_member", "is_valid", "boolean default 1");
}
}
try
{
session.UpdateColumnType("fl_cps_member", "cookies", "longText");
}
catch (Exception)
{ }
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("crt_time", "type", "rid", "uid");
session.AddIndex("uid", "type");
}
else
{
if (!session.ColumnExist("fl_point_hist", "after_point"))
{
session.AddColumn("fl_point_hist", "after_point", "double default 0");
session.AddColumn("fl_point_hist", "before_point", "double default 0");
}
if (!session.ColumnExist("fl_point_hist", "rid"))
{
session.AddColumn("fl_point_hist", "rid", "integer default 0");
}
//if (!session.IndexExist("crt_time"))
//{
// session.AddIndex("crt_time", "type", "rid", "uid");
//}
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("groupid", "chat_type");
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("lastnumber", "userid");
session.AddIndex("lastnumber");
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("username");
}
//添加淘宝比例
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("comm", "cps_type");
session.Insertable(new fl_ratio_info() { cps_type = CpsType.阿里妈妈, comm = 10.00, subsidy_num = 50.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.阿里妈妈, comm = 30.00, subsidy_num = 40.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.阿里妈妈, comm = 99999.00, subsidy_num = 30.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.京东联盟, comm = 10.00, subsidy_num = 50.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.京东联盟, comm = 30.00, subsidy_num = 40.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.京东联盟, comm = 99999.00, subsidy_num = 30.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.多多进宝, comm = 10.00, subsidy_num = 50.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.多多进宝, comm = 30.00, subsidy_num = 40.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.多多进宝, comm = 99999.00, subsidy_num = 30.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.唯品联盟, comm = 10.00, subsidy_num = 50.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.唯品联盟, comm = 30.00, subsidy_num = 40.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.唯品联盟, comm = 99999.00, subsidy_num = 30.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.抖音联盟, comm = 10.00, subsidy_num = 50.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.抖音联盟, comm = 30.00, subsidy_num = 40.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.抖音联盟, comm = 99999.00, subsidy_num = 30.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
}
else
{
try
{
var tmps = session.Queryable().Where(f => f.cps_type == CpsType.唯品联盟).ToList();
if (tmps == null || tmps.Count == 0)
{
session.Insertable(new fl_ratio_info() { cps_type = CpsType.唯品联盟, comm = 10.00, subsidy_num = 50.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.唯品联盟, comm = 30.00, subsidy_num = 40.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.唯品联盟, comm = 99999.00, subsidy_num = 30.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
}
}
catch (Exception)
{ }
try
{
var tmps = session.Queryable().Where(f => f.cps_type == CpsType.抖音联盟).ToList();
if (tmps == null || tmps.Count == 0)
{
session.Insertable(new fl_ratio_info() { cps_type = CpsType.抖音联盟, comm = 10.00, subsidy_num = 50.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.抖音联盟, comm = 30.00, subsidy_num = 40.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_ratio_info() { cps_type = CpsType.抖音联盟, comm = 99999.00, subsidy_num = 30.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
}
}
catch (Exception)
{ }
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("name");
session.AddUnique("terms", "terms_ordersum");
session.Insertable(new fl_member_group() { name = "大众会员", terms = 0, terms_ordersum = 0, subsidy = 0.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_member_group() { name = "黄金会员", terms = 20, terms_ordersum = 5, subsidy = 0.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_member_group() { name = "铂金会员", terms = 100, terms_ordersum = 15, subsidy = 0.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
session.Insertable(new fl_member_group() { name = "钻石会员", terms = 500, terms_ordersum = 50, subsidy = 0.00, subsidy_type = SubsidyType.百分比 }).ExecuteCommand();
}
else
{
if (!session.ColumnExist("fl_member_group", "terms_ordersum"))
{
session.AddColumn("fl_member_group", "terms_ordersum", "integer default 0");
try
{
session.AddUnique("terms", "terms_ordersum");
if (session.CurrentConnectionConfig.DbType == DbType.Sqlite)
{
session.ExcuteSQL("drop INDEX fl_member_group_terms_", new { });
}
else if (session.CurrentConnectionConfig.DbType == DbType.MySql)
{
session.ExcuteSQL("ALTER TABLE fl_member_group DROP INDEX terms", new { });
}
}
catch (Exception ex)
{
}
}
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("money", "cps_type");
session.Insertable(new fl_order_sleep() { money = 30.00, sleep = 24, cps_type = CpsType.阿里妈妈 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 999999.00, sleep = 48, cps_type = CpsType.阿里妈妈 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 30.00, sleep = 24, cps_type = CpsType.京东联盟 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 999999.00, sleep = 48, cps_type = CpsType.京东联盟 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 30.00, sleep = 24, cps_type = CpsType.多多进宝 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 999999.00, sleep = 48, cps_type = CpsType.多多进宝 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 30.00, sleep = 24, cps_type = CpsType.唯品联盟 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 999999.00, sleep = 48, cps_type = CpsType.唯品联盟 }).ExecuteCommand();
}
else
{
try
{
var tmps = session.Queryable().Where(f => f.cps_type == CpsType.唯品联盟).ToList();
if (tmps == null || tmps.Count == 0)
{
session.Insertable(new fl_order_sleep() { money = 30.00, sleep = 24, cps_type = CpsType.唯品联盟 }).ExecuteCommand();
session.Insertable(new fl_order_sleep() { money = 999999.00, sleep = 48, cps_type = CpsType.唯品联盟 }).ExecuteCommand();
}
}
catch (Exception)
{ }
}
if (!session.TableExist())
{
session.CreateTable();
session.AddIndex("userid", "itemid", "adzoneid", "crt_time");
}
else
{
if (!session.ColumnExist("fl_query_hist", "adzoneid"))
{
session.AddColumn("fl_query_hist", "adzoneid", "varchar(255)");
}
if (!session.ColumnExist("fl_query_hist", "mallid"))
{
session.Deleteable().Where(f => f.crt_time < DateTime.Now.AddMonths(-2)).ExecuteCommand();
session.AddColumn("fl_query_hist", "mallid", "varchar(30)");
}
//if (!session.IndexExist("userid"))
//{
// session.AddIndex("userid", "itemid", "adzoneid", "crt_time");
//}
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("trade_id", "trade_parent_id");
session.AddIndex("create_time", "db_status");
session.AddIndex("db_userid", "db_status");
session.AddIndex("create_time", "db_userid");
session.AddIndex("trade_parent_id");
session.AddIndex("paid_time", "db_status");
session.AddIndex("db_robotname", "db_robottype");
session.AddIndex("earning_time", "db_status");
//session.AddIndex("trade_parent_id", "db_userid", "adzone_id", "create_time");
//session.AddIndex("num_iid", "item_title", "db_cpsnick", "db_cpsname");
//session.AddIndex("db_status", "db_userid");
}
else
{
//if (!session.IndexExist("db_status"))
//{
// session.AddIndex("db_status", "db_userid");
//}
if (!session.IndexExist("db_status", "db_endtime"))
{
session.AddIndex("db_status", "db_endtime");
}
if (!session.IndexExist("db_status", "create_time"))
{
session.AddIndex("db_status", "create_time");
}
var flag1 = checkIndex(session, "fl_order_alimama", "db_status", "db_userid");
var flag2 = checkIndex(session, "fl_order_alimama", "item_title", "db_cpsnick", "db_cpsname");
var flag3 = checkIndex(session, "fl_order_alimama", "trade_parent_id", "db_userid", "adzone_id", "create_time");
var flag4 = checkIndex(session, "fl_order_alimama", "num_iid", "item_title", "db_cpsnick", "db_cpsname");
var flag5 = checkIndex(session, "fl_order_alimama", "db_status", "db_userid");
var flag6 = checkIndex(session, "fl_order_alimama", "db_userid", "adzone_id", "num_iid", "create_time");
if (flag1 || flag2 || flag3 || flag4 || flag5 || flag6)
{
session.AddIndex("create_time", "db_status");
session.AddIndex("db_userid", "db_status");
session.AddIndex("create_time", "db_userid");
session.AddIndex("trade_parent_id");
session.AddIndex("paid_time", "db_status");
session.AddIndex("db_robotname", "db_robottype");
session.AddIndex("earning_time", "db_status");
}
if (!session.ColumnExist("fl_order_alimama", "seller_id"))
{
session.AddColumn("fl_order_alimama", "seller_id", "varchar(30)");
}
if (!session.ColumnExist("fl_order_alimama", "paid_time"))
{
session.AddColumn("fl_order_alimama", "paid_time", "datetime");
}
if (!session.ColumnExist("fl_order_alimama", "deposit_price"))
{
session.AddColumn("fl_order_alimama", "deposit_price", "varchar(30)");
}
if (!session.ColumnExist("fl_order_alimama", "tb_deposit_time"))
{
session.AddColumn("fl_order_alimama", "tb_deposit_time", "varchar(25)");
}
if (!session.ColumnExist("fl_order_alimama", "db_status_time"))
{
session.AddColumn("fl_order_alimama", "db_status_time", "varchar(25)");
}
if (!session.ColumnExist("fl_order_alimama", "alimama_rate"))
{
session.AddColumn("fl_order_alimama", "alimama_rate", "double default 0");
}
if (!session.ColumnExist("fl_order_alimama", "alimama_share_fee"))
{
session.AddColumn("fl_order_alimama", "alimama_share_fee", "double default 0");
}
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("order_sn");
//session.AddIndex("order_sn", "db_userid", "db_cpsnick", "order_create_time");
//session.AddIndex("db_cpsname", "p_id", "goods_name", "goods_id");
//session.AddIndex("db_status", "db_userid");
session.AddIndex("db_userid", "db_status");
session.AddIndex("order_create_time", "db_status");
session.AddIndex("order_create_time", "db_userid");
session.AddIndex("db_status", "db_endtime");
session.AddIndex("db_robotname", "db_robottype");
}
else
{
//if (!session.IndexExist("db_status"))
//{
// session.AddIndex("db_status", "db_userid");
//}
//if (!session.IndexExist("db_userid"))
//{
// session.AddIndex("db_userid", "db_cpsnick", "db_cpsname");
// session.AddIndex("p_id", "goods_name", "goods_id", "order_create_time");
//}
var flag1 = checkIndex(session, "fl_order_pinduoduo", "order_sn", "db_userid", "db_cpsnick", "order_create_time");
var flag2 = checkIndex(session, "fl_order_pinduoduo", "db_cpsname", "p_id", "goods_name", "goods_id");
var flag3 = checkIndex(session, "fl_order_pinduoduo", "db_status", "db_userid");
var flag4 = checkIndex(session, "fl_order_pinduoduo", "db_userid", "db_cpsnick", "db_cpsname");
var flag5 = checkIndex(session, "fl_order_pinduoduo", "p_id", "goods_name", "goods_id", "order_create_time");
if (flag1 || flag2 || flag3 || flag4 || flag5)
{
session.AddIndex("db_userid", "db_status");
session.AddIndex("order_create_time", "db_status");
session.AddIndex("order_create_time", "db_userid");
session.AddIndex("db_status", "db_endtime");
session.AddIndex("db_robotname", "db_robottype");
}
if (!session.ColumnExist("fl_order_pinduoduo", "mall_id"))
{
session.AddColumn("fl_order_pinduoduo", "mall_id", "varchar(30)");
}
if (!session.ColumnExist("fl_order_pinduoduo", "db_status_time"))
{
session.AddColumn("fl_order_pinduoduo", "db_status_time", "varchar(25)");
}
if (!session.ColumnExist("fl_order_pinduoduo", "price_compare_status"))
{
session.AddColumn("fl_order_pinduoduo", "price_compare_status", "integer");
}
}
if (!session.TableExist())
{
session.CreateTable();
session.AddUnique("orderId", "skuId");
//session.AddIndex("orderId", "db_userid", "db_cpsnick", "orderTime");
//session.AddIndex("db_cpsname", "positionId", "skuId", "skuName");
session.AddIndex("db_userid", "db_status");
session.AddIndex("orderTime", "db_status");
session.AddIndex("orderTime", "db_userid");
session.AddIndex("db_status", "finishTime");
session.AddIndex("db_robotname", "db_robottype");
}
else
{
//if (!session.IndexExist("db_status"))
//{
// session.AddIndex("db_status", "db_userid");
//}
//if (!session.IndexExist("db_userid"))
//{
// session.AddIndex("db_userid", "db_cpsnick", "db_cpsname");
// session.AddIndex("positionId", "skuId", "skuName", "orderTime");
//}
var flag1 = checkIndex(session, "fl_order_jingdong", "orderId", "db_userid", "db_cpsnick", "orderTime");
var flag2 = checkIndex(session, "fl_order_jingdong", "db_cpsname", "positionId", "skuId", "skuName");
var flag3 = checkIndex(session, "fl_order_jingdong", "db_status", "db_userid");
var flag4 = checkIndex(session, "fl_order_jingdong", "db_userid", "db_cpsnick", "db_cpsname");
var flag5 = checkIndex(session, "fl_order_jingdong", "positionId", "skuId", "skuName", "orderTime");
if (flag1 || flag2 || flag3 || flag4 || flag5)
{
session.AddIndex("db_userid", "db_status");
session.AddIndex("orderTime", "db_status");
session.AddIndex("orderTime", "db_userid");
session.AddIndex("db_status", "finishTime");
session.AddIndex("db_robotname", "db_robottype");
}
#region 增加一个字段 plus
if (!session.ColumnExist("fl_order_jingdong", "plus"))
{
session.AddColumn("fl_order_jingdong", "plus", "integer default 0");
}
if (!session.ColumnExist("fl_order_jingdong", "db_status_time"))
{
session.AddColumn("fl_order_jingdong", "db_status_time", "varchar(25)");
}
#endregion
#region 修改mysql中int类型,类中long的类型 以后可以删除
//获取公共属性
//if (session.CurrentConnectionConfig.DbType == DbType.MySql)
//{
// PropertyInfo[] Propertys = typeof(fl_order_jingdong).GetProperties();
// foreach (var item in Propertys)
// {
// string _name = item.Name;
// string _type = string.Empty;
// bool _primary = false;
// var _attribute = item.GetCustomAttributes().FirstOrDefault(f => f.GetType() == typeof(SugarColumn)) as SugarColumn;
// if (_attribute != null)
// { }
// if (item.Name.ToLower() == "id" || _primary)
// { }
// else if (!string.IsNullOrEmpty(_type))
// { }
// else
// {
// if (item.PropertyType.FullName == typeof(Int64).ToString())
// {
// session.ExcuteSQL("ALTER TABLE fl_order_jingdong MODIFY COLUMN " + _name + " bigint(11) DEFAULT 0", new { });
// }
// }
// }
//}
#endregion
#region 修改订单状态,最开始导致的,完成的订单变成了 部分退款
//session.ExcuteSQL("update fl_order_jingdong set db_status = 1002 where db_status = 998");
#endregion
if (!session.ColumnExist("fl_order_jingdong", "refundcreatetime"))
{
session.AddColumn("fl_order_jingdong", "refundcreatetime", "datetime");
}
}
//000000
if (!session.TableExist())
{
session.CreateTable