diff --git a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java index 91360ec3..0061a383 100644 --- a/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java +++ b/acupuncture-admin/src/main/java/com/acupuncture/web/controller/web/DmsLoginController.java @@ -1,5 +1,6 @@ package com.acupuncture.web.controller.web; +import com.acupuncture.common.annotation.DataSource; import com.acupuncture.common.annotation.Log; import com.acupuncture.common.constant.Constants; import com.acupuncture.common.core.domain.AjaxResult; @@ -8,6 +9,7 @@ import com.acupuncture.common.core.domain.entity.SysUser; import com.acupuncture.common.core.domain.model.LoginBody; import com.acupuncture.common.core.domain.model.LoginUser; import com.acupuncture.common.enums.BusinessType; +import com.acupuncture.common.enums.DataSourceType; import com.acupuncture.common.utils.SecurityUtils; import com.acupuncture.framework.web.service.SysPermissionService; import com.acupuncture.framework.web.service.TokenService; @@ -23,6 +25,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.Map; import java.util.Set; /** @@ -53,6 +56,7 @@ public class DmsLoginController { * @return 结果 */ @PostMapping("/login") + @DataSource(DataSourceType.MASTER) public AjaxResult login(@RequestBody LoginBody loginBody) { AjaxResult ajax = AjaxResult.success(); // 生成令牌 @@ -81,14 +85,48 @@ public class DmsLoginController { return ajax; } - @PutMapping("/resetPwd") - public JsonResponse resetPwd(@RequestBody DmsLoginUserVo.DmsUserVo user) { -// webDmsLoginService.checkUserAllowed(user); -// webDmsLoginService.checkUserDataScope(user.getUserId()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - return JsonResponse.ok(dmsLoginService.resetPwd(user)); + /** + * 重置密码 + */ + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping("/updatePwd") + @DataSource(DataSourceType.MASTER) + public AjaxResult updatePwd(@RequestBody Map params) + { + String oldPassword = params.get("oldPassword"); + String newPassword = params.get("newPassword"); + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long userId = loginUser.getUserId(); + String userName = loginUser.getUsername(); + String password = loginUser.getPassword(); + if (!SecurityUtils.matchesPassword(oldPassword, password)) + { + return AjaxResult.error("修改密码失败,旧密码错误"); + } + if (SecurityUtils.matchesPassword(newPassword, password)) + { + return AjaxResult.error("新密码不能与旧密码相同"); + } + newPassword = SecurityUtils.encryptPassword(newPassword); + if (dmsLoginService.resetPwd(userId, userName, newPassword) > 0) + { + // 更新缓存用户密码 + loginUser.getUser().setPassword(newPassword); + tokenService.setLoginUser(loginUser); + return AjaxResult.success("操作成功"); + } + return AjaxResult.error("修改密码异常,请联系管理员"); } + +// @PutMapping("/resetPwd") +// public JsonResponse resetPwd(@RequestBody DmsLoginUserVo.DmsUserVo user) { +//// webDmsLoginService.checkUserAllowed(user); +//// webDmsLoginService.checkUserDataScope(user.getUserId()); +// user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); +// return JsonResponse.ok(dmsLoginService.resetPwd(user)); +// } + @PostMapping("/queryTenantById") public JsonResponse queryTenantById(@RequestBody DmsLoginUserVo.Query dto){ return JsonResponse.ok(dmsLoginService.queryById(dto.getId())); diff --git a/acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/UserDetailsServiceImpl.java b/acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/UserDetailsServiceImpl.java index 93dc3214..7a028599 100644 --- a/acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/UserDetailsServiceImpl.java +++ b/acupuncture-framework/src/main/java/com/acupuncture/framework/web/service/UserDetailsServiceImpl.java @@ -100,6 +100,7 @@ public class UserDetailsServiceImpl implements UserDetailsService { SysUser sysUser = new SysUser(); sysUser.setUserName(user.getUsername()); + sysUser.setPassword(user.getPassword()); sysUser.setUserId(user.getDmsUserId()); return new LoginUser(user.getDmsUserId(), user.getHospitalId(), sysUser, CollUtil.newHashSet(), user.getTenantId() ,user.getScoreId()); } diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java index afe90674..b11cfe63 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/domain/vo/DmsLoginUserVo.java @@ -22,7 +22,7 @@ public class DmsLoginUserVo { } @Data public static class DmsUserVo { - private Integer id; + private Long id; private Long tenantId; private String userName; diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java index c54160fc..667bbe6c 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/DmsLoginService.java @@ -34,10 +34,11 @@ public interface DmsLoginService { /** * 重置用户密码 * - * @param user 用户信息 + * @param username 用户信息 + * @param password 密码 * @return 结果 */ - public int resetPwd(DmsLoginUserVo.DmsUserVo user); + public int resetPwd(Long userId, String username, String password); /** * 根据租户ID获取数据源 diff --git a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java index e7989974..0ab9e407 100644 --- a/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java +++ b/acupuncture-system/src/main/java/com/acupuncture/system/service/impl/DmsLoginServiceImpl.java @@ -54,7 +54,11 @@ public class DmsLoginServiceImpl implements DmsLoginService { } @Override - public int resetPwd(DmsLoginUserVo.DmsUserVo user) { + public int resetPwd(Long userId, String username, String password) { + DmsLoginUserVo.DmsUserVo user = new DmsLoginUserVo.DmsUserVo(); + user.setId(userId); + user.setUserName(username); + user.setPassword(password); return dmsUserDao.updateUser(user); }