Exemple #1
0
        public async Task <ResponseMessage> Save(Models.UserInfo user, [FromBody] UserSaveRequest request)
        {
            Logger.Trace($"用户{user?.UserName ?? ""}({user?.Id ?? ""})保存用户,请求参数为:\r\n" + (request != null ? JsonHelper.ToJson(request) : ""));
            var response = new ResponseMessage();

            if (!ModelState.IsValid)
            {
                response.Code    = ResponseCodeDefines.ModelStateInvalid;
                response.Message = ModelState.GetAllErrors();
                Logger.Warn("保存用户模型验证失败:\r\n{0}", response.Message ?? "");
                return(response);
            }

            try
            {
                response = await UserManager.Save(user, request, HttpContext.RequestAborted);
            }
            catch (Exception e)
            {
                Logger.Error($"保存用户,报错:{e.Message}\r\n{e.StackTrace}");
                response.Code    = ResponseCodeDefines.ServiceError;
                response.Message = e.Message;
                return(response);
            }
            return(response);
        }
Exemple #2
0
        public UserSaveResponse Execute(UserSaveRequest request)
        {
            UserSaveResponse userSaveResponse = new UserSaveResponse();

            if (request.UserId == 0)
            {
                UserInfo entity = new UserInfo();
                entity.Name       = request.Name;
                entity.Password   = request.Password;
                entity.RoleId     = request.RoleId;
                entity.UserName   = request.UserName;
                entity.Gender     = request.Gender;
                entity.CreateTime = DateTime.Now;
                entity.CraftDIDs  = request.CraftDIDs;
                ServiceHelper.LoadService <IUserService>().Insert(entity);
                userSaveResponse.UserId = entity.UserId;
            }
            else
            {
                UserInfo entity = ServiceHelper.LoadService <IUserService>().Get(request.UserId);
                entity.Name      = request.Name;
                entity.Password  = request.Password;
                entity.RoleId    = request.RoleId;
                entity.UserName  = request.UserName;
                entity.Gender    = request.Gender;
                entity.CraftDIDs = request.CraftDIDs;
                ServiceHelper.LoadService <IUserService>().Update(entity);
                userSaveResponse.UserId = entity.UserId;
            }
            return(userSaveResponse);
        }
Exemple #3
0
        public IdResponse Save(UserSaveRequest request)
        {
            var id       = request.Id;
            var userName = request.UserName;
            var password = CryptInfoHelper.GetDecrypte(request.PassWord);

            password = CryptInfoHelper.MD5Encode(password);
            if (id == 0)
            {
                service.AddUser(userName, password);
            }
            else
            {
                service.ModifyUser(id, userName, password);
            }

            return(new IdResponse {
                id = id
            });
        }
Exemple #4
0
        /// <summary>
        /// 新增/修改用户
        /// </summary>
        /// <param name="user"></param>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <ResponseMessage> Save(UserInfo user, UserSaveRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            var response = new ResponseMessage();

            if (!user.IsAdmin)
            {
                response.Code    = ResponseCodeDefines.NotAllow;
                response.Message = "权限不足";
                return(response);
            }
            if (string.IsNullOrWhiteSpace(request.Id))
            {
                if (request.LoginName == null)
                {
                    response.Code    = ResponseCodeDefines.ArgumentNullError;
                    response.Message = "登陆名不能为空";
                    return(response);
                }
                if (await _userStore.GetUserInfos().AnyAsync(a => a.LoginName.Equals(request.LoginName), cancellationToken))
                {
                    response.Code    = ResponseCodeDefines.ObjectAlreadyExists;
                    response.Message = "新增用户的登陆名已经存在";
                    return(response);
                }
                // 新增
                var addUser = new UserInfo
                {
                    Id               = Guid.NewGuid().ToString(),
                    LoginName        = request.LoginName,
                    UserName         = request.UserName,
                    OrganizationName = request.OrganizationName,
                    GroupName        = request.GroupName,
                    IsAdmin          = request.IsAdmin,
                    CreateUser       = user.Id,
                    CreateTime       = DateTime.Now,
                    IsDelete         = false,
                    ZenTao           = request.ZenTao,
                };
                ScoreInfo scoreInfo   = null;
                var       scorePeriod = await _scoreInfoStore.GetScorePeriods().Where(w => !w.IsDelete && w.State == 1).FirstOrDefaultAsync();

                if (scorePeriod != null)
                {
                    var scoreInfoOld = await _scoreInfoStore.GetScoreInfos().Where(w => w.PeriodId == scorePeriod.Id && !w.IsDelete && w.UserId == addUser.Id).FirstOrDefaultAsync();

                    if (scoreInfoOld == null)
                    {
                        var nowTime = DateTime.Now;
                        scoreInfo = new ScoreInfo
                        {
                            Id              = Guid.NewGuid().ToString(),
                            UserId          = addUser.Id,
                            CreateUser      = addUser.Id,
                            CreateTime      = nowTime,
                            IsDelete        = false,
                            Score           = 0,
                            ConsumableScore = 0,
                            PeriodId        = scorePeriod.Id,
                            UpdateTime      = nowTime,
                            UpdateUser      = addUser.Id
                        };
                    }
                }

                using (var trans = await _transaction.BeginTransaction())
                {
                    try
                    {
                        if (scoreInfo != null)
                        {
                            await _scoreInfoStore.CreateScoreInfo(scoreInfo);
                        }
                        await _userStore.Create(new List <UserInfo> {
                            addUser
                        }, cancellationToken);

                        trans.Commit();
                    }
                    catch (Exception)
                    {
                        trans.Rollback();
                        throw;
                    }
                }
                // 触发排行榜变化
                await _sendClientMessageManager.SendInfo(Dto.Common.SendClientType.Rank);
            }
            else
            {
                // 修改
                var entity = await _userStore.GetUserInfos().Where(a => a.Id.Equals(request.Id)).FirstOrDefaultAsync(cancellationToken);

                if (!string.IsNullOrWhiteSpace(request.LoginName))
                {
                    if (entity.UserId != null && request.LoginName != entity.LoginName)
                    {
                        response.Code    = ResponseCodeDefines.NotAllow;
                        response.Message = "已经登陆的用户不允许修改登陆名";
                        return(response);
                    }
                    if (await _userStore.GetUserInfos().AnyAsync(a => a.LoginName.Equals(request.LoginName) && a.Id != request.Id, cancellationToken))
                    {
                        response.Code    = ResponseCodeDefines.ObjectAlreadyExists;
                        response.Message = "用户的登陆名与其他用户名重复";
                        return(response);
                    }
                }

                if (entity.IsAdmin == true && request.IsAdmin == false)
                {
                    var adminList = await _userStore.GetUserInfos().Where(w => !w.IsDelete && w.IsAdmin).ToListAsync();

                    if (adminList.Count == 1 && adminList[0].Id == entity.Id)
                    {
                        response.Code    = ResponseCodeDefines.ObjectAlreadyExists;
                        response.Message = "您已经是最后一个管理员了,不能取消自己的管理员权限。";
                        return(response);
                    }
                }
                entity.LoginName        = string.IsNullOrWhiteSpace(request.LoginName) ? entity.LoginName : request.LoginName;
                entity.UserName         = request.UserName ?? entity.UserName;
                entity.OrganizationName = request.OrganizationName ?? entity.OrganizationName;
                entity.GroupName        = request.GroupName ?? entity.GroupName;
                entity.IsAdmin          = request.IsAdmin;
                entity.ZenTao           = request.ZenTao;
                await _userStore.Update(new List <UserInfo> {
                    entity
                }, cancellationToken);
            }
            return(response);
        }