UserCashRecordController.cs 57 KB

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