public static Tuple <bool, string> UpdateBeautyServicePackageDetail(BeautyServicePackageDetail packageDetail) { bool result = false; var msg = string.Empty; var writeStr = BeautyServicePackageDal.GetTuhuGrouponWriteConnstr(); using (var dbhelper = new SqlDbHelper(writeStr)) { try { var oldValue = GetBeautyServicePackageDetail(packageDetail.PKID); dbhelper.BeginTransaction(); var updatePackageDetailResult = BeautyServicePackageDal.UpdateBeautyServicePackageDetail(dbhelper, packageDetail); if (!updatePackageDetailResult) { throw new Exception("更新服务码配置失败"); } if (packageDetail.IsServiceCodeGenerated && (oldValue.ServiceCodeStartTime != packageDetail.ServiceCodeStartTime || oldValue.ServiceCodeEndTime != packageDetail.ServiceCodeEndTime)) { if (oldValue.ServiceCodeNum > 10000) { throw new Exception("大于10000暂时不支持修改"); } var updateServiceCodeTimeResult = BeautyServicePackageDal.UpdateServiceCodeTime(dbhelper, packageDetail.PKID, packageDetail.ServiceCodeStartTime, packageDetail.ServiceCodeEndTime); if (!updateServiceCodeTimeResult) { throw new Exception("更新服务码时间失败"); } if (oldValue.ServiceCodeEndTime != packageDetail.ServiceCodeEndTime && packageDetail.ServiceCodeEndTime != null) { var serviceCodes = (GetBeautyServicePackageDetailCodesByPackageDetailId(packageDetail.PKID))?.Select(t => t.ServiceCode)?.ToList(); if (serviceCodes != null && serviceCodes.Any()) { using (var client = new ServiceCodeClient()) { var batchSize = 1000; var index = 0; while (index < serviceCodes.Count) { var batchCodes = serviceCodes.Skip(index).Take(batchSize).ToList(); var kxChangeCodeTimeModel = new ChangeCodeTimeRequest { ServiceCodes = batchCodes, OverdueTime = Convert.ToDateTime(packageDetail.ServiceCodeEndTime) }; var kxChangeResult = client.ChangeOverdueTime(kxChangeCodeTimeModel); if (!kxChangeResult.Success) { throw kxChangeResult.Exception; } if (kxChangeResult.Result != null && kxChangeResult.Result.FailServiceCode != null && kxChangeResult.Result.FailServiceCode.Any()) { var serviceCodeFailedLog = new BeautyOprLog { LogType = "ChangeOverdueTimeFailedCodes", IdentityID = $"{packageDetail.PKID}", OldValue = null, NewValue = JsonConvert.SerializeObject(kxChangeResult.Result.FailServiceCode), Remarks = $"修改服务码过期时间失败", OperateUser = packageDetail.UpdateUser, }; LoggerManager.InsertLog("BeautyOprLog", serviceCodeFailedLog); } index += batchSize; } } } } } dbhelper.Commit(); result = true; var log = new BeautyOprLog { LogType = "UpdateBeautyServicePackageDetail", IdentityID = $"{packageDetail.PKID}", OldValue = JsonConvert.SerializeObject(oldValue), NewValue = JsonConvert.SerializeObject(packageDetail), Remarks = $"修改集团客户礼包详情,详情ID为{packageDetail.PKID}", OperateUser = packageDetail.UpdateUser, }; LoggerManager.InsertLog("BeautyOprLog", log); } catch (Exception ex) { msg = ex.Message; dbhelper.Rollback(); Logger.Error(ex.Message, ex); }; } return(new Tuple <bool, string>(result, msg)); }