/// <summary> /// 拆单商品记录表创建 /// </summary> /// <param name="orderItemRecord"></param> /// <returns></returns> public static async Task <int> CreateSplitOrderItemRecordManager(CpsSplitOrderItemRecordModel splitOrderItemRecordModel) { int resultRow = 0; using (var dbHelper = DbHelper.CreateDbHelper()) { try { var sqlCpsSplitOrderItemRecord = @"INSERT INTO [Activity].[dbo].[Cps_SplitOrderItemRecord] ([OrderId] ,[CpsOrderItemRecordID] ,[PID] ,[Number] ,[CreateTime] ,[IsDelete]) VALUES (@OrderId ,@CpsOrderItemRecordID ,@PID ,@Number ,GETDATE() ,0)"; using (var cmd = new SqlCommand(sqlCpsSplitOrderItemRecord)) { cmd.CommandType = CommandType.Text; cmd.Parameters.AddWithValue("@OrderId", splitOrderItemRecordModel.OrderId); cmd.Parameters.AddWithValue("@CpsOrderItemRecordID", splitOrderItemRecordModel.CpsOrderItemRecordID); cmd.Parameters.AddWithValue("@PID", splitOrderItemRecordModel.PID); cmd.Parameters.AddWithValue("@Number", splitOrderItemRecordModel.Number); resultRow = Convert.ToInt32(await dbHelper.ExecuteNonQueryAsync(cmd)); } } catch (Exception ex) { Logger.Error($"CreateSplitOrderItemRecordManager拆单商品记录表创建接口异常:{ex.Message};堆栈信息:{ex.StackTrace}"); } } return(resultRow); }
/// <summary> /// 查询拆单商品记录 /// </summary> /// <param name="orderItemRecord"></param> /// <returns></returns> public async static Task <int> GetSplitOrderItemRecordCountManager(CpsSplitOrderItemRecordModel splitOrderItemRecordModel) { int resultRow = 0; using (var dbHelper = DbHelper.CreateDbHelper()) { try { var sqlSplitOrderItemRecordCount = @"SELECT COUNT(0) FROM [Activity].[dbo].[Cps_SplitOrderItemRecord] WHERE IsDelete = 0 AND OrderId = @OrderId AND CpsOrderItemRecordID = @CpsOrderItemRecordID AND PID = @PID AND Number = @Number;"; using (var cmd = new SqlCommand(sqlSplitOrderItemRecordCount)) { cmd.CommandType = CommandType.Text; cmd.Parameters.AddWithValue("@OrderId", splitOrderItemRecordModel.OrderId); cmd.Parameters.AddWithValue("@CpsOrderItemRecordID", splitOrderItemRecordModel.CpsOrderItemRecordID); cmd.Parameters.AddWithValue("@PID", splitOrderItemRecordModel.PID); cmd.Parameters.AddWithValue("@Number", splitOrderItemRecordModel.Number); resultRow = Convert.ToInt32(await dbHelper.ExecuteScalarAsync(cmd)); } } catch (Exception ex) { Logger.Error($"GetSplitOrderItemRecordCountManager查询拆单商品记录接口异常:{ex.Message};堆栈信息:{ex.StackTrace}"); } } return(resultRow); }
/// <summary> /// 订单商品返佣接口 /// </summary> /// <param name="request"></param> /// <returns></returns> public static async Task <CommodityRebateResponse> CommodityRebateManager(CommodityRebateRequest request) { var resultModule = new CommodityRebateResponse(); resultModule.Success = true; try { var orderId = string.IsNullOrWhiteSpace(request.OrderId) ? 0 : Convert.ToInt32(request.OrderId); //获取拆单订单号集合 var relatedSplitOrderIds = await GetRelatedSplitOrderIDs(orderId); //拆单是需要获取主订单号ID,关联订单集合最小的一位是主订单ID var mainOrderId = relatedSplitOrderIds.OrderBy(splitOrderId => splitOrderId).FirstOrDefault() + ""; var orderItemRecordList = await DalTuboAlliance.GetOrderItemRecordListDal(mainOrderId); //主订单ID在下单记录表中存在的,进行佣金计算 if (orderItemRecordList?.Count > 0) { var orderModel = FetchOrderInfoByID(orderId).Result; if (IsOrderCompleted(orderModel)) { await orderModel.OrderListModel?.ForEachAsync(async orderItem => { //去除套餐的子产品与赠品 if (orderItem.PayPrice > 0 && (orderItem.ParentId == null || orderItem.ParentId == 0)) { //当前订单的PID在主订单商品集合中查询 var orderItemRecord = orderItemRecordList.Where(p => p.PID == orderItem.Pid).FirstOrDefault(); if (orderItemRecord != null) { var pid = orderItem.Pid; var number = orderItem.Num; //计算佣金使用实体 var calculateCommissionModel = new CalculateCommissionModel(); calculateCommissionModel.OrderItem = orderItem; calculateCommissionModel.CpsId = orderItemRecord.CpsId; calculateCommissionModel.DarenId = orderItemRecord.DarenID; calculateCommissionModel.Pid = pid; calculateCommissionModel.Number = number; Logger.Info($"CommodityRebateManager:【OrderId:{orderId}】【MainOrderId:{mainOrderId}】"); if (orderItem.OrderId + "" == mainOrderId) //主订单逻辑 { await CalculateCommission(calculateCommissionModel); } else //拆单订单 { var cpsSplitOrderItemRecordModel = new CpsSplitOrderItemRecordModel(); cpsSplitOrderItemRecordModel.OrderId = "" + orderItem.OrderId; cpsSplitOrderItemRecordModel.CpsOrderItemRecordID = orderItemRecord.PkId; cpsSplitOrderItemRecordModel.PID = pid; cpsSplitOrderItemRecordModel.Number = number; var splitOrderItemRecordCount = await DalTuboAlliance.GetSplitOrderItemRecordCountManager(cpsSplitOrderItemRecordModel); if (splitOrderItemRecordCount <= 0) { await DalTuboAlliance.CreateSplitOrderItemRecordManager(cpsSplitOrderItemRecordModel); } await CalculateCommission(calculateCommissionModel); } } else { Logger.Info($"CommodityRebateManager:【OrderId:{orderId}】【MainOrderId:{mainOrderId}】【PID:{orderItem.Pid}】该商品未在下单记录表中存在"); } } else { Logger.Info($"CommodityRebateManager:【orderId:{orderId}】" + $"【mainOrderId:{mainOrderId}】【PID:{orderItem.Pid}】【ParentId:{orderItem.ParentId}】为套装子产品或者是赠品"); } }); } else { Logger.Info($"CommodityRebateManager:【OrderId:{orderId}】【MainOrderId】:{mainOrderId}订单未完成"); } } else { Logger.Info($"CommodityRebateManager:【OrderId:{orderId}】【MainOrderId】:{mainOrderId}未在下单记录表中存在"); } } catch (Exception ex) { Logger.Error($"CommodityRebateManager订单商品返佣接口异常:{ex.Message};堆栈信息:{ex.StackTrace}"); resultModule.ErrorMessage = ex.Message; resultModule.Success = false; } return(resultModule); }