Browse Source

Merge branch 'feat/v2'

ChenYL 11 months ago
parent
commit
914a3edcc2

+ 30 - 0
src/main/java/com/punchsettle/server/service/controller/TokenController.java

@@ -0,0 +1,30 @@
+package com.punchsettle.server.service.controller;
+
+import com.punchsettle.server.service.manager.ITokenManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author myou
+ * @version 1.0.0
+ * @date 2024/12/28 21:28
+ * @description JWT controller
+ */
+@RestController
+@RequestMapping("/token")
+public class TokenController {
+
+    @Autowired
+    private ITokenManager tokenManager;
+
+    /**
+     * 刷新token
+     * @return
+     */
+    @GetMapping("/refreshToken")
+    public String refreshToken() {
+        return tokenManager.refreshToken();
+    }
+}

+ 23 - 0
src/main/java/com/punchsettle/server/service/manager/ITokenManager.java

@@ -0,0 +1,23 @@
+package com.punchsettle.server.service.manager;
+
+/**
+ * @author myou
+ * @version 1.0.0
+ * @date 2024/12/28 21:22
+ * @description Json Web Token 管理类
+ */
+public interface ITokenManager {
+
+    /**
+     * 创建Token
+     * @param userId
+     * @return
+     */
+    String createToken(Long userId);
+
+    /**
+     * 刷新token
+     * @return
+     */
+    String refreshToken();
+}

+ 3 - 10
src/main/java/com/punchsettle/server/service/manager/impl/LoginManagerImpl.java

@@ -1,23 +1,20 @@
 package com.punchsettle.server.service.manager.impl;
 package com.punchsettle.server.service.manager.impl;
 
 
 
 
-import java.util.Calendar;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import com.punchsettle.server.atomic.entity.User;
 import com.punchsettle.server.atomic.entity.User;
 import com.punchsettle.server.common.exception.BusinessException;
 import com.punchsettle.server.common.exception.BusinessException;
 import com.punchsettle.server.constant.CacheConstant;
 import com.punchsettle.server.constant.CacheConstant;
-import com.punchsettle.server.core.config.BizConfig;
 import com.punchsettle.server.feign.WechatMiniProgramFeign;
 import com.punchsettle.server.feign.WechatMiniProgramFeign;
 import com.punchsettle.server.feign.dto.Code2SessionRequest;
 import com.punchsettle.server.feign.dto.Code2SessionRequest;
 import com.punchsettle.server.feign.dto.Code2SessionResponse;
 import com.punchsettle.server.feign.dto.Code2SessionResponse;
 import com.punchsettle.server.pojo.login.LoginRequest;
 import com.punchsettle.server.pojo.login.LoginRequest;
 import com.punchsettle.server.service.manager.ILoginManager;
 import com.punchsettle.server.service.manager.ILoginManager;
+import com.punchsettle.server.service.manager.ITokenManager;
 import com.punchsettle.server.service.manager.IUserManager;
 import com.punchsettle.server.service.manager.IUserManager;
 import com.punchsettle.server.utiis.CacheUtils;
 import com.punchsettle.server.utiis.CacheUtils;
-import com.punchsettle.server.utiis.TokenUtils;
 
 
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 
 
@@ -35,7 +32,7 @@ public class LoginManagerImpl implements ILoginManager {
     private IUserManager userManager;
     private IUserManager userManager;
 
 
     @Autowired
     @Autowired
-    private BizConfig bizConfig;
+    private ITokenManager tokenManager;
 
 
     @Override
     @Override
     public String wechatMiniProgramLogin(LoginRequest request) {
     public String wechatMiniProgramLogin(LoginRequest request) {
@@ -60,10 +57,6 @@ public class LoginManagerImpl implements ILoginManager {
             loginResponse.getSessionKey());
             loginResponse.getSessionKey());
 
 
         // 创建token
         // 创建token
-        Calendar instance = Calendar.getInstance();
-        instance.add(Calendar.DATE, bizConfig.getTokenExpire());
-        String token = TokenUtils.createToken(user.getId(), instance.getTime());
-
-        return token;
+        return tokenManager.createToken(user.getId());
     }
     }
 }
 }

+ 42 - 0
src/main/java/com/punchsettle/server/service/manager/impl/TokenManagerImpl.java

@@ -0,0 +1,42 @@
+package com.punchsettle.server.service.manager.impl;
+
+import com.punchsettle.server.common.exception.BusinessException;
+import com.punchsettle.server.common.utils.Assert;
+import com.punchsettle.server.core.config.BizConfig;
+import com.punchsettle.server.service.manager.ITokenManager;
+import com.punchsettle.server.utiis.TokenUtils;
+import com.punchsettle.server.utiis.UserUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Calendar;
+import java.util.Optional;
+
+/**
+ * @author myou
+ * @version 1.0.0
+ * @date 2024/12/28 21:24
+ * @description Json Web Token 管理类
+ */
+@Service
+public class TokenManagerImpl implements ITokenManager {
+
+    @Autowired
+    private BizConfig bizConfig;
+
+    @Override
+    public String createToken(Long userId) {
+        Assert.isNullInBusiness(userId, "请传入用户ID");
+        Calendar instance = Calendar.getInstance();
+        instance.add(Calendar.DATE, bizConfig.getTokenExpire());
+        return TokenUtils.createToken(userId, instance.getTime());
+    }
+
+    @Override
+    public String refreshToken() {
+        // 获取用户信息
+        Long currentUserId =
+            Optional.ofNullable(UserUtils.getCurrentUserId()).orElseThrow(() -> BusinessException.fail("无法获取当前用户ID"));
+        return createToken(currentUserId);
+    }
+}

+ 2 - 0
src/main/resources/application.yaml

@@ -20,3 +20,5 @@ biz:
   wechat:
   wechat:
     mini-program:
     mini-program:
       url: https://api.weixin.qq.com
       url: https://api.weixin.qq.com
+  token:
+    expire: 7