Example #1
0
        /// <summary>
        /// 变更审核状态
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="userId"></param>
        /// <param name="distributeApplyStateEnum"></param>
        /// <returns></returns>
        public ResultDTO UpdateDistributionApplyStateExt(Guid appId, Guid userId, DistributeApplyStateEnum distributeApplyStateEnum)
        {
            var result = new ResultDTO {
                isSuccess = false
            };
            var distributionApply = DistributionApply.ObjectSet().FirstOrDefault(t => t.UserId == userId && t.RuleId == appId);

            if (distributionApply != null)
            {
                distributionApply.State       = distributeApplyStateEnum;
                distributionApply.ModifiedOn  = DateTime.Now;
                distributionApply.EntityState = EntityState.Modified;
            }

            ContextFactory.CurrentThreadContext.SaveObject(distributionApply);
            int daCount = ContextFactory.CurrentThreadContext.SaveChanges();

            if (daCount > 0)
            {
                result.isSuccess = true;
                LogHelper.Info("UpdateDistributionApplyState变更状态成功appId:" + appId + ",userId:" + userId + ",distributeApplyStateEnum:" + distributeApplyStateEnum + "");
            }
            else
            {
                LogHelper.Info("UpdateDistributionApplyState变更状态失败appId:" + appId + ",userId:" + userId + ",distributeApplyStateEnum:" + distributeApplyStateEnum + "");
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// 查询某个app符合条件的 分销商申请 列表
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <param name="rowCount"></param>
        /// <param name="userName"></param>
        /// <param name="state"></param>
        /// <returns></returns>
        public List <DistributionApplyResultDTO> GetDistributionApplyListByWhereExt(Guid appId, int pageSize,
                                                                                    int pageIndex,
                                                                                    out int rowCount, string userName, int state)
        {
            //昵称的NameCategory
            var nameCategory_Name = 0;
            var query             = from apply in DistributionApply.ObjectSet().Where(x => x.RuleId == appId)
                                    join setval in DistributionIdentity.ObjectSet().Where(x => x.NameCategory == nameCategory_Name) on
                                    apply.Id equals setval.ApplyId into setval2
                                    from setval in setval2.DefaultIfEmpty()
                                    select new { Apply = apply, SetVal = setval };

            if (state == 1)
            {
                query = query.Where(x => x.Apply.State.Value == 1 || x.Apply.State.Value == 4);
            }
            else if (state > 0)
            {
                query = query.Where(x => x.Apply.State.Value == state);
            }
            else
            {
                query = query.Where(x => x.Apply.State.Value != 0);//不显示0状态
            }
            if (!string.IsNullOrWhiteSpace(userName))
            {
                query = query.Where(x => x.Apply.UserName.Contains(userName) || x.Apply.UserCode.Contains(userName) || x.SetVal.Value.Contains(userName));
            }

            rowCount = query.Count();
            var queryOrdered = query.OrderByDescending(x => x.Apply.SubTime);
            var entities     = queryOrdered.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();

            LogHelper.Debug(string.Format("GetDistributionApplyListByWhereExt(userName:{0},state:{1}),查询结果:{2}条记录。", userName, state, rowCount));

            if (entities.Any())
            {
                var applyIds = string.Join(",", entities.Select(x => "Guid'" + x.Apply.Id + "'").ToArray());

                var allapplysIdentityVals = DistributionIdentity.ObjectSet()
                                            .Where("it.ApplyId in {" + applyIds + "}")
                                            .Where(x => !string.IsNullOrEmpty(x.Value))//排除value为空的设置
                                            .ToList();

                //根据applyId取identity
                Func <Guid, List <DistributionIdentityDTO> > identityVals = (Guid applyId) =>
                                                                            allapplysIdentityVals.Where(x => x.ApplyId == applyId)
                                                                            .Select(x => x.ToEntityData()).ToList();

                var dtos =
                    entities.Select(x => new DistributionApplyResultDTO(x.Apply.ToEntityData(), identityVals(x.Apply.Id))).ToList();
                return(dtos);
            }
            else
            {
                return(new List <DistributionApplyResultDTO>());
            }
        }
Example #3
0
        /// <summary>
        /// 获取用户审核状态
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public ResultDTO GetDistributeStateExt(Guid appId, Guid userId)
        {
            ResultDTO result = new ResultDTO()
            {
                isSuccess = true
            };
            var da = DistributionApply.ObjectSet().FirstOrDefault(t => t.RuleId == appId && t.UserId == userId);

            if (da != null)
            {
                result.ResultCode = da.State.Value;
                if (result.ResultCode == (int)DistributeApplyStateEnum.AuditRefuse)
                {
                    result.Message = da.RefuseReason;
                }
                return(result);
            }
            result.ResultCode = -1;
            return(result);
        }
Example #4
0
        private List <AuditRet4Wx> GetAuditRet4WxsWhenPass(DistributionApply apply, Distributor l3Distributor, string microShopUrl, out int appDistributorCount)
        {
            if (apply.State == DistributeApplyStateEnum.Audit && (l3Distributor == null || string.IsNullOrEmpty(microShopUrl)))
            {
                throw new Exception("通过审核时,参数distributor,l3MircoShopId不能为空!");
            }

            var result = new List <AuditRet4Wx>();
            var appId  = apply.RuleId;//Apply的RuleId是DistributionRule的Id,而它就是AppId

            switch (apply.State.EnumValue)
            {
            case DistributeApplyStateEnum.Audit:
                var threeLevels = (from d3 in Distributor.ObjectSet()
                                   where d3.Id == l3Distributor.Id
                                   select d3
                                   ).Union(from d2 in Distributor.ObjectSet()
                                           where d2.Id == l3Distributor.ParentId
                                           select d2
                                           ).Union(from d2 in Distributor.ObjectSet()
                                                   where d2.Id == l3Distributor.ParentId
                                                   join d1 in Distributor.ObjectSet() on d2.ParentId equals d1.Id
                                                   select d1)
                                  .ToList();

                threeLevels.ForEach(x => result.Add(new AuditRet4Wx(x.UserId, x.UserName, x.UserCode, x.Level)));
                var l3 = result.OrderByDescending(x => x.Level).FirstOrDefault();
                if (l3 != null)
                {
                    l3.SetMicroShopUrl(microShopUrl);
                }
                break;

            case DistributeApplyStateEnum.AuditRefuse:
                result.Add(new AuditRet4Wx(apply.UserId, apply.UserName, apply.UserCode, apply.RefuseReason));
                break;
            }

            appDistributorCount = Distributor.ObjectSet().Count(x => x.EsAppId == appId);
            return(result);
        }
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>
        /// <param name="ruleId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public DistributionApplyDTO GetDistributionApplyExt(Guid ruleId, Guid userId)
        {
            var applyEntity = DistributionApply.ObjectSet().FirstOrDefault(x => x.RuleId == ruleId && x.UserId == userId);

            return(applyEntity == null ? null : applyEntity.ToEntityData());
        }
Example #7
0
        /// <summary>
        /// 查询一条 分销商申请 记录
        /// </summary>
        /// <param name="applyId"></param>
        /// <returns></returns>
        public DistributionApplyDTO GetDistributionApplyExt(Guid applyId)
        {
            var applyEntity = DistributionApply.ObjectSet().FirstOrDefault(x => x.Id == applyId);

            return(applyEntity == null ? null : applyEntity.ToEntityData());
        }
Example #8
0
        private Tuple <Distributor, Microshop> PassAuditing_DistributorAndMicroshop(DistributionApply apply)
        {
            ContextSession contextSession = ContextFactory.CurrentThreadContext;
            var            now            = DateTime.Now;

            var appId            = apply.RuleId;//Apply的RuleId是DistributionRule的Id,而它就是AppId
            var newDistributorId = Guid.NewGuid();

            var level = apply.ParentId.Equals(Guid.Empty) ? 1
                : Distributor.ObjectSet().First(x => x.Id == apply.ParentId).Level + 1;
            var parentDistributorIds = new List <Guid>
            {
                GetDistributorGrandFatherId(apply.ParentId),
                apply.ParentId,
                newDistributorId
            }.Where(x => !x.Equals(Guid.Empty))
            .Select(x => x.ToString()).ToArray();

            var distributorKey = string.Join(",", parentDistributorIds);
            var remarks        = "";
            var distributor    = new Distributor
            {
                Id          = newDistributorId,
                UserId      = apply.UserId,
                UserName    = apply.UserName,
                UserCode    = apply.UserCode,
                SubTime     = now,
                ModifiedOn  = now,
                EsAppId     = appId,
                ParentId    = apply.ParentId,
                Level       = level,
                Key         = distributorKey,
                UserSubTime = apply.SubTime,
                PicturePath = apply.PicturePath,
                Remarks     = remarks,
                EntityState = EntityState.Added
            };

            contextSession.SaveObject(distributor);

            var logo     = "";
            var userInfo = CBCSV.Instance.GetUserInfoWithAccountList(new List <Guid> {
                apply.UserId
            });

            if (userInfo != null && userInfo.Count > 0)
            {
                logo = userInfo[0].HeadIcon;
            }
            else
            {
                LogHelper.Error(string.Format("调用CBCSV.Instance.GetUserInfoWithAccountList({0}),没有返回有效值值!", apply.UserId));
            }

            var qrCodeUrl      = "";//暂时为空,后续通过update动作赋值
            var newMicroshopId = Guid.NewGuid();
            var microshopType  = MicroshopTypeEnum.Distribution;
            var microshopUrl   = CreateMicroShopUrl(appId, newMicroshopId, distributor.Id);
            var microshop      = new Microshop
            {
                Id          = newMicroshopId,
                SubTime     = now,
                ModifiedOn  = now,
                AppId       = appId,
                UserId      = apply.UserId,
                Logo        = logo,
                QRCodeUrl   = qrCodeUrl,
                Name        = string.Format("{0}的小店", apply.UserName),
                Url         = microshopUrl,
                Type        = microshopType,
                Key         = distributor.Id,
                EntityState = EntityState.Added
            };

            contextSession.SaveObject(microshop);

            contextSession.SaveChanges();

            return(new Tuple <Distributor, Microshop>(distributor, microshop));
        }
Example #9
0
        /// <summary>
        /// 更新DistributionApply表,插入DistributionApplyAudit记录
        /// </summary>
        /// <param name="applyId"></param>
        /// <param name="isAuditing"></param>
        /// <param name="isAuditingPass"></param>
        /// <param name="txt"></param>
        /// <returns></returns>
        private ResultDTO <DistributionApply> UpdateDistributionApplyAndAudit(Guid applyId, bool isAuditing, bool isAuditingPass, string txt)
        {
            ContextSession contextSession = ContextFactory.CurrentThreadContext;
            var            now            = DateTime.Now;

            var apply = DistributionApply.ObjectSet().FirstOrDefault(t => t.Id == applyId);

            if (apply == null)
            {
                return new ResultDTO <DistributionApply> {
                           isSuccess = false, ResultCode = 0, Message = "没有找到ID='" + applyId + "'的数据!", Data = null
                }
            }
            ;

            var refuseTxt = "";
            var detailTxt = "";

            if (isAuditing)
            {
                if (isAuditingPass)
                {
                    if (apply.State.EnumValue == DistributeApplyStateEnum.Audit)
                    {
                        return new ResultDTO <DistributionApply> {
                                   isSuccess = false, ResultCode = 0, Message = "此申请已经通过审核,不能重复通过审核!", Data = null
                        }
                    }
                    ;

                    apply.State = new DistributionApplySate
                    {
                        EnumValue = DistributeApplyStateEnum.Audit,
                        Value     = (int)DistributeApplyStateEnum.Audit
                    };
                }
                else
                {
                    apply.State = new DistributionApplySate
                    {
                        EnumValue = DistributeApplyStateEnum.AuditRefuse,
                        Value     = (int)DistributeApplyStateEnum.AuditRefuse
                    };
                    apply.RefuseReason = txt;
                    refuseTxt          = txt;
                }
            }
            else
            {
                apply.Remarks = txt;

                detailTxt = txt;
            }
            apply.ModifiedOn  = now;
            apply.EntityState = EntityState.Modified;

            //IsPass取当前entity的状态
            var isPass = apply.State.EnumValue == DistributeApplyStateEnum.Audit;
            var audit  = new DistributionApplyAudit
            {
                Id           = Guid.NewGuid(),
                ApplyId      = applyId,
                SubTime      = now,
                SubId        = ContextDTO.LoginUserID,
                Details      = detailTxt,
                RefuseReason = refuseTxt,
                IsPass       = isPass,
                EntityState  = EntityState.Added
            };

            contextSession.SaveObject(audit);

            contextSession.SaveChanges();

            return(new ResultDTO <DistributionApply> {
                isSuccess = true, ResultCode = 1, Data = apply
            });
        }
Example #10
0
        /// <summary>
        /// 获取分销商的所有身份设置
        /// </summary>
        /// <param name="distributorList"></param>
        /// <returns></returns>
        public List <DistributorsHasIdentityResultDTO> GetDistributorsIdentitysExt(List <Guid> distributorList)
        {
            var result         = new List <DistributorsHasIdentityResultDTO>();
            var distributorIds = string.Join(",", distributorList.Select(x => "Guid'" + x + "'").ToArray());

            if (distributorIds.Any())
            {
                var distributorObjectSet = Distributor.ObjectSet()
                                           .Where("it.Id in {" + distributorIds + "}");

                var stateAudit = (int)DistributeApplyStateEnum.Audit;
                var applyList  = (from distributor in distributorObjectSet
                                  join apply in DistributionApply.ObjectSet() on
                                  new { UserId = distributor.UserId, AppId = distributor.EsAppId } equals
                                  new { UserId = apply.UserId, AppId = apply.RuleId }
                                  where apply.State.Value == stateAudit
                                  select new { DistributorId = distributor.Id, ApplyId = apply.Id, PicturePath = apply.PicturePath })
                                 .Distinct()
                                 .ToList();

                if (applyList.Any())
                {
                    var applyIds = string.Join(",",
                                               applyList.Select(x => x.ApplyId).Select(x => "Guid'" + x + "'").ToArray());
                    var identitysList =
                        DistributionIdentity.ObjectSet().Where("it.ApplyId in {" + applyIds + "}").ToList();

                    Func <Guid, Guid> getApplyFunc = (distributorId) =>
                    {
                        var first = applyList.FirstOrDefault(x => x.DistributorId == distributorId);
                        return(first == null ? Guid.Empty : first.ApplyId);
                    };
                    Func <Guid, string> getPicturePathFunc = (distributorId) =>
                    {
                        var first = applyList.FirstOrDefault(x => x.DistributorId == distributorId);
                        return(first == null ? "" : first.PicturePath);
                    };
                    Func <Guid, bool> hasIdentityFunc = (applyId) =>
                    {
                        var identitys = identitysList.Where(x => x.ApplyId == applyId);
                        return(identitys.Any());
                    };
                    Func <Guid, List <DistributionIdentityDTO> > getIdentitysFunc = (applyId) =>
                    {
                        var identitys = identitysList.Where(x => x.ApplyId == applyId);
                        return(identitys.Select(x => x.ToEntityData()).ToList());
                    };

                    distributorList.ForEach(x => result.Add(new DistributorsHasIdentityResultDTO
                    {
                        DistributorId = x,
                        ApplyId       = getApplyFunc(x),
                        PicturePath   = getPicturePathFunc(x),
                        HasIdentity   = hasIdentityFunc(getApplyFunc(x)),
                        Identitys     = getIdentitysFunc(getApplyFunc(x))
                    }));
                }
            }

            return(result);
        }