Example #1
0
 public ICalculationRuleProcess Create(DistributionRule distributionRule)
 {
     _batchStatusWriter.WriteBatchStatusMessage(
         string.Format("Applying {0} Rule", distributionRule.Descr));
     //will crash if registration is not present
     return(_Registrations
            .FirstOrDefault(r => r.Name == distributionRule.Id.ToString())
            .CreateLambda());
 }
Example #2
0
        /// <summary>
        /// 获取分销商申请设置 后台
        /// </summary>
        /// <returns></returns>
        public DistributRuleFullDTO GetDistributRuleFullExt(DistributionSearchDTO search)
        {
            DistributRuleFullDTO distributRuleFullDto = new DistributRuleFullDTO();

            try
            {
                var temp = (from dr in DistributionRule.ObjectSet()
                            where dr.Id == search.AppId
                            select new DistributRuleFullDTO

                {
                    Id = dr.Id,
                    SubTime = dr.SubTime,
                    ModifiedOn = dr.ModifiedOn,
                    SubId = dr.SubId,
                    ModifiedId = dr.ModifiedId,
                    HasCondition = dr.HasCondition,
                    NeedIdentity = dr.NeedIdentity,
                    OrderTimeLimit = dr.OrderTimeLimit,
                    OrderAmountLimit = dr.OrderAmountLimit,
                    HasCustomComs = dr.HasCustomComs,
                    Title = dr.Title,
                    TiApprovalType = (ApprovalTypeEnum)dr.ApprovalType.Value,
                    StartCalcState = (DistributeApplyStateEnum)dr.StartCalcState.Value,
                    RuleDesc = dr.RuleDesc
                });
                distributRuleFullDto = temp.FirstOrDefault();
                if (distributRuleFullDto != null)
                {
                    List <DistributionIdentitySetFullDTO> vDbIdentitySets =
                        (from dis in DistributionIdentitySet.ObjectSet()
                         where dis.RuleId == search.AppId && !dis.IsDel
                         orderby dis.NameCategory
                         select new DistributionIdentitySetFullDTO
                    {
                        Id = dis.Id,
                        SubTime = dis.SubTime,
                        ModifiedOn = dis.ModifiedOn,
                        SubId = dis.SubId,
                        ModifiedId = dis.ModifiedId,
                        Name = dis.Name,
                        IsRequired = dis.IsRequired,
                        RuleId = dis.RuleId,
                        ValueType = (ApplyInfoTypeEnum)dis.ValueType.Value,
                        IsDel = dis.IsDel,
                        NameCategory = dis.NameCategory,
                    }).ToList();
                    distributRuleFullDto.DbIdentitySets = vDbIdentitySets;
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex.ToString());
            }
            return(distributRuleFullDto);
        }
Example #3
0
        /// <summary>
        /// 删除相关的设置以及资料
        /// </summary>
        /// <param name="drId"></param>
        /// <returns></returns>
        public ResultDTO DeleteDistributionRule(Guid drId)
        {
            var result = new ResultDTO {
                isSuccess = true
            };
            var dis = DistributionIdentitySet.ObjectSet().Where(t => t.RuleId == drId);

            foreach (var d in dis)
            {
                d.IsDel       = true;
                d.EntityState = EntityState.Modified;
                ContextFactory.CurrentThreadContext.SaveObject(d);
            }

            var dr = DistributionRule.ObjectSet().FirstOrDefault(t => t.Id == drId);

            if (dr != null)
            {
                dr.EntityState = EntityState.Deleted;
                ContextFactory.CurrentThreadContext.SaveObject(dr);
            }
            return(result);
        }
        public ActionResult SubmitRule(ModuleDepositRules mdr)
        {
            DistributionRule dr = null;
            var percsToRemove   = new List <DistributionPercentage>();

            if (mdr.id == 0)
            {
                dr = new DistributionRule()
                {
                    Name = mdr.nome, UserId = User.Identity.Name, DistributionPercentages = new List <DistributionPercentage>()
                };

                foreach (var perc in mdr.regras)
                {
                    var dp = new DistributionPercentage()
                    {
                        FundID     = perc.fundo.id,
                        ReserveID  = perc.objetivo.id,
                        Percentage = perc.porcentagem / 100,
                    };
                    dr.DistributionPercentages.Add(dp);
                }

                using (var o = new FinancialOperations())
                    o.AddRule(dr);
            }
            else
            {
                using (var q = new FinancialQueries())
                {
                    dr = q.GetDistributionRule(mdr.id.Value);
                    for (int i = 0; i < dr.DistributionPercentages.Count; i++)
                    {
                        var currPerc = dr.DistributionPercentages.ElementAt(i);
                        if (mdr.regras.Any(r => r.fundo.id == currPerc.FundID && r.objetivo.id == currPerc.ReserveID) == false)
                        {
                            percsToRemove.Add(currPerc);
                        }
                    }

                    dr.Name = mdr.nome;
                    foreach (var perc in mdr.regras)
                    {
                        var dp = dr.DistributionPercentages.SingleOrDefault(p => p.FundID == perc.fundo.id && p.ReserveID == perc.objetivo.id);
                        if (dp == null)
                        {
                            dp = new DistributionPercentage()
                            {
                                FundID     = perc.fundo.id,
                                ReserveID  = perc.objetivo.id,
                                Percentage = perc.porcentagem / 100
                            };
                            dr.DistributionPercentages.Add(dp);
                        }
                        else
                        {
                            dp.FundID     = perc.fundo.id;
                            dp.ReserveID  = perc.objetivo.id;
                            dp.Percentage = perc.porcentagem;
                        }
                    }

                    using (var o = new FinancialOperations(q.Context))
                        o.UpdateRule(dr, percsToRemove);
                }
            }

            return(RulesPartial());
        }
