From 8fbdb6d56a1b0136f2c3ec9b0995e9d7913a4900 Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Wed, 24 Mar 2021 15:57:17 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=9D=BE=E4=B8=8B=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E5=94=AF=E4=B8=80=E6=80=A7=E5=BF=85=E5=A1=AB?= =?UTF-8?q?=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/base/ExternalSystemController.java | 39 +++++++++++----------- .../controller/busi/SysUserController.java | 8 +++-- .../apiservice/mq/MessageMailQueueReceiver.java | 9 +++-- .../serviceimpl/busi/PersonnelServiceService.java | 17 +++++----- .../serviceimpl/busi/SysUserService.java | 17 +++++----- 5 files changed, 49 insertions(+), 41 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/ExternalSystemController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/ExternalSystemController.java index f108dbb..d0d28f2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/ExternalSystemController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/ExternalSystemController.java @@ -62,19 +62,19 @@ public class ExternalSystemController { private RabbitTemplate rabbitTemplate; @GetMapping(value = "/enterprise-wechat/msg-callback") - @ApiOperation(value = "消息回调测试",notes = "消息回调测试") + @ApiOperation(value = "消息回调测试", notes = "消息回调测试") public String test(@RequestParam(name = "msg_signature") String msgSignature, String timestamp, - String nonce, String echostr) throws AesException { - return new WorkWeChatTool().msgCallbackVerify(msgSignature, timestamp,nonce, echostr); + String nonce, String echostr) throws AesException { + return new WorkWeChatTool().msgCallbackVerify(msgSignature, timestamp, nonce, echostr); } @PostMapping(value = "/enterprise-wechat/msg-callback") - @ApiOperation(value = "消息回调",notes = "消息回调") + @ApiOperation(value = "消息回调", notes = "消息回调") public ResultBean listSysLocaleLanguage(@RequestParam(name = "msg_signature") String msgSignature, String timestamp, - String nonce,@RequestBody String msgStr) { + String nonce, @RequestBody String msgStr) { try { WorkWeChatTool workWeChatTool = new WorkWeChatTool(); - MsgTaskCardEvent msgTaskCardEvent = workWeChatTool.msgCallbackDecrypt(msgSignature,timestamp,nonce,msgStr); + MsgTaskCardEvent msgTaskCardEvent = workWeChatTool.msgCallbackDecrypt(msgSignature, timestamp, nonce, msgStr); rabbitTemplate.convertAndSend(PlatformConstWords.QUEUE_IMPP_WORK_WECHAT_MSG_CALLBACK, JSON.toJSONString(msgTaskCardEvent)); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(msgTaskCardEvent); } catch (ImppBusiException busExcep) { @@ -85,7 +85,7 @@ public class ExternalSystemController { } @GetMapping(value = "/enterprise-wechat/bind-user-ref") - @ApiOperation(value = "绑定用户关系",notes = "绑定用户关系") + @ApiOperation(value = "绑定用户关系", notes = "绑定用户关系") public ResultBean workWeChatUserBind() { try { WorkWeChatTool workWeChatTool = new WorkWeChatTool(); @@ -118,7 +118,7 @@ public class ExternalSystemController { ); // 判断是否存在如果存在则修改,不存在则新增 - if(sysRefUserExternal == null){ + if (sysRefUserExternal == null) { sysRefUserExternal = new SysRefUserExternal(); sysRefUserExternal.setUserId(sysUser.getId()); sysRefUserExternal.setExternalRef(ImppEnumUtil.USER_EXTERNAL_REF.WORK_WECHAT.getValue()); @@ -132,33 +132,34 @@ public class ExternalSystemController { } return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } - private String getUserProperty(ImppEnumUtil.USER_BIND_PROPERTY userBindProperty,SysUser sysUser){ + private String getUserProperty(ImppEnumUtil.USER_BIND_PROPERTY userBindProperty, SysUser sysUser) { String userBindPropertyValue = null; - switch (userBindProperty){ + switch (userBindProperty) { case USER_LOGIN_NAME: - userBindPropertyValue =sysUser.getUserLoginName(); + userBindPropertyValue = sysUser.getUserLoginName(); break; case USER_NAME: userBindPropertyValue = sysUser.getUserName(); break; case USER_EMP_NO: - userBindPropertyValue =sysUser.getUserEmpNo(); - break; - case EMAIL: - userBindPropertyValue =sysUser.getUserEmail(); + userBindPropertyValue = sysUser.getUserEmpNo(); break; + //FIXME 松下取消邮箱校验 +// case EMAIL: +// userBindPropertyValue =sysUser.getUserEmail(); +// break; case USER_PHONE: - userBindPropertyValue =sysUser.getUserPhone(); + userBindPropertyValue = sysUser.getUserPhone(); break; case USER_WECHAT_NO: - userBindPropertyValue =sysUser.getUserWeChatNo(); + userBindPropertyValue = sysUser.getUserWeChatNo(); break; } return userBindPropertyValue; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index fbc54a3..91bf7bb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -81,7 +81,8 @@ public class SysUserController extends CoreBaseController{ ValidatorBean.beginValid(sysUser) .numberCheck("userInfoId",sysUser.getUserInfoId()) .notNull("userLoginName",sysUser.getUserLoginName()) - .notNull("userEmail",sysUser.getUserEmail()) + // FIXME 松下取消邮箱校验 +// .notNull("userEmail",sysUser.getUserEmail()) .notNull("userLoginPassword",sysUser.getUserLoginPassword()); if(roleIds == null || roleIds.length <= 0){ @@ -143,8 +144,9 @@ public class SysUserController extends CoreBaseController{ ValidatorBean.beginValid(sysUser) .numberCheck("id",sysUser.getUserInfoId()) .numberCheck("userInfoId",sysUser.getUserInfoId()) - .notNull("userLoginName",sysUser.getUserLoginName()) - .notNull("userEmail",sysUser.getUserEmail()); + .notNull("userLoginName",sysUser.getUserLoginName()); + // FIXME 松下取消邮箱校验 +// .notNull("userEmail",sysUser.getUserEmail()); if(roleIds == null || roleIds.length <= 0){ throw ImppExceptionBuilder.newInstance() diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java index a7f5d88..fc6df08 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageMailQueueReceiver.java @@ -109,8 +109,8 @@ public class MessageMailQueueReceiver { sysFileAttach.setFileNameRdd(sysFile.getFileOriginalName()); sysFileAttach.setFilePathRdd(sysFile.getFilePath()); sysFileAttachService.insertSysFileAttach(sysFileAttach); - }finally { - if(in != null) { + } finally { + if (in != null) { in.close(); } } @@ -137,7 +137,10 @@ public class MessageMailQueueReceiver { for (String receiver : messageReceiver) { sysUser = sysUserService.getSysUserById(Long.parseLong(receiver)); - + // FIXME 松下取消邮件唯一性 + if (StringUtils.isEmpty(sysUser.getUserEmail())) { + continue; + } refUserMessage = new SysRefUserMessage(); refUserMessage.setMessageId(msg.getId()); refUserMessage.setMessageSoftType(msg.getMessageSoftType()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 2bf98c3..07e7978 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -639,14 +639,15 @@ public class PersonnelServiceService implements IPersonnelService { } // 邮箱唯一教研 - if(!checkSysUserEmail(user.getUserEmail(),user.getUserInfoId() == null ? 0 : user.getUserInfoId())){ - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("邮箱已存在") - .setErrorSolution("请重新输入邮箱") - .build(); - } + // FIXME 松下移除邮箱校验 +// if(!checkSysUserEmail(user.getUserEmail(),user.getUserInfoId() == null ? 0 : user.getUserInfoId())){ +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) +// .setErrorDetail("邮箱已存在") +// .setErrorSolution("请重新输入邮箱") +// .build(); +// } // 手机号唯一教研 if(!checkSysUserPhone(user.getUserPhone(),user.getUserInfoId() == null ? 0 : user.getUserInfoId())){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 3120bca..eff6bdc 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -590,14 +590,15 @@ public class SysUserService implements ISysUserService { } // 登录名唯一教研 - if (!checkSysUserEmail(user.getUserEmail(), user.getId() == null ? 0 : user.getId())) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("邮箱已存在") - .setErrorSolution("请重新输入邮箱") - .build(); - } + // FIXME 松下移除用户邮箱 +// if (!checkSysUserEmail(user.getUserEmail(), user.getId() == null ? 0 : user.getId())) { +// throw ImppExceptionBuilder.newInstance() +// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) +// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) +// .setErrorDetail("邮箱已存在") +// .setErrorSolution("请重新输入邮箱") +// .build(); +// } // 登录名唯一教研 if (!checkSysUserPhone(user.getUserPhone(), user.getId() == null ? 0 : user.getId())) { From cfbca32fd70473d16f58a8c3833b652f50a0be54 Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Wed, 24 Mar 2021 16:53:37 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E6=9B=B4=E6=94=B9findunread=20=E8=BF=9B?= =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../i3plus/core/apiservice/controller/busi/SysMessageController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java index 3f02d29..1ac6cb5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMessageController.java @@ -189,7 +189,7 @@ public class SysMessageController extends CoreBaseController { * CORE - 查询未读消息 * @return 处理结果 */ - @GetMapping(value = "/operate/user-message/find-unread") + @GetMapping(value = "/white/user-message/find-unread") @ApiOperation(value = "查看用户未读站内信") public ResultBean findUnreadUserMessage(){ try { From 9f317beec3fe2876804100c1623be9eccf6f26b6 Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Fri, 26 Mar 2021 13:04:22 +0800 Subject: [PATCH 3/6] =?UTF-8?q?refactor(core):=20=E6=9D=BE=E4=B8=8B?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E9=82=AE=E7=AE=B1=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/busi/PersonnelController.java | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index f31f3a4..9a2fbbb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -1,6 +1,12 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; -import cn.estsh.i3plus.core.api.iservice.busi.*; +import cn.estsh.i3plus.core.api.iservice.busi.ILicenseClickService; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysDepartmentService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysOrganizeService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService; import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; @@ -29,7 +35,14 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; @@ -677,7 +690,8 @@ public class PersonnelController extends CoreBaseController { .notNull("infoDepartmentId", model.getInfoDepartmentId()) .notNull("userDepartmentId", model.getUserDepartmentId()) .notNull("userLoginName", model.getUserLoginName()) - .notNull("userEmail", model.getUserEmail()) + // FIXME 松下移除邮箱校验 +// .notNull("userEmail", model.getUserEmail()) .notNull("userPhone", model.getUserPhone()); } From 480fadb6b5c03d0ec08a4c73e194fd5214f8fc3c Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Wed, 7 Apr 2021 20:32:35 +0800 Subject: [PATCH 4/6] =?UTF-8?q?refactor(core):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AF=86=E7=A0=81=E8=BF=87=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit21.4.7 --- .../api/iservice/busi/ISysUserPasswordService.java | 5 +- .../controller/base/WhiteController.java | 5 +- .../controller/busi/PersonnelController.java | 63 ++++++++++++++-------- .../controller/busi/SysUserController.java | 43 +++++++++++++-- .../base/login/strategy/DefaultLoginStrategy.java | 42 +++++++++++++-- .../busi/SysUserSavePasswordService.java | 21 ++++++-- .../serviceimpl/busi/SysUserService.java | 21 ++++++-- 7 files changed, 158 insertions(+), 42 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java index 1bce21d..ac4a493 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java @@ -4,8 +4,6 @@ import cn.estsh.i3plus.pojo.platform.bean.SysUserPassword; import cn.estsh.impp.framework.base.service.ICrudService; import io.swagger.annotations.ApiOperation; -import java.util.List; - /** * @Description : * @Reference : @@ -24,6 +22,9 @@ public interface ISysUserPasswordService extends ICrudService { @ApiOperation(value = "修改用户密码") void updatePassword(Long userId,String password,String newPwd); + @ApiOperation(value = "修改用户密码") + void updatePassword(String loginName,String password,String newPwd); + @ApiOperation(value = "重置用户密码") void updatePassword(Long userId,String password); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index e849270..e50d76e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -47,6 +47,7 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.CredentialsException; +import org.apache.shiro.authc.ExpiredCredentialsException; import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.LockedAccountException; import org.apache.shiro.authc.UnknownAccountException; @@ -316,8 +317,10 @@ public class WhiteController extends CoreBaseController { } catch (IncorrectCredentialsException e) { result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD); userPasswordUtil.checkLoginErrorNumber(loginModel.getLoginName(), result, e); - userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD; + } catch (ExpiredCredentialsException e) { + result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_PASSWORD_EXPIRED); + userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD; } catch (CredentialsException e) { // 用户名或密码错误 result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index 9a2fbbb..cd0c3a8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -89,6 +89,7 @@ public class PersonnelController extends CoreBaseController { /** * 添加用户信息 + * * @param model 用户信息 * @return 处理结果 */ @@ -147,6 +148,7 @@ public class PersonnelController extends CoreBaseController { user.setOrganizeNameRdd(userOrganize.getName()); user.setOrganizeCode(userOrganize.getOrganizeCode()); user.setUserInfoId(info.getId()); + user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); refreshSysUserPassword(user); personnelService.saveSysUser(user); @@ -167,6 +169,7 @@ public class PersonnelController extends CoreBaseController { /** * 修改用户信息 + * * @param model 用户信息 * @return 处理结果 */ @@ -256,6 +259,7 @@ public class PersonnelController extends CoreBaseController { /** * 修改用户信息 + * * @param model 用户信息 * @return 处理结果 */ @@ -290,6 +294,7 @@ public class PersonnelController extends CoreBaseController { /** * 获取用户信息 + * * @param id 用户id * @return 处理结果 */ @@ -330,6 +335,7 @@ public class PersonnelController extends CoreBaseController { /** * 获取账号信息 + * * @param id 用户id * @return 处理结果 */ @@ -359,6 +365,7 @@ public class PersonnelController extends CoreBaseController { /** * 删除用户信息 + * * @param id 用户id * @return 处理结果 */ @@ -389,6 +396,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据id批量删除 + * * @param ids id数组 * @return 处理 */ @@ -434,6 +442,7 @@ public class PersonnelController extends CoreBaseController { /** * 删除账号信息 + * * @param id 用户账号id * @return 处理结果 */ @@ -464,6 +473,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据id批量删除 + * * @param ids ids数组 * @return 处理结果 */ @@ -509,6 +519,7 @@ public class PersonnelController extends CoreBaseController { /** * 查询角色的所有角色权限关系 + * * @param model 查询条件 * @return 处理结果 */ @@ -521,7 +532,7 @@ public class PersonnelController extends CoreBaseController { List refs = personnelService.querySysRefUserDepartmentByUserDetailModel(model); if (refs != null && refs.size() > 0) { for (SysRefUserDepartment ref : refs) { - if(!idList.contains(ref.getUserId())){ + if (!idList.contains(ref.getUserId())) { idList.add(ref.getUserId()); } } @@ -538,6 +549,7 @@ public class PersonnelController extends CoreBaseController { /** * 查询角色的所有角色权限关系 + * * @param model 处理消息 * @return 处理结果 */ @@ -564,6 +576,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据条件分页查询用户角色信息 + * * @param model 条件 * @return 处理结果 */ @@ -582,6 +595,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据条件分页查询用户信息 + * * @param model 查询条件 * @return 处理结果 */ @@ -600,6 +614,7 @@ public class PersonnelController extends CoreBaseController { /** * 根据条件分页查询用户信息 + * * @param model 查询条件 * @return 处理结果 */ @@ -618,11 +633,12 @@ public class PersonnelController extends CoreBaseController { /** * 获取账号的所有组织信息集合 + * * @return 组织信息集合 */ @GetMapping(value = "/user/get-organize-list") @ApiOperation(value = "获取账号信息", notes = "获取用户账号的所有组织信息") - public ResultBean getUserOrganizeList(){ + public ResultBean getUserOrganizeList() { try { List list = AuthUtil.getSessionUser().getUser().getOrganizeList(); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); @@ -635,19 +651,19 @@ public class PersonnelController extends CoreBaseController { @PutMapping(value = "/user/session-organize/{id}") @ApiOperation(value = "修改用户会话组织信息", notes = "修改用户会话组织信息") - public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr){ + public ResultBean updateUserOrganizeList(@PathVariable("id") String idStr) { try { ValidatorBean.checkIsNumber(idStr, "id为空"); List list = AuthUtil.getSessionUser().getUser().getOrganizeList(); Long id = Long.parseLong(idStr); SysOrganize organize = null; for (SysOrganize org : list) { - if(org.getId().equals(id)){ + if (org.getId().equals(id)) { organize = org; } } - if(organize == null){ + if (organize == null) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) @@ -658,7 +674,7 @@ public class PersonnelController extends CoreBaseController { // 会话工厂信息保存进Redis AuthUtil.setOrganize(organize); - personnelService.updateSysUserOrganize(AuthUtil.getSessionUser().getUser().getId(),organize.getId()); + personnelService.updateSysUserOrganize(AuthUtil.getSessionUser().getUser().getId(), organize.getId()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(organize); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -670,7 +686,7 @@ public class PersonnelController extends CoreBaseController { /** * 数据必填校验 * - * @param model 用户信息 + * @param model 用户信息 * @param isCheckId 是否校验 * @throws Exception */ @@ -717,7 +733,7 @@ public class PersonnelController extends CoreBaseController { * 用户信息初始化 * * @param model 用户明细信息 - * @param user 用户信息 + * @param user 用户信息 * @throws Exception */ public void initUser(UserDetailModel model, SysUser user) throws Exception { @@ -737,8 +753,8 @@ public class PersonnelController extends CoreBaseController { /** * 关系刷新 * - * @param user 账户 - * @param info 用户信息 + * @param user 账户 + * @param info 用户信息 * @param model 用户模型 */ public void refreshRef(SysUser user, SysUserInfo info, UserDetailModel model) { @@ -781,57 +797,60 @@ public class PersonnelController extends CoreBaseController { /** * 根据组织code查询对应的组织信息 + * * @param code 组织代码 * @return 处理结果 */ @GetMapping(value = "/organize/get-code") @ApiOperation(value = "根据组织code查询对应的组织信息", notes = "根据组织code查询对应的组织信息") - public ResultBean getSysOrganizeByCode(String code){ - try{ + public ResultBean getSysOrganizeByCode(String code) { + try { SysOrganize org = new SysOrganize(); org.setOrganizeCode(code); SysOrganize sysOrganize = organizeService.get(org); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysOrganize); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 查询所有组织信息 + * * @return 处理结果 */ @GetMapping(value = "/organize/list") @ApiOperation(value = "查询所有组织信息", notes = "查询所有组织信息") - public ResultBean findSysOrganizeList(){ - try{ + public ResultBean findSysOrganizeList() { + try { List sysOrganize = organizeService.findAll(); return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultList(sysOrganize); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } /** * 查询所有组织信息 + * * @return 处理结果 */ @GetMapping(value = "/license") @ApiOperation(value = "获取授权信息") - public ResultBean getLicense(){ - try{ + public ResultBean getLicense() { + try { return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) .setResultObject(ImppLicenseTool.getLicense()); - }catch(ImppBusiException busExcep){ + } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); - }catch(Exception e){ + } catch (Exception e) { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 91bf7bb..49ea348 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -1,8 +1,13 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; -import cn.estsh.i3plus.core.api.iservice.busi.*; -import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; +import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -13,12 +18,16 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysMessage; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -27,7 +36,13 @@ import org.apache.commons.lang3.RandomStringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @@ -270,6 +285,24 @@ public class SysUserController extends CoreBaseController{ } } + @PutMapping(value = "/update-expired-password") + @ApiOperation(value = "修改密码", notes = "修改当前登录用户密码") + public ResultBean updateSysUserPassword(String loginName,String password,String newPwd) { + try { + // 数据校验 + ValidatorBean.checkNotNull(password, "旧密码不能为空"); + ValidatorBean.checkNotNull(newPwd, "新密码不能为空"); + ValidatorBean.checkNotNull(loginName, "用户名不能为空"); + + userPasswordService.updatePassword(loginName,password,newPwd.trim()); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + /** * 查询所有用户 * @return 查询所有用户 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java index 8ebc2d9..66f1c5d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java @@ -2,24 +2,32 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.base.login.strategy; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService; -import cn.estsh.i3plus.core.api.iservice.busi.ILicenseClickService; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.BaseThreadLocal; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.model.platform.SysLoginModel; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysConfig; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authc.ExpiredCredentialsException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.function.BiFunction; import static cn.estsh.i3plus.platform.common.util.CommonConstWords.DEFAULT_LANGUAGE; @@ -37,9 +45,6 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { protected ImppRedis redisCore; @Autowired - private ILicenseClickService licenseClickService; - - @Autowired private ISysUserService userService; @Autowired @@ -65,6 +70,9 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { if (sessionMode != CommonEnumUtil.SESSION_MODE.SEIZE.getValue()) { AuthUtil.logout(); } + // 已经对用户名和密码做过验证了 + // 获取系统参数【密码过期时间】 进行密码有效时间判断 + validatePasswordIsExpired(loginModel.getLoginName()); SessionUser user = userService.loginUser( loginModel.getLoginName().trim(), @@ -84,4 +92,30 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { return result; }; } + + private void validatePasswordIsExpired(String loginName) { + SysConfig passwordExpireSwitch = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PWD_EXPIRE_SWITCH); + if (passwordExpireSwitch != null + && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == Integer.parseInt(passwordExpireSwitch.getConfigValue())) { + SysConfig passwordExpireDays = RedisCacheTool.getSysConfigByConfigCode(CommonConstWords.CONFIG_PWD_EXPIRE_DAY_TIME); + if (passwordExpireDays != null && Integer.parseInt(passwordExpireDays.getConfigValue()) > 0) { + SysUser user = userService.getSysUserByLoginName(loginName); + if (StringUtils.isEmpty(user.getUserPasswordLastModifyTime())) { + throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码"); + } else { + DateFormat df = new SimpleDateFormat(CommonConstWords.DATE_TIME_FORMAT_HH_MM_SS_RISK); + Date lastModifyDate = null; + try { + lastModifyDate = df.parse(user.getUserPasswordLastModifyTime()); + } catch (ParseException e) { + throw new ImppBusiException("验证用户密码登录时间,时间解析错误"); + } + long dayGap = System.currentTimeMillis() - lastModifyDate.getTime() / (60 * 60 * 1000 * 24); + if ((int) dayGap >= Integer.parseInt(passwordExpireDays.getConfigValue())) { + throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码"); + } + } + } + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java index 111ba52..8256ce3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java @@ -15,14 +15,11 @@ import cn.estsh.impp.framework.base.service.CrudService; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Service; -import java.util.List; - /** * @Description : * @Reference : @@ -68,6 +65,23 @@ public class SysUserSavePasswordService extends CrudService imp } @Override + public void updatePassword(String loginName, String password, String newPwd) { + SysUser user= userService.getSysUserByLoginName(loginName); + SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); + ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); + if(StringUtils.equals(userPassword.getUserPassword(),password)){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) + .setErrorDetail("原始密码错误") + .setErrorSolution("请重新操作") + .build(); + } + + updatePassword(user.getId(), newPwd); + } + + @Override public void updatePassword(Long userId, String password) { SysUser user = userService.getSysUserById(userId); ValidatorBean.checkNotNull(user,"不存在的用户信息"); @@ -88,6 +102,7 @@ public class SysUserSavePasswordService extends CrudService imp SysUserPassword save = userPasswordRDao.save(pwd); user.setUserLoginPasswordId(save.getId()); + user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName()); userService.updateSysUser(user); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index eff6bdc..ac437fc 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -1,9 +1,9 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.*; -import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; import cn.estsh.i3plus.core.apiservice.util.SysUserPasswordUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.tool.EncryptTool; import cn.estsh.i3plus.platform.common.tool.StringTool; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -20,11 +20,15 @@ import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.HqlPack; import cn.estsh.i3plus.pojo.platform.bean.*; -import cn.estsh.i3plus.pojo.platform.repository.*; +import cn.estsh.i3plus.pojo.platform.repository.SysLogUserLoginRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysRefUserDepartmentRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysRefUserPositionRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysUserInfoRepository; +import cn.estsh.i3plus.pojo.platform.repository.SysUserRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; import cn.estsh.impp.framework.boot.util.ValidatorBean; @@ -42,7 +46,15 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; @@ -124,7 +136,6 @@ public class SysUserService implements ISysUserService { BaseToken token = getToken(loginName, password, languageCode, loginPlatform); SessionUser sessionUser = AuthUtil.login(token); SysUser user = this.getSysUserByLoginName(loginName); - if (user == null) { throw new CredentialsException("用户不存在"); } From 9f67131539ce6b13f7a952a793f416f3d844c67b Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Thu, 8 Apr 2021 15:01:00 +0800 Subject: [PATCH 5/6] =?UTF-8?q?refactor(core):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=AF=86=E7=A0=81=E8=BF=87=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Finish 21.4.8 --- .../api/iservice/busi/ISysUserPasswordService.java | 1 + .../core/api/iservice/busi/ISysUserService.java | 16 ++++++- .../controller/base/SystemController.java | 19 ++++----- .../controller/base/WhiteController.java | 21 +++++++++- .../controller/busi/SysUserController.java | 18 -------- .../base/login/strategy/DefaultLoginStrategy.java | 3 +- .../busi/SysUserSavePasswordService.java | 49 ++++++++++++++++------ .../serviceimpl/busi/SysUserService.java | 12 ++++++ 8 files changed, 94 insertions(+), 45 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java index ac4a493..2c77db1 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserPasswordService.java @@ -28,4 +28,5 @@ public interface ISysUserPasswordService extends ICrudService { @ApiOperation(value = "重置用户密码") void updatePassword(Long userId,String password); + void updatePasswordWizoutSession(String loginName,String password,String newPwd); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index df2219e..e6d1196 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -3,7 +3,11 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.shirotoken.BaseToken; -import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; import io.swagger.annotations.ApiOperation; import org.apache.shiro.authc.AuthenticationException; @@ -300,4 +304,14 @@ public interface ISysUserService { */ @ApiOperation(value = "根据id查询用户信息") List findSysUserByIds(Long[] ids); + + + /** + * 根据用户名查询密码是否正确 + * + * @param loginName 用户名 + * @param password 密码 + */ + @ApiOperation(value = "根据用户名查询密码是否正确") + SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java index 6de22d1..159748c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SystemController.java @@ -1,12 +1,10 @@ package cn.estsh.i3plus.core.apiservice.controller.base; -import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService; -import cn.estsh.i3plus.icloud.wms.sdk.IWmsCommonCloud; +import cn.estsh.i3plus.core.api.iservice.busi.ISysUserPasswordService; import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.impp.framework.boot.configuration.SystemConfig; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ImppRedis; @@ -28,7 +26,11 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.util.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; /** * @Description : @@ -47,17 +49,11 @@ public class SystemController { @Autowired private Environment environment; - @Autowired - private IWmsCommonCloud wmsCommonCloud; - @Resource(name = CommonConstWords.IMPP_REDIS_CORE) protected ImppRedis redisCore; @Autowired - private ISysDictionaryService sysDictionaryService; - - @Autowired - private SystemConfig systemConfig; + private ISysUserPasswordService userPasswordService; @GetMapping("/get-properties") @ApiOperation(value = "获取系统配置信息", notes = "获取系统配置信息") @@ -139,4 +135,5 @@ public class SystemController { return ImppExceptionBuilder.newInstance().buildExceptionResult(e); } } + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index e50d76e..2e08c19 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -2,7 +2,6 @@ package cn.estsh.i3plus.core.apiservice.controller.base; import cn.estsh.i3plus.core.api.iservice.base.ISynchronizedService; import cn.estsh.i3plus.core.api.iservice.base.ISystemInitService; -import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginStrategyService; import cn.estsh.i3plus.core.api.iservice.busi.*; import cn.estsh.i3plus.core.apiservice.controller.busi.PersonnelController; @@ -133,7 +132,7 @@ public class WhiteController extends CoreBaseController { private ISysConfigService configService; @Autowired - private ISystemLoginService loginService; + private ISysUserPasswordService userPasswordService; @Autowired private SysUserPasswordUtil userPasswordUtil; @@ -720,6 +719,24 @@ public class WhiteController extends CoreBaseController { } } + @PutMapping(value = "/update-expired-password") + @ApiOperation(value = "修改密码", notes = "松下修改当前登录用户密码") + public ResultBean updateSysUserPassword(String loginName, String password, String newPwd) { + try { + // 数据校验 + ValidatorBean.checkNotNull(password, "旧密码不能为空"); + ValidatorBean.checkNotNull(newPwd, "新密码不能为空"); + ValidatorBean.checkNotNull(loginName, "用户名不能为空"); + + userPasswordService.updatePasswordWizoutSession(loginName, password, newPwd.trim()); + return ResultBean.success("修改密码成功,请重新登陆").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PostMapping(value = "/license") @ApiOperation(value = "更新授权", notes = "更新授权") public ResultBean updateLicense(String content) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 49ea348..aace7cf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -285,24 +285,6 @@ public class SysUserController extends CoreBaseController{ } } - @PutMapping(value = "/update-expired-password") - @ApiOperation(value = "修改密码", notes = "修改当前登录用户密码") - public ResultBean updateSysUserPassword(String loginName,String password,String newPwd) { - try { - // 数据校验 - ValidatorBean.checkNotNull(password, "旧密码不能为空"); - ValidatorBean.checkNotNull(newPwd, "新密码不能为空"); - ValidatorBean.checkNotNull(loginName, "用户名不能为空"); - - userPasswordService.updatePassword(loginName,password,newPwd.trim()); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - } catch(ImppBusiException busExcep){ - return ResultBean.fail(busExcep); - }catch(Exception e){ - return ImppExceptionBuilder.newInstance().buildExceptionResult(e); - } - } - /** * 查询所有用户 * @return 查询所有用户 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java index 66f1c5d..9c0f7f2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/login/strategy/DefaultLoginStrategy.java @@ -72,6 +72,7 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { } // 已经对用户名和密码做过验证了 // 获取系统参数【密码过期时间】 进行密码有效时间判断 + userService.validatePasswordByLoginNameAndReturnUser(loginModel.getLoginName(),loginModel.getLoginPwd()); validatePasswordIsExpired(loginModel.getLoginName()); SessionUser user = userService.loginUser( @@ -110,7 +111,7 @@ public class DefaultLoginStrategy implements ISystemLoginStrategyService { } catch (ParseException e) { throw new ImppBusiException("验证用户密码登录时间,时间解析错误"); } - long dayGap = System.currentTimeMillis() - lastModifyDate.getTime() / (60 * 60 * 1000 * 24); + long dayGap = (System.currentTimeMillis() - lastModifyDate.getTime()) / (60 * 60 * 1000 * 24); if ((int) dayGap >= Integer.parseInt(passwordExpireDays.getConfigValue())) { throw new ExpiredCredentialsException("用户密码过期 请重新设置新密码"); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java index 8256ce3..f0800f5 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserSavePasswordService.java @@ -48,11 +48,11 @@ public class SysUserSavePasswordService extends CrudService imp @Override public void updatePassword(Long userId, String password, String newPwd) { SysUser user = userService.getSysUserById(userId); - ValidatorBean.checkNotNull(user,"不存在的用户信息"); + ValidatorBean.checkNotNull(user, "不存在的用户信息"); SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); - ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); - if(StringUtils.equals(userPassword.getUserPassword(),password)){ + ValidatorBean.checkNotNull(userPassword, "不存在的用户密码信息"); + if (StringUtils.equals(userPassword.getUserPassword(), password)) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) @@ -66,10 +66,10 @@ public class SysUserSavePasswordService extends CrudService imp @Override public void updatePassword(String loginName, String password, String newPwd) { - SysUser user= userService.getSysUserByLoginName(loginName); + SysUser user = userService.getSysUserByLoginName(loginName); SysUserPassword userPassword = userPasswordRDao.getById(user.getUserLoginPasswordId()); - ValidatorBean.checkNotNull(userPassword,"不存在的用户密码信息"); - if(StringUtils.equals(userPassword.getUserPassword(),password)){ + ValidatorBean.checkNotNull(userPassword, "不存在的用户密码信息"); + if (StringUtils.equals(userPassword.getUserPassword(), password)) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.NOT_CONFIG_EXCEPTION.getCode()) @@ -84,26 +84,51 @@ public class SysUserSavePasswordService extends CrudService imp @Override public void updatePassword(Long userId, String password) { SysUser user = userService.getSysUserById(userId); - ValidatorBean.checkNotNull(user,"不存在的用户信息"); + ValidatorBean.checkNotNull(user, "不存在的用户信息"); user.setUserLoginPassword(password); userPasswordUtil.checkPasswordSave(user); userPasswordRDao.updateByProperties( - new String[]{"userId","isDeleted"}, - new Object[]{user.getId(),CommonEnumUtil.IS_DEAL.NO.getValue()}, - new String[]{"isDeleted","modifyDatetime","modifyUser"}, + new String[]{"userId", "isDeleted"}, + new Object[]{user.getId(), CommonEnumUtil.IS_DEAL.NO.getValue()}, + new String[]{"isDeleted", "modifyDatetime", "modifyUser"}, new Object[]{ CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), AuthUtil.getSessionUser().getUserName()}); SysUserPassword pwd = new SysUserPassword(); pwd.setUserId(userId); pwd.setUserPassword(SysUserPasswordUtil.encoder(password)); - ConvertBean.serviceModelInitialize(pwd,AuthUtil.getSessionUser()); + ConvertBean.serviceModelInitialize(pwd, AuthUtil.getSessionUser()); SysUserPassword save = userPasswordRDao.save(pwd); user.setUserLoginPasswordId(save.getId()); user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); - ConvertBean.serviceModelUpdate(user,AuthUtil.getSessionUser().getUserName()); + ConvertBean.serviceModelUpdate(user, AuthUtil.getSessionUser().getUserName()); + userService.updateSysUser(user); + } + + @Override + public void updatePasswordWizoutSession(String loginName, String password, String newPwd) { + SysUser user = userService.validatePasswordByLoginNameAndReturnUser(loginName, password); + user.setUserLoginPassword(password); + userPasswordUtil.checkPasswordSave(user); + + userPasswordRDao.updateByProperties( + new String[]{"userId", "isDeleted"}, + new Object[]{user.getId(), CommonEnumUtil.IS_DEAL.NO.getValue()}, + new String[]{"isDeleted", "modifyDatetime", "modifyUser"}, + new Object[]{ + CommonEnumUtil.IS_DEAL.YES.getValue(), TimeTool.getNowTime(true), loginName}); + + SysUserPassword pwd = new SysUserPassword(); + pwd.setUserId(user.getId()); + pwd.setUserPassword(SysUserPasswordUtil.encoder(newPwd)); + ConvertBean.serviceModelInitialize(pwd, loginName); + SysUserPassword save = userPasswordRDao.save(pwd); + + user.setUserLoginPasswordId(save.getId()); + user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); + ConvertBean.serviceModelUpdate(user, loginName); userService.updateSysUser(user); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index ac437fc..75f1e0e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -37,6 +37,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.CredentialsException; +import org.apache.shiro.authc.IncorrectCredentialsException; import org.apache.shiro.authc.UnknownAccountException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -724,6 +725,17 @@ public class SysUserService implements ISysUserService { return userRDao.findByHqlWhere(ddlPackBean); } + @Override + public SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password) { + SysUser userDb = getSysUserByLoginName(loginName); + ValidatorBean.checkNotNull(userDb, "不存在的用户信息"); + SysUserPassword userPassword = userPasswordService.get(userDb.getUserLoginPasswordId()); + if (!userPassword.getUserPassword().equals(SysUserPasswordUtil.encoder(password))) { + throw new IncorrectCredentialsException("用户密码错误"); + } + return userDb; + } + /** * 账号数据排序 * 创建时间 角色升序 From 8f658735b115435976184bff834f6106c92971a2 Mon Sep 17 00:00:00 2001 From: wynne1005 Date: Tue, 13 Apr 2021 14:59:02 +0800 Subject: [PATCH 6/6] =?UTF-8?q?refactor(core):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E9=BB=98=E8=AE=A4=E6=B7=BB=E5=8A=A0UserPassw?= =?UTF-8?q?ord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增用户默认添加UserPassword --- .../core/apiservice/controller/base/WhiteController.java | 3 +++ .../apiservice/controller/busi/PersonnelController.java | 13 +++++++++++++ .../core/apiservice/serviceimpl/busi/SysUserService.java | 13 ++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index 2e08c19..eac36b2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -337,13 +337,16 @@ public class WhiteController extends CoreBaseController { result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getDescription()).setCode(ImppExceptionEnum.LOGIN_EXCEPTION_USER_PASSWORD.getCode()); result.setErrorMsg(e.getMessage()); userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + LOGGER.warn("Impp业务异常AuthenticationException 登录失败 ", e); } catch (ImppBusiException e) { result = ResultBean.fail(e); userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + LOGGER.warn("Impp业务异常ImppBusiException 登录失败 ", e); } catch (Exception e) { result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()) .setErrorMsg(LocaleUtils.getEnumLocaleResDesc(ImppExceptionEnum.SYSTEM_EXCEPTION, ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription())); userLoginStatus = CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR; + LOGGER.warn("Impp业务异常Exception 登录失败 ", e); } finally { // 记录登录记录 recordSysUserLog(null, loginModel.getLoginName(), userLoginStatus.getValue()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index cd0c3a8..5417f96 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -22,6 +22,7 @@ import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; import cn.estsh.i3plus.pojo.model.platform.UserDetailPagerModel; import cn.estsh.i3plus.pojo.model.platform.UserRolePagerModel; import cn.estsh.i3plus.pojo.platform.bean.*; +import cn.estsh.i3plus.pojo.platform.repository.SysUserPasswordRepository; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -87,6 +88,9 @@ public class PersonnelController extends CoreBaseController { @Autowired private SysUserPasswordUtil userPasswordUtil; + @Autowired + private SysUserPasswordRepository userPasswordRDao; + /** * 添加用户信息 * @@ -150,6 +154,15 @@ public class PersonnelController extends CoreBaseController { user.setUserInfoId(info.getId()); user.setUserPasswordLastModifyTime(TimeTool.getNowTime(true)); refreshSysUserPassword(user); + SysUser userSaved=personnelService.saveSysUser(user); + + // 添加保存passwordId进SysUser表 + SysUserPassword pwd = new SysUserPassword(); + pwd.setUserId(userSaved.getId()); + pwd.setUserPassword(userSaved.getUserLoginPassword()); + ConvertBean.serviceModelInitialize(pwd, userSaved.getUserName()); + SysUserPassword savedPassword = userPasswordRDao.save(pwd); + user.setUserLoginPasswordId(savedPassword.getId()); personnelService.saveSysUser(user); info.setUserId(user.getId()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 75f1e0e..2d6b3d7 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -729,10 +729,17 @@ public class SysUserService implements ISysUserService { public SysUser validatePasswordByLoginNameAndReturnUser(String loginName, String password) { SysUser userDb = getSysUserByLoginName(loginName); ValidatorBean.checkNotNull(userDb, "不存在的用户信息"); - SysUserPassword userPassword = userPasswordService.get(userDb.getUserLoginPasswordId()); - if (!userPassword.getUserPassword().equals(SysUserPasswordUtil.encoder(password))) { - throw new IncorrectCredentialsException("用户密码错误"); + if (userDb.getUserLoginPasswordId() == null || userDb.getUserLoginPasswordId() <= 0) { + if (!userDb.getUserLoginPassword().equals(SysUserPasswordUtil.encoder(password))) { + throw new IncorrectCredentialsException("用户密码错误"); + } + } else { + SysUserPassword userPassword = userPasswordService.get(userDb.getUserLoginPasswordId()); + if (!userPassword.getUserPassword().equals(SysUserPasswordUtil.encoder(password))) { + throw new IncorrectCredentialsException("用户密码错误"); + } } + return userDb; }