|
@@ -0,0 +1,373 @@
|
|
|
|
|
+using System;
|
|
|
|
|
+using System.Threading;
|
|
|
|
|
+using System.Linq;
|
|
|
|
|
+using System.Data;
|
|
|
|
|
+using Library;
|
|
|
|
|
+using MySystem.Models;
|
|
|
|
|
+using System.Collections.Generic;
|
|
|
|
|
+
|
|
|
|
|
+/// <summary>
|
|
|
|
|
+/// 提现结果导入
|
|
|
|
|
+/// </summary>
|
|
|
|
|
+namespace MySystem
|
|
|
|
|
+{
|
|
|
|
|
+ public class WithdrawalResultsService
|
|
|
|
|
+ {
|
|
|
|
|
+ public readonly static WithdrawalResultsService Instance = new WithdrawalResultsService();
|
|
|
|
|
+ private WithdrawalResultsService()
|
|
|
|
|
+ {
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void Start()//启动
|
|
|
|
|
+ {
|
|
|
|
|
+ Thread thread = new Thread(ImportPostDo);
|
|
|
|
|
+ thread.IsBackground = true;
|
|
|
|
|
+ thread.Start();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void ImportPostDo()
|
|
|
|
|
+ {
|
|
|
|
|
+ while (true)
|
|
|
|
|
+ {
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ string data = RedisDbconn.Instance.RPop<string>("WithdrawalResultsQueue");
|
|
|
|
|
+ if (!string.IsNullOrEmpty(data))
|
|
|
|
|
+ {
|
|
|
|
|
+ string[] dataList = data.Split("#cut#");
|
|
|
|
|
+ string _ExcelPath = dataList[0];
|
|
|
|
|
+ string _Kind = dataList[1];
|
|
|
|
|
+ string checkKey = dataList[2];
|
|
|
|
|
+ string Operator = dataList[3]; // 操作人
|
|
|
|
|
+ int SuccessCount = 0;
|
|
|
|
|
+ int DoCount = 0;
|
|
|
|
|
+ string FullExcelPath = function.getPath(_ExcelPath);
|
|
|
|
|
+ FullExcelPath = FullExcelPath.Replace("//", "/");
|
|
|
|
|
+ DataTable list = new PublicFunction().ExcelToDataTable(FullExcelPath);
|
|
|
|
|
+ int TotalCount = list.Rows.Count;
|
|
|
|
|
+ while (DoCount < list.Rows.Count)
|
|
|
|
|
+ {
|
|
|
|
|
+ WebCMSEntities db = new WebCMSEntities();
|
|
|
|
|
+ //导入结算金额
|
|
|
|
|
+ if (_Kind == "1")
|
|
|
|
|
+ {
|
|
|
|
|
+ var tran = db.Database.BeginTransaction();
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ int Size = 100;
|
|
|
|
|
+ if (list.Rows.Count - DoCount < 100)
|
|
|
|
|
+ {
|
|
|
|
|
+ Size = list.Rows.Count - DoCount;
|
|
|
|
|
+ }
|
|
|
|
|
+ Dictionary<string, int> storeData = new Dictionary<string, int>();
|
|
|
|
|
+ for (int i = DoCount; i < DoCount + Size; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ DataRow dr = list.Rows[i];
|
|
|
|
|
+ string MakerCode = dr[0].ToString(); //创客编号
|
|
|
|
|
+ string SettleAmount = dr[2].ToString(); //提现结算金额(元)
|
|
|
|
|
+ UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
|
|
|
|
|
+ if (UserCode.UserId > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId) ?? new Users();
|
|
|
|
|
+ if (user.Id > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ user.SettleAmount = decimal.Parse(function.CheckInt(SettleAmount));
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "创客信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ DoCount += Size;
|
|
|
|
|
+ db.SaveChanges();
|
|
|
|
|
+ tran.Commit();
|
|
|
|
|
+ if (DoCount >= list.Rows.Count)
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
|
|
|
|
|
+ RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ DoCount = list.Rows.Count;
|
|
|
|
|
+ function.WriteLog(ex.ToString(), "导入结算金额");
|
|
|
|
|
+ tran.Rollback();
|
|
|
|
|
+ ErrorMsg msg = new ErrorMsg()
|
|
|
|
|
+ {
|
|
|
|
|
+ Time = DateTime.Now,
|
|
|
|
|
+ ErrorContent = ex.ToString(),
|
|
|
|
|
+ };
|
|
|
|
|
+ function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入结算金额Excel文件异常");
|
|
|
|
|
+ }
|
|
|
|
|
+ tran.Dispose();
|
|
|
|
|
+ }
|
|
|
|
|
+ //导入冻结金额
|
|
|
|
|
+ if (_Kind == "2")
|
|
|
|
|
+ {
|
|
|
|
|
+ var tran = db.Database.BeginTransaction();
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ int Size = 100;
|
|
|
|
|
+ if (list.Rows.Count - DoCount < 100)
|
|
|
|
|
+ {
|
|
|
|
|
+ Size = list.Rows.Count - DoCount;
|
|
|
|
|
+ }
|
|
|
|
|
+ Dictionary<string, int> storeData = new Dictionary<string, int>();
|
|
|
|
|
+ for (int i = DoCount; i < DoCount + Size; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ DataRow dr = list.Rows[i];
|
|
|
|
|
+ string MakerCode = dr[0].ToString(); //创客编号
|
|
|
|
|
+ string CashFreezeAmt = dr[2].ToString(); //提现结算金额(元)
|
|
|
|
|
+ UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
|
|
|
|
|
+ if (UserCode.UserId > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId) ?? new Users();
|
|
|
|
|
+ if (user.Id > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ user.CashFreezeAmt = decimal.Parse(function.CheckInt(CashFreezeAmt));
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "创客信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ DoCount += Size;
|
|
|
|
|
+ db.SaveChanges();
|
|
|
|
|
+ tran.Commit();
|
|
|
|
|
+ if (DoCount >= list.Rows.Count)
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
|
|
|
|
|
+ RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ DoCount = list.Rows.Count;
|
|
|
|
|
+ function.WriteLog(ex.ToString(), "导入冻结金额");
|
|
|
|
|
+ tran.Rollback();
|
|
|
|
|
+ ErrorMsg msg = new ErrorMsg()
|
|
|
|
|
+ {
|
|
|
|
|
+ Time = DateTime.Now,
|
|
|
|
|
+ ErrorContent = ex.ToString(),
|
|
|
|
|
+ };
|
|
|
|
|
+ function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入冻结金额Excel文件异常");
|
|
|
|
|
+ }
|
|
|
|
|
+ tran.Dispose();
|
|
|
|
|
+ }
|
|
|
|
|
+ //导入风控数据
|
|
|
|
|
+ if (_Kind == "3")
|
|
|
|
|
+ {
|
|
|
|
|
+ var tran = db.Database.BeginTransaction();
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ int Size = 100;
|
|
|
|
|
+ if (list.Rows.Count - DoCount < 100)
|
|
|
|
|
+ {
|
|
|
|
|
+ Size = list.Rows.Count - DoCount;
|
|
|
|
|
+ }
|
|
|
|
|
+ Dictionary<string, int> storeData = new Dictionary<string, int>();
|
|
|
|
|
+ for (int i = DoCount; i < DoCount + Size; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ DataRow dr = list.Rows[i];
|
|
|
|
|
+ string MakerCode = dr[0].ToString(); //创客编号
|
|
|
|
|
+ string RiskFlag = dr[2].ToString(); //风控标记(0 否 1 是)
|
|
|
|
|
+ string RiskNote = dr[3].ToString(); //风控备注
|
|
|
|
|
+ UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
|
|
|
|
|
+ if (UserCode.UserId > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId) ?? new Users();
|
|
|
|
|
+ if (user.Id > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ user.RiskFlag = ulong.Parse(function.CheckInt(RiskFlag));
|
|
|
|
|
+ user.RiskRemark = RiskNote;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "创客信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ DoCount += Size;
|
|
|
|
|
+ db.SaveChanges();
|
|
|
|
|
+ tran.Commit();
|
|
|
|
|
+ if (DoCount >= list.Rows.Count)
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
|
|
|
|
|
+ RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ DoCount = list.Rows.Count;
|
|
|
|
|
+ function.WriteLog(ex.ToString(), "导入风控数据");
|
|
|
|
|
+ tran.Rollback();
|
|
|
|
|
+ ErrorMsg msg = new ErrorMsg()
|
|
|
|
|
+ {
|
|
|
|
|
+ Time = DateTime.Now,
|
|
|
|
|
+ ErrorContent = ex.ToString(),
|
|
|
|
|
+ };
|
|
|
|
|
+ function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "导入风控数据Excel文件异常");
|
|
|
|
|
+ }
|
|
|
|
|
+ tran.Dispose();
|
|
|
|
|
+ }
|
|
|
|
|
+ //批量修改账户金额
|
|
|
|
|
+ if (_Kind == "4")
|
|
|
|
|
+ {
|
|
|
|
|
+ var tran = db.Database.BeginTransaction();
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ int Size = 100;
|
|
|
|
|
+ if (list.Rows.Count - DoCount < 100)
|
|
|
|
|
+ {
|
|
|
|
|
+ Size = list.Rows.Count - DoCount;
|
|
|
|
|
+ }
|
|
|
|
|
+ Dictionary<string, int> storeData = new Dictionary<string, int>();
|
|
|
|
|
+ for (int i = DoCount; i < DoCount + Size; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ DataRow dr = list.Rows[i];
|
|
|
|
|
+ string MakerCode = dr[0].ToString(); //创客编号
|
|
|
|
|
+ string RealName = dr[1].ToString(); //创客姓名
|
|
|
|
|
+ string OperationAmt = dr[2].ToString();//操作金额
|
|
|
|
|
+ string OperationType = dr[3].ToString();//操作类型(1-冻结 2-解冻 3-扣减 4-增加)
|
|
|
|
|
+ UserForMakerCode UserCode = db.UserForMakerCode.FirstOrDefault(m => m.MakerCode == MakerCode);
|
|
|
|
|
+ if (UserCode.UserId > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ var user = db.Users.FirstOrDefault(m => m.Id == UserCode.UserId && m.RealName == RealName) ?? new Users();
|
|
|
|
|
+ if (user.Id > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ UserAccount account = db.UserAccount.FirstOrDefault(m => m.Id == user.Id) ?? new UserAccount();
|
|
|
|
|
+ if (account.Id > 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ decimal BeforeTotalAmount = account.TotalAmount; //变更前总金额
|
|
|
|
|
+ decimal BeforeFreezeAmount = account.FreezeAmount; //变更前冻结金额
|
|
|
|
|
+ decimal BeforeBalanceAmount = account.BalanceAmount; //变更前余额
|
|
|
|
|
+ int ChangeType = 0;
|
|
|
|
|
+ if (OperationType == "1" && Convert.ToDecimal(OperationAmt) <= account.BalanceAmount)
|
|
|
|
|
+ {
|
|
|
|
|
+ account.BalanceAmount -= Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ account.FreezeAmount += Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ ChangeType = 61;
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (OperationType == "1" && Convert.ToDecimal(OperationAmt) > account.BalanceAmount)
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + user.MakerCode + ',' + user.RealName + "冻结金额大于余额");
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (OperationType == "2" && Convert.ToDecimal(OperationAmt) <= account.FreezeAmount)
|
|
|
|
|
+ {
|
|
|
|
|
+ account.BalanceAmount += Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ account.FreezeAmount -= Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ ChangeType = 62;
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (OperationType == "2" && Convert.ToDecimal(OperationAmt) > account.FreezeAmount)
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + user.MakerCode + ',' + user.RealName + "解冻金额大于冻结金额");
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (OperationType == "3" && Convert.ToDecimal(OperationAmt) <= account.BalanceAmount)
|
|
|
|
|
+ {
|
|
|
|
|
+ account.TotalAmount -= Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ account.BalanceAmount -= Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ ChangeType = 63;
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (OperationType == "3" && Convert.ToDecimal(OperationAmt) > account.BalanceAmount)
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "以下操作失败" + user.MakerCode + ',' + user.RealName + "扣减金额大于余额");
|
|
|
|
|
+ }
|
|
|
|
|
+ else if (OperationType == "4")
|
|
|
|
|
+ {
|
|
|
|
|
+ account.TotalAmount += Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ account.BalanceAmount += Convert.ToDecimal(OperationAmt);
|
|
|
|
|
+ ChangeType = 64;
|
|
|
|
|
+ }
|
|
|
|
|
+ decimal AfterTotalAmount = account.TotalAmount; //变更后总金额
|
|
|
|
|
+ decimal AfterFreezeAmount = account.FreezeAmount; //变更后冻结金额
|
|
|
|
|
+ decimal AfterBalanceAmount = account.BalanceAmount; //变更后余额
|
|
|
|
|
+ UserAccountRecord userAccountRecord = db.UserAccountRecord.Add(new UserAccountRecord()
|
|
|
|
|
+ {
|
|
|
|
|
+ CreateDate = DateTime.Now,
|
|
|
|
|
+ UpdateDate = DateTime.Now,
|
|
|
|
|
+ UserId = user.Id, //创客
|
|
|
|
|
+ ChangeType = ChangeType, //变动类型
|
|
|
|
|
+ ChangeAmount = Convert.ToDecimal(OperationAmt), //变更金额
|
|
|
|
|
+ BeforeTotalAmount = BeforeTotalAmount, //变更前总金额
|
|
|
|
|
+ AfterTotalAmount = AfterTotalAmount, //变更后总金额
|
|
|
|
|
+ BeforeFreezeAmount = BeforeFreezeAmount, //变更前冻结金额
|
|
|
|
|
+ AfterFreezeAmount = AfterFreezeAmount, //变更后冻结金额
|
|
|
|
|
+ BeforeBalanceAmount = BeforeBalanceAmount, //变更前余额
|
|
|
|
|
+ AfterBalanceAmount = AfterBalanceAmount, //变更后余额
|
|
|
|
|
+ Remark = dr[4].ToString(),
|
|
|
|
|
+ }).Entity;
|
|
|
|
|
+ db.SaveChanges();
|
|
|
|
|
+ function.WriteLog(DateTime.Now.ToString() + "\n" + user.Id.ToString(), "批量修改账户金额");
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ account = db.UserAccount.Add(new UserAccount()
|
|
|
|
|
+ {
|
|
|
|
|
+ Id = user.Id,
|
|
|
|
|
+ UserId = user.Id,
|
|
|
|
|
+ }).Entity;
|
|
|
|
|
+ db.SaveChanges();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "创客信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.AddList("ErrList" + checkKey, "未找到" + MakerCode + "编号关联信息");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ DoCount += Size;
|
|
|
|
|
+ db.SaveChanges();
|
|
|
|
|
+ tran.Commit();
|
|
|
|
|
+ if (DoCount >= list.Rows.Count)
|
|
|
|
|
+ {
|
|
|
|
|
+ RedisDbconn.Instance.Set("BatchEditUserAmountCheckImport:" + checkKey, "success|" + SuccessCount);
|
|
|
|
|
+ RedisDbconn.Instance.SetExpire("BatchEditUserAmountCheckImport:" + checkKey, 60000);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ DoCount = list.Rows.Count;
|
|
|
|
|
+ function.WriteLog(ex.ToString(), "批量修改账户金额");
|
|
|
|
|
+ tran.Rollback();
|
|
|
|
|
+ ErrorMsg msg = new ErrorMsg()
|
|
|
|
|
+ {
|
|
|
|
|
+ Time = DateTime.Now,
|
|
|
|
|
+ ErrorContent = ex.ToString(),
|
|
|
|
|
+ };
|
|
|
|
|
+ function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(msg), "批量修改账户金额Excel文件异常");
|
|
|
|
|
+ }
|
|
|
|
|
+ tran.Dispose();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ Thread.Sleep(50000);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "后台导入Excel文件队列异常");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|