Example #5
0
        /// <summary>
        /// 添加或编辑申请成为分销商资料
        /// </summary>
        /// <param name="userCode"></param>
        /// <param name="userId"></param>
        /// <param name="ruleId"></param>
        /// <param name="distributApplyFullDto"></param>
        /// <returns></returns>
        public ResultDTO AddDistributionIdentityInfoExt(string userCode, string userId, string ruleId, DistributApplyFullDTO distributApplyFullDto)
        {
            var result = new ResultDTO {
                isSuccess = false
            };

            try
            {
                if (string.IsNullOrEmpty(userId) || (string.IsNullOrEmpty(ruleId) || distributApplyFullDto == null))
                {
                    result.Message = "参数不能为空";
                    return(result);
                }

                var drId = Guid.NewGuid();
                var distributionApply = DistributionApply.ObjectSet().FirstOrDefault(t => t.RuleId == new Guid(ruleId) && t.UserId == new Guid(userId));
                //新增
                if (distributionApply == null)
                {
                    var         dr    = DistributionRule.ObjectSet().FirstOrDefault(t => t.Id == new Guid(ruleId));
                    List <Guid> users = new List <Guid> {
                        new Guid(userId)
                    };
                    var user = CBCSV.Instance.GetUserInfoWithAccountList(users)[0];

                    var da = new DistributionApply()
                    {
                        Id          = drId,
                        SubTime     = distributApplyFullDto.ModifiedOn = DateTime.Now,
                        HasIdentity = dr != null && dr.NeedIdentity,
                        RuleId      = new Guid(ruleId),
                        UserId      = new Guid(userId),
                        UserCode    = userCode,
                        UserName    = user.Name,
                        PicturePath = user.HeadIcon,
                        Remarks     = "",
                        ParentId    = distributApplyFullDto.ParentId,
                        State       = DistributeApplyStateEnum.Other,
                        EntityState = EntityState.Added
                    };
                    ContextFactory.CurrentThreadContext.SaveObject(da);
                }
                //修改
                else
                {
                    drId = distributionApply.Id;
                }

                //先删除相关审核内容
                var distributionIdentityList = DistributionIdentity.ObjectSet().Where(t => t.RuleId == new Guid(ruleId) && t.SubId == new Guid(userId));
                foreach (var distributionIdentity in distributionIdentityList)
                {
                    distributionIdentity.EntityState = EntityState.Deleted;
                    ContextFactory.CurrentThreadContext.SaveObject(distributionIdentity);
                }
                if (distributApplyFullDto.DistributionIdentityFullDtos != null)
                {
                    if (distributionApply != null)
                    {
                        distributionApply.State      = !distributApplyFullDto.IsModified ? DistributeApplyStateEnum.PendingAudit : DistributeApplyStateEnum.AuditAgain;
                        distributionApply.ModifiedOn = DateTime.Now;
                        ContextFactory.CurrentThreadContext.SaveObject(distributionApply);
                    }

                    ResultDTO resultDto = SaveDistributionIdentity(drId, new Guid(ruleId), distributApplyFullDto.DistributionIdentityFullDtos);
                    if (resultDto.isSuccess == false)
                    {
                        result.Message = "保存申请信息失败";
                        return(result);
                    }
                }
                else
                {
                    //添加不同用户的审核资料
                    var distributionIdentitySetList = DistributionIdentitySet.ObjectSet().Where(t => t.RuleId == new Guid(ruleId) && !t.IsDel);
                    var i = 0;
                    foreach (var distributionIdentitySet in distributionIdentitySetList)
                    {
                        var di = new DistributionIdentity
                        {
                            Id            = Guid.NewGuid(),
                            SubTime       = DateTime.Now,
                            ModifiedOn    = DateTime.Now,
                            SubId         = ContextDTO.LoginUserID,
                            ModifiedId    = ContextDTO.LoginUserID,
                            Name          = distributionIdentitySet.Name,
                            IdentitySetId = distributionIdentitySet.Id,
                            RuleId        = new Guid(ruleId),
                            ApplyId       = drId,
                            ValueType     = distributionIdentitySet.ValueType,
                            Value         = "",
                            NameCategory  = i,
                            EntityState   = EntityState.Added
                        };
                        ContextFactory.CurrentThreadContext.SaveObject(di);
                        i++;
                    }
                }

                int esActivityCount = ContextFactory.CurrentThreadContext.SaveChanges();
                if (esActivityCount > 0)
                {
                    result.isSuccess = true;
                    result.Message   = Convert.ToString(drId);
                }
                else
                {
                    result.Message = "添加失败";
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogHelper.Error("AddDistributionIdentityInfoExt异常,异常信息:", ex);

                result.isSuccess = false;
                result.Message   = "出现异常";
                return(result);
            }
        }
Example #6
0
        /// <summary>
        /// 保存分销商申请设置
        /// </summary>
        /// <returns></returns>
        public ResultDTO ModifyDistributRuleFullExt(DistributRuleFullDTO distributRuleFullDto)
        {
            var result = new ResultDTO {
                isSuccess = false
            };

            try
            {
                if (distributRuleFullDto == null)
                {
                    result.Message = "参数不能为空";
                    return(result);
                }

                //先处理该appid下的历史数据
                ResultDTO ddr = DeleteDistributionRule(distributRuleFullDto.Id);
                if (ddr.isSuccess == false)
                {
                    result.Message = ddr.Message;
                    return(result);
                }

                ApprovalTypeVO approval = new ApprovalTypeVO()
                {
                    Value = (int)distributRuleFullDto.TiApprovalType
                };
                CalcOrderStateVO calc = new CalcOrderStateVO()
                {
                    Value = (int)distributRuleFullDto.StartCalcState
                };

                var distributionRule = new DistributionRule
                {
                    Id               = distributRuleFullDto.Id,
                    SubTime          = DateTime.Now,
                    ModifiedOn       = DateTime.Now,
                    SubId            = ContextDTO.LoginUserID,
                    ModifiedId       = ContextDTO.LoginUserID,
                    HasCondition     = distributRuleFullDto.HasCondition,
                    NeedIdentity     = distributRuleFullDto.NeedIdentity,
                    OrderTimeLimit   = distributRuleFullDto.OrderTimeLimit,
                    OrderAmountLimit = distributRuleFullDto.OrderAmountLimit,
                    HasCustomComs    = distributRuleFullDto.HasCustomComs,
                    Title            = distributRuleFullDto.Title ?? "",
                    ApprovalType     = approval,
                    StartCalcState   = calc,
                    RuleDesc         = distributRuleFullDto.RuleDesc,
                    EntityState      = EntityState.Added
                };

                ContextFactory.CurrentThreadContext.SaveObject(distributionRule);
                if (distributRuleFullDto.DbIdentitySets != null)
                {
                    ResultDTO resultDto = SaveDistributionIdentitySet(distributRuleFullDto.Id, distributRuleFullDto.DbIdentitySets);
                    if (resultDto.isSuccess == false)
                    {
                        result.Message = resultDto.Message;
                        return(result);
                    }
                }

                int esActivityCount = ContextFactory.CurrentThreadContext.SaveChanges();
                if (esActivityCount > 0)
                {
                    result.isSuccess = true;
                    result.Message   = "添加成功";
                }
                else
                {
                    result.Message = "添加失败";
                }
                return(result);
            }
            catch (Exception ex)
            {
                LogHelper.Error("ModifyDistributRuleFullExt异常,异常信息:", ex);

                result.isSuccess = false;
                result.Message   = "出现异常";
                return(result);
            }
        }
        public void UpdateRule(DistributionRule dr, List <DistributionPercentage> percsToRemove)
        {
            Context.DistributionPercentages.RemoveRange(percsToRemove);

            Context.SaveChanges();
        }
 public void AddRule(DistributionRule rule)
 {
     Context.DistributionRules.Add(rule);
     Context.SaveChanges();
 }
Example #9
0
        /// <summary>
        /// 查询一条 分销商申请资料设置 记录
        /// </summary>
        /// <param name="ruleId"></param>
        /// <returns></returns>
        public DistributionRuleDTO GetDistributionRuleExt(Guid ruleId)
        {
            var applyEntity = DistributionRule.ObjectSet().FirstOrDefault(x => x.Id == ruleId);

            return(applyEntity == null ? null : applyEntity.ToEntityData());
        }