From a82ad02cf2023fd94eee980b116d5986c752e2d6 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sun, 25 Jun 2023 09:49:51 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.6.0=E3=80=91=E3=80=90sys=E3=80=91?= =?UTF-8?q?=E3=80=90user=E3=80=91=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PersonalInfoController.java | 7 +- .../user/enums/SysUserExceptionEnum.java | 2 +- .../user/factory/SysUserCreateFactory.java | 8 -- .../user/pojo/request/SysUserRequest.java | 10 +- .../modular/user/service/SysUserService.java | 6 +- .../user/service/impl/SysUserServiceImpl.java | 135 ++++++++---------- 6 files changed, 70 insertions(+), 98 deletions(-) diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/PersonalInfoController.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/PersonalInfoController.java index 60c3a60c4..dc6de4833 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/PersonalInfoController.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/controller/PersonalInfoController.java @@ -8,7 +8,6 @@ import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource; import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource; import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest; import cn.stylefeng.roses.kernel.sys.modular.user.service.SysUserService; - import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -34,7 +33,7 @@ public class PersonalInfoController { * @author luojie * @date 2020/11/6 13:50 */ - @PostResource(name = "个人信息_更新个人信息", path = "/sysUser/updateInfo", requiredPermission = false) + @PostResource(name = "个人信息_更新个人信息", path = "/sysUser/updateInfo") @BusinessLog public ResponseData updateInfo(@RequestBody @Validated(SysUserRequest.updateInfo.class) SysUserRequest sysUserRequest) { sysUserService.editInfo(sysUserRequest); @@ -47,7 +46,7 @@ public class PersonalInfoController { * @author luojie * @date 2020/11/6 13:50 */ - @PostResource(name = "个人信息_修改密码", path = "/sysUser/updatePassword", requiredPermission = false) + @PostResource(name = "个人信息_修改密码", path = "/sysUser/updatePassword") @BusinessLog public ResponseData updatePwd(@RequestBody @Validated(SysUserRequest.updatePwd.class) SysUserRequest sysUserRequest) { sysUserService.editPassword(sysUserRequest); @@ -60,7 +59,7 @@ public class PersonalInfoController { * @author luojie * @date 2020/11/6 13:48 */ - @PostResource(name = "个人信息_修改头像", path = "/sysUser/updateAvatar", requiredPermission = false) + @PostResource(name = "个人信息_修改头像", path = "/sysUser/updateAvatar") @BusinessLog public ResponseData updateAvatar(@RequestBody @Validated(SysUserRequest.updateAvatar.class) SysUserRequest sysUserRequest) { sysUserService.editAvatar(sysUserRequest); diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/enums/SysUserExceptionEnum.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/enums/SysUserExceptionEnum.java index cd76f02a3..095807ad7 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/enums/SysUserExceptionEnum.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/enums/SysUserExceptionEnum.java @@ -29,7 +29,7 @@ public enum SysUserExceptionEnum implements AbstractExceptionEnum { * 但是提示:用户账号或密码错误,请重新输入 */ ACCOUNT_NOT_EXIST(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10003", "用户账号或密码错误,请重新输入"), - + /** * 原密码错误 */ diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/factory/SysUserCreateFactory.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/factory/SysUserCreateFactory.java index 90046da1c..02c51f343 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/factory/SysUserCreateFactory.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/factory/SysUserCreateFactory.java @@ -1,12 +1,6 @@ package cn.stylefeng.roses.kernel.sys.modular.user.factory; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.RandomUtil; -import cn.hutool.extra.spring.SpringUtil; -import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; -import cn.stylefeng.roses.kernel.rule.enums.SexEnum; -import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.sys.modular.user.entity.SysUser; import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest; @@ -18,7 +12,6 @@ import cn.stylefeng.roses.kernel.sys.modular.user.pojo.request.SysUserRequest; */ public class SysUserCreateFactory { - /** * 编辑用户时候的用户信息填充 * @@ -43,5 +36,4 @@ public class SysUserCreateFactory { sysUser.setPhone(sysUserRequest.getPhone()); } - } diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserRequest.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserRequest.java index d5fc6724a..cdfbca59f 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserRequest.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/pojo/request/SysUserRequest.java @@ -61,7 +61,7 @@ public class SysUserRequest extends BaseRequest { /** * 密码,加密方式为BCrypt */ - @NotBlank(message = "密码,加密方式为BCrypt不能为空", groups = {add.class,updatePwd.class}) + @NotBlank(message = "密码,加密方式为BCrypt不能为空", groups = {add.class, updatePwd.class}) @ChineseDescription("密码,加密方式为BCrypt") private String password; @@ -71,7 +71,7 @@ public class SysUserRequest extends BaseRequest { @NotBlank(message = "新密码不能为空", groups = {updatePwd.class}) @ChineseDescription("新密码") private String newPassword; - + /** * 头像,存的为文件id */ @@ -88,7 +88,7 @@ public class SysUserRequest extends BaseRequest { /** * 性别:M-男,F-女 */ - @NotBlank(message = "性别:M-男,F-女不能为空", groups = {add.class, edit.class,updateInfo.class}) + @NotBlank(message = "性别:M-男,F-女不能为空", groups = {add.class, edit.class, updateInfo.class}) @ChineseDescription("性别:M-男,F-女") private String sex; @@ -173,13 +173,13 @@ public class SysUserRequest extends BaseRequest { */ public @interface updateInfo { } - + /** * 参数校验分组:修改密码 */ public @interface updatePwd { } - + /** * 参数校验分组:修改头像 */ diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserService.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserService.java index bf4b7b038..e2498eca9 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserService.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/SysUserService.java @@ -94,7 +94,7 @@ public interface SysUserService extends IService { * @since 2023/6/12 14:55 */ void resetPassword(SysUserRequest sysUserRequest); - + /** * 更新用户信息(一般用于更新个人信息) * @@ -103,7 +103,7 @@ public interface SysUserService extends IService { * @date 2020/11/21 12:32 */ void editInfo(SysUserRequest sysUserRequest); - + /** * 修改密码 * @@ -112,7 +112,7 @@ public interface SysUserService extends IService { * @date 2020/11/21 14:26 */ void editPassword(SysUserRequest sysUserRequest); - + /** * 修改头像 * diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java index 35b0ace19..285ea5733 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java @@ -145,6 +145,12 @@ public class SysUserServiceImpl extends ServiceImpl impl return sysUser; } + @Override + public List findList(SysUserRequest sysUserRequest) { + LambdaQueryWrapper wrapper = this.createWrapper(sysUserRequest); + return this.list(wrapper); + } + @Override public PageResult findPage(SysUserRequest sysUserRequest) { LambdaQueryWrapper wrapper = createWrapper(sysUserRequest); @@ -195,9 +201,58 @@ public class SysUserServiceImpl extends ServiceImpl impl } @Override - public List findList(SysUserRequest sysUserRequest) { - LambdaQueryWrapper wrapper = this.createWrapper(sysUserRequest); - return this.list(wrapper); + public void editInfo(SysUserRequest sysUserRequest) { + + // 获取当前登录用户的id + sysUserRequest.setUserId(LoginContext.me().getLoginUser().getUserId()); + SysUser sysUser = this.querySysUser(sysUserRequest); + + // 填充更新用户的信息 + SysUserCreateFactory.fillUpdateInfo(sysUserRequest, sysUser); + + this.updateById(sysUser); + } + + @Override + public void editPassword(SysUserRequest sysUserRequest) { + + // 新密码与原密码相同 + if (sysUserRequest.getNewPassword().equals(sysUserRequest.getPassword())) { + throw new ServiceException(SysUserExceptionEnum.USER_PWD_REPEAT); + } + + // 获取当前用户的userId + LoginUser loginUser = LoginContext.me().getLoginUser(); + sysUserRequest.setUserId(loginUser.getUserId()); + SysUser sysUser = this.querySysUser(sysUserRequest); + + // 原密码错误 + if (!passwordStoredEncryptApi.checkPasswordWithSalt(sysUserRequest.getPassword(), sysUser.getPasswordSalt(), + sysUser.getPassword())) { + throw new ServiceException(SysUserExceptionEnum.USER_PWD_ERROR); + } + + // 设置新的加密后密码和盐 + SaltedEncryptResult saltedEncryptResult = passwordStoredEncryptApi.encryptWithSalt(sysUserRequest.getNewPassword()); + sysUser.setPassword(saltedEncryptResult.getEncryptPassword()); + sysUser.setPasswordSalt(saltedEncryptResult.getPasswordSalt()); + + this.updateById(sysUser); + } + + @Override + public void editAvatar(SysUserRequest sysUserRequest) { + // 新头像文件id + Long fileId = sysUserRequest.getAvatar(); + + // 从当前用户获取用户id + LoginUser loginUser = LoginContext.me().getLoginUser(); + + // 更新用户头像 + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(SysUser::getUserId, loginUser.getUserId()); + wrapper.set(SysUser::getAvatar, fileId); + this.update(wrapper); } /** @@ -270,78 +325,4 @@ public class SysUserServiceImpl extends ServiceImpl impl } } - @Override - public void editInfo(SysUserRequest sysUserRequest) { - - // 获取当前登录用户的id - sysUserRequest.setUserId(LoginContext.me().getLoginUser().getUserId()); - SysUser sysUser = this.querySysUser(sysUserRequest); - - // 填充更新用户的信息 - SysUserCreateFactory.fillUpdateInfo(sysUserRequest, sysUser); - - this.updateById(sysUser); - - // 清除缓存中的用户信息 - //sysUserCacheOperatorApi.remove(String.valueOf(sysUser.getUserId())); - - - } - - @Override - public void editPassword(SysUserRequest sysUserRequest) { - - - // 获取当前用户的userId - LoginUser loginUser = LoginContext.me().getLoginUser(); - sysUserRequest.setUserId(loginUser.getUserId()); - - SysUser sysUser = this.querySysUser(sysUserRequest); - - // 新密码与原密码相同 - if (sysUserRequest.getNewPassword().equals(sysUserRequest.getPassword())) { - throw new ServiceException(SysUserExceptionEnum.USER_PWD_REPEAT); - } - - // 原密码错误 - if (!passwordStoredEncryptApi.checkPassword(sysUserRequest.getPassword(), sysUser.getPassword())) { - throw new ServiceException(SysUserExceptionEnum.USER_PWD_ERROR); - } - - sysUser.setPassword(passwordStoredEncryptApi.encrypt(sysUserRequest.getNewPassword())); - this.updateById(sysUser); - - // 清除缓存中的用户信息 - //sysUserCacheOperatorApi.remove(String.valueOf(sysUser.getUserId())); - - - } - - @Override - public void editAvatar(SysUserRequest sysUserRequest) { - - - // 新头像文件id - Long fileId = sysUserRequest.getAvatar(); - - // 从当前用户获取用户id - LoginUser loginUser = LoginContext.me().getLoginUser(); - sysUserRequest.setUserId(loginUser.getUserId()); - - // 更新用户头像 - SysUser sysUser = this.querySysUser(sysUserRequest); - sysUser.setAvatar(fileId); - this.updateById(sysUser); - - // 更新当前用户的session信息 - //SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo(); - //simpleUserInfo.setAvatar(fileId); - //sessionManagerApi.updateSession(LoginContext.me().getToken(), loginUser); - - // 清除缓存中的用户信息 - //sysUserCacheOperatorApi.remove(String.valueOf(sysUser.getUserId())); - - - } - } \ No newline at end of file