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

feat(bytedance): 添加刷新抖音token的接口和定时任务

- 在BytedanceController中新增刷新token的REST接口,支持刷新所有token参数
- 修改BytedanceRefreshTokenJob,调用刷新服务时传入参数控制刷新范围
- 在Mapper中新增查询需要刷新的token列表SQL语句,过滤24小时未更新的token
- 在Service实现中根据参数选择全部token或需要刷新的token进行刷新
- 更新Mapper的token更新SQL,增加token_update_time字段更新时间
- 接口和任务均支持根据实际情况选择刷新全部或部分token
- 新增日志打印无刷新token时的提示信息
hpk 2 месяцев назад
Родитель
Сommit
d42fb5475a

+ 6 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/controller/BytedanceController.java

@@ -67,7 +67,13 @@ public class BytedanceController {
     private IAdvertiserFundGetServer advertiserFundGetServer;
     @Autowired
     private IBytedanceBudgetStatusService bytedanceBudgetStatusService;
+    @Autowired
+    private IBytedanceRefreshTokenService bytedanceRefreshTokenService;
 
+    @GetMapping("/refreshToken")
+    public void refreshToken(@RequestParam(required = false) Boolean refreshAll) {
+        bytedanceRefreshTokenService.bytedanceRefreshToken(refreshAll != null && refreshAll);
+    }
 
     @GetMapping("/bytedanceBudgetStatus")
     public JSONObject bytedanceBudgetStatus(Long advertiserId) {

+ 2 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceRefreshTokenMapper.java

@@ -8,6 +8,8 @@ import java.util.List;
 public interface BytedanceRefreshTokenMapper {
     List<JSONObject> getTokenList();
 
+    List<JSONObject> getTokenToRefreshList();
+
     void updateTokenByAdminAdvertiserId(@Param("adminAdvertiserId") Long adminAdvertiserId, @Param("updateAccessToken") String updateAccessToken, @Param("updateRefreshToken") String updateRefreshToken);
 
     List<JSONObject> getBaiduYunTokenList();

+ 8 - 1
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceRefreshTokenMapper.xml

@@ -4,7 +4,8 @@
     <update id="updateTokenByAdminAdvertiserId">
         UPDATE deepthink.bytedance_auth_list
         SET access_token  = #{updateAccessToken},
-            refresh_token = #{updateRefreshToken}
+            refresh_token = #{updateRefreshToken},
+            token_update_time = now()
         WHERE admin_advertiser_id = #{adminAdvertiserId}
     </update>
 
@@ -14,6 +15,12 @@
         FROM deepthink.bytedance_auth_list
     </select>
 
+    <select id="getTokenToRefreshList" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT admin_advertiser_id AS 'adminAdvertiserId', access_token AS 'accessToken', refresh_token AS 'refreshToken', app_id AS 'appId', secret AS 'secret'
+        FROM deepthink.bytedance_auth_list
+        where timestampdiff(HOUR,token_update_time,now()) >= 24 or token_update_time is null
+    </select>
+
     <select id="getBaiduYunTokenList" resultType="com.alibaba.fastjson.JSONObject">
         SELECT app_id,
                secretkey,

+ 1 - 1
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceRefreshTokenService.java

@@ -4,7 +4,7 @@ import redis.clients.jedis.Jedis;
 
 public interface IBytedanceRefreshTokenService {
 
-    void bytedanceRefreshToken();
+    void bytedanceRefreshToken(Boolean refreshAlll);
 
     void refreshBaiduYunToken();
 

+ 4 - 2
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceRefreshTokenServiceImpl.java

@@ -21,8 +21,8 @@ public class BytedanceRefreshTokenServiceImpl implements IBytedanceRefreshTokenS
     private BytedanceRefreshTokenMapper bytedanceRefreshTokenMapper;
 
     @Override
-    public void bytedanceRefreshToken() {
-        List<JSONObject> tokenList = bytedanceRefreshTokenMapper.getTokenList();
+    public void bytedanceRefreshToken(Boolean refreshAlll) {
+        List<JSONObject> tokenList = refreshAlll ? bytedanceRefreshTokenMapper.getTokenList() : bytedanceRefreshTokenMapper.getTokenToRefreshList();
         if (!Check.isNull(tokenList)) {
             for (int i = 0; i < tokenList.size(); i++) {
                 JSONObject tokenJson = tokenList.get(i);
@@ -51,6 +51,8 @@ public class BytedanceRefreshTokenServiceImpl implements IBytedanceRefreshTokenS
                     }
                 }
             }
+        } else {
+            log.info("没有需要刷新的token");
         }
     }
 

+ 1 - 2
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceRefreshTokenJob.java

@@ -21,8 +21,7 @@ public class BytedanceRefreshTokenJob {
 
     @XxlJob("bytedanceRefreshToken")
     public void bytedanceRefreshToken() throws Exception {
-        bytedanceRefreshTokenService.bytedanceRefreshToken();
-
+        bytedanceRefreshTokenService.bytedanceRefreshToken(false);
     }