Exemplo n.º 1
0
        protected override SetTSuperRetailTraderConfigRD ProcessRequest(DTO.Base.APIRequest <SetTSuperRetailTraderConfigRP> pRequest)
        {
            var parameter          = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息
            var rd = new SetTSuperRetailTraderConfigRD();
            T_SuperRetailTraderConfigBLL bll = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);

            #region 修改协议
            if (parameter.IsFlag == true)
            {
                var oldmodel = bll.GetByID(parameter.Id);
                oldmodel.Agreement     = parameter.Agreement;
                oldmodel.AgreementName = parameter.AgreementName;
                bll.Update(oldmodel);
                rd = GetRd(oldmodel);
                return(rd);
            }
            #endregion

            #region 修改可分配利润
            if (String.IsNullOrEmpty(parameter.Id)) //头一次添加规则信息
            {
                T_SuperRetailTraderConfigEntity _model = GetModel(loggingSessionInfo.ClientID, parameter);
                _model.Id = Guid.NewGuid();
                //改动了数据 要重新插入信息
                bll.UpdateByCondition(loggingSessionInfo.ClientID); //修改以前信息为失效状态
                bll.Create(_model);
                rd = GetRd(_model);

                //修改 佣金分润信息
                T_SuperRetailTraderProfitConfigBLL SuperRetailTraderProfitConfigService = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
                SuperRetailTraderProfitConfigService.UpdateByCustomerId(loggingSessionInfo.ClientID);
            }
            else   //有可能是修改有可能是添加
            {
                //判断总和是否超过了100%
                var currentmodel = bll.GetByID(parameter.Id);
                if (currentmodel == null)
                {
                    throw new APIException("系统繁忙,请稍后重试!");
                }

                if (!(currentmodel.Cost == parameter.Cost && currentmodel.CustomerProfit == parameter.CustomerProfit && currentmodel.DistributionProfit == parameter.DistributionProfit && currentmodel.SkuCommission == parameter.SkuCommission))
                {
                    //改动了数据 要重新插入信息
                    bll.UpdateByCondition(loggingSessionInfo.ClientID); //修改以前信息为失效状态
                    T_SuperRetailTraderConfigEntity _model = GetModel(loggingSessionInfo.ClientID, parameter);
                    _model.Id            = Guid.NewGuid();
                    _model.AgreementName = currentmodel.AgreementName;
                    _model.Agreement     = currentmodel.Agreement;
                    _model.RefId         = currentmodel.Id; //相关编号
                    bll.Create(_model);
                    rd = GetRd(_model);
                }
                else
                {
                    rd = GetRd(currentmodel);
                }
            }
            #endregion

            #region 默认设置分润体系 1:2:1 的体系
            //将该商户下面所有的分润设置设为失效状态
            T_SuperRetailTraderProfitConfigBLL superretailtraderprofitconfigService = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
            superretailtraderprofitconfigService.UpdateByCustomerId(loggingSessionInfo.ClientID);
            int[]   precent            = new int[] { 1, 2, 1 };
            int     level              = 2;
            double  DistributionProfit = (Convert.ToDouble(parameter.DistributionProfit) / 4.0);
            decimal specialProfit      = 0.0m;
            foreach (var item in precent)
            {
                decimal Profit = Math.Round(Convert.ToDecimal(DistributionProfit * item), 1);

                if (level == 4)
                {
                    Profit = Convert.ToDecimal(parameter.DistributionProfit - specialProfit);
                }
                else
                {
                    specialProfit += Profit;
                }
                superretailtraderprofitconfigService.Create(new T_SuperRetailTraderProfitConfigEntity()
                {
                    CustomerId = loggingSessionInfo.ClientID,
                    Level      = level,
                    Profit     = Profit, //小数点有问题
                    IsDelete   = 0,
                    Status     = "10",
                    ProfitType = "Percent",
                    RefSuperRetailTraderProfitConfigId = null,
                    SuperRetailTraderProfitConfigId    = Guid.NewGuid()
                });

                if (level == 2)
                {
                    superretailtraderprofitconfigService.Create(new T_SuperRetailTraderProfitConfigEntity()
                    {
                        CustomerId = loggingSessionInfo.ClientID,
                        Level      = 1,
                        Profit     = parameter.SkuCommission,
                        IsDelete   = 0,
                        Status     = "10",
                        ProfitType = "Percent",
                        RefSuperRetailTraderProfitConfigId = null,
                        SuperRetailTraderProfitConfigId    = Guid.NewGuid()
                    });
                }
                level = level + 1;
            }
            #endregion
            return(rd);
        }
Exemplo n.º 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);
        }