feat: 优化修改密码逻辑

komen
lishiwei 2026-07-28 14:29:20 +08:00
parent ef0dddf572
commit 3b940c0619
3 changed files with 37 additions and 39 deletions

View File

@ -420,16 +420,9 @@ public class UserUpdateExe {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean updatePasswordFromApp(AppUserUpdatePassWordCmd cmd) { public boolean updatePasswordFromApp(AppUserUpdatePassWordCmd cmd) {
//新密码和旧密码不能相同 UserUpdatePassWordCmd userUpdatePassWordCmd = new UserUpdatePassWordCmd();
if (cmd.getPassword().equals(cmd.getNewPassword())) { BeanUtils.copyProperties(cmd, userUpdatePassWordCmd);
throw new BizException("新密码不能与旧密码相同"); executeUpdatePassword(userUpdatePassWordCmd);
}
UserE userE = new UserE();
userE.checkPassword(cmd.getNewPassword(), cmd.getConfirmPassword());
BeanUtils.copyProperties(cmd, userE);
userE.encryptionPassword();
userGateway.updatePassword(userE);
return true; return true;
} }
@ -447,6 +440,10 @@ public class UserUpdateExe {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Response executeUpdatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd) { public Response executeUpdatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd) {
UserE userE = new UserE(); UserE userE = new UserE();
if (userUpdatePassWordCmd.getPassword().equals(userUpdatePassWordCmd.getNewPassword())) {
throw new BizException("新密码不能与旧密码相同");
}
userE.checkPassword(userUpdatePassWordCmd.getNewPassword(), userUpdatePassWordCmd.getConfirmPassword());
BeanUtils.copyProperties(userUpdatePassWordCmd, userE); BeanUtils.copyProperties(userUpdatePassWordCmd, userE);
userE.encryptionPassword(); userE.encryptionPassword();
return userGateway.updatePassword(userE); return userGateway.updatePassword(userE);

View File

@ -30,5 +30,8 @@ public class UserUpdatePassWordCmd extends Command {
@ApiModelProperty(value = "新密码", name = "newPassword") @ApiModelProperty(value = "新密码", name = "newPassword")
@NotEmpty(message = "新密码不能为空") @NotEmpty(message = "新密码不能为空")
private String newPassword; private String newPassword;
@ApiModelProperty(value = "确认密码", name = "confirmPassword")
@NotEmpty(message = "确认密码不能为空")
private String confirmPassword;
} }

View File

@ -578,37 +578,35 @@ public class UserRepositoryImpl extends BaseRepositoryImpl<UserMapper, UserDO> i
@Override @Override
public Response updatePassword(UserDO userDO) { public Response updatePassword(UserDO userDO) {
UserDO oldUserDO = getById(userDO.getId()); UserDO oldUserDO = getById(userDO.getId());
// TODO 验证老密码是否正确 if (userDO.getPassword() == null || userDO.getPassword().isEmpty()) {
if (userDO.getPassword() != null && !userDO.getPassword().equals("")) { throw new BizException("原密码不能为空");
SingleResponse<UserDetailCO> detail = null; }
try { SingleResponse<UserDetailCO> detail = null;
log.info("updateXgf,GBS获取用户信息{}", userDO.getId()); try {
detail = userFacade.getDetail(userDO.getId()); log.info("updateXgf,GBS获取用户信息{}", userDO.getId());
log.info("updateXgf,GBS获取用户信息返回: {}", JSONUtil.toJsonStr(detail)); detail = userFacade.getDetail(userDO.getId());
} catch (Exception e) { log.info("updateXgf,GBS获取用户信息返回: {}", JSONUtil.toJsonStr(detail));
log.error("updateXgf,GBS获取用户信息失败: {}", e.getMessage()); } catch (Exception e) {
} log.error("updateXgf,GBS获取用户信息失败: {}", e.getMessage());
if (detail.getData() != null) { }
AccountPasswordCheckCmd accountPasswordCheckCmd = new AccountPasswordCheckCmd(); if (detail.getData() != null) {
accountPasswordCheckCmd.setUserId(userDO.getId()); AccountPasswordCheckCmd accountPasswordCheckCmd = new AccountPasswordCheckCmd();
accountPasswordCheckCmd.setPassword(userDO.getPassword()); accountPasswordCheckCmd.setUserId(userDO.getId());
log.info("updateXgf,GBS验证用户密码请求:{}", JSONUtil.toJsonStr(accountPasswordCheckCmd)); accountPasswordCheckCmd.setPassword(userDO.getPassword());
SingleResponse<Long> response = accountFacade.checkPassword(accountPasswordCheckCmd); log.info("updateXgf,GBS验证用户密码请求:{}", JSONUtil.toJsonStr(accountPasswordCheckCmd));
log.info("updateXgf,GBS验证用户密码返回:{}", JSONUtil.toJsonStr(response)); SingleResponse<Long> response = accountFacade.checkPassword(accountPasswordCheckCmd);
if (!response.isSuccess()) { log.info("updateXgf,GBS验证用户密码返回:{}", JSONUtil.toJsonStr(response));
throw new BizException("原密码不正确"); if (!response.isSuccess()) {
} throw new BizException("原密码不正确");
} else {
//验证本地密码
UserE userE = new UserE();
Boolean checkUserPassword = userE.checkUserEncryptionPassword(userDO.getPassword(), oldUserDO.getPassword());
log.info("updateXgf,验证用户本地密码结果:{}", checkUserPassword);
if (!checkUserPassword) {
throw new BizException("密码错误");
}
} }
} else { } else {
log.info("updateXgf,密码为空,不进行密码验证"); //验证本地密码
UserE userE = new UserE();
Boolean checkUserPassword = userE.checkUserEncryptionPassword(userDO.getPassword(), oldUserDO.getPassword());
log.info("updateXgf,验证用户本地密码结果:{}", checkUserPassword);
if (!checkUserPassword) {
throw new BizException("密码错误");
}
} }
//修改多个密码 //修改多个密码