Brak opisu

ChatSql.cs 39KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using CallCenterApi.DB;
  7. using System.Data.SqlClient;
  8. using System.Data;
  9. namespace CallCenter.WebChatServer
  10. {
  11. public class ChatSql
  12. {
  13. /// <summary>
  14. /// 增加一条数据
  15. /// </summary>
  16. public int AddUser(T_Chat_User model)
  17. {
  18. StringBuilder strSql = new StringBuilder();
  19. strSql.Append("insert into T_Chat_User(");
  20. strSql.Append("F_Type,F_Name,F_Account,F_OpenId,F_HeadImgUrl,F_MainUserCode,F_OtherUserCode,F_IP,F_State,F_CreateUser,F_CreateTime,F_IsDelete,F_DeleteUser,F_DeleteTime)");
  21. strSql.Append(" values (");
  22. strSql.Append("@F_Type,@F_Name,@F_Account,@F_OpenId,@F_HeadImgUrl,@F_MainUserCode,@F_OtherUserCode,@F_IP,@F_State,@F_CreateUser,@F_CreateTime,@F_IsDelete,@F_DeleteUser,@F_DeleteTime)");
  23. strSql.Append(";select @@IDENTITY");
  24. SqlParameter[] parameters = {
  25. new SqlParameter("@F_Type", SqlDbType.Int,4),
  26. new SqlParameter("@F_Name", SqlDbType.NVarChar,500),
  27. new SqlParameter("@F_Account", SqlDbType.VarChar,500),
  28. new SqlParameter("@F_OpenId", SqlDbType.VarChar,500),
  29. new SqlParameter("@F_HeadImgUrl", SqlDbType.VarChar,500),
  30. new SqlParameter("@F_MainUserCode", SqlDbType.VarChar,50),
  31. new SqlParameter("@F_OtherUserCode", SqlDbType.VarChar,500),
  32. new SqlParameter("@F_IP", SqlDbType.VarChar,50),
  33. new SqlParameter("@F_State", SqlDbType.Int,4),
  34. new SqlParameter("@F_CreateUser", SqlDbType.VarChar,50),
  35. new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
  36. new SqlParameter("@F_IsDelete", SqlDbType.Int,4),
  37. new SqlParameter("@F_DeleteUser", SqlDbType.VarChar,50),
  38. new SqlParameter("@F_DeleteTime", SqlDbType.DateTime)};
  39. parameters[0].Value = model.F_Type;
  40. parameters[1].Value = model.F_Name;
  41. parameters[2].Value = model.F_Account;
  42. parameters[3].Value = model.F_OpenId;
  43. parameters[4].Value = model.F_HeadImgUrl;
  44. parameters[5].Value = model.F_MainUserCode;
  45. parameters[6].Value = model.F_OtherUserCode;
  46. parameters[7].Value = model.F_IP;
  47. parameters[8].Value = model.F_State;
  48. parameters[9].Value = model.F_CreateUser;
  49. parameters[10].Value = model.F_CreateTime;
  50. parameters[11].Value = model.F_IsDelete;
  51. parameters[12].Value = model.F_DeleteUser;
  52. parameters[13].Value = model.F_DeleteTime;
  53. object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
  54. if (obj == null)
  55. {
  56. return 0;
  57. }
  58. else
  59. {
  60. return Convert.ToInt32(obj);
  61. }
  62. }
  63. /// <summary>
  64. /// 更新一条数据
  65. /// </summary>
  66. public bool UpdateUser(T_Chat_User model)
  67. {
  68. StringBuilder strSql = new StringBuilder();
  69. strSql.Append("update T_Chat_User set ");
  70. strSql.Append("F_Type=@F_Type,");
  71. strSql.Append("F_Name=@F_Name,");
  72. strSql.Append("F_Account=@F_Account,");
  73. strSql.Append("F_OpenId=@F_OpenId,");
  74. strSql.Append("F_HeadImgUrl=@F_HeadImgUrl,");
  75. strSql.Append("F_MainUserCode=@F_MainUserCode,");
  76. strSql.Append("F_OtherUserCode=@F_OtherUserCode,");
  77. strSql.Append("F_IP=@F_IP,");
  78. strSql.Append("F_State=@F_State,");
  79. strSql.Append("F_CreateUser=@F_CreateUser,");
  80. strSql.Append("F_CreateTime=@F_CreateTime,");
  81. strSql.Append("F_IsDelete=@F_IsDelete,");
  82. strSql.Append("F_DeleteUser=@F_DeleteUser,");
  83. strSql.Append("F_DeleteTime=@F_DeleteTime");
  84. strSql.Append(" where F_Id=@F_Id");
  85. SqlParameter[] parameters = {
  86. new SqlParameter("@F_Type", SqlDbType.Int,4),
  87. new SqlParameter("@F_Name", SqlDbType.NVarChar,500),
  88. new SqlParameter("@F_Account", SqlDbType.VarChar,500),
  89. new SqlParameter("@F_OpenId", SqlDbType.VarChar,500),
  90. new SqlParameter("@F_HeadImgUrl", SqlDbType.VarChar,500),
  91. new SqlParameter("@F_MainUserCode", SqlDbType.VarChar,50),
  92. new SqlParameter("@F_OtherUserCode", SqlDbType.VarChar,500),
  93. new SqlParameter("@F_IP", SqlDbType.VarChar,50),
  94. new SqlParameter("@F_State", SqlDbType.Int,4),
  95. new SqlParameter("@F_CreateUser", SqlDbType.VarChar,50),
  96. new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
  97. new SqlParameter("@F_IsDelete", SqlDbType.Int,4),
  98. new SqlParameter("@F_DeleteUser", SqlDbType.VarChar,50),
  99. new SqlParameter("@F_DeleteTime", SqlDbType.DateTime),
  100. new SqlParameter("@F_Id", SqlDbType.Int,4)};
  101. parameters[0].Value = model.F_Type;
  102. parameters[1].Value = model.F_Name;
  103. parameters[2].Value = model.F_Account;
  104. parameters[3].Value = model.F_OpenId;
  105. parameters[4].Value = model.F_HeadImgUrl;
  106. parameters[5].Value = model.F_MainUserCode;
  107. parameters[6].Value = model.F_OtherUserCode;
  108. parameters[7].Value = model.F_IP;
  109. parameters[8].Value = model.F_State;
  110. parameters[9].Value = model.F_CreateUser;
  111. parameters[10].Value = model.F_CreateTime;
  112. parameters[11].Value = model.F_IsDelete;
  113. parameters[12].Value = model.F_DeleteUser;
  114. parameters[13].Value = model.F_DeleteTime;
  115. parameters[14].Value = model.F_Id;
  116. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  117. if (rows > 0)
  118. {
  119. return true;
  120. }
  121. else
  122. {
  123. return false;
  124. }
  125. }
  126. /// <summary>
  127. /// 增加一条数据
  128. /// </summary>
  129. public long AddMsg(T_Chat_Message model)
  130. {
  131. StringBuilder strSql = new StringBuilder();
  132. strSql.Append("insert into T_Chat_Message(");
  133. strSql.Append("F_FromUser,F_ToUser,F_Message,F_File,F_IP,F_SourceType,F_MessageType,F_State,F_CreateUser,F_CreateTime,F_IsDelete,F_DeleteUser,F_DeleteTime)");
  134. strSql.Append(" values (");
  135. strSql.Append("@F_FromUser,@F_ToUser,@F_Message,@F_File,@F_IP,@F_SourceType,@F_MessageType,@F_State,@F_CreateUser,@F_CreateTime,@F_IsDelete,@F_DeleteUser,@F_DeleteTime)");
  136. strSql.Append(";select @@IDENTITY");
  137. SqlParameter[] parameters = {
  138. new SqlParameter("@F_FromUser", SqlDbType.VarChar,500),
  139. new SqlParameter("@F_ToUser", SqlDbType.VarChar,500),
  140. new SqlParameter("@F_Message", SqlDbType.NVarChar,-1),
  141. new SqlParameter("@F_File", SqlDbType.VarChar,-1),
  142. new SqlParameter("@F_IP", SqlDbType.VarChar,50),
  143. new SqlParameter("@F_SourceType", SqlDbType.Int,4),
  144. new SqlParameter("@F_MessageType", SqlDbType.Int,4),
  145. new SqlParameter("@F_State", SqlDbType.Int,4),
  146. new SqlParameter("@F_CreateUser", SqlDbType.VarChar,500),
  147. new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
  148. new SqlParameter("@F_IsDelete", SqlDbType.Int,4),
  149. new SqlParameter("@F_DeleteUser", SqlDbType.VarChar,50),
  150. new SqlParameter("@F_DeleteTime", SqlDbType.DateTime)};
  151. parameters[0].Value = model.F_FromUser;
  152. parameters[1].Value = model.F_ToUser;
  153. parameters[2].Value = model.F_Message;
  154. parameters[3].Value = model.F_File;
  155. parameters[4].Value = model.F_IP;
  156. parameters[5].Value = model.F_SourceType;
  157. parameters[6].Value = model.F_MessageType;
  158. parameters[7].Value = model.F_State;
  159. parameters[8].Value = model.F_CreateUser;
  160. parameters[9].Value = model.F_CreateTime;
  161. parameters[10].Value = model.F_IsDelete;
  162. parameters[11].Value = model.F_DeleteUser;
  163. parameters[12].Value = model.F_DeleteTime;
  164. object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
  165. if (obj == null)
  166. {
  167. return 0;
  168. }
  169. else
  170. {
  171. return Convert.ToInt64(obj);
  172. }
  173. }
  174. /// <summary>
  175. /// 增加一条数据
  176. /// </summary>
  177. public int AddIP(T_Chat_IPList model)
  178. {
  179. StringBuilder strSql = new StringBuilder();
  180. strSql.Append("insert into T_Chat_IPList(");
  181. strSql.Append("F_OpenId,F_IP,F_Country,F_CountryCode,F_Area,F_AreaCode,F_Region,F_RegionCode,F_City,F_CityCode,F_County,F_CountyCode,F_ISP,F_ISPCode,F_CreateTime,F_Type)");
  182. strSql.Append(" values (");
  183. strSql.Append("@F_OpenId,@F_IP,@F_Country,@F_CountryCode,@F_Area,@F_AreaCode,@F_Region,@F_RegionCode,@F_City,@F_CityCode,@F_County,@F_CountyCode,@F_ISP,@F_ISPCode,@F_CreateTime,@F_Type)");
  184. strSql.Append(";select @@IDENTITY");
  185. SqlParameter[] parameters = {
  186. new SqlParameter("@F_OpenId", SqlDbType.VarChar,500),
  187. new SqlParameter("@F_IP", SqlDbType.VarChar,50),
  188. new SqlParameter("@F_Country", SqlDbType.NVarChar,50),
  189. new SqlParameter("@F_CountryCode", SqlDbType.VarChar,50),
  190. new SqlParameter("@F_Area", SqlDbType.NVarChar,50),
  191. new SqlParameter("@F_AreaCode", SqlDbType.VarChar,50),
  192. new SqlParameter("@F_Region", SqlDbType.NVarChar,50),
  193. new SqlParameter("@F_RegionCode", SqlDbType.VarChar,50),
  194. new SqlParameter("@F_City", SqlDbType.NVarChar,50),
  195. new SqlParameter("@F_CityCode", SqlDbType.VarChar,50),
  196. new SqlParameter("@F_County", SqlDbType.NVarChar,50),
  197. new SqlParameter("@F_CountyCode", SqlDbType.VarChar,50),
  198. new SqlParameter("@F_ISP", SqlDbType.NVarChar,50),
  199. new SqlParameter("@F_ISPCode", SqlDbType.VarChar,50),
  200. new SqlParameter("@F_CreateTime", SqlDbType.DateTime),
  201. new SqlParameter("@F_Type", SqlDbType.Int,4)};
  202. parameters[0].Value = model.F_OpenId;
  203. parameters[1].Value = model.F_IP;
  204. parameters[2].Value = model.F_Country;
  205. parameters[3].Value = model.F_CountryCode;
  206. parameters[4].Value = model.F_Area;
  207. parameters[5].Value = model.F_AreaCode;
  208. parameters[6].Value = model.F_Region;
  209. parameters[7].Value = model.F_RegionCode;
  210. parameters[8].Value = model.F_City;
  211. parameters[9].Value = model.F_CityCode;
  212. parameters[10].Value = model.F_County;
  213. parameters[11].Value = model.F_CountyCode;
  214. parameters[12].Value = model.F_ISP;
  215. parameters[13].Value = model.F_ISPCode;
  216. parameters[14].Value = model.F_CreateTime;
  217. parameters[15].Value = model.F_Type;
  218. object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
  219. if (obj == null)
  220. {
  221. return 0;
  222. }
  223. else
  224. {
  225. return Convert.ToInt32(obj);
  226. }
  227. }
  228. /// <summary>
  229. /// 增加一条数据
  230. /// </summary>
  231. public int AddInOut(T_Chat_InOut model)
  232. {
  233. StringBuilder strSql = new StringBuilder();
  234. strSql.Append("insert into T_Chat_InOut(");
  235. strSql.Append("F_OpenId,F_IP,F_InTime,F_OutTime,F_Type)");
  236. strSql.Append(" values (");
  237. strSql.Append("@F_OpenId,@F_IP,@F_InTime,@F_OutTime,@F_Type)");
  238. strSql.Append(";select @@IDENTITY");
  239. SqlParameter[] parameters = {
  240. new SqlParameter("@F_OpenId", SqlDbType.VarChar,50),
  241. new SqlParameter("@F_IP", SqlDbType.VarChar,50),
  242. new SqlParameter("@F_InTime", SqlDbType.DateTime),
  243. new SqlParameter("@F_OutTime", SqlDbType.DateTime),
  244. new SqlParameter("@F_Type", SqlDbType.Int,4)};
  245. parameters[0].Value = model.F_OpenId;
  246. parameters[1].Value = model.F_IP;
  247. parameters[2].Value = model.F_InTime;
  248. parameters[3].Value = model.F_OutTime;
  249. parameters[4].Value = model.F_Type;
  250. object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
  251. if (obj == null)
  252. {
  253. return 0;
  254. }
  255. else
  256. {
  257. return Convert.ToInt32(obj);
  258. }
  259. }
  260. /// <summary>
  261. /// 更新一条数据
  262. /// </summary>
  263. public bool UpdateInOut(T_Chat_InOut model)
  264. {
  265. StringBuilder strSql = new StringBuilder();
  266. strSql.Append("update T_Chat_InOut set ");
  267. strSql.Append("F_OpenId=@F_OpenId,");
  268. strSql.Append("F_IP=@F_IP,");
  269. strSql.Append("F_InTime=@F_InTime,");
  270. strSql.Append("F_OutTime=@F_OutTime,");
  271. strSql.Append("F_Type=@F_Type");
  272. strSql.Append(" where F_Id=@F_Id");
  273. SqlParameter[] parameters = {
  274. new SqlParameter("@F_OpenId", SqlDbType.VarChar,50),
  275. new SqlParameter("@F_IP", SqlDbType.VarChar,50),
  276. new SqlParameter("@F_InTime", SqlDbType.DateTime),
  277. new SqlParameter("@F_OutTime", SqlDbType.DateTime),
  278. new SqlParameter("@F_Type", SqlDbType.Int,4),
  279. new SqlParameter("@F_Id", SqlDbType.Int,4)};
  280. parameters[0].Value = model.F_OpenId;
  281. parameters[1].Value = model.F_IP;
  282. parameters[2].Value = model.F_InTime;
  283. parameters[3].Value = model.F_OutTime;
  284. parameters[4].Value = model.F_Type;
  285. parameters[5].Value = model.F_Id;
  286. int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);
  287. if (rows > 0)
  288. {
  289. return true;
  290. }
  291. else
  292. {
  293. return false;
  294. }
  295. }
  296. /// <summary>
  297. /// 更新签出时间
  298. /// </summary>
  299. public bool UpdateOutTime(string code)
  300. {
  301. string sql = "update T_Chat_InOut set F_OutTime=getdate() where F_OpenId='"+ code + "' and isnull(F_OutTime,'')=''";
  302. int rows = DbHelperSQL.ExecuteSql(sql);
  303. if (rows > 0)
  304. {
  305. return true;
  306. }
  307. else
  308. {
  309. return false;
  310. }
  311. }
  312. /// <summary>
  313. /// 获取客户记录
  314. /// </summary>
  315. /// <returns></returns>
  316. public DataTable GetChatLog(string code, out long nextnum, out int isfirst, int count = 10, long num = 0)
  317. {
  318. string sql = "select top " + count + " * from T_Chat_Message where (F_FromUser='" + code + "' or F_ToUser='" + code + "')";
  319. if (num > 0)
  320. {
  321. sql += " and F_Id <" + num;
  322. }
  323. sql += " order by F_CreateTime desc";
  324. var dt = DbHelperSQL.Query(sql).Tables[0];
  325. int n = dt.Rows.Count;
  326. nextnum = 0;
  327. if (n > 0)
  328. {
  329. nextnum = long.Parse(dt.Rows[n - 1]["F_Id"].ToString());
  330. }
  331. isfirst = 0;
  332. if (n < count)
  333. {
  334. isfirst = 1;
  335. }
  336. return dt;
  337. }
  338. /// <summary>
  339. /// 获取客户信息
  340. /// </summary>
  341. /// <returns></returns>
  342. public T_Chat_User GetCusUser(string code)
  343. {
  344. string sql = "select top 1 * from T_Chat_User where F_OpenId='" + code + "' order by F_CreateTime desc";
  345. var dt = DbHelperSQL.Query(sql).Tables[0];
  346. if (dt.Rows.Count > 0)
  347. {
  348. var row = dt.Rows[0];
  349. T_Chat_User model = new T_Chat_User();
  350. if (row["F_Id"] != null && row["F_Id"].ToString() != "")
  351. {
  352. model.F_Id = int.Parse(row["F_Id"].ToString());
  353. }
  354. if (row["F_Type"] != null && row["F_Type"].ToString() != "")
  355. {
  356. model.F_Type = int.Parse(row["F_Type"].ToString());
  357. }
  358. if (row["F_Name"] != null)
  359. {
  360. model.F_Name = row["F_Name"].ToString();
  361. }
  362. if (row["F_Account"] != null)
  363. {
  364. model.F_Account = row["F_Account"].ToString();
  365. }
  366. if (row["F_OpenId"] != null)
  367. {
  368. model.F_OpenId = row["F_OpenId"].ToString();
  369. }
  370. if (row["F_HeadImgUrl"] != null)
  371. {
  372. model.F_HeadImgUrl = row["F_HeadImgUrl"].ToString();
  373. }
  374. if (row["F_MainUserCode"] != null)
  375. {
  376. model.F_MainUserCode = row["F_MainUserCode"].ToString();
  377. }
  378. if (row["F_OtherUserCode"] != null)
  379. {
  380. model.F_OtherUserCode = row["F_OtherUserCode"].ToString();
  381. }
  382. if (row["F_IP"] != null)
  383. {
  384. model.F_IP = row["F_IP"].ToString();
  385. }
  386. if (row["F_State"] != null && row["F_State"].ToString() != "")
  387. {
  388. model.F_State = int.Parse(row["F_State"].ToString());
  389. }
  390. if (row["F_CreateUser"] != null)
  391. {
  392. model.F_CreateUser = row["F_CreateUser"].ToString();
  393. }
  394. if (row["F_CreateTime"] != null && row["F_CreateTime"].ToString() != "")
  395. {
  396. model.F_CreateTime = DateTime.Parse(row["F_CreateTime"].ToString());
  397. }
  398. if (row["F_IsDelete"] != null && row["F_IsDelete"].ToString() != "")
  399. {
  400. model.F_IsDelete = int.Parse(row["F_IsDelete"].ToString());
  401. }
  402. if (row["F_DeleteUser"] != null)
  403. {
  404. model.F_DeleteUser = row["F_DeleteUser"].ToString();
  405. }
  406. if (row["F_DeleteTime"] != null && row["F_DeleteTime"].ToString() != "")
  407. {
  408. model.F_DeleteTime = DateTime.Parse(row["F_DeleteTime"].ToString());
  409. }
  410. return model;
  411. }
  412. else
  413. {
  414. return null;
  415. }
  416. }
  417. /// <summary>
  418. /// 获取客户信息
  419. /// </summary>
  420. /// <returns></returns>
  421. public T_Chat_IPList GetIPInfo(string ip, string openid)
  422. {
  423. string sql = "select top 1 * from T_Chat_IPList where F_IP='" + ip + "' and F_OpenId='" + openid + "' order by F_CreateTime desc";
  424. var dt = DbHelperSQL.Query(sql).Tables[0];
  425. if (dt.Rows.Count > 0)
  426. {
  427. var row = dt.Rows[0];
  428. T_Chat_IPList model = new T_Chat_IPList();
  429. if (row["F_Id"] != null && row["F_Id"].ToString() != "")
  430. {
  431. model.F_Id = int.Parse(row["F_Id"].ToString());
  432. }
  433. if (row["F_OpenId"] != null)
  434. {
  435. model.F_OpenId = row["F_OpenId"].ToString();
  436. }
  437. if (row["F_IP"] != null)
  438. {
  439. model.F_IP = row["F_IP"].ToString();
  440. }
  441. if (row["F_Country"] != null)
  442. {
  443. model.F_Country = row["F_Country"].ToString();
  444. }
  445. if (row["F_CountryCode"] != null)
  446. {
  447. model.F_CountryCode = row["F_CountryCode"].ToString();
  448. }
  449. if (row["F_Area"] != null)
  450. {
  451. model.F_Area = row["F_Area"].ToString();
  452. }
  453. if (row["F_AreaCode"] != null)
  454. {
  455. model.F_AreaCode = row["F_AreaCode"].ToString();
  456. }
  457. if (row["F_Region"] != null)
  458. {
  459. model.F_Region = row["F_Region"].ToString();
  460. }
  461. if (row["F_RegionCode"] != null)
  462. {
  463. model.F_RegionCode = row["F_RegionCode"].ToString();
  464. }
  465. if (row["F_City"] != null)
  466. {
  467. model.F_City = row["F_City"].ToString();
  468. }
  469. if (row["F_CityCode"] != null)
  470. {
  471. model.F_CityCode = row["F_CityCode"].ToString();
  472. }
  473. if (row["F_County"] != null)
  474. {
  475. model.F_County = row["F_County"].ToString();
  476. }
  477. if (row["F_CountyCode"] != null)
  478. {
  479. model.F_CountyCode = row["F_CountyCode"].ToString();
  480. }
  481. if (row["F_ISP"] != null)
  482. {
  483. model.F_ISP = row["F_ISP"].ToString();
  484. }
  485. if (row["F_ISPCode"] != null)
  486. {
  487. model.F_ISPCode = row["F_ISPCode"].ToString();
  488. }
  489. if (row["F_CreateTime"] != null && row["F_CreateTime"].ToString() != "")
  490. {
  491. model.F_CreateTime = DateTime.Parse(row["F_CreateTime"].ToString());
  492. }
  493. if (row["F_Type"] != null && row["F_Type"].ToString() != "")
  494. {
  495. model.F_Type = int.Parse(row["F_Type"].ToString());
  496. }
  497. return model;
  498. }
  499. else
  500. {
  501. return null;
  502. }
  503. }
  504. /// <summary>
  505. /// 获取客服名称
  506. /// </summary>
  507. /// <returns></returns>
  508. public string GetUserName(string usercode)
  509. {
  510. string sql = "select F_UserName from T_Sys_UserAccount where F_UserCode='" + usercode + "'";
  511. string name = DbHelperSQL.GetSingle(sql).ToString();
  512. return name;
  513. }
  514. /// <summary>
  515. /// 是否黑名单
  516. /// </summary>
  517. /// <returns></returns>
  518. public bool IsBlack(string ip)
  519. {
  520. string sql = "select F_Id from T_Chat_IPBlackList where F_IP='" + ip + "' and F_IsDelete=0 and F_State=1";
  521. return DbHelperSQL.GetSingle(sql)!=null;
  522. }
  523. /// <summary>
  524. /// 是否存入ip
  525. /// </summary>
  526. /// <returns></returns>
  527. public bool IsExitIP(string ip,string openid)
  528. {
  529. string sql = "select F_Id from T_Chat_IPList where F_IP='" + ip + "' and F_OpenId='" + openid + "' ";
  530. return DbHelperSQL.GetSingle(sql) != null;
  531. }
  532. private object lockcode = new object();
  533. /// <summary>
  534. /// 获取游客ID
  535. /// </summary>
  536. /// <returns></returns>
  537. public string GetCode()
  538. {
  539. lock (lockcode)
  540. {
  541. string code = "";
  542. string pre = "Web" + DateTime.Now.ToString("yyyyMMdd");
  543. string sql = "select Top 1 F_OpenId from T_Chat_User where substring(F_OpenId,1,11)='" + pre + "' order by F_CreateTime desc";
  544. var obj = DbHelperSQL.GetSingle(sql);
  545. if (obj == null)
  546. {
  547. code = pre + "00001";
  548. }
  549. else
  550. {
  551. string lastcode = obj.ToString();
  552. int con = Int32.Parse(lastcode.Substring(lastcode.Length - 5, 5));
  553. code = pre + (con + 1).ToString("00000");
  554. }
  555. T_Chat_User user = new T_Chat_User();
  556. user.F_OpenId = code;
  557. user.F_Account = code;
  558. user.F_Type = 1;
  559. user.F_State = 0;
  560. user.F_IsDelete = 0;
  561. user.F_CreateTime = DateTime.Now;
  562. AddUser(user);
  563. return code;
  564. }
  565. }
  566. /// <summary>
  567. /// 获取机器人回复
  568. /// </summary>
  569. /// <returns></returns>
  570. public DataTable GetAIAnswer(string key)
  571. {
  572. string sql = "select * from T_Chat_AIAnswer where F_Key like '%" + key + "%' and F_IsDelete=0 order by F_CreateTime desc";
  573. var dt = DbHelperSQL.Query(sql).Tables[0];
  574. return dt;
  575. }
  576. /// <summary>
  577. /// 客户类
  578. /// </summary>
  579. public class T_Chat_User
  580. {
  581. public T_Chat_User()
  582. { }
  583. #region Model
  584. private int _f_id;
  585. private int? _f_type;
  586. private string _f_name;
  587. private string _f_account;
  588. private string _f_openid;
  589. private string _f_headimgurl;
  590. private string _f_mainusercode;
  591. private string _f_otherusercode;
  592. private string _f_ip;
  593. private int? _f_state;
  594. private string _f_createuser;
  595. private DateTime? _f_createtime;
  596. private int? _f_isdelete;
  597. private string _f_deleteuser;
  598. private DateTime? _f_deletetime;
  599. /// <summary>
  600. ///
  601. /// </summary>
  602. public int F_Id
  603. {
  604. set { _f_id = value; }
  605. get { return _f_id; }
  606. }
  607. /// <summary>
  608. /// 类型(1网站2微信)
  609. /// </summary>
  610. public int? F_Type
  611. {
  612. set { _f_type = value; }
  613. get { return _f_type; }
  614. }
  615. /// <summary>
  616. /// 昵称
  617. /// </summary>
  618. public string F_Name
  619. {
  620. set { _f_name = value; }
  621. get { return _f_name; }
  622. }
  623. /// <summary>
  624. /// 微信账号或者网站账号
  625. /// </summary>
  626. public string F_Account
  627. {
  628. set { _f_account = value; }
  629. get { return _f_account; }
  630. }
  631. /// <summary>
  632. /// 微信标识或者网站标识
  633. /// </summary>
  634. public string F_OpenId
  635. {
  636. set { _f_openid = value; }
  637. get { return _f_openid; }
  638. }
  639. /// <summary>
  640. /// 头像url
  641. /// </summary>
  642. public string F_HeadImgUrl
  643. {
  644. set { _f_headimgurl = value; }
  645. get { return _f_headimgurl; }
  646. }
  647. /// <summary>
  648. /// 主客服
  649. /// </summary>
  650. public string F_MainUserCode
  651. {
  652. set { _f_mainusercode = value; }
  653. get { return _f_mainusercode; }
  654. }
  655. /// <summary>
  656. /// 副客服
  657. /// </summary>
  658. public string F_OtherUserCode
  659. {
  660. set { _f_otherusercode = value; }
  661. get { return _f_otherusercode; }
  662. }
  663. /// <summary>
  664. /// IP
  665. /// </summary>
  666. public string F_IP
  667. {
  668. set { _f_ip = value; }
  669. get { return _f_ip; }
  670. }
  671. /// <summary>
  672. /// 状态
  673. /// </summary>
  674. public int? F_State
  675. {
  676. set { _f_state = value; }
  677. get { return _f_state; }
  678. }
  679. /// <summary>
  680. ///
  681. /// </summary>
  682. public string F_CreateUser
  683. {
  684. set { _f_createuser = value; }
  685. get { return _f_createuser; }
  686. }
  687. /// <summary>
  688. ///
  689. /// </summary>
  690. public DateTime? F_CreateTime
  691. {
  692. set { _f_createtime = value; }
  693. get { return _f_createtime; }
  694. }
  695. /// <summary>
  696. ///
  697. /// </summary>
  698. public int? F_IsDelete
  699. {
  700. set { _f_isdelete = value; }
  701. get { return _f_isdelete; }
  702. }
  703. /// <summary>
  704. ///
  705. /// </summary>
  706. public string F_DeleteUser
  707. {
  708. set { _f_deleteuser = value; }
  709. get { return _f_deleteuser; }
  710. }
  711. /// <summary>
  712. ///
  713. /// </summary>
  714. public DateTime? F_DeleteTime
  715. {
  716. set { _f_deletetime = value; }
  717. get { return _f_deletetime; }
  718. }
  719. #endregion Model
  720. }
  721. /// <summary>
  722. /// 消息类
  723. /// </summary>
  724. public class T_Chat_Message
  725. {
  726. public T_Chat_Message()
  727. { }
  728. #region Model
  729. private long _f_id;
  730. private string _f_fromuser;
  731. private string _f_touser;
  732. private string _f_message;
  733. private string _f_file;
  734. private string _f_ip;
  735. private int? _f_sourcetype;
  736. private int? _f_messagetype;
  737. private int? _f_state;
  738. private string _f_createuser;
  739. private DateTime? _f_createtime;
  740. private int? _f_isdelete;
  741. private string _f_deleteuser;
  742. private DateTime? _f_deletetime;
  743. /// <summary>
  744. ///
  745. /// </summary>
  746. public long F_Id
  747. {
  748. set { _f_id = value; }
  749. get { return _f_id; }
  750. }
  751. /// <summary>
  752. /// 发送人
  753. /// </summary>
  754. public string F_FromUser
  755. {
  756. set { _f_fromuser = value; }
  757. get { return _f_fromuser; }
  758. }
  759. /// <summary>
  760. /// 接收人
  761. /// </summary>
  762. public string F_ToUser
  763. {
  764. set { _f_touser = value; }
  765. get { return _f_touser; }
  766. }
  767. /// <summary>
  768. /// 内容
  769. /// </summary>
  770. public string F_Message
  771. {
  772. set { _f_message = value; }
  773. get { return _f_message; }
  774. }
  775. /// <summary>
  776. /// 附件
  777. /// </summary>
  778. public string F_File
  779. {
  780. set { _f_file = value; }
  781. get { return _f_file; }
  782. }
  783. /// <summary>
  784. /// IP
  785. /// </summary>
  786. public string F_IP
  787. {
  788. set { _f_ip = value; }
  789. get { return _f_ip; }
  790. }
  791. /// <summary>
  792. /// 类型(1网站2微信)
  793. /// </summary>
  794. public int? F_SourceType
  795. {
  796. set { _f_sourcetype = value; }
  797. get { return _f_sourcetype; }
  798. }
  799. /// <summary>
  800. /// 消息类型
  801. /// </summary>
  802. public int? F_MessageType
  803. {
  804. set { _f_messagetype = value; }
  805. get { return _f_messagetype; }
  806. }
  807. /// <summary>
  808. /// 状态
  809. /// </summary>
  810. public int? F_State
  811. {
  812. set { _f_state = value; }
  813. get { return _f_state; }
  814. }
  815. /// <summary>
  816. ///
  817. /// </summary>
  818. public string F_CreateUser
  819. {
  820. set { _f_createuser = value; }
  821. get { return _f_createuser; }
  822. }
  823. /// <summary>
  824. ///
  825. /// </summary>
  826. public DateTime? F_CreateTime
  827. {
  828. set { _f_createtime = value; }
  829. get { return _f_createtime; }
  830. }
  831. /// <summary>
  832. ///
  833. /// </summary>
  834. public int? F_IsDelete
  835. {
  836. set { _f_isdelete = value; }
  837. get { return _f_isdelete; }
  838. }
  839. /// <summary>
  840. ///
  841. /// </summary>
  842. public string F_DeleteUser
  843. {
  844. set { _f_deleteuser = value; }
  845. get { return _f_deleteuser; }
  846. }
  847. /// <summary>
  848. ///
  849. /// </summary>
  850. public DateTime? F_DeleteTime
  851. {
  852. set { _f_deletetime = value; }
  853. get { return _f_deletetime; }
  854. }
  855. #endregion Model
  856. }
  857. /// <summary>
  858. /// 用户IP类
  859. /// </summary>
  860. public class T_Chat_IPList
  861. {
  862. public T_Chat_IPList()
  863. { }
  864. #region Model
  865. private int _f_id;
  866. private string _f_openid;
  867. private string _f_ip;
  868. private string _f_country;
  869. private string _f_countrycode;
  870. private string _f_area;
  871. private string _f_areacode;
  872. private string _f_region;
  873. private string _f_regioncode;
  874. private string _f_city;
  875. private string _f_citycode;
  876. private string _f_county;
  877. private string _f_countycode;
  878. private string _f_isp;
  879. private string _f_ispcode;
  880. private DateTime? _f_createtime;
  881. private int? _f_type;
  882. /// <summary>
  883. ///
  884. /// </summary>
  885. public int F_Id
  886. {
  887. set { _f_id = value; }
  888. get { return _f_id; }
  889. }
  890. /// <summary>
  891. ///
  892. /// </summary>
  893. public string F_OpenId
  894. {
  895. set { _f_openid = value; }
  896. get { return _f_openid; }
  897. }
  898. /// <summary>
  899. ///
  900. /// </summary>
  901. public string F_IP
  902. {
  903. set { _f_ip = value; }
  904. get { return _f_ip; }
  905. }
  906. /// <summary>
  907. ///
  908. /// </summary>
  909. public string F_Country
  910. {
  911. set { _f_country = value; }
  912. get { return _f_country; }
  913. }
  914. /// <summary>
  915. ///
  916. /// </summary>
  917. public string F_CountryCode
  918. {
  919. set { _f_countrycode = value; }
  920. get { return _f_countrycode; }
  921. }
  922. /// <summary>
  923. ///
  924. /// </summary>
  925. public string F_Area
  926. {
  927. set { _f_area = value; }
  928. get { return _f_area; }
  929. }
  930. /// <summary>
  931. ///
  932. /// </summary>
  933. public string F_AreaCode
  934. {
  935. set { _f_areacode = value; }
  936. get { return _f_areacode; }
  937. }
  938. /// <summary>
  939. ///
  940. /// </summary>
  941. public string F_Region
  942. {
  943. set { _f_region = value; }
  944. get { return _f_region; }
  945. }
  946. /// <summary>
  947. ///
  948. /// </summary>
  949. public string F_RegionCode
  950. {
  951. set { _f_regioncode = value; }
  952. get { return _f_regioncode; }
  953. }
  954. /// <summary>
  955. ///
  956. /// </summary>
  957. public string F_City
  958. {
  959. set { _f_city = value; }
  960. get { return _f_city; }
  961. }
  962. /// <summary>
  963. ///
  964. /// </summary>
  965. public string F_CityCode
  966. {
  967. set { _f_citycode = value; }
  968. get { return _f_citycode; }
  969. }
  970. /// <summary>
  971. ///
  972. /// </summary>
  973. public string F_County
  974. {
  975. set { _f_county = value; }
  976. get { return _f_county; }
  977. }
  978. /// <summary>
  979. ///
  980. /// </summary>
  981. public string F_CountyCode
  982. {
  983. set { _f_countycode = value; }
  984. get { return _f_countycode; }
  985. }
  986. /// <summary>
  987. ///
  988. /// </summary>
  989. public string F_ISP
  990. {
  991. set { _f_isp = value; }
  992. get { return _f_isp; }
  993. }
  994. /// <summary>
  995. ///
  996. /// </summary>
  997. public string F_ISPCode
  998. {
  999. set { _f_ispcode = value; }
  1000. get { return _f_ispcode; }
  1001. }
  1002. /// <summary>
  1003. ///
  1004. /// </summary>
  1005. public DateTime? F_CreateTime
  1006. {
  1007. set { _f_createtime = value; }
  1008. get { return _f_createtime; }
  1009. }
  1010. /// <summary>
  1011. ///
  1012. /// </summary>
  1013. public int? F_Type
  1014. {
  1015. set { _f_type = value; }
  1016. get { return _f_type; }
  1017. }
  1018. #endregion Model
  1019. }
  1020. /// <summary>
  1021. /// 用户签入签出时间
  1022. /// </summary>
  1023. public class T_Chat_InOut
  1024. {
  1025. public T_Chat_InOut()
  1026. { }
  1027. #region Model
  1028. private int _f_id;
  1029. private string _f_openid;
  1030. private string _f_ip;
  1031. private DateTime? _f_intime;
  1032. private DateTime? _f_outtime;
  1033. private int? _f_type;
  1034. /// <summary>
  1035. ///
  1036. /// </summary>
  1037. public int F_Id
  1038. {
  1039. set { _f_id = value; }
  1040. get { return _f_id; }
  1041. }
  1042. /// <summary>
  1043. ///
  1044. /// </summary>
  1045. public string F_OpenId
  1046. {
  1047. set { _f_openid = value; }
  1048. get { return _f_openid; }
  1049. }
  1050. /// <summary>
  1051. ///
  1052. /// </summary>
  1053. public string F_IP
  1054. {
  1055. set { _f_ip = value; }
  1056. get { return _f_ip; }
  1057. }
  1058. /// <summary>
  1059. ///
  1060. /// </summary>
  1061. public DateTime? F_InTime
  1062. {
  1063. set { _f_intime = value; }
  1064. get { return _f_intime; }
  1065. }
  1066. /// <summary>
  1067. ///
  1068. /// </summary>
  1069. public DateTime? F_OutTime
  1070. {
  1071. set { _f_outtime = value; }
  1072. get { return _f_outtime; }
  1073. }
  1074. /// <summary>
  1075. ///
  1076. /// </summary>
  1077. public int? F_Type
  1078. {
  1079. set { _f_type = value; }
  1080. get { return _f_type; }
  1081. }
  1082. #endregion Model
  1083. }
  1084. }
  1085. }