Просмотр исходного кода

Debug selectUserDetail @LoginUserId

tsurumure 10 месяцев назад
Родитель
Сommit
f10963a64a

+ 11 - 0
src/main/java/com/backendsys/config/Security/CorsConfig.java

@@ -2,6 +2,7 @@ package com.backendsys.config.Security;
 
 //import com.backendsys.config.Interceptor.TranslationInterceptor;
 import com.backendsys.config.Interceptor.PreAuthorizeInterceptor;
+import com.backendsys.modules.system.interceptor.LoginUserInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
@@ -25,15 +26,25 @@ public class CorsConfig implements WebMvcConfigurer {
 //        registry.addInterceptor(translationInterceptor).addPathPatterns("/**");
 //    }
 
+    @Autowired
+    private LoginUserInterceptor loginUserInterceptor;
+
     @Autowired
     private PreAuthorizeInterceptor preAuthorizeInterceptor;
 
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
+
         registry.addInterceptor(preAuthorizeInterceptor)
                 .addPathPatterns("/**")
                 .excludePathPatterns("/swagger-ui/**")
         ;
+
+        registry.addInterceptor(loginUserInterceptor)
+            .addPathPatterns("/api/**")
+            .excludePathPatterns("/swagger-ui/**", "/api/public/**")
+        ;
+
     }
 
     @Override

+ 11 - 0
src/main/java/com/backendsys/modules/system/annotation/LoginUserId.java

@@ -0,0 +1,11 @@
+package com.backendsys.modules.system.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.PARAMETER)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LoginUserId {
+}

+ 3 - 1
src/main/java/com/backendsys/modules/system/controller/SysUserV2Controller.java

@@ -1,6 +1,7 @@
 package com.backendsys.modules.system.controller;
 
 import com.backendsys.modules.common.utils.Result;
+import com.backendsys.modules.system.annotation.LoginUserId;
 import com.backendsys.modules.system.service.SysUserV2Service;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -18,8 +19,9 @@ public class SysUserV2Controller {
 
     @Operation(summary = "获得系统用户详情")
     @GetMapping("/api/v2/system/user/getUserDetail")
-    public Result getUserDetail(@Parameter(description = "用户ID") Long user_id) {
+    public Result getUserDetail(@Parameter(description = "用户ID") Long user_id, @LoginUserId Long login_user_id) {
         System.out.println("user_id = " + user_id);
+        System.out.println("login_user_id = " + login_user_id);
         return Result.success().put("data", sysUserV2Service.selectUserInfo(user_id));
     }
 

+ 0 - 1
src/main/java/com/backendsys/modules/system/entity/SysUserInfo.java

@@ -23,7 +23,6 @@ public class SysUserInfo {
     private Integer audit_status;
     private String audit_note;
     private Float point_balance;
-    private String invite_code;
     private Integer status;
     private String create_time;
     private String update_time;

+ 63 - 0
src/main/java/com/backendsys/modules/system/interceptor/LoginUserInterceptor.java

@@ -0,0 +1,63 @@
+package com.backendsys.modules.system.interceptor;
+
+import cn.hutool.core.convert.Convert;
+import com.backendsys.aspect.HttpRequestAspect;
+import com.backendsys.config.Security.service.TokenService;
+import com.backendsys.modules.system.annotation.LoginUserId;
+import io.jsonwebtoken.Claims;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+import java.lang.reflect.Parameter;
+
+@Component
+public class LoginUserInterceptor implements HandlerInterceptor {
+
+    @Autowired
+    private TokenService tokenService;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        if (handler instanceof HandlerMethod) {
+            HandlerMethod handlerMethod = (HandlerMethod) handler;
+            Parameter[] parameters = handlerMethod.getMethod().getParameters();
+            for (Parameter parameter : parameters) {
+                if (parameter.isAnnotationPresent(LoginUserId.class)) {
+                    // 这里假设你有一个方法可以获取当前登录用户的ID
+                    Long userId = getCurrentUserLoginUserId(request);
+                    if (userId != null) {
+                        // 将登录用户的ID注入到参数中
+                        // 注意:这里只是一个示例,实际上你不能直接修改方法参数的值
+                        // 你需要通过其他方式来传递这个值,例如使用RequestAttribute
+                        request.setAttribute("login_user_id", userId);
+
+                        System.out.println("preHandle login_user_id: " + userId);
+
+//                        // 将登录用户的ID注入到方法参数中
+//                        handlerMethod.getMethod().invoke(handlerMethod.getBean(), userId);
+
+                    }
+                    break; // 假设只有一个参数需要被注解
+                }
+            }
+        }
+        return true;
+    }
+
+    private Long getCurrentUserLoginUserId(HttpServletRequest request) {
+        if (request != null) {
+            Claims tokenInfo = tokenService.getTokenInfo(request);
+            System.out.println("tokenInfo:");
+            System.out.println(tokenInfo);
+            if (tokenInfo != null) {
+                System.out.println("tokenInfo user_id: " + Convert.toLong(tokenInfo.get("user_id")));
+                return Convert.toLong(tokenInfo.get("user_id"));
+            }
+        }
+        return null;
+    }
+
+}