protected override GetTSuperRetailTraderConfigRD ProcessRequest(DTO.Base.APIRequest <GetTSuperRetailTraderConfigRP> pRequest)
        {
            var parameter          = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息
            var rd = new GetTSuperRetailTraderConfigRD();
            T_SuperRetailTraderConfigBLL bll = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
            //按照时间获取最新一条有效记录
            List <EqualsCondition> lstWhereCondition = new List <EqualsCondition>()
            {
                new EqualsCondition()
                {
                    FieldName = "CustomerId", Value = loggingSessionInfo.ClientID
                },
                new EqualsCondition()
                {
                    FieldName = "IsDelete", Value = 0
                },
            };

            List <OrderBy> orderCondition = new List <OrderBy>()
            {
                new OrderBy()
                {
                    FieldName = "CreateTime", Direction = OrderByDirections.Desc
                }
            };
            var model = bll.Query(lstWhereCondition.ToArray(), orderCondition.ToArray());

            if (model != null && model.Length > 0)
            {
                rd.Agreement          = model[0].Agreement;
                rd.AgreementName      = model[0].AgreementName;
                rd.CustomerProfit     = model[0].CustomerProfit.ToString();
                rd.DistributionProfit = model[0].DistributionProfit.ToString();
                rd.Id            = model[0].Id.ToString();
                rd.SkuCommission = model[0].SkuCommission.ToString();
                rd.Cost          = model[0].Cost.ToString();
            }
            return(rd);
        }
Beispiel #2
0
        protected override SetuperRetailTraderProfitConfigRD ProcessRequest(DTO.Base.APIRequest <SetuperRetailTraderProfitConfigRP> pRequest)
        {
            var parameter          = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息

            if (loggingSessionInfo == null)
            {
                throw new APIException("登录超时,请重试")
                      {
                          ErrorCode = 135
                      };
            }
            var rd = new SetuperRetailTraderProfitConfigRD();
            T_SuperRetailTraderProfitConfigBLL bll = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
            int level   = 0;
            var _models = parameter.ProfitConfigList.OrderBy(m => m.Level);

            #region  务端验证 将未分配完的利润合并到商家利润里面去

            T_SuperRetailTraderConfigBLL SuperRetailTraderConfigService = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
            List <EqualsCondition>       lstWhereCondition = new List <EqualsCondition>()
            {
                new EqualsCondition()
                {
                    FieldName = "CustomerId", Value = loggingSessionInfo.ClientID
                },
                new EqualsCondition()
                {
                    FieldName = "IsDelete", Value = 0
                },
            };

            List <OrderBy> orderCondition = new List <OrderBy>()
            {
                new OrderBy()
                {
                    FieldName = "CreateTime", Direction = OrderByDirections.Desc
                }
            };
            var model = SuperRetailTraderConfigService.Query(lstWhereCondition.ToArray(), orderCondition.ToArray());

            if (model == null || model.Length == 0)
            {
                throw new APIException("请先设置商家佣金信息")
                      {
                          ErrorCode = 135
                      };
            }

            decimal?ProfitMoney = parameter.ProfitConfigList.Where(m => m.Level != 1 && m.Status == "10").Sum(m => m.Profit); //分销体系百分比

            if (ProfitMoney > model[0].DistributionProfit)                                                                    //设置分润比例大于商家比例
            {
                throw new APIException("分润体系不能大于佣金体系,请重新设置")
                      {
                          ErrorCode = 135
                      };
            }

            if (ProfitMoney != model[0].DistributionProfit)  //新入一条规则信息 如果设置比例不等于商家比例
            {
                SuperRetailTraderConfigService.UpdateByCondition(loggingSessionInfo.ClientID);
                decimal?undistributedprofit            = model[0].DistributionProfit - ProfitMoney;
                T_SuperRetailTraderConfigEntity entity = new T_SuperRetailTraderConfigEntity()
                {
                    AgreementName      = model[0].AgreementName,
                    Agreement          = model[0].Agreement,
                    Cost               = model[0].Cost,
                    DistributionProfit = model[0].DistributionProfit - undistributedprofit,
                    CustomerProfit     = model[0].CustomerProfit + undistributedprofit,
                    IsDelete           = 0,
                    CustomerId         = loggingSessionInfo.ClientID,
                    Id            = Guid.NewGuid(),
                    RefId         = model[0].Id,
                    SkuCommission = model[0].SkuCommission
                };
                SuperRetailTraderConfigService.Create(entity);
            }
            #endregion
            bll.UpdateByCustomerId(loggingSessionInfo.ClientID);

            foreach (var item in _models)
            {
                Guid id = Guid.NewGuid();

                if (item.Status.Trim() == "10")
                {
                    level = level + 1;    //如果是启用状态那么 level就自增
                }
                var oldmodel = bll.GetByID(item.SuperRetailTraderProfitConfigId);

                string refid = null;
                if (oldmodel != null)
                {
                    refid           = oldmodel.SuperRetailTraderProfitConfigId.ToString();
                    oldmodel.Status = "90";  //将本条信息置为失效状态。
                    bll.Update(oldmodel);
                }


                T_SuperRetailTraderProfitConfigEntity _model = new T_SuperRetailTraderProfitConfigEntity()
                {
                    SuperRetailTraderProfitConfigId = id,
                    Status     = item.Status,
                    Profit     = item.Profit,
                    Level      = level,
                    CustomerId = loggingSessionInfo.ClientID,
                    IsDelete   = 0,
                    ProfitType = "Percent",
                    RefSuperRetailTraderProfitConfigId = refid,
                };
                bll.Create(_model); //添加一条新的信息。

                SetSuperRetailTraderProfitConfigInfo info = new SetSuperRetailTraderProfitConfigInfo()
                {
                    Level  = item.Level == null ? 1 : int.Parse(item.Level + ""),
                    Profit = item.Profit,
                    Status = item.Status,
                    SuperRetailTraderProfitConfigId = id
                };
                rd.lst.Add(info); //返回值
            }
            return(rd);
        }