diff --git a/KJD_WebService/BLL/WXXD/WXOemManage.cs b/KJD_WebService/BLL/WXXD/WXOemManage.cs index 3a95bff..2c2cfda 100644 --- a/KJD_WebService/BLL/WXXD/WXOemManage.cs +++ b/KJD_WebService/BLL/WXXD/WXOemManage.cs @@ -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 { 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 userLst = userDt.Rows.Cast() @@ -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 deductedOrderSet = new HashSet(); // type=23 已扣减的订单 List settleIdLst = new List(); // 参与结算的流水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;