فهرست منبع

头条刷新token

yumeng 1 سال پیش
والد
کامیت
42052107ef

+ 16 - 1
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/controller/BytedanceController.java

@@ -1,10 +1,18 @@
 package cn.com.ctop.job.bytedance.controller;
+
+import cn.com.ctop.job.bytedance.data.service.IBytedanceRefreshTokenService;
+import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 
+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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 
 /**
@@ -17,7 +25,14 @@ import org.springframework.web.bind.annotation.RestController;
 @Api(tags = "头条")
 @Slf4j
 public class BytedanceController {
-
+    @Autowired
+    private IBytedanceRefreshTokenService refreshTokenService;
+
+    @GetMapping("/testRefreshToken")
+    public JSONObject testRefreshToken() {
+        refreshTokenService.bytedanceRefreshToken();
+        return null;
+    }
 
 
 }

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

@@ -0,0 +1,12 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface BytedanceRefreshTokenMapper {
+    List<JSONObject> getTokenList();
+
+    void updateTokenByAdminAdvertiserId(@Param("adminAdvertiserId") Long adminAdvertiserId, @Param("updateAccessToken") String updateAccessToken, @Param("updateRefreshToken") String updateRefreshToken);
+}

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

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceRefreshTokenMapper">
+    <update id="updateTokenByAdminAdvertiserId">
+        UPDATE deepthink.bytedance_auth_list
+        SET access_token  = #{updateAccessToken},
+            refresh_token = #{updateRefreshToken}
+        WHERE admin_advertiser_id = #{adminAdvertiserId}
+    </update>
+
+
+    <select id="getTokenList" 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
+
+
+    </select>
+</mapper>

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

@@ -0,0 +1,5 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+public interface IBytedanceRefreshTokenService {
+    void bytedanceRefreshToken();
+}

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

@@ -0,0 +1,55 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceRefreshTokenMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceRefreshTokenService;
+import cn.com.ctop.job.bytedance.data.utils.Check;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class BytedanceRefreshTokenServiceImpl implements IBytedanceRefreshTokenService {
+    @Autowired
+    private BytedanceRefreshTokenMapper bytedanceRefreshTokenMapper;
+
+    @Override
+    public void bytedanceRefreshToken() {
+        List<JSONObject> tokenList = bytedanceRefreshTokenMapper.getTokenList();
+        if (!Check.isNull(tokenList)) {
+            for (int i = 0; i < tokenList.size(); i++) {
+                JSONObject tokenJson = tokenList.get(i);
+                Long adminAdvertiserId = tokenJson.getLong("adminAdvertiserId");
+                String refreshToken = tokenJson.getString("refreshToken");
+                Long appId = tokenJson.getLong("appId");
+                String secret = tokenJson.getString("secret");
+                Map<String, Object> param = new HashMap<>();
+                param.put("app_id", appId);
+                param.put("secret", secret);
+                param.put("refresh_token", refreshToken);
+                String s = HttpUtils.httpPostRequest("https://api.oceanengine.com/open_api/oauth2/refresh_token/", param, null);
+                JSONObject refreshTokenInfo = JSONObject.parseObject(s);
+                if (!Check.isNull(refreshTokenInfo)) {
+                    Integer code = refreshTokenInfo.getInteger("code");
+                    if (code == 0) {
+                        JSONObject data = refreshTokenInfo.getJSONObject("data");
+                        if (!Check.isNull(data)) {
+                            String updateAccessToken = data.getString("access_token");
+                            String updateRefreshToken = data.getString("refresh_token");
+                            bytedanceRefreshTokenMapper.updateTokenByAdminAdvertiserId(adminAdvertiserId, updateAccessToken, updateRefreshToken);
+                            log.info("{},刷新token成功", adminAdvertiserId);
+                        }
+                    } else {
+                        log.info("刷新token失败,入参:{},返回信息:{}", param, refreshTokenInfo);
+                    }
+                }
+            }
+        }
+    }
+}

+ 29 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceRefreshTokenJob.java

@@ -0,0 +1,29 @@
+package cn.com.ctop.job.bytedance.handler;
+
+
+import cn.com.ctop.job.bytedance.data.service.IBytedanceRefreshTokenService;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 广告主定时任务
+ *
+ * @throws Exception
+ */
+@Slf4j
+@Component
+public class BytedanceRefreshTokenJob {
+@Autowired
+private IBytedanceRefreshTokenService bytedanceRefreshTokenService;
+
+    @XxlJob("bytedanceRefreshToken")
+    public void bytedanceRefreshToken() throws Exception {
+        bytedanceRefreshTokenService.bytedanceRefreshToken();
+
+    }
+
+
+}