diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java index bc62fcd2..948684ab 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java @@ -489,15 +489,11 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i @Override public void changePassword(Long id, String password) { - //修改这个手机号下所有密码 UserDO userDO = getById(id); if (userDO == null) { return; } - String phone = userDO.getPhone(); - - List userDOList = getListByPhone(phone, null); - for (UserDO userDO1 : userDOList) { + for (UserDO userDO1 : listUsersForPasswordUpdate(userDO)) { userChangePassword(userDO1.getId(), password); } } @@ -609,17 +605,27 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i } } - //修改多个密码 - String phone = oldUserDO.getPhone(); - - List userDOList = getListByPhone(phone, null); - for (UserDO userDO1 : userDOList) { + // 有手机号则同步修改同手机号账号,无手机号则只改当前账号 + for (UserDO userDO1 : listUsersForPasswordUpdate(oldUserDO)) { userChangePassword(userDO1.getId(), userDO.getNewPassword()); } return Response.buildSuccess(); } + /** + * 获取需要同步更新密码的用户列表。主账号等无手机号场景仅更新当前用户。 + */ + private List listUsersForPasswordUpdate(UserDO userDO) { + if (StringUtils.hasText(userDO.getPhone())) { + List userDOList = getListByPhone(userDO.getPhone(), null); + if (CollUtil.isNotEmpty(userDOList)) { + return userDOList; + } + } + return Collections.singletonList(userDO); + } + @Override public Boolean updateFaceUrl(UserDO userDO) { return updateById(userDO);