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