PreAmountRecordController.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  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.Threading.Tasks;
  10. using Microsoft.AspNetCore.Mvc;
  11. using Microsoft.AspNetCore.Http;
  12. using Microsoft.Extensions.Logging;
  13. using Microsoft.Extensions.Options;
  14. using MySystem.Models;
  15. using Library;
  16. using LitJson;
  17. using MySystemLib;
  18. namespace MySystem.Areas.Admin.Controllers
  19. {
  20. [Area("Admin")]
  21. [Route("Admin/[controller]/[action]")]
  22. public class PreAmountRecordController : BaseController
  23. {
  24. public PreAmountRecordController(IHttpContextAccessor accessor, ILogger<BaseController> logger, IOptions<Setting> setting) : base(accessor, logger, setting)
  25. {
  26. OtherMySqlConn.connstr = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  27. }
  28. #region 根据条件查询小分仓临时额度记录列表
  29. /// <summary>
  30. /// 根据条件查询小分仓临时额度记录列表
  31. /// </summary>
  32. /// <returns></returns>
  33. public IActionResult Index(PreAmountRecord data, string right)
  34. {
  35. ViewBag.RightInfo = RightInfo;
  36. ViewBag.right = right;
  37. return View();
  38. }
  39. #endregion
  40. #region 根据条件查询小分仓临时额度记录列表
  41. /// <summary>
  42. /// 根据条件查询小分仓临时额度记录列表
  43. /// </summary>
  44. /// <returns></returns>
  45. public JsonResult IndexData(PreAmountRecord data, string UserIdRealName, string UserIdMakerCode, string CreateDateData, string OperateTypeSelect, string PayModeSelect, int page = 1, int limit = 30)
  46. {
  47. Dictionary<string, string> Fields = new Dictionary<string, string>();
  48. string condition = " and Status>=-1";
  49. //创客真实姓名
  50. if (!string.IsNullOrEmpty(UserIdRealName))
  51. {
  52. condition += " and UserId in (select UserId from UserForRealName where RealName='" + UserIdRealName + "')";
  53. }
  54. //创客编号
  55. if (!string.IsNullOrEmpty(UserIdMakerCode))
  56. {
  57. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
  58. }
  59. if (!string.IsNullOrEmpty(CreateDateData))
  60. {
  61. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  62. string start = datelist[0];
  63. string end = datelist[1];
  64. condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
  65. }
  66. //操作类别
  67. if (!string.IsNullOrEmpty(OperateTypeSelect))
  68. {
  69. condition += " and OperateType=" + OperateTypeSelect;
  70. }
  71. //额度类别
  72. if (!string.IsNullOrEmpty(PayModeSelect))
  73. {
  74. condition += " and PayMode=" + PayModeSelect;
  75. }
  76. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PreAmountRecord", Fields, "Id desc", "0", page, limit, condition);
  77. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  78. foreach (Dictionary<string, object> dic in diclist)
  79. {
  80. //创客
  81. int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
  82. Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  83. dic["UserIdRealName"] = userid_Users.RealName;
  84. dic["UserIdMakerCode"] = userid_Users.MakerCode;
  85. dic.Remove("UserId");
  86. //操作类别
  87. int OperateType = int.Parse(dic["OperateType"].ToString());
  88. if (OperateType == 0) dic["OperateType"] = "减少";
  89. if (OperateType == 1) dic["OperateType"] = "增加";
  90. //额度类别
  91. int PayMode = int.Parse(dic["PayMode"].ToString());
  92. if (PayMode == 1) dic["PayMode"] = "支付宝";
  93. if (PayMode == 3) dic["PayMode"] = "余额";
  94. if (PayMode == 0) dic["PayMode"] = "";
  95. }
  96. return Json(obj);
  97. }
  98. #endregion
  99. #region 小分仓银行卡临额提现记录列表
  100. /// <summary>
  101. /// 根据条件查询小分仓银行卡临额提现记录列表
  102. /// </summary>
  103. /// <returns></returns>
  104. public IActionResult Indexs(PreAmountRecord data, string right)
  105. {
  106. ViewBag.RightInfo = RightInfo;
  107. ViewBag.right = right;
  108. return View();
  109. }
  110. #endregion
  111. #region 小分仓银行卡临额提现记录列表
  112. /// <summary>
  113. /// 根据条件查询小分仓银行卡临额提现记录列表
  114. /// </summary>
  115. /// <returns></returns>
  116. public JsonResult IndexsData(PreAmountRecord data, string UserIdRealName, string UserIdMakerCode, string CreateDateData, string OperateTypeSelect, string PayModeSelect, string StatusSelect = "0", int page = 1, int limit = 30)
  117. {
  118. Dictionary<string, string> Fields = new Dictionary<string, string>();
  119. string condition = " and Status>=-1 and PayMode=1 and Sort=3";
  120. //创客真实姓名
  121. if (!string.IsNullOrEmpty(UserIdRealName))
  122. {
  123. condition += " and UserId in (select UserId from Users where RealName='" + UserIdRealName + "')";
  124. }
  125. //创客编号
  126. if (!string.IsNullOrEmpty(UserIdMakerCode))
  127. {
  128. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
  129. }
  130. if (!string.IsNullOrEmpty(CreateDateData))
  131. {
  132. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  133. string start = datelist[0];
  134. string end = datelist[1];
  135. condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
  136. }
  137. //操作类别
  138. if (!string.IsNullOrEmpty(OperateTypeSelect))
  139. {
  140. condition += " and OperateType=" + OperateTypeSelect;
  141. }
  142. //额度类别
  143. if (!string.IsNullOrEmpty(PayModeSelect))
  144. {
  145. condition += " and PayMode=" + PayModeSelect;
  146. }
  147. //状态
  148. if (!string.IsNullOrEmpty(StatusSelect))
  149. {
  150. condition += " and Status=" + StatusSelect;
  151. }
  152. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PreAmountRecord", Fields, "Id desc", "0", page, limit, condition);
  153. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  154. foreach (Dictionary<string, object> dic in diclist)
  155. {
  156. //创客
  157. int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
  158. Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  159. dic["UserIdRealName"] = userid_Users.RealName;
  160. dic["UserIdMakerCode"] = userid_Users.MakerCode;
  161. dic["CertId"] = userid_Users.CertId;
  162. dic["SettleBankCardNo"] = userid_Users.SettleBankCardNo;
  163. dic["SettleBankName"] = userid_Users.SettleBankName;
  164. dic["Mobile"] = userid_Users.Mobile;
  165. dic["Type"] = "临额提现";
  166. dic.Remove("UserId");
  167. //操作类别
  168. int OperateType = int.Parse(dic["OperateType"].ToString());
  169. if (OperateType == 0) dic["OperateType"] = "减少";
  170. if (OperateType == 1) dic["OperateType"] = "增加";
  171. //额度类别
  172. int PayMode = int.Parse(dic["PayMode"].ToString());
  173. if (PayMode == 1) dic["PayMode"] = "支付宝";
  174. if (PayMode == 3) dic["PayMode"] = "余额";
  175. if (PayMode == 0) dic["PayMode"] = "";
  176. //状态
  177. int Status = int.Parse(dic["Status"].ToString());
  178. if (Status == 0) dic["Status"] = "待处理";
  179. if (Status == 2) dic["Status"] = "处理中";
  180. if (Status == 1) dic["Status"] = "成功";
  181. if (Status == -1) dic["Status"] = "失败";
  182. decimal UseAmount = Convert.ToDecimal(dic["UseAmount"].ToString());
  183. dic["UseAmount"] = UseAmount / 2;
  184. }
  185. return Json(obj);
  186. }
  187. #endregion
  188. #region 小分仓银行卡临额提现记录导出Excel
  189. /// <summary>
  190. /// 导出Excel
  191. /// </summary>
  192. /// <returns></returns>
  193. public JsonResult ExportsExcel(PreAmountRecord data, string UserIdRealName, string UserIdMakerCode, string CreateDateData, string StatusSelect)
  194. {
  195. Dictionary<string, string> Fields = new Dictionary<string, string>();
  196. string condition = " and PayMode=1 and Sort=3";
  197. //创客真实姓名
  198. if (!string.IsNullOrEmpty(UserIdRealName))
  199. {
  200. condition += " and UserId in (select UserId from Users where RealName='" + UserIdRealName + "')";
  201. }
  202. //创客编号
  203. if (!string.IsNullOrEmpty(UserIdMakerCode))
  204. {
  205. condition += " and UserId in (select UserId from UserForMakerCode where MakerCode='" + UserIdMakerCode + "')";
  206. }
  207. if (!string.IsNullOrEmpty(CreateDateData))
  208. {
  209. string[] datelist = CreateDateData.Split(new string[] { " - " }, StringSplitOptions.None);
  210. string start = datelist[0];
  211. string end = datelist[1];
  212. condition += " and CreateDate>='" + start + " 00:00:00' and CreateDate<='" + end + " 23:59:59'";
  213. }
  214. //状态
  215. if (!string.IsNullOrEmpty(StatusSelect))
  216. {
  217. condition += " and Status=" + StatusSelect;
  218. }
  219. var Ids = "";
  220. Dictionary<string, object> obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.MainTables).IndexData("PreAmountRecord", Fields, "Id desc", "0", 1, 20000, condition, "Id,CreateDate,UserId,UseAmount", false);
  221. List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
  222. foreach (Dictionary<string, object> dic in diclist)
  223. {
  224. //创客
  225. int UserId = int.Parse(function.CheckInt(dic["UserId"].ToString()));
  226. Users userid_Users = db.Users.FirstOrDefault(m => m.Id == UserId) ?? new Users();
  227. dic["UserIdRealName"] = userid_Users.RealName;
  228. dic["UserIdMakerCode"] = userid_Users.MakerCode;
  229. decimal UseAmount = Convert.ToDecimal(dic["UseAmount"].ToString());
  230. dic["UseAmount"] = UseAmount / 2;
  231. dic["CertId"] = userid_Users.CertId;
  232. dic["SettleBankCardNo"] = userid_Users.SettleBankCardNo;
  233. dic["SettleBankName"] = userid_Users.SettleBankName;
  234. dic["Mobile"] = userid_Users.Mobile;
  235. dic["Type"] = "临额提现";
  236. dic["IsOk"] = "";
  237. dic.Remove("UserId");
  238. //记录Id
  239. int Id = int.Parse(function.CheckInt(dic["Id"].ToString()));
  240. var preAmountRecord = db.PreAmountRecord.FirstOrDefault(m => m.Id == Id) ?? new PreAmountRecord();
  241. if (preAmountRecord.Status == 0) dic["Status"] = "待处理";
  242. if (preAmountRecord.Status == 2) dic["Status"] = "处理中";
  243. if (preAmountRecord.Status == 1) dic["Status"] = "成功";
  244. if (preAmountRecord.Status == -1) dic["Status"] = "失败";
  245. dic["Id"] = Id;
  246. Ids += Id + ",";
  247. }
  248. Ids = Ids.TrimEnd(',');
  249. Dictionary<string, object> result = new Dictionary<string, object>();
  250. result.Add("Status", "1");
  251. result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
  252. result.Add("Obj", diclist);
  253. Dictionary<string, object> ReturnFields = new Dictionary<string, object>();
  254. ReturnFields.Add("Id", "记录ID");
  255. ReturnFields.Add("CreateDate", "提现申请时间");
  256. ReturnFields.Add("Status", "提现结果");
  257. ReturnFields.Add("UserIdRealName", "创客真实姓名");
  258. ReturnFields.Add("UserIdMakerCode", "创客编号");
  259. ReturnFields.Add("UseAmount", "申请提现临额");
  260. ReturnFields.Add("CertId", "身份证号");
  261. ReturnFields.Add("SettleBankCardNo", "银行卡号");
  262. ReturnFields.Add("SettleBankName", "银行名称");
  263. ReturnFields.Add("Mobile", "手机号");
  264. ReturnFields.Add("Type", "交易类型");
  265. ReturnFields.Add("IsOk", "是否成功(是、否)");
  266. result.Add("Fields", ReturnFields);
  267. OtherMySqlConn.op("UPDATE PreAmountRecord SET `Status`=2 WHERE Id IN(" + Ids + ") AND `Status`=0");
  268. AddSysLog("0", "PreAmountRecord", "ExportExcel");
  269. return Json(result);
  270. }
  271. #endregion
  272. #region 小分仓银行卡临额提现记录结果导入Excel
  273. /// <summary>
  274. /// 小分仓银行卡临额提现记录结果导入Excel
  275. /// </summary>
  276. /// <param name="ExcelData"></param>
  277. public string Imports(string ExcelData)
  278. {
  279. ExcelData = HttpUtility.UrlDecode(ExcelData);
  280. JsonData list = JsonMapper.ToObject(ExcelData);
  281. string error = "";
  282. List<int> IdList = new List<int>();
  283. List<int> IdLists = new List<int>();
  284. for (int i = 1; i < list.Count; i++)
  285. {
  286. JsonData dr = list[i];
  287. string itemJson = dr.ToJson();
  288. string Id = itemJson.Contains("\"A\"") ? dr["A"].ToString() : "";
  289. string IsOk = itemJson.Contains("\"J\"") ? dr["J"].ToString() : "";
  290. if (IdList.Contains(Convert.ToInt32(Id)))
  291. {
  292. error += "以下操作失败" + Id + ',' + "该记录重复" + '\n';
  293. }
  294. else if (IsOk == "否")
  295. {
  296. IdLists.Add(Convert.ToInt32(Id));
  297. }
  298. else
  299. {
  300. IdList.Add(Convert.ToInt32(Id));
  301. }
  302. }
  303. if (!string.IsNullOrEmpty(error))
  304. {
  305. return "Warning|" + error;
  306. }
  307. else
  308. {
  309. var Info = db.PreAmountRecord.Where(m => IdList.Contains(m.Id)).ToList();//成功
  310. var Infos = db.PreAmountRecord.Where(m => IdLists.Contains(m.Id)).ToList();//失败
  311. foreach (var item in Info)
  312. {
  313. item.Status = 1;//设置为成功
  314. db.SaveChanges();
  315. }
  316. foreach (var items in Infos)
  317. {
  318. items.Status = -1;//设置为失败
  319. var userAccount = db.UserAccount.FirstOrDefault(m => m.Id == items.UserId) ?? new UserAccount();
  320. if (userAccount.Id > 0)
  321. {
  322. userAccount.PreTempAmount += items.UseAmount;//退还卡充值临额
  323. userAccount.ValidPreAmount += items.UseAmount;//退还可用额度
  324. }
  325. db.SaveChanges();
  326. }
  327. }
  328. AddSysLog("0", "PreCardAmountRecord", "Import");
  329. return "success";
  330. }
  331. #endregion
  332. }
  333. }