UserCashRecordOperateController.cs 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086
  1. /*
  2. * 提现记录
  3. */
  4. using System;
  5. using System.Web;
  6. using System.Collections.Generic;
  7. using System.Diagnostics;
  8. using System.Linq;
  9. using System.Data;
  10. using System.Threading.Tasks;
  11. using Microsoft.AspNetCore.Mvc;
  12. using Microsoft.AspNetCore.Http;
  13. using Microsoft.Extensions.Logging;
  14. using Microsoft.Extensions.Options;
  15. using MySystem.OpModels;
  16. using Library;
  17. using LitJson;
  18. using MySystemLib;
  19. namespace MySystem.Areas.Admin.Controllers
  20. {
  21. [Area("Admin")]
  22. [Route("Admin/[controller]/[action]")]
  23. public class UserCashRecordOperateController : BaseController
  24. {
  25. public UserCashRecordOperateController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  26. {
  27. OtherMySqlConn.connstr = ConfigurationManager.AppSettings["OpSqlConnStr"].ToString();
  28. }
  29. #region 提现记录列表
  30. /// <summary>
  31. /// 根据条件查询提现记录列表
  32. /// </summary>
  33. /// <returns></returns>
  34. public IActionResult Index(UserCashRecord data, string right)
  35. {
  36. ViewBag.RightInfo = RightInfo;
  37. ViewBag.right = right;
  38. string Condition = "";
  39. Condition += "CashOrderNo:\"" + data.CashOrderNo + "\",";
  40. Condition += "TradeType:\"" + data.TradeType + "\",";
  41. if (!string.IsNullOrEmpty(Condition))
  42. {
  43. Condition = Condition.TrimEnd(',');
  44. Condition = ", where: {" + Condition + "}";
  45. }
  46. ViewBag.Condition = Condition;
  47. return View();
  48. }
  49. #endregion
  50. #region 根据条件查询提现记录列表
  51. /// <summary>
  52. /// 提现记录列表
  53. /// </summary>
  54. /// <returns></returns>
  55. public JsonResult IndexData(UserCashRecord data, string OpCode, string StatusSelect, string QueryCountSelect, string CreateDateData, int page = 1, int limit = 30)
  56. {
  57. Dictionary<string, string> Fields = new Dictionary<string, string>();
  58. Fields.Add("CashOrderNo", "1"); //提现单号
  59. Fields.Add("TradeType", "0"); //交易类型
  60. string condition = " and Status>-1 and TradeType<3";
  61. //运营中心编号
  62. if (!string.IsNullOrEmpty(OpCode))
  63. {
  64. condition += " and UserId in (select Id from SysAdmin where OpCode='" + OpCode + "')";
  65. }
  66. //提现状态
  67. if (!string.IsNullOrEmpty(StatusSelect))
  68. {
  69. condition += " and Status=" + StatusSelect;
  70. }
  71. if (!string.IsNullOrEmpty(data.CashOrderNo))
  72. {
  73. condition += " and CashOrderNo='" + data.CashOrderNo + "'";
  74. }
  75. if (data.TradeType > 0)
  76. {
  77. condition += " and TradeType=" + data.TradeType;
  78. }
  79. //提交到代付状态
  80. if (!string.IsNullOrEmpty(QueryCountSelect))
  81. {
  82. condition += " and QueryCount=" + QueryCountSelect;
  83. }
  84. if (!string.IsNullOrEmpty(CreateDateData))
  85. {
  86. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  87. // string start = datelist[0];
  88. // string end = datelist[1];
  89. // condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
  90. var start = Convert.ToDateTime(Convert.ToDateTime(datelist[0]).ToString("yyyy-MM-dd"));
  91. var end = Convert.ToDateTime(Convert.ToDateTime(datelist[1]).ToString("yyyy-MM-dd") + " 23:59:59");
  92. var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
  93. var checks = opdb.UserCashRecord.Any(m => m.CreateDate <= end && m.TradeType < 3);
  94. if (check)
  95. {
  96. var sId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
  97. condition += " and Id >=" + sId;
  98. }
  99. if (checks)
  100. {
  101. var eId = opdb.UserCashRecord.Where(m => m.CreateDate <= end && m.TradeType < 3).Max(m => m.Id);
  102. condition += " and Id <=" + eId;
  103. }
  104. }
  105. else
  106. {
  107. var start = Convert.ToDateTime(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01");
  108. var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
  109. if (check)
  110. {
  111. var minId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
  112. var Info = function.ReadInstance("/WritePage/OpUserCashRecord/OpUserCashRecord.txt");
  113. if (string.IsNullOrEmpty(Info.ToString()))
  114. {
  115. function.WritePage("/WritePage/OpUserCashRecord/", "OpUserCashRecord.txt", minId.ToString());
  116. condition += " and Id >=" + minId;
  117. }
  118. else
  119. {
  120. condition += " and Id >=" + Convert.ToInt32(Info);
  121. }
  122. }
  123. else
  124. {
  125. condition += " and Id =0";
  126. }
  127. }
  128. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).IndexData("UserCashRecord", Fields, "Id desc", "0", page, limit, condition);
  129. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  130. foreach (Dictionary<string, object> dic in diclist)
  131. {
  132. int OpId = int.Parse(dic["UserId"].ToString());
  133. SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == OpId) ?? new SysAdmin();
  134. dic["OpCode"] = sysAdmin.OpCode;
  135. dic["MakerCode"] = sysAdmin.MakerCode;
  136. dic["RealName"] = sysAdmin.MakerName;
  137. dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
  138. int Status = int.Parse(dic["Status"].ToString());
  139. if (Status == 0) dic["StatusName"] = "处理中";
  140. if (Status == 1) dic["StatusName"] = "成功";
  141. if (Status == 2) dic["StatusName"] = "失败";
  142. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  143. if (QueryCount == 0) dic["LockName"] = "待提交";
  144. if (QueryCount == 1) dic["LockName"] = "已提交";
  145. }
  146. Dictionary<string, object> other = new Dictionary<string, object>();
  147. string WaitAmount = "0.00";//待处理总金额
  148. string SuccessAmount = "0.00";//提现成功总金额
  149. string FailAmount = "0.00";//提现失败总金额
  150. DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(Status=0,TradeAmount,0)),SUM(if(Status=1,TradeAmount,0)),SUM(if(Status=2,TradeAmount,0)) FROM UserCashRecord where 1=1 " + condition);
  151. if (dt.Rows.Count > 0)
  152. {
  153. WaitAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
  154. SuccessAmount = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
  155. FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
  156. }
  157. other.Add("WaitAmount", WaitAmount);
  158. other.Add("SuccessAmount", SuccessAmount);
  159. other.Add("FailAmount", FailAmount);
  160. obj.Add("other", other);
  161. return Json(obj);
  162. }
  163. #endregion
  164. #region 增加提现记录
  165. /// <summary>
  166. /// 增加或修改提现记录信息
  167. /// </summary>
  168. /// <returns></returns>
  169. public IActionResult Add(string right)
  170. {
  171. ViewBag.RightInfo = RightInfo;
  172. ViewBag.right = right;
  173. return View();
  174. }
  175. #endregion
  176. #region 增加提现记录
  177. /// <summary>
  178. /// 增加或修改提现记录信息
  179. /// </summary>
  180. /// <returns></returns>
  181. [HttpPost]
  182. public string Add(UserCashRecord data)
  183. {
  184. Dictionary<string, object> Fields = new Dictionary<string, object>();
  185. Fields.Add("Remark", data.Remark); //备注
  186. Fields.Add("SeoTitle", data.SeoTitle);
  187. Fields.Add("SeoKeyword", data.SeoKeyword);
  188. Fields.Add("SeoDescription", data.SeoDescription);
  189. int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).Add("UserCashRecord", Fields, 0);
  190. AddSysLog(data.Id.ToString(), "UserCashRecord", "add");
  191. db.SaveChanges();
  192. return "success";
  193. }
  194. #endregion
  195. #region 修改提现记录
  196. /// <summary>
  197. /// 增加或修改提现记录信息
  198. /// </summary>
  199. /// <returns></returns>
  200. public IActionResult Edit(string right, int Id = 0)
  201. {
  202. ViewBag.RightInfo = RightInfo;
  203. ViewBag.right = right;
  204. UserCashRecord editData = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id) ?? new UserCashRecord();
  205. ViewBag.data = editData;
  206. return View();
  207. }
  208. #endregion
  209. #region 修改提现记录
  210. /// <summary>
  211. /// 增加或修改提现记录信息
  212. /// </summary>
  213. /// <returns></returns>
  214. [HttpPost]
  215. public string Edit(UserCashRecord data)
  216. {
  217. Dictionary<string, object> Fields = new Dictionary<string, object>();
  218. Fields.Add("Remark", data.Remark); //备注
  219. Fields.Add("SeoTitle", data.SeoTitle);
  220. Fields.Add("SeoKeyword", data.SeoKeyword);
  221. Fields.Add("SeoDescription", data.SeoDescription);
  222. new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).Edit("UserCashRecord", Fields, data.Id);
  223. AddSysLog(data.Id.ToString(), "UserCashRecord", "update");
  224. opdb.SaveChanges();
  225. return "success";
  226. }
  227. #endregion
  228. #region 删除提现记录信息
  229. /// <summary>
  230. /// 删除提现记录信息
  231. /// </summary>
  232. /// <returns></returns>
  233. public string Delete(string Id)
  234. {
  235. string[] idlist = Id.Split(new char[] { ',' });
  236. AddSysLog(Id, "UserCashRecord", "del");
  237. foreach (string subid in idlist)
  238. {
  239. int id = int.Parse(subid);
  240. Dictionary<string, object> Fields = new Dictionary<string, object>();
  241. Fields.Add("Status", -1);
  242. new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).Edit("UserCashRecord", Fields, id);
  243. }
  244. opdb.SaveChanges();
  245. return "success";
  246. }
  247. #endregion
  248. #region 开启
  249. /// <summary>
  250. /// 开启
  251. /// </summary>
  252. /// <returns></returns>
  253. public string Open(string Id)
  254. {
  255. string[] idlist = Id.Split(new char[] { ',' });
  256. AddSysLog(Id, "UserCashRecord", "open");
  257. foreach (string subid in idlist)
  258. {
  259. int id = int.Parse(subid);
  260. Dictionary<string, object> Fields = new Dictionary<string, object>();
  261. Fields.Add("Status", 1);
  262. new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).Edit("UserCashRecord", Fields, id);
  263. }
  264. opdb.SaveChanges();
  265. return "success";
  266. }
  267. #endregion
  268. #region 关闭
  269. /// <summary>
  270. /// 关闭
  271. /// </summary>
  272. /// <returns></returns>
  273. public string Close(string Id)
  274. {
  275. string[] idlist = Id.Split(new char[] { ',' });
  276. AddSysLog(Id, "UserCashRecord", "close");
  277. foreach (string subid in idlist)
  278. {
  279. int id = int.Parse(subid);
  280. Dictionary<string, object> Fields = new Dictionary<string, object>();
  281. Fields.Add("Status", 0);
  282. new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).Edit("UserCashRecord", Fields, id);
  283. }
  284. opdb.SaveChanges();
  285. return "success";
  286. }
  287. #endregion
  288. #region 批量设置成功
  289. /// <summary>
  290. /// 批量设置成功
  291. /// </summary>
  292. /// <returns></returns>
  293. public string BatchSetting(string Id)
  294. {
  295. string[] idlist = Id.Split(new char[] { ',' });
  296. AddSysLog(Id, "OpUserCashRecord", "BatchSetting");
  297. foreach (string subid in idlist)
  298. {
  299. int id = int.Parse(subid);
  300. Dictionary<string, object> Fields = new Dictionary<string, object>();
  301. Fields.Add("Status", 1);//设置提现记录为成功
  302. new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).Edit("UserCashRecord", Fields, id);
  303. var userCashRecord = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id) ?? new UserCashRecord();
  304. if (userCashRecord.Id > 0)
  305. {
  306. UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.UserId == Convert.ToInt32(userCashRecord.UserId));
  307. if (account != null)
  308. {
  309. account.QueryCount = 1;
  310. decimal TradeAmount = userCashRecord.TradeAmount;
  311. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  312. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  313. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  314. account.WithdrawAmount += userCashRecord.TradeAmount;
  315. account.FreezeAmount -= userCashRecord.TradeAmount;
  316. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  317. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  318. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  319. opdb.UserAccountRecord.Add(new UserAccountRecord()
  320. {
  321. CreateDate = DateTime.Now,
  322. UserId = userCashRecord.UserId, //运营中心
  323. ChangeType = 3, //变动类型
  324. ProductType = 99, //产品类型
  325. ChangeAmount = userCashRecord.ActualTradeAmount, //变更金额
  326. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  327. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  328. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  329. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  330. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  331. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  332. });
  333. opdb.UserAccountRecord.Add(new UserAccountRecord()
  334. {
  335. CreateDate = DateTime.Now,
  336. UserId = userCashRecord.UserId, //运营中心
  337. ChangeType = 4, //变动类型
  338. ProductType = 99, //产品类型
  339. ChangeAmount = userCashRecord.TradeFee, //变更金额
  340. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  341. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  342. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  343. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  344. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  345. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  346. });
  347. opdb.UserAccountRecord.Add(new UserAccountRecord()
  348. {
  349. CreateDate = DateTime.Now,
  350. UserId = userCashRecord.UserId, //运营中心
  351. ChangeType = 5, //变动类型
  352. ProductType = 99, //产品类型
  353. ChangeAmount = userCashRecord.ManageFee, //变更金额
  354. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  355. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  356. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  357. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  358. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  359. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  360. });
  361. opdb.SaveChanges();
  362. RedisDbconn.Instance.Set("OpUserAccount:" + userCashRecord.UserId, account);
  363. }
  364. }
  365. }
  366. opdb.SaveChanges();
  367. return "success";
  368. }
  369. #endregion
  370. #region 排序
  371. /// <summary>
  372. /// 排序
  373. /// </summary>
  374. /// <param name="Id"></param>
  375. public string Sort(int Id, int Sort)
  376. {
  377. new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).Sort("UserCashRecord", Sort, Id);
  378. AddSysLog(Id.ToString(), "UserCashRecord", "sort");
  379. return "success";
  380. }
  381. #endregion
  382. #region 导入数据
  383. public IActionResult Import(string right)
  384. {
  385. ViewBag.RightInfo = RightInfo;
  386. ViewBag.right = right;
  387. return View();
  388. }
  389. /// <summary>
  390. /// 导入数据
  391. /// </summary>
  392. /// <param name="ExcelData"></param>
  393. [HttpPost]
  394. public string ImportPost(string ExcelPath)
  395. {
  396. string key = function.MD5_16(Guid.NewGuid().ToString());
  397. RedisDbconn.Instance.AddList("ExcelImportV3", ExcelPath + "#cut#OpUserCashRecord#cut#" + key + "#cut#" + SysUserName);
  398. return "success|" + key;
  399. }
  400. public string CheckImport(string key)
  401. {
  402. string result = RedisDbconn.Instance.Get<string>("OpCheckImport:" + key);
  403. if (!string.IsNullOrEmpty(result))
  404. {
  405. string[] datalist = result.Split('|');
  406. if (datalist[0] == "success")
  407. {
  408. return result;
  409. }
  410. return datalist[0];
  411. }
  412. return "0";
  413. }
  414. #endregion
  415. #region 导出Excel
  416. /// <summary>
  417. /// 导出Excel
  418. /// </summary>
  419. /// <returns></returns>
  420. public JsonResult ExportExcel(UserCashRecord data, string OpCode, string StatusSelect, string PayStatus)
  421. {
  422. Dictionary<string, string> Fields = new Dictionary<string, string>();
  423. Fields.Add("CashOrderNo", "1"); //提现单号
  424. Fields.Add("CreateDate", "3"); //创建时间
  425. Fields.Add("TradeType", "0"); //交易类型
  426. string condition = " and Status>-1 and TradeType<3";
  427. //运营中心编号
  428. if (!string.IsNullOrEmpty(OpCode))
  429. {
  430. condition += " and UserId in (select Id from SysAdmin where OpCode='" + OpCode + "')";
  431. }
  432. //提现状态
  433. if (!string.IsNullOrEmpty(StatusSelect))
  434. {
  435. condition += " and Status=" + StatusSelect;
  436. }
  437. //提交到代付状态
  438. if (!string.IsNullOrEmpty(PayStatus))
  439. {
  440. int QueryCount = int.Parse(function.CheckInt(PayStatus));
  441. if (QueryCount == 2)
  442. {
  443. QueryCount = 0;
  444. }
  445. condition += " and QueryCount=" + QueryCount;
  446. }
  447. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).IndexData("UserCashRecord", Fields, "Id desc", "0", 1, 20000, condition, "CashOrderNo,UserId,IdCardNo,ActualTradeAmount,Remark,Status,QueryCount,CreateDate", false);
  448. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  449. foreach (Dictionary<string, object> dic in diclist)
  450. {
  451. int OpId = int.Parse(dic["UserId"].ToString());
  452. SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.Id == OpId) ?? new SysAdmin();
  453. var user = db.Users.FirstOrDefault(m => m.Id == sysAdmin.UserId) ?? new Models.Users();
  454. dic["OpCode"] = sysAdmin.OpCode;
  455. dic["MakerCode"] = sysAdmin.MakerCode;
  456. dic["MakerName"] = sysAdmin.MakerName;
  457. dic["RealName"] = sysAdmin.RealName;
  458. dic["Mobile"] = sysAdmin.MakerMobile;
  459. dic["SettleBankName"] = user.SettleBankName;
  460. dic["SettleBankCardNo"] = user.SettleBankCardNo;
  461. dic.Remove("UserId");
  462. // dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
  463. int Status = int.Parse(dic["Status"].ToString());
  464. if (Status == 0) dic["StatusName"] = "处理中";
  465. if (Status == 1) dic["StatusName"] = "成功";
  466. if (Status == 2) dic["StatusName"] = "失败";
  467. dic.Remove("Status");
  468. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  469. if (QueryCount == 0) dic["LockName"] = "待提交";
  470. if (QueryCount == 1) dic["LockName"] = "已提交";
  471. dic.Remove("QueryCount");
  472. }
  473. Dictionary<string, object> result = new Dictionary<string, object>();
  474. result.Add("Status", "1");
  475. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  476. result.Add("Obj", diclist);
  477. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  478. ReturnFields.Add("CashOrderNo", "提现单号");
  479. ReturnFields.Add("OpCode", "运营中心编号");
  480. ReturnFields.Add("MakerCode", "创客编号");
  481. ReturnFields.Add("MakerName", "创客姓名");
  482. ReturnFields.Add("Mobile", "手机号");
  483. ReturnFields.Add("IdCardNo", "身份证号");
  484. ReturnFields.Add("SettleBankName", "开户行名称");
  485. ReturnFields.Add("SettleBankCardNo", "开户行卡号");
  486. ReturnFields.Add("ActualTradeAmount", "发佣金额(单位:元)");
  487. ReturnFields.Add("LockName", "代付标记");
  488. ReturnFields.Add("StatusName", "状态");
  489. ReturnFields.Add("Remark", "备注");
  490. ReturnFields.Add("CreateDate", "创建时间");
  491. // ReturnFields.Add("CashOrderNo", "提现单号");
  492. // ReturnFields.Add("MakerCode", "创客编码");
  493. // ReturnFields.Add("RealName", "创客名称");
  494. // ReturnFields.Add("IdCardNo", "身份证号");
  495. // ReturnFields.Add("SettleBankCardNo", "提现卡号");
  496. // ReturnFields.Add("SettleBankName", "银行名称");
  497. // ReturnFields.Add("TradeType", "交易类型");
  498. // ReturnFields.Add("TradeAmount", "交易金额(元)");
  499. // ReturnFields.Add("Status", "订单状态");
  500. // ReturnFields.Add("ReturnCode", "提现服务返回编码");
  501. // ReturnFields.Add("ReturnMsg", "提现服务返回信息");
  502. result.Add("Fields", ReturnFields);
  503. AddSysLog("0", "OpUserCashRecord", "ExportExcel");
  504. return Json(result);
  505. }
  506. #endregion
  507. #region 盟主提现记录列表
  508. /// <summary>
  509. /// 根据条件查询盟主提现记录列表
  510. /// </summary>
  511. /// <returns></returns>
  512. public IActionResult LeaderIndex(UserCashRecord data, string right)
  513. {
  514. ViewBag.RightInfo = RightInfo;
  515. ViewBag.right = right;
  516. string Condition = "";
  517. Condition += "CashOrderNo:\"" + data.CashOrderNo + "\",";
  518. Condition += "TradeType:\"" + data.TradeType + "\",";
  519. if (!string.IsNullOrEmpty(Condition))
  520. {
  521. Condition = Condition.TrimEnd(',');
  522. Condition = ", where: {" + Condition + "}";
  523. }
  524. ViewBag.Condition = Condition;
  525. return View();
  526. }
  527. #endregion
  528. #region 根据条件查询盟主提现记录列表
  529. /// <summary>
  530. /// 盟主提现记录列表
  531. /// </summary>
  532. /// <returns></returns>
  533. public JsonResult LeaderIndexData(UserCashRecord data, string MakerCode, string RealName, string StatusSelect, string QueryCountSelect, string CreateDateData, int page = 1, int limit = 30)
  534. {
  535. Dictionary<string, string> Fields = new Dictionary<string, string>();
  536. Fields.Add("CashOrderNo", "1"); //提现单号
  537. string condition = " and Status>-1 and TradeType=3";
  538. //创客编号
  539. if (!string.IsNullOrEmpty(MakerCode))
  540. {
  541. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  542. }
  543. //创客名称
  544. if (!string.IsNullOrEmpty(RealName))
  545. {
  546. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  547. // condition += " and UserId in (select Id from Users where RealName='" + RealName + "')";
  548. }
  549. //提现状态
  550. if (!string.IsNullOrEmpty(StatusSelect))
  551. {
  552. condition += " and Status=" + StatusSelect;
  553. }
  554. if (!string.IsNullOrEmpty(data.CashOrderNo))
  555. {
  556. condition += " and CashOrderNo='" + data.CashOrderNo + "'";
  557. }
  558. if (data.TradeType > 0)
  559. {
  560. condition += " and TradeType=" + data.TradeType;
  561. }
  562. //提交到代付状态
  563. if (!string.IsNullOrEmpty(QueryCountSelect))
  564. {
  565. condition += " and QueryCount=" + QueryCountSelect;
  566. }
  567. if (!string.IsNullOrEmpty(CreateDateData))
  568. {
  569. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  570. // string start = datelist[0];
  571. // string end = datelist[1];
  572. // condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
  573. var start = Convert.ToDateTime(Convert.ToDateTime(datelist[0]).ToString("yyyy-MM-dd"));
  574. var end = Convert.ToDateTime(Convert.ToDateTime(datelist[1]).ToString("yyyy-MM-dd") + " 23:59:59");
  575. var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType == 3);
  576. var checks = opdb.UserCashRecord.Any(m => m.CreateDate <= end && m.TradeType == 3);
  577. if (check)
  578. {
  579. var sId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType == 3).Min(m => m.Id);
  580. condition += " and Id >=" + sId;
  581. }
  582. if (checks)
  583. {
  584. var eId = opdb.UserCashRecord.Where(m => m.CreateDate <= end && m.TradeType == 3).Max(m => m.Id);
  585. condition += " and Id <=" + eId;
  586. }
  587. }
  588. else
  589. {
  590. // var start = DateTime.Now.ToString("yyyy-MM") + "-01";
  591. // var end = Convert.ToDateTime(start).AddMonths(1);
  592. // condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<'" + end + " 00:00:00'";
  593. var start = Convert.ToDateTime(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01");
  594. var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType == 3);
  595. if (check)
  596. {
  597. var minId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType == 3).Min(m => m.Id);
  598. var Info = function.ReadInstance("/WritePage/UserCashRecord/LeaderUserCashRecord.txt");
  599. if (string.IsNullOrEmpty(Info.ToString()))
  600. {
  601. function.WritePage("/WritePage/UserCashRecord/", "LeaderUserCashRecord.txt", minId.ToString());
  602. condition += " and Id >=" + minId;
  603. }
  604. else
  605. {
  606. condition += " and Id >=" + Convert.ToInt32(Info);
  607. }
  608. }
  609. else
  610. {
  611. condition += " and Id =0";
  612. }
  613. }
  614. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).IndexData("UserCashRecord", Fields, "Id desc", "0", page, limit, condition);
  615. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  616. foreach (Dictionary<string, object> dic in diclist)
  617. {
  618. int UserId = int.Parse(dic["UserId"].ToString());
  619. var user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Models.Users();
  620. dic["MakerCode"] = user.MakerCode;
  621. dic["RealName"] = user.RealName;
  622. dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
  623. int Status = int.Parse(dic["Status"].ToString());
  624. if (Status == 0) dic["StatusName"] = "处理中";
  625. if (Status == 1) dic["StatusName"] = "成功";
  626. if (Status == 2) dic["StatusName"] = "失败";
  627. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  628. if (QueryCount == 0) dic["LockName"] = "待提交";
  629. if (QueryCount == 1) dic["LockName"] = "已提交";
  630. }
  631. Dictionary<string, object> other = new Dictionary<string, object>();
  632. string WaitAmount = "0.00";//待处理总金额
  633. string SuccessAmount = "0.00";//提现成功总金额
  634. string FailAmount = "0.00";//提现失败总金额
  635. DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(Status=0,TradeAmount,0)),SUM(if(Status=1,TradeAmount,0)),SUM(if(Status=2,TradeAmount,0)) FROM UserCashRecord where 1=1 " + condition);
  636. if (dt.Rows.Count > 0)
  637. {
  638. WaitAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
  639. SuccessAmount = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
  640. FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
  641. }
  642. other.Add("WaitAmount", WaitAmount);
  643. other.Add("SuccessAmount", SuccessAmount);
  644. other.Add("FailAmount", FailAmount);
  645. obj.Add("other", other);
  646. return Json(obj);
  647. }
  648. #endregion
  649. #region 导出盟主Excel
  650. /// <summary>
  651. /// 导出Excel
  652. /// </summary>
  653. /// <returns></returns>
  654. public JsonResult LeaderExportExcel(UserCashRecord data, string MakerCode, string RealName, string StatusSelect, string PayStatus)
  655. {
  656. Dictionary<string, string> Fields = new Dictionary<string, string>();
  657. Fields.Add("CashOrderNo", "1"); //提现单号
  658. Fields.Add("CreateDate", "3"); //创建时间
  659. string condition = " and Status>-1 and TradeType=3";
  660. //创客编号
  661. if (!string.IsNullOrEmpty(MakerCode))
  662. {
  663. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  664. }
  665. //创客名称
  666. if (!string.IsNullOrEmpty(RealName))
  667. {
  668. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  669. }
  670. //提现状态
  671. if (!string.IsNullOrEmpty(StatusSelect))
  672. {
  673. condition += " and Status=" + StatusSelect;
  674. }
  675. //提交到代付状态
  676. if (!string.IsNullOrEmpty(PayStatus))
  677. {
  678. int QueryCount = int.Parse(function.CheckInt(PayStatus));
  679. if (QueryCount == 2)
  680. {
  681. QueryCount = 0;
  682. }
  683. condition += " and QueryCount=" + QueryCount;
  684. }
  685. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).IndexData("UserCashRecord", Fields, "Id desc", "0", 1, 20000, condition, "CashOrderNo,UserId,IdCardNo,ActualTradeAmount,Remark,Status,QueryCount,CreateDate", false);
  686. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  687. foreach (Dictionary<string, object> dic in diclist)
  688. {
  689. int UserId = int.Parse(dic["UserId"].ToString());
  690. var user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Models.Users();
  691. dic["MakerCode"] = user.MakerCode;
  692. dic["RealName"] = user.RealName;
  693. dic["Mobile"] = user.Mobile;
  694. dic["SettleBankName"] = user.SettleBankName;
  695. dic["SettleBankCardNo"] = user.SettleBankCardNo;
  696. dic.Remove("UserId");
  697. // dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
  698. int Status = int.Parse(dic["Status"].ToString());
  699. if (Status == 0) dic["StatusName"] = "处理中";
  700. if (Status == 1) dic["StatusName"] = "成功";
  701. if (Status == 2) dic["StatusName"] = "失败";
  702. dic.Remove("Status");
  703. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  704. if (QueryCount == 0) dic["LockName"] = "待提交";
  705. if (QueryCount == 1) dic["LockName"] = "已提交";
  706. dic.Remove("QueryCount");
  707. }
  708. Dictionary<string, object> result = new Dictionary<string, object>();
  709. result.Add("Status", "1");
  710. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  711. result.Add("Obj", diclist);
  712. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  713. ReturnFields.Add("CashOrderNo", "提现单号");
  714. ReturnFields.Add("MakerCode", "创客编号");
  715. ReturnFields.Add("RealName", "灵工姓名");
  716. ReturnFields.Add("Mobile", "手机号");
  717. ReturnFields.Add("IdCardNo", "身份证号");
  718. ReturnFields.Add("SettleBankName", "开户行名称");
  719. ReturnFields.Add("SettleBankCardNo", "开户行卡号");
  720. ReturnFields.Add("ActualTradeAmount", "发佣金额(单位:元)");
  721. ReturnFields.Add("LockName", "代付标记");
  722. ReturnFields.Add("StatusName", "状态");
  723. ReturnFields.Add("Remark", "备注");
  724. ReturnFields.Add("CreateDate", "创建时间");
  725. result.Add("Fields", ReturnFields);
  726. AddSysLog("0", "UserCashRecord", "ExportExcel");
  727. return Json(result);
  728. }
  729. #endregion
  730. #region 助利宝提现记录列表
  731. /// <summary>
  732. /// 根据条件查询助利宝提现记录列表
  733. /// </summary>
  734. /// <returns></returns>
  735. public IActionResult HelpProfitIndex(UserCashRecord data, string right)
  736. {
  737. ViewBag.RightInfo = RightInfo;
  738. ViewBag.right = right;
  739. string Condition = "";
  740. Condition += "CashOrderNo:\"" + data.CashOrderNo + "\",";
  741. Condition += "TradeType:\"" + data.TradeType + "\",";
  742. if (!string.IsNullOrEmpty(Condition))
  743. {
  744. Condition = Condition.TrimEnd(',');
  745. Condition = ", where: {" + Condition + "}";
  746. }
  747. ViewBag.Condition = Condition;
  748. return View();
  749. }
  750. #endregion
  751. #region
  752. /// <summary>
  753. /// 助利宝提现记录列表
  754. /// </summary>
  755. /// <returns></returns>
  756. public JsonResult HelpProfitIndexData(UserCashRecord data, string MakerCode, string RealName, string StatusSelect, string QueryCountSelect, string CreateDateData, int page = 1, int limit = 30)
  757. {
  758. Dictionary<string, string> Fields = new Dictionary<string, string>();
  759. Fields.Add("CashOrderNo", "1"); //提现单号
  760. string condition = " and Status>-1 and TradeType=4";
  761. //创客编号
  762. if (!string.IsNullOrEmpty(MakerCode))
  763. {
  764. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  765. }
  766. //创客名称
  767. if (!string.IsNullOrEmpty(RealName))
  768. {
  769. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  770. // condition += " and UserId in (select Id from Users where RealName='" + RealName + "')";
  771. }
  772. //提现状态
  773. if (!string.IsNullOrEmpty(StatusSelect))
  774. {
  775. condition += " and Status=" + StatusSelect;
  776. }
  777. if (!string.IsNullOrEmpty(data.CashOrderNo))
  778. {
  779. condition += " and CashOrderNo='" + data.CashOrderNo + "'";
  780. }
  781. if (data.TradeType > 0)
  782. {
  783. condition += " and TradeType=" + data.TradeType;
  784. }
  785. //提交到代付状态
  786. if (!string.IsNullOrEmpty(QueryCountSelect))
  787. {
  788. condition += " and QueryCount=" + QueryCountSelect;
  789. }
  790. if (!string.IsNullOrEmpty(CreateDateData))
  791. {
  792. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  793. string start = datelist[0];
  794. string end = datelist[1];
  795. condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
  796. }
  797. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).IndexData("UserCashRecord", Fields, "Id desc", "0", page, limit, condition);
  798. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  799. foreach (Dictionary<string, object> dic in diclist)
  800. {
  801. int UserId = int.Parse(dic["UserId"].ToString());
  802. var user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Models.Users();
  803. dic["MakerCode"] = user.MakerCode;
  804. dic["RealName"] = user.RealName;
  805. dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
  806. int Status = int.Parse(dic["Status"].ToString());
  807. if (Status == 0) dic["StatusName"] = "处理中";
  808. if (Status == 1) dic["StatusName"] = "成功";
  809. if (Status == 2) dic["StatusName"] = "失败";
  810. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  811. if (QueryCount == 0) dic["LockName"] = "待提交";
  812. if (QueryCount == 1) dic["LockName"] = "已提交";
  813. }
  814. Dictionary<string, object> other = new Dictionary<string, object>();
  815. string WaitAmount = "0.00";//待处理总金额
  816. string SuccessAmount = "0.00";//提现成功总金额
  817. string FailAmount = "0.00";//提现失败总金额
  818. DataTable dt = OtherMySqlConn.dtable("SELECT SUM(if(Status=0,TradeAmount,0)),SUM(if(Status=1,TradeAmount,0)),SUM(if(Status=2,TradeAmount,0)) FROM UserCashRecord where 1=1 " + condition);
  819. if (dt.Rows.Count > 0)
  820. {
  821. WaitAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
  822. SuccessAmount = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
  823. FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
  824. }
  825. other.Add("WaitAmount", WaitAmount);
  826. other.Add("SuccessAmount", SuccessAmount);
  827. other.Add("FailAmount", FailAmount);
  828. obj.Add("other", other);
  829. return Json(obj);
  830. }
  831. #endregion
  832. #region 导出助利宝Excel
  833. /// <summary>
  834. /// 导出Excel
  835. /// </summary>
  836. /// <returns></returns>
  837. public JsonResult HelpProfitExportExcel(UserCashRecord data, string MakerCode, string RealName, string StatusSelect, string PayStatus)
  838. {
  839. Dictionary<string, string> Fields = new Dictionary<string, string>();
  840. Fields.Add("CashOrderNo", "1"); //提现单号
  841. Fields.Add("CreateDate", "3"); //创建时间
  842. string condition = " and Status>-1 and TradeType=4";
  843. //创客编号
  844. if (!string.IsNullOrEmpty(MakerCode))
  845. {
  846. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + MakerCode + "')";
  847. }
  848. //创客名称
  849. if (!string.IsNullOrEmpty(RealName))
  850. {
  851. condition += " and UserId in (select UserId from UserForRealName where RealName='" + RealName + "')";
  852. }
  853. //提现状态
  854. if (!string.IsNullOrEmpty(StatusSelect))
  855. {
  856. condition += " and Status=" + StatusSelect;
  857. }
  858. //提交到代付状态
  859. if (!string.IsNullOrEmpty(PayStatus))
  860. {
  861. int QueryCount = int.Parse(function.CheckInt(PayStatus));
  862. if (QueryCount == 2)
  863. {
  864. QueryCount = 0;
  865. }
  866. condition += " and QueryCount=" + QueryCount;
  867. }
  868. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.OpTables).IndexData("UserCashRecord", Fields, "Id desc", "0", 1, 20000, condition, "CashOrderNo,UserId,IdCardNo,ActualTradeAmount,Remark,Status,QueryCount,CreateDate", false);
  869. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  870. foreach (Dictionary<string, object> dic in diclist)
  871. {
  872. int UserId = int.Parse(dic["UserId"].ToString());
  873. var user = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Models.Users();
  874. dic["MakerCode"] = user.MakerCode;
  875. dic["RealName"] = user.RealName;
  876. dic["Mobile"] = user.Mobile;
  877. dic["SettleBankName"] = user.SettleBankName;
  878. dic["SettleBankCardNo"] = user.SettleBankCardNo;
  879. dic.Remove("UserId");
  880. // dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
  881. int Status = int.Parse(dic["Status"].ToString());
  882. if (Status == 0) dic["StatusName"] = "处理中";
  883. if (Status == 1) dic["StatusName"] = "成功";
  884. if (Status == 2) dic["StatusName"] = "失败";
  885. dic.Remove("Status");
  886. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  887. if (QueryCount == 0) dic["LockName"] = "待提交";
  888. if (QueryCount == 1) dic["LockName"] = "已提交";
  889. dic.Remove("QueryCount");
  890. }
  891. Dictionary<string, object> result = new Dictionary<string, object>();
  892. result.Add("Status", "1");
  893. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  894. result.Add("Obj", diclist);
  895. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  896. ReturnFields.Add("CashOrderNo", "提现单号");
  897. ReturnFields.Add("MakerCode", "创客编号");
  898. ReturnFields.Add("RealName", "灵工姓名");
  899. ReturnFields.Add("Mobile", "手机号");
  900. ReturnFields.Add("IdCardNo", "身份证号");
  901. ReturnFields.Add("SettleBankName", "开户行名称");
  902. ReturnFields.Add("SettleBankCardNo", "开户行卡号");
  903. ReturnFields.Add("ActualTradeAmount", "发佣金额(单位:元)");
  904. ReturnFields.Add("LockName", "代付标记");
  905. ReturnFields.Add("StatusName", "状态");
  906. ReturnFields.Add("Remark", "备注");
  907. ReturnFields.Add("CreateDate", "创建时间");
  908. result.Add("Fields", ReturnFields);
  909. AddSysLog("0", "UserCashRecord", "ExportExcel");
  910. return Json(result);
  911. }
  912. #endregion
  913. #region 提交代付平台
  914. /// <summary>
  915. /// 提交代付平台
  916. /// </summary>
  917. /// <returns></returns>
  918. public string Cash(string Id)
  919. {
  920. string[] idlist = Id.Split(new char[] { ',' });
  921. AddSysLog(Id, "UserCashRecord", "cash");
  922. opdb.SaveChanges();
  923. foreach (string subid in idlist)
  924. {
  925. int id = int.Parse(subid);
  926. UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id && m.QueryCount == 0);
  927. if (edit != null)
  928. {
  929. edit.QueryCount = 1;
  930. edit.UpdateDate = DateTime.Now;
  931. opdb.SaveChanges();
  932. RedisDbconn.Instance.AddList("CashPayApplyQueue", Newtonsoft.Json.JsonConvert.SerializeObject(edit));
  933. }
  934. }
  935. return "success";
  936. }
  937. #endregion
  938. #region 解除
  939. /// <summary>
  940. /// 解除
  941. /// </summary>
  942. /// <returns></returns>
  943. public string Cancel(string Id)
  944. {
  945. string[] idlist = Id.Split(new char[] { ',' });
  946. AddSysLog(Id, "WithdrawRecord", "Cancel");
  947. foreach (string subid in idlist)
  948. {
  949. int id = int.Parse(subid);
  950. UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id);
  951. if (edit != null)
  952. {
  953. edit.QueryCount = 0;
  954. opdb.SaveChanges();
  955. }
  956. }
  957. return "success";
  958. }
  959. #endregion
  960. }
  961. }