UserCashRecordOperatesController.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  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 UserCashRecordOperatesController : BaseController
  24. {
  25. public UserCashRecordOperatesController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  26. {
  27. }
  28. #region 提现记录列表
  29. /// <summary>
  30. /// 根据条件查询提现记录列表
  31. /// </summary>
  32. /// <returns></returns>
  33. public IActionResult Index(UserCashRecord data, string right)
  34. {
  35. ViewBag.RightInfo = RightInfo;
  36. ViewBag.right = right;
  37. string Condition = "";
  38. Condition += "CashOrderNo:\"" + data.CashOrderNo + "\",";
  39. Condition += "TradeType:\"" + data.TradeType + "\",";
  40. if (!string.IsNullOrEmpty(Condition))
  41. {
  42. Condition = Condition.TrimEnd(',');
  43. Condition = ", where: {" + Condition + "}";
  44. }
  45. ViewBag.Condition = Condition;
  46. return View();
  47. }
  48. #endregion
  49. #region 根据条件查询提现记录列表
  50. /// <summary>
  51. /// 提现记录列表
  52. /// </summary>
  53. /// <returns></returns>
  54. public JsonResult IndexData(UserCashRecord data, string OpCode, string StatusSelect, string CreateDateData, int page = 1, int limit = 30)
  55. {
  56. Dictionary<string, string> Fields = new Dictionary<string, string>();
  57. Fields.Add("CashOrderNo", "1"); //提现单号
  58. Fields.Add("TradeType", "0"); //交易类型
  59. string condition = " and Status>-1 and TradeType=3";
  60. //运营中心编号
  61. if (!string.IsNullOrEmpty(OpCode))
  62. {
  63. condition += " and UserId in (select UserId from SysAdmin where OpCode='" + OpCode + "')";
  64. }
  65. //提现状态
  66. if (!string.IsNullOrEmpty(StatusSelect))
  67. {
  68. condition += " and Status=" + StatusSelect;
  69. }
  70. if (!string.IsNullOrEmpty(data.CashOrderNo))
  71. {
  72. condition += " and CashOrderNo='" + data.CashOrderNo + "'";
  73. }
  74. if (data.TradeType > 0)
  75. {
  76. condition += " and TradeType=" + data.TradeType;
  77. }
  78. if (!string.IsNullOrEmpty(CreateDateData))
  79. {
  80. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  81. var start = Convert.ToDateTime(Convert.ToDateTime(datelist[0]).ToString("yyyy-MM-dd"));
  82. var end = Convert.ToDateTime(Convert.ToDateTime(datelist[1]).ToString("yyyy-MM-dd") + " 23:59:59");
  83. var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
  84. var checks = opdb.UserCashRecord.Any(m => m.CreateDate <= end && m.TradeType < 3);
  85. if (check)
  86. {
  87. var sId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
  88. condition += " and Id >=" + sId;
  89. }
  90. if (checks)
  91. {
  92. var eId = opdb.UserCashRecord.Where(m => m.CreateDate <= end && m.TradeType < 3).Max(m => m.Id);
  93. condition += " and Id <=" + eId;
  94. }
  95. }
  96. else
  97. {
  98. var start = Convert.ToDateTime(DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-01");
  99. var check = opdb.UserCashRecord.Any(m => m.CreateDate >= start && m.TradeType < 3);
  100. if (check)
  101. {
  102. var minId = opdb.UserCashRecord.Where(m => m.CreateDate >= start && m.TradeType < 3).Min(m => m.Id);
  103. var Info = function.ReadInstance("/WritePage/OpUserCashRecord/OpUserCashRecord.txt");
  104. if (string.IsNullOrEmpty(Info.ToString()))
  105. {
  106. function.WritePage("/WritePage/OpUserCashRecord/", "OpUserCashRecord.txt", minId.ToString());
  107. condition += " and Id >=" + minId;
  108. }
  109. else if (minId != int.Parse(Info))
  110. {
  111. function.WritePage("/WritePage/OpUserCashRecord/", "OpUserCashRecord.txt", minId.ToString());
  112. condition += " and Id >=" + minId;
  113. }
  114. else
  115. {
  116. condition += " and Id >=" + Convert.ToInt32(Info);
  117. }
  118. }
  119. else
  120. {
  121. condition += " and Id =0";
  122. }
  123. }
  124. Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("UserCashRecord", Fields, "Id desc", "0", page, limit, condition);
  125. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  126. foreach (Dictionary<string, object> dic in diclist)
  127. {
  128. int UserId = int.Parse(dic["UserId"].ToString());
  129. SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new SysAdmin();
  130. dic["OpCode"] = sysAdmin.OpCode;
  131. dic["MakerCode"] = sysAdmin.MakerCode;
  132. dic["RealName"] = sysAdmin.MakerName;
  133. dic["TradeType"] = RelationClassForConst.GetTradeTypeInfo(int.Parse(dic["TradeType"].ToString()));
  134. int Status = int.Parse(dic["Status"].ToString());
  135. if (Status == 0) dic["StatusName"] = "处理中";
  136. if (Status == 1) dic["StatusName"] = "成功";
  137. if (Status == 2) dic["StatusName"] = "失败";
  138. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  139. if (QueryCount == 0) dic["LockName"] = "待提交";
  140. if (QueryCount == 1) dic["LockName"] = "已提交";
  141. }
  142. Dictionary<string, object> other = new Dictionary<string, object>();
  143. string WaitAmount = "0.00";//待处理总金额
  144. string SuccessAmount = "0.00";//提现成功总金额
  145. string FailAmount = "0.00";//提现失败总金额
  146. 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);
  147. if (dt.Rows.Count > 0)
  148. {
  149. WaitAmount = decimal.Parse(function.CheckNum(dt.Rows[0][0].ToString())).ToString("f2");
  150. SuccessAmount = decimal.Parse(function.CheckNum(dt.Rows[0][1].ToString())).ToString("f2");
  151. FailAmount = decimal.Parse(function.CheckNum(dt.Rows[0][2].ToString())).ToString("f2");
  152. }
  153. other.Add("WaitAmount", WaitAmount);
  154. other.Add("SuccessAmount", SuccessAmount);
  155. other.Add("FailAmount", FailAmount);
  156. obj.Add("other", other);
  157. return Json(obj);
  158. }
  159. #endregion
  160. #region 增加提现记录
  161. /// <summary>
  162. /// 增加或修改提现记录信息
  163. /// </summary>
  164. /// <returns></returns>
  165. public IActionResult Add(string right)
  166. {
  167. ViewBag.RightInfo = RightInfo;
  168. ViewBag.right = right;
  169. return View();
  170. }
  171. #endregion
  172. #region 增加提现记录
  173. /// <summary>
  174. /// 增加或修改提现记录信息
  175. /// </summary>
  176. /// <returns></returns>
  177. [HttpPost]
  178. public string Add(UserCashRecord data)
  179. {
  180. Dictionary<string, object> Fields = new Dictionary<string, object>();
  181. Fields.Add("Remark", data.Remark); //备注
  182. Fields.Add("SeoTitle", data.SeoTitle);
  183. Fields.Add("SeoKeyword", data.SeoKeyword);
  184. Fields.Add("SeoDescription", data.SeoDescription);
  185. int Id = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Add("UserCashRecord", Fields, 0);
  186. AddSysLog(data.Id.ToString(), "UserCashRecord", "add");
  187. db.SaveChanges();
  188. return "success";
  189. }
  190. #endregion
  191. #region 修改提现记录
  192. /// <summary>
  193. /// 增加或修改提现记录信息
  194. /// </summary>
  195. /// <returns></returns>
  196. public IActionResult Edit(string right, int Id = 0)
  197. {
  198. ViewBag.RightInfo = RightInfo;
  199. ViewBag.right = right;
  200. UserCashRecord editData = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id) ?? new UserCashRecord();
  201. ViewBag.data = editData;
  202. return View();
  203. }
  204. #endregion
  205. #region 修改提现记录
  206. /// <summary>
  207. /// 增加或修改提现记录信息
  208. /// </summary>
  209. /// <returns></returns>
  210. [HttpPost]
  211. public string Edit(UserCashRecord data)
  212. {
  213. Dictionary<string, object> Fields = new Dictionary<string, object>();
  214. Fields.Add("Remark", data.Remark); //备注
  215. Fields.Add("SeoTitle", data.SeoTitle);
  216. Fields.Add("SeoKeyword", data.SeoKeyword);
  217. Fields.Add("SeoDescription", data.SeoDescription);
  218. new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, data.Id);
  219. AddSysLog(data.Id.ToString(), "UserCashRecord", "update");
  220. opdb.SaveChanges();
  221. return "success";
  222. }
  223. #endregion
  224. #region 删除提现记录信息
  225. /// <summary>
  226. /// 删除提现记录信息
  227. /// </summary>
  228. /// <returns></returns>
  229. public string Delete(string Id)
  230. {
  231. string[] idlist = Id.Split(new char[] { ',' });
  232. AddSysLog(Id, "UserCashRecord", "del");
  233. foreach (string subid in idlist)
  234. {
  235. int id = int.Parse(subid);
  236. Dictionary<string, object> Fields = new Dictionary<string, object>();
  237. Fields.Add("Status", -1);
  238. new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
  239. }
  240. opdb.SaveChanges();
  241. return "success";
  242. }
  243. #endregion
  244. #region 开启
  245. /// <summary>
  246. /// 开启
  247. /// </summary>
  248. /// <returns></returns>
  249. public string Open(string Id)
  250. {
  251. string[] idlist = Id.Split(new char[] { ',' });
  252. AddSysLog(Id, "UserCashRecord", "open");
  253. foreach (string subid in idlist)
  254. {
  255. int id = int.Parse(subid);
  256. Dictionary<string, object> Fields = new Dictionary<string, object>();
  257. Fields.Add("Status", 1);
  258. new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
  259. }
  260. opdb.SaveChanges();
  261. return "success";
  262. }
  263. #endregion
  264. #region 关闭
  265. /// <summary>
  266. /// 关闭
  267. /// </summary>
  268. /// <returns></returns>
  269. public string Close(string Id)
  270. {
  271. string[] idlist = Id.Split(new char[] { ',' });
  272. AddSysLog(Id, "UserCashRecord", "close");
  273. foreach (string subid in idlist)
  274. {
  275. int id = int.Parse(subid);
  276. Dictionary<string, object> Fields = new Dictionary<string, object>();
  277. Fields.Add("Status", 0);
  278. new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
  279. }
  280. opdb.SaveChanges();
  281. return "success";
  282. }
  283. #endregion
  284. #region 批量设置成功
  285. /// <summary>
  286. /// 批量设置成功
  287. /// </summary>
  288. /// <returns></returns>
  289. public string BatchSetting(string Id)
  290. {
  291. string[] idlist = Id.Split(new char[] { ',' });
  292. AddSysLog(Id, "OpUserCashRecord", "BatchSetting");
  293. foreach (string subid in idlist)
  294. {
  295. int id = int.Parse(subid);
  296. Dictionary<string, object> Fields = new Dictionary<string, object>();
  297. Fields.Add("Status", 1);//设置提现记录为成功
  298. new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Edit("UserCashRecord", Fields, id);
  299. var userCashRecord = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id) ?? new UserCashRecord();
  300. if (userCashRecord.Id > 0)
  301. {
  302. UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.UserId == Convert.ToInt32(userCashRecord.UserId));
  303. if (account != null)
  304. {
  305. account.QueryCount = 1;
  306. decimal TradeAmount = userCashRecord.TradeAmount;
  307. decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
  308. decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
  309. decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
  310. decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
  311. decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
  312. decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
  313. opdb.UserAccountRecord.Add(new UserAccountRecord()
  314. {
  315. CreateDate = DateTime.Now,
  316. UserId = userCashRecord.UserId, //运营中心
  317. ChangeType = 3, //变动类型
  318. ProductType = 99, //产品类型
  319. ChangeAmount = userCashRecord.ActualTradeAmount, //变更金额
  320. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  321. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  322. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  323. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  324. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  325. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  326. });
  327. opdb.UserAccountRecord.Add(new UserAccountRecord()
  328. {
  329. CreateDate = DateTime.Now,
  330. UserId = userCashRecord.UserId, //运营中心
  331. ChangeType = 4, //变动类型
  332. ProductType = 99, //产品类型
  333. ChangeAmount = userCashRecord.TradeFee, //变更金额
  334. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  335. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  336. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  337. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  338. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  339. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  340. });
  341. opdb.UserAccountRecord.Add(new UserAccountRecord()
  342. {
  343. CreateDate = DateTime.Now,
  344. UserId = userCashRecord.UserId, //运营中心
  345. ChangeType = 5, //变动类型
  346. ProductType = 99, //产品类型
  347. ChangeAmount = userCashRecord.ManageFee, //变更金额
  348. BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
  349. AfterTotalAmount = AfterTotalAmount, //变更后总金额
  350. BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
  351. AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
  352. BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
  353. AfterBalanceAmount = AfterBalanceAmount, //变更后余额
  354. });
  355. opdb.SaveChanges();
  356. RedisDbconn.Instance.Set("OpUserAccount:" + userCashRecord.UserId, account);
  357. }
  358. }
  359. }
  360. opdb.SaveChanges();
  361. return "success";
  362. }
  363. #endregion
  364. #region 排序
  365. /// <summary>
  366. /// 排序
  367. /// </summary>
  368. /// <param name="Id"></param>
  369. public string Sort(int Id, int Sort)
  370. {
  371. new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).Sort("UserCashRecord", Sort, Id);
  372. AddSysLog(Id.ToString(), "UserCashRecord", "sort");
  373. return "success";
  374. }
  375. #endregion
  376. #region 导入数据
  377. public IActionResult Import(string right)
  378. {
  379. ViewBag.RightInfo = RightInfo;
  380. ViewBag.right = right;
  381. return View();
  382. }
  383. /// <summary>
  384. /// 导入数据
  385. /// </summary>
  386. /// <param name="ExcelData"></param>
  387. [HttpPost]
  388. public string ImportPost(string ExcelPath)
  389. {
  390. string key = function.MD5_16(Guid.NewGuid().ToString());
  391. RedisDbconn.Instance.AddList("ExcelImportOperate", ExcelPath + "#cut#OpUserCashRecord#cut#" + key + "#cut#" + SysUserName);
  392. return "success|" + key;
  393. }
  394. public string CheckImport(string key)
  395. {
  396. string result = RedisDbconn.Instance.Get<string>("OpCheckImport:" + key);
  397. if (!string.IsNullOrEmpty(result))
  398. {
  399. string[] datalist = result.Split('|');
  400. if (datalist[0] == "success")
  401. {
  402. return result;
  403. }
  404. return datalist[0];
  405. }
  406. return "0";
  407. }
  408. #endregion
  409. #region 导出Excel
  410. /// <summary>
  411. /// 导出Excel
  412. /// </summary>
  413. /// <returns></returns>
  414. public JsonResult ExportExcel(UserCashRecord data, string OpCode, string StatusSelect, string PayStatus)
  415. {
  416. Dictionary<string, string> Fields = new Dictionary<string, string>();
  417. Fields.Add("CashOrderNo", "1"); //提现单号
  418. Fields.Add("CreateDate", "3"); //创建时间
  419. Fields.Add("TradeType", "0"); //交易类型
  420. string condition = " and Status>-1 and TradeType=3";
  421. //运营中心编号
  422. if (!string.IsNullOrEmpty(OpCode))
  423. {
  424. var sysUser = opdb.SysAdmin.FirstOrDefault(m => m.OpCode == OpCode) ?? new OpModels.SysAdmin();
  425. if (sysUser.Id > 0)
  426. {
  427. condition += " and OpId=" + sysUser.UserId;
  428. }
  429. }
  430. //提现状态
  431. if (!string.IsNullOrEmpty(StatusSelect))
  432. {
  433. condition += " and Status=" + StatusSelect;
  434. }
  435. //提交到代付状态
  436. if (!string.IsNullOrEmpty(PayStatus))
  437. {
  438. int QueryCount = int.Parse(function.CheckInt(PayStatus));
  439. if (QueryCount == 2)
  440. {
  441. QueryCount = 0;
  442. }
  443. condition += " and QueryCount=" + QueryCount;
  444. }
  445. Dictionary<string, object> obj = new AdminContentByConn(_accessor.HttpContext, PublicFunction.OpTables, OpConn).IndexData("UserCashRecord", Fields, "Id desc", "0", 1, 20000, condition, "CashOrderNo,UserId,IdCardNo,ActualTradeAmount,Remark,Status,QueryCount,CreateDate", false);
  446. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  447. foreach (Dictionary<string, object> dic in diclist)
  448. {
  449. int UserId = int.Parse(dic["UserId"].ToString());
  450. SysAdmin sysAdmin = opdb.SysAdmin.FirstOrDefault(m => m.UserId == UserId) ?? new SysAdmin();
  451. var user = db.Users.FirstOrDefault(m => m.Id == sysAdmin.UserId) ?? new Models.Users();
  452. dic["OpCode"] = sysAdmin.OpCode;
  453. dic["MakerCode"] = sysAdmin.MakerCode;
  454. dic["MakerName"] = sysAdmin.MakerName;
  455. dic["RealName"] = sysAdmin.RealName;
  456. dic["Mobile"] = sysAdmin.MakerMobile;
  457. dic["SettleBankName"] = user.SettleBankName;
  458. dic["SettleBankCardNo"] = user.SettleBankCardNo;
  459. dic.Remove("UserId");
  460. int Status = int.Parse(dic["Status"].ToString());
  461. if (Status == 0) dic["StatusName"] = "处理中";
  462. if (Status == 1) dic["StatusName"] = "成功";
  463. if (Status == 2) dic["StatusName"] = "失败";
  464. dic.Remove("Status");
  465. int QueryCount = int.Parse(dic["QueryCount"].ToString());
  466. if (QueryCount == 0) dic["LockName"] = "待提交";
  467. if (QueryCount == 1) dic["LockName"] = "已提交";
  468. dic.Remove("QueryCount");
  469. }
  470. Dictionary<string, object> result = new Dictionary<string, object>();
  471. result.Add("Status", "1");
  472. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  473. result.Add("Obj", diclist);
  474. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  475. ReturnFields.Add("CashOrderNo", "提现单号");
  476. ReturnFields.Add("OpCode", "运营中心编号");
  477. ReturnFields.Add("MakerCode", "创客编号");
  478. ReturnFields.Add("MakerName", "创客姓名");
  479. ReturnFields.Add("Mobile", "手机号");
  480. ReturnFields.Add("IdCardNo", "身份证号");
  481. ReturnFields.Add("SettleBankName", "开户行名称");
  482. ReturnFields.Add("SettleBankCardNo", "开户行卡号");
  483. ReturnFields.Add("ActualTradeAmount", "发佣金额(单位:元)");
  484. ReturnFields.Add("LockName", "代付标记");
  485. ReturnFields.Add("StatusName", "状态");
  486. ReturnFields.Add("Remark", "备注");
  487. ReturnFields.Add("CreateDate", "创建时间");
  488. result.Add("Fields", ReturnFields);
  489. AddSysLog("0", "OpUserCashRecord", "ExportExcel");
  490. return Json(result);
  491. }
  492. #endregion
  493. #region 拒绝
  494. /// <summary>
  495. /// 拒绝
  496. /// </summary>
  497. /// <returns></returns>
  498. public IActionResult Reduce(string right, int Id = 0)
  499. {
  500. ViewBag.RightInfo = RightInfo;
  501. ViewBag.right = right;
  502. UserCashRecord editData = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id) ?? new UserCashRecord();
  503. ViewBag.data = editData;
  504. return View();
  505. }
  506. #endregion
  507. #region 拒绝
  508. /// <summary>
  509. /// 拒绝
  510. /// </summary>
  511. /// <returns></returns>
  512. public string ReduceDo(int Id, string Remark)
  513. {
  514. AddSysLog(Id, "UserCashRecord", "Reduce");
  515. UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == Id);
  516. if (edit != null)
  517. {
  518. edit.Status = 2;
  519. edit.Remark = Remark;
  520. edit.UpdateMan = SysUserName;
  521. UserAccount account = opdb.UserAccount.FirstOrDefault(m => m.Id == edit.UserId);
  522. if (account != null)
  523. {
  524. decimal TradeAmount = edit.TradeAmount;
  525. decimal BeforeTotalAmount = account.ValidForGetAmount; //变更前总金额
  526. account.ValidForGetAmount += TradeAmount;//返回可提现余额
  527. decimal AfterTotalAmount = account.ValidForGetAmount; //变更后总金额
  528. opdb.AmountRecord.Add(new AmountRecord()
  529. {
  530. CreateDate = DateTime.Now,
  531. SeoDescription = "提现驳回",
  532. UserId = edit.UserId, //创客
  533. UseAmount = TradeAmount, //变更金额
  534. BeforeAmount = BeforeTotalAmount, //变更前总金额
  535. AfterAmount = AfterTotalAmount, //变更后总金额
  536. });
  537. opdb.SaveChanges();
  538. }
  539. opdb.SaveChanges();
  540. }
  541. return "success";
  542. }
  543. #endregion
  544. #region 解除
  545. /// <summary>
  546. /// 解除
  547. /// </summary>
  548. /// <returns></returns>
  549. public string Cancel(string Id)
  550. {
  551. string[] idlist = Id.Split(new char[] { ',' });
  552. AddSysLog(Id, "WithdrawRecord", "Cancel");
  553. foreach (string subid in idlist)
  554. {
  555. int id = int.Parse(subid);
  556. UserCashRecord edit = opdb.UserCashRecord.FirstOrDefault(m => m.Id == id);
  557. if (edit != null)
  558. {
  559. edit.QueryCount = 0;
  560. opdb.SaveChanges();
  561. }
  562. }
  563. return "success";
  564. }
  565. #endregion
  566. }
  567. }