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

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

View File

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

View File

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

View File

@ -141,6 +141,7 @@ public class SysUserController {
if (!accountMatches) { if (!accountMatches) {
return R.failed("用户名至少2~16位字母或数字区分大小写"); return R.failed("用户名至少2~16位字母或数字区分大小写");
} }
System.out.println("addUser = " + userDto);
return R.ok(userService.saveUser(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); 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 对象 * @param userDto DTO 对象
* @return success/fail * @return success/fail
* 此保存用于后台添加用户信息.
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -137,6 +138,55 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return Boolean.TRUE; 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位字母或数字区分大小写"); 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())); 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()); String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername());
return R.failed(message); return R.failed(message);
} }
return R.ok(saveUser(userDto)); return R.ok(regUser(userDto));
} }
/** /**