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