计算流水增加事务提交
This commit is contained in:
1 parent
2dc89f4c8e
commit
bdbc13d63c
1 file changed
+23
-21
@@ -272,8 +272,20 @@ namespace KJD_Web.BLL.WXXD
|
||||
oem oemInfo = oems.First();
|
||||
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
|
||||
MysqlUtils mySql = new MysqlUtils(conn, true);
|
||||
this.SettleOemFlows(mySql, oemInfo.oem_id);
|
||||
|
||||
try
|
||||
{
|
||||
this.SettleOemFlows(mySql, oemInfo.oem_id);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
mySql.RollBack();
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
mySql.Close();
|
||||
}
|
||||
oems = GetOems(new List<string> { request.user_name });
|
||||
if (oems == null || oems.Any() == false)
|
||||
{
|
||||
@@ -576,12 +588,10 @@ namespace KJD_Web.BLL.WXXD
|
||||
{
|
||||
if (oem_id.IsNullOrEmpty())
|
||||
return 0;
|
||||
LogHelper.Info($"找账号");
|
||||
// 1. 找到该oem下所有账户
|
||||
// 1. 找到该oem下所有账户
|
||||
string sql = "SELECT user_name FROM `wxxd`.`user` WHERE oem_id='" + MysqlUtils.ReplaceSqlSpecial(oem_id) + "'";
|
||||
var userDt = mySql.ExecuteDataTable(sql);
|
||||
LogHelper.Info($"找账号:{sql}");
|
||||
if (!string.IsNullOrEmpty(mySql.Message) || userDt == null || userDt.Rows.Count == 0)
|
||||
if (!string.IsNullOrEmpty(mySql.Message) || userDt == null || userDt.Rows.Count == 0)
|
||||
return 0;
|
||||
|
||||
List<string> userLst = userDt.Rows.Cast<DataRow>()
|
||||
@@ -591,16 +601,12 @@ namespace KJD_Web.BLL.WXXD
|
||||
.ToList();
|
||||
if (userLst.Count == 0)
|
||||
return 0;
|
||||
LogHelper.Info($"当前找到:{userLst.Count} 账号");
|
||||
// 2. 该oem所有账户的未结算流水,按id升序
|
||||
// 2. 该oem所有账户的未结算流水,按id升序
|
||||
sql = "SELECT * FROM `wxxd`.`user_payment_record` WHERE user_name IN ('" + string.Join("','", userLst) + "') AND type IN (20,23,26,16,31) AND settlement=0 AND is_deleted=0 ORDER BY id ASC";
|
||||
LogHelper.Info($"流水SQL:{sql}");
|
||||
var flowDt = mySql.ExecuteDataTable(sql);
|
||||
LogHelper.Info($"找到:{flowDt?.Rows?.Count ?? 0}条");
|
||||
if (!string.IsNullOrEmpty(mySql.Message) || flowDt == null || flowDt.Rows.Count == 0)
|
||||
var flowDt = mySql.ExecuteDataTable(sql);
|
||||
if (!string.IsNullOrEmpty(mySql.Message) || flowDt == null || flowDt.Rows.Count == 0)
|
||||
return 0;
|
||||
LogHelper.Info($"开始计算");
|
||||
decimal total_amount = 0m; // 总金额(元)
|
||||
decimal total_amount = 0m; // 总金额(元)
|
||||
decimal rebate_amount = 0m; // 正数部分(累计返利)
|
||||
HashSet<string> deductedOrderSet = new HashSet<string>(); // type=23 已扣减的订单
|
||||
List<long> settleIdLst = new List<long>(); // 参与结算的流水id
|
||||
@@ -646,20 +652,16 @@ namespace KJD_Web.BLL.WXXD
|
||||
long total_fen = (long)Math.Round(total_amount * 100m);
|
||||
long rebate_fen = (long)Math.Round(rebate_amount * 100m);
|
||||
string now = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
LogHelper.Info($"开始修改金额");
|
||||
// 3. 写oem金额 + 更新流水状态(同一事务)
|
||||
// 3. 写oem金额 + 更新流水状态(同一事务)
|
||||
sql = "UPDATE wxxd.oem SET available_balance=available_balance+" + total_fen +
|
||||
", total_rebate_amount=total_rebate_amount+" + rebate_fen +
|
||||
" WHERE oem_id='" + oem_id + "'";
|
||||
var oemRst = mySql.ExecuteAffectedRows(sql);
|
||||
LogHelper.Info($"开始修改金额{sql}");
|
||||
if (!string.IsNullOrEmpty(mySql.Message) || oemRst <= 0)
|
||||
if (!string.IsNullOrEmpty(mySql.Message) || oemRst <= 0)
|
||||
throw new Exception("结算流水到账户失败");
|
||||
LogHelper.Info($"开始修改状态");
|
||||
sql = "UPDATE wxxd.user_payment_record SET settlement=1,settlement_time='" + now + "' WHERE id IN (" + string.Join(",", settleIdLst) + ")";
|
||||
sql = "UPDATE wxxd.user_payment_record SET settlement=1,settlement_time='" + now + "' WHERE id IN (" + string.Join(",", settleIdLst) + ")";
|
||||
var flowRst = mySql.ExecuteAffectedRows(sql);
|
||||
LogHelper.Info($"开始修改状态{sql}");
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(mySql.Message) || flowRst <= 0)
|
||||
throw new Exception("标记流水结算失败");
|
||||
return total_fen;
|
||||
|
||||
Reference in new issue
Block a user