Преглед на файлове

refactor(auth): 重构商户权限验证逻辑信息

hechunping преди 2 седмици
родител
ревизия
7f88acb581
променени са 2 файла, в които са добавени 43 реда и са изтрити 21 реда
  1. 1 1
      src/main/java/com/cow/support/dto/User.java
  2. 42 20
      src/main/java/com/xynet/marketing/utils/MercAuthUtils.java

+ 1 - 1
src/main/java/com/cow/support/dto/User.java

@@ -29,7 +29,7 @@ public class User {
     private Object roleList;
     private OrgInfoDTO orgInfoDTO;
     private Object resourceMap;
-    private Object shbh;
+    private String shbh;
     private Object menuJsonTree;
     private Object extend1;
     private Object extend2;

+ 42 - 20
src/main/java/com/xynet/marketing/utils/MercAuthUtils.java

@@ -1,7 +1,7 @@
 package com.xynet.marketing.utils;
 
-import com.xynet.marketing.service.ProviderService;
-import com.xynet.marketing.utils.collections.map.JHashMap;
+import com.cow.support.dto.UserSessionModel;
+import com.xynet.marketing.service.MercService;
 import com.xynet.marketing.utils.redis.utils.RedisService;
 
 import java.util.Map;
@@ -11,14 +11,15 @@ import java.util.Map;
  * @date 2025/2/12
  */
 public class MercAuthUtils {
-    private static String redisPrefix = "marketing:token:merc:";
+    //private static String redisPrefix = "marketing:token:merc:";
 
+    private static String redisPrefix = "userSession-";
 
     public static Integer getMercId(Map<String, String> headers) {
         //获取token
         String token = headers.get("token");
         String providerId = headers.get("provider_id");
-        RedisService<Integer> redisService = SpringBeanUtils.getBean(RedisService.class);
+        RedisService<UserSessionModel> redisService = SpringBeanUtils.getBean(RedisService.class);
         if (!Emptys.check(token)) {
             throw new RuntimeException("token不能为空");
         }
@@ -26,24 +27,45 @@ public class MercAuthUtils {
             throw new RuntimeException("服务商ID不能为空");
         }
         //判断redis里是否有对应的商户ID
-        Integer mercId = redisService.get(redisPrefix + providerId + ":" + token);
-        if (!Emptys.check(mercId)) {
-            //redis不存在,调用服务商获取商户ID的接口
-            mercId = getMercIdByProvider(token, providerId);
-            //将token存到redis中
-            redisService.set(redisPrefix + providerId + ":" + token, mercId, 7200);
+        UserSessionModel userSession = redisService.get(redisPrefix + token);
+        if (!Emptys.check(userSession)) {
+            throw new RuntimeException("token已过期");
         }
-        return mercId;
+        String thirdMercId = userSession.getUserInfo().getShbh();
+        MercService mercService = SpringBeanUtils.getBean(MercService.class);
+        return mercService.thirdMercIdToMercId(providerId, thirdMercId);
     }
 
-    private static Integer getMercIdByProvider(String token, String providerId) {
-        ProviderService providerService = SpringBeanUtils.getBean(ProviderService.class);
-        JHashMap<String, Object> param = new JHashMap<>();
-        param.set("id", providerId);
-        Map<String, Object> provider = providerService.obj(param);
-        //HttpUtil.post(provider.);
-        //TODO 调用第三方
-        return 1;
-    }
+//    public static Integer getMercId1(Map<String, String> headers) {
+//        //获取token
+//        String token = headers.get("token");
+//        String providerId = headers.get("provider_id");
+//        RedisService<Integer> redisService = SpringBeanUtils.getBean(RedisService.class);
+//        if (!Emptys.check(token)) {
+//            throw new RuntimeException("token不能为空");
+//        }
+//        if (!Emptys.check(providerId)) {
+//            throw new RuntimeException("服务商ID不能为空");
+//        }
+//        //判断redis里是否有对应的商户ID
+//        Integer mercId = redisService.get(redisPrefix + providerId + ":" + token);
+//        if (!Emptys.check(mercId)) {
+//            //redis不存在,调用服务商获取商户ID的接口
+//            mercId = getMercIdByProvider(token, providerId);
+//            //将token存到redis中
+//            redisService.set(redisPrefix + providerId + ":" + token, mercId, 7200);
+//        }
+//        return mercId;
+//    }
+
+//    private static Integer getMercIdByProvider(String token, String providerId) {
+//        ProviderService providerService = SpringBeanUtils.getBean(ProviderService.class);
+//        JHashMap<String, Object> param = new JHashMap<>();
+//        param.set("id", providerId);
+//        Map<String, Object> provider = providerService.obj(param);
+//        //HttpUtil.post(provider.);
+//        //TODO 调用第三方
+//        return 1;
+//    }
 
 }