1018653686@qq.com 1 rok pred
rodič
commit
7fad79dca4

+ 2 - 13
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/jd/JdApiController.java

@@ -61,20 +61,9 @@ public class JdApiController {
     @RequestMapping("/build2LoginUrl")
     @ResponseBody
     public String build2LoginUrl(){
-//        String url = jdApiService.build2LoginUrl();
-        String url = DOMAIN + "/testLogin.html?"+ IdUtil.getSnowflakeNextIdStr();
-
+        String url = jdApiService.build2LoginUrl();
+//        String url = DOMAIN + "/testLogin.html?"+ IdUtil.getSnowflakeNextIdStr();
         return url;
     }
 
-
-
-
-    @GetMapping("/test")
-    @ResponseBody
-    public String test(){
-//        String url = jdApiService.build2LoginUrl();
-        jdApiService.test();
-        return "123123";
-    }
 }

+ 26 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/JdApiService.java

@@ -5,21 +5,44 @@ import com.fjhx.victoriatourist.entity.jd.vo.TellBackOrderVO;
 public interface JdApiService {
 
     /**
-     * 获取AccessToken
+     * 通过code获取AccessToken
      */
     void getAccessTokenByCode(String code);
 
+    /**
+     * 构造jd登录地址
+     * @author hj
+     */
     String build2LoginUrl();
 
+    /**
+     * 订单回告
+     * @author hj
+     */
     void tellBackOrer(TellBackOrderVO tellBackOrderVO);
 
-    void test();
-
+    /**
+     * 开始京东订单采集
+     * @author hj
+     * @date 2023/12/13 22:30
+     */
     void startJdOrder();
 
+    /**
+     * 开始京东退货单采集
+     * @author hj
+     * @date 2023/12/13 22:30
+     */
     void startJdBackOrder();
 
+    /**
+     * 刷新京东状态
+     * @param
+     */
     void refreshJdState();
 
+    /**
+     * 初始化租户字典表
+     */
     void initTenantDict();
 }

+ 5 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/constants/RunParamConstant.java

@@ -13,6 +13,10 @@ public class RunParamConstant {
     public static final Integer SLEEP_TEN_SECOND = 10000;
     public static final Integer SLEEP_ONE_MINUTE = 60000;
 
+    /**刷新token地址**/
     public static final String JD_REFRESH_URL = "https://open-oauth.jd.com/oauth2/refresh_token?app_key=%s&app_secret=%s&grant_type=refresh_token&refresh_token=%s";
-
+    /**通过code获取token地址**/
+    public static final String JD_GET_ACCESS_TOKEN_URL = "https://open-oauth.jd.com/oauth2/access_token?app_key=%s&app_secret=%s&grant_type=authorization_code&code=%s";
+    /**登录获取code地址**/
+    public static final String JD_LOGIN_URL = "https://open-oauth.jd.com/oauth2/to_login?app_key=%s&response_type=code&redirect_uri=%s&state=%s&scope=snsapi_base";
 }

+ 58 - 73
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -70,8 +70,6 @@ import java.util.stream.Collectors;
 @Service
 public class JdApiServiceImpl implements JdApiService {
 
-//    private final String tenantId = "prod".equals(SpringUtil.getActiveProfile()) ? "wdly" : "wdlytest";
-
     @Autowired
     private JdOrderService jdOrderService;
     @Autowired
@@ -92,12 +90,12 @@ public class JdApiServiceImpl implements JdApiService {
     private DictTenantDataService dictTenantDataService;
 
     /**
-     * 获取AccessToken
+     * 通过code获取AccessToken
      */
     @Override
     public void getAccessTokenByCode(String code) {
         //获取AccessToken并存入数据库
-        String path = "https://open-oauth.jd.com/oauth2/access_token?app_key=%s&app_secret=%s&grant_type=authorization_code&code=%s";
+        String path = RunParamConstant.JD_GET_ACCESS_TOKEN_URL;
         path = String.format(path, JdParamConstant.appKey, JdParamConstant.appSecret, code);
         try {
             JSONObject responseJson = getJSON(new HttpGet(path));
@@ -112,8 +110,8 @@ public class JdApiServiceImpl implements JdApiService {
 
     @Override
     public String build2LoginUrl() {
-        String url = "https://open-oauth.jd.com/oauth2/to_login?app_key=%s&response_type=code&redirect_uri=%s&state=%s&scope=snsapi_base";
-        //TODO redirect_uri需要加上项目的域名
+        String url = RunParamConstant.JD_LOGIN_URL;
+        //redirect_uri需要加上项目的域名
         url = String.format(url, JdParamConstant.appKey, RunParamConstant.redirect_uri, DateUtil.format(new Date(), "yyyyMMddHHmmss"));
         return url;
     }
@@ -163,25 +161,27 @@ public class JdApiServiceImpl implements JdApiService {
         return request;
     }
 
-
-
-    @Override
-    public void test() {
-//        SecurityUtils.setTenantId(tenantId);
-//        List<ProductInfo> list = productInfoService.list(q->q.eq(ProductInfo::getName,"44"));
-//        SecurityUtils.clearTenantId();
-        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
-        SecurityUtils.setTenantId(RunParamConstant.tenantId);
-        DictTenantTypeDto dto = new DictTenantTypeDto();
-        dto.setCode("123");
-        dto.setTenantId(RunParamConstant.tenantId);
-        dictTenantTypeService.add(dto);
-        SecurityUtils.clearTenantId();
-        DynamicDataSourceContextHolder.poll();
-
-        System.out.println(123);
+    //每小时执行一次
+    @Scheduled(cron = "0 0 0/1  * * ? ")
+    //每分钟执行一次
+//    @Scheduled(cron = "0 0/1 *  * * ? ")
+    void refreshToken(){
+        JdInfoVo jdInfoVo = jdInfoService.getOne();
+        //如果过期时间减去当前时间小于90分钟,则要刷新token
+        if(ObjectUtil.isNotNull(jdInfoVo.getExpireTime())){
+            long between = DateUtil.between(DateUtil.date(), jdInfoVo.getExpireTime(), DateUnit.MINUTE, false);
+            if(between <= 0){
+                if(jdInfoVo.getOnline()>0){
+                    jdInfoVo.setOnline(0);
+                    jdInfoService.updateById(jdInfoVo);
+                }
+            }else if(90 >= between){
+                refreshToken(jdInfoVo);
+            }
+        }
     }
 
+
     /**
      * 刷新Token
      */
@@ -204,27 +204,6 @@ public class JdApiServiceImpl implements JdApiService {
         }
     }
 
-    //每小时执行一次
-    @Scheduled(cron = "0 0 0/1  * * ? ")
-    //每分钟执行一次
-//    @Scheduled(cron = "0 0/1 *  * * ? ")
-    void refreshToken(){
-        JdInfoVo jdInfoVo = jdInfoService.getOne();
-        //如果过期时间减去当前时间小于90分钟,则要刷新token
-        if(ObjectUtil.isNotNull(jdInfoVo.getExpireTime())){
-            long between = DateUtil.between(DateUtil.date(), jdInfoVo.getExpireTime(), DateUnit.MINUTE, false);
-            if(between <= 0){
-                if(jdInfoVo.getOnline()>0){
-                    jdInfoVo.setOnline(0);
-                    jdInfoService.updateById(jdInfoVo);
-                }
-            }else if(90 >= between){
-                refreshToken(jdInfoVo);
-            }
-        }
-
-    }
-
     /**
      * 开始京东订单采集
      * @author hj
@@ -269,6 +248,28 @@ public class JdApiServiceImpl implements JdApiService {
         }
     }
 
+
+
+    /**
+     * 刷新京东状态
+     * @param
+     */
+    @Async
+    public void refreshJdState(){
+        ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
+        JdClient jdClient = jdClientFactory.getJdClient();
+        while (true){
+            JdInfoVo jdInfoVo = validJdInfo();
+            if(ObjectUtil.isNull(jdInfoVo)){
+                ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
+                continue;
+            }
+            handleRefreshDate(jdClient);
+            log.info("刷新京东状态完成");
+            ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
+        }
+    }
+
     private static final Map<String, String> componentDictTypeMap = new HashMap<String, String>(){{
         put("confirmState", "回告状态");
         put("orderAttribute", "订单属性");
@@ -297,27 +298,13 @@ public class JdApiServiceImpl implements JdApiService {
         add("3");
     }};
 
+
     /**
-     * 刷新京东状态
-     * @param
+     * 处理刷新token数据
+     * @author hj
+     * @date 2023/12/21 9:01
+     * @param jdClient 
      */
-    @Async
-    public void refreshJdState(){
-        ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
-        JdClient jdClient = jdClientFactory.getJdClient();
-        while (true){
-            JdInfoVo jdInfoVo = validJdInfo();
-            if(ObjectUtil.isNull(jdInfoVo)){
-                ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
-                continue;
-            }
-            handleRefreshDate(jdClient);
-            log.info("刷新京东状态完成");
-            ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
-        }
-    }
-
-
     public void handleRefreshDate(JdClient jdClient) {
         DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
         SecurityUtils.setTenantId(RunParamConstant.tenantId);
@@ -435,8 +422,9 @@ public class JdApiServiceImpl implements JdApiService {
         put("21", "等待删除确认");
         put("22", "已删除");
     }};
+
     /**
-     * 处理jd退货状态
+     * 处理jd退货状态字典
      * @author hj
      * @date 2023/12/20 22:27
      */
@@ -456,6 +444,12 @@ public class JdApiServiceImpl implements JdApiService {
         SecurityUtils.clearTenantId();
         DynamicDataSourceContextHolder.poll();
     }
+    
+    /**
+     * 处理字典表
+     * @author hj
+     * @date 2023/12/21 9:01
+     */
 
     private void handleDictData(List<CommonDictData> commonDictDataList, DictTenantType dictTenantType) {
         //查出原来的字典
@@ -769,15 +763,6 @@ public class JdApiServiceImpl implements JdApiService {
         return JSONObject.parseObject(responseStr);
     }
 
-    /**
-     * 计算时间公共方法
-     */
-    private Date calculateTime(Date date,Integer field, Integer amount){
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTime(date);
-        calendar.add(field, amount);
-        return calendar.getTime();
-    }
 
     /**
      * 将jd返回的json对象转换成jdInfoVo