fix: 修复前台注册和后台添加用户的冲突

This commit is contained in:
republicline 2024-10-08 13:10:02 +08:00
parent 14167a0343
commit ef57152bfb
5 changed files with 73 additions and 2 deletions

View File

@ -53,7 +53,8 @@ public class UserDTO extends SysUser {
@Override
public String toString() {
return "UserDTO{" +
String string = super.toString();
return string + "UserDTO{" +
"userId=" + getUserId() + '\'' +
", username='" + getUsername() + '\'' +
"role=" + role +

View File

@ -35,6 +35,7 @@ public class SysRegisterController {
@SysLog("注册用户")
@PostMapping("/user")
public R<Boolean> registerUser(@RequestBody UserDTO userDto) {
System.out.println("reigster-UserDto = " + userDto);
return userService.registerUser(userDto);
}

View File

@ -141,6 +141,7 @@ public class SysUserController {
if (!accountMatches) {
return R.failed("用户名至少2~16位字母或数字区分大小写");
}
System.out.println("addUser = " + userDto);
return R.ok(userService.saveUser(userDto));
}

View File

@ -128,4 +128,11 @@ public interface SysUserService extends IService<SysUser> {
Map getCountByDate(String startTime, String endTime);
/**
* 此函数用于前台注册用户
* @param userDto
* @return
*/
Boolean regUser(UserDTO userDto);
}

View File

@ -87,6 +87,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
*
* @param userDto DTO 对象
* @return success/fail
* 此保存用于后台添加用户信息.
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ -137,6 +138,55 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return Boolean.TRUE;
}
/**
* @param userDto DTO 对象
* @return success/fail
* 此保存用于前台注册用户信息.
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean regUser(UserDTO userDto) {
SysUser sysUser = new SysUser();
BeanUtils.copyProperties(userDto, sysUser);
sysUser.setDelFlag(CommonConstants.STATUS_NORMAL);
sysUser.setCreateBy(userDto.getUsername());
sysUser.setPassword(ENCODER.encode(userDto.getPassword()));
sysUser.setHospitalId(userDto.getHospitalId());
baseMapper.insert(sysUser);
// 保存用户岗位信息
Optional.ofNullable(userDto.getPost()).ifPresent(posts -> {
posts.stream().map(postId -> {
SysUserPost userPost = new SysUserPost();
userPost.setUserId(sysUser.getUserId());
userPost.setPostId(postId);
return userPost;
}).forEach(sysUserPostMapper::insert);
});
// 如果角色为空赋默认角色
if (CollUtil.isEmpty(userDto.getRole())) {
// 获取默认角色编码
String defaultRole = ParamResolver.getStr("USER_DEFAULT_ROLE");
// 默认角色
SysRole sysRole = sysRoleService
.getOne(Wrappers.<SysRole>lambdaQuery().eq(SysRole::getRoleCode, defaultRole));
userDto.setRole(Collections.singletonList(sysRole.getRoleId()));
}
// 插入用户角色关系表
userDto.getRole().stream().map(roleId -> {
SysUserRole userRole = new SysUserRole();
userRole.setUserId(sysUser.getUserId());
userRole.setRoleId(roleId);
return userRole;
}).forEach(sysUserRoleMapper::insert);
return Boolean.TRUE;
}
/**
* 通过查用户的全部信息
*
@ -448,6 +498,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return R.failed("用户名至少2~16位字母或数字区分大小写");
}
if (userDto.getHospitalId() == null) {
return R.failed("请选择医院");
}
// 查询所有医院ID
List<Long> hospitalIdList = sysHospitalService.list()
.stream()
.map(SysHospital::getId).toList();
if (!hospitalIdList.contains(userDto.getHospitalId())) {
return R.failed("医院不存在");
}
// 判断用户名是否存在
SysUser sysUser = this.getOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, userDto.getUsername()));
@ -455,7 +516,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername());
return R.failed(message);
}
return R.ok(saveUser(userDto));
return R.ok(regUser(userDto));
}
/**