コード例 #1
0
        public async Task <IResultModel> Update(UserUpdateModel model)
        {
            var entity = await _userRepository.FirstAsync(model.Id);

            if (entity == null)
            {
                return(ResultModel.NotExists);
            }

            if (await _userRepository.ExistsAsync(m => m.UserCode == model.UserCode && m.Id != entity.Id && m.IsDel == false))
            {
                return(ResultModel.HasExists);
            }

            try
            {
                _mapper.Map(model, entity);
                entity.Password = _passwordHandler.Encrypt(model.UserCode, model.Password);
                await _userRepository.UpdateAsync(entity, _dbContext.Db);

                //先清除原来角色用户,再重新添加
                await _roleUserRepository.DeleteAsync(m => m.UserId == entity.Id);

                var roles = new List <RoleUserEntity>();
                foreach (var roleId in model.RoleIds)
                {
                    roles.Add(new RoleUserEntity()
                    {
                        RoleId = roleId,
                        UserId = entity.Id
                    });
                }

                if (roles.Any())
                {
                    await _roleUserRepository.InsertRangeAsync(roles);
                }

                _dbContext.Db.CommitTran();
            }
            catch (Exception ex)
            {
                _dbContext.Db.RollbackTran();
                return(ResultModel.Failed(ex.Message));
            }

            return(ResultModel.Success());
        }