Sfoglia il codice sorgente

提交登录接口开发接口

chenxiaofei 13 ore fa
parent
commit
a41e1cbd63

+ 0 - 3
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -585,9 +585,6 @@ public class AuthServiceImpl implements IAuthService {
                 // 清除当前用户的token
                 String tokenKey = Global.getFullUserTokenKey(clientType, currentUser.getId());
                 RedissonUtils.delete(tokenKey);
-                // 清除当前用户的refreshToken
-                String refreshTokenKey = Global.getFullRefreshTokenKey(clientType, currentUser.getId(), deviceId);
-                RedissonUtils.delete(refreshTokenKey);
                 
                 // 清除当前用户的登录信息缓存
                 String loginKey = Global.getFullUserLoginKey(currentUser.getSystemType(), currentUser.getId());

+ 6 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/forkliftapp/UsersController.java

@@ -64,8 +64,12 @@ public class UsersController {
      */
     @PostMapping("/updatePassword")
     @Operation(summary = "修改密码", description = "用户修改密码")
-    public BaseResult<String> updatePassword(@RequestBody @Valid UpdatePasswordReqVo reqVo) {
-        kwsUserService.updatePasswordForApp(reqVo.getUserId(), reqVo.getOldPassword(), reqVo.getNewPassword());
+    public BaseResult<String> updatePassword(@RequestBody @Valid UpdatePasswordReqVo reqVo, HttpServletRequest request) {
+        int systemType = request.getIntHeader("System-Type");
+        String clientType = request.getHeader("Client-Type");
+        kwsUserService.updatePasswordForApp(reqVo.getUserId(),
+                reqVo.getOldPassword(), reqVo.getNewPassword(),
+                clientType, systemType, reqVo.getDeviceId());
         return BaseResult.success("密码修改成功");
     }
 

+ 6 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/UpdatePasswordReqVo.java

@@ -40,5 +40,10 @@ public class UpdatePasswordReqVo implements Serializable {
     @NotBlank(message = "新密码不能为空")
     @Schema(description = "新密码", required = true, example = "New123456")
     private String newPassword;
-
+    /**
+     * 设备id
+     */
+    @NotBlank(message = "设备id不能为空")
+    @Schema(description = "设备id", required = true, example = "1234567890")
+    private String deviceId;
 }

+ 24 - 3
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java

@@ -873,7 +873,8 @@ public class KwsUserService {
      * @param oldPassword 旧密码
      * @param newPassword 新密码
      */
-    public void updatePasswordForApp(Long userId, String oldPassword, String newPassword) {
+    public void updatePasswordForApp(Long userId, String oldPassword, String newPassword,
+                                     String clientType, Integer systemType, String deviceId) {
         log.info("修改密码,用户ID: {}", userId);
         
         // 1. 查询用户信息
@@ -894,10 +895,30 @@ public class KwsUserService {
         // 4. 修改密码
         newPassword =  PasswordUtils.md5(newPassword);
         updatePwd(newPassword, kwsUser);
-        
+        // 5. 清除当前登录用户的token缓存
+        clearCurrentUserToken(clientType, deviceId,kwsUser);
         log.info("密码修改成功,用户ID: {}", userId);
     }
-
+    private void clearCurrentUserToken(String clientType, String deviceId, KwsUser kwsUser) {
+        try {
+            if (kwsUser.getId()!= null) {
+                // 清除当前用户的token
+                String tokenKey = Global.getFullUserTokenKey(clientType, kwsUser.getId());
+                RedissonUtils.delete(tokenKey);
+                // 清除当前用户的refreshToken
+                String refreshTokenKey = Global.getFullRefreshTokenKey(clientType, kwsUser.getId(), deviceId);
+                RedissonUtils.delete(refreshTokenKey);
+
+                // 清除当前用户的登录信息缓存
+                String loginKey = Global.getFullUserLoginKey(kwsUser.getSystemType(), kwsUser.getId());
+                RedissonUtils.delete(loginKey);
+
+                log.info("已清除当前用户token缓存,userId:{}", kwsUser.getId());
+            }
+        } catch (Exception e) {
+            log.warn("清除当前用户token缓存失败", e);
+        }
+    }
     /**
      * 用户登录(叉车APP)
      *