UserCashRecordController.cs 57 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280
  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. var userAccountRecord = db.UserAccountRecord.Where(m => m.Version == id).ToList();
  1129. foreach (var item in userAccountRecord)
  1130. {
  1131. int recordId = item.Id;
  1132. new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).Delete("UserAccountRecord", recordId);
  1133. }
  1134. userCashRecord.Status = 0;
  1135. db.SaveChanges();
  1136. }
  1137. return "success";
  1138. }
  1139. #endregion
  1140. }
  1141. }