/// <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);
        }