|
@@ -0,0 +1,67 @@
|
|
|
|
|
+package cn.com.ctop.job.bytedance.data.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceAppletTokenRefreshMapper;
|
|
|
|
|
+import cn.com.ctop.job.bytedance.data.service.BytedanceAppletTokenRefreshService;
|
|
|
|
|
+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 redis.clients.jedis.Jedis;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.HashMap;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+
|
|
|
|
|
+@Service
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class BytedanceAppletTokenRefreshServiceImpl implements BytedanceAppletTokenRefreshService {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private BytedanceAppletTokenRefreshMapper tokenRefreshMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IBytedanceRefreshTokenService refreshTokenService;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void buildAppletTokens() {
|
|
|
|
|
+ Jedis jedis = refreshTokenService.getJedisToken();
|
|
|
|
|
+ List<JSONObject> list = tokenRefreshMapper.queryAppletList();
|
|
|
|
|
+ for (JSONObject applet : list) {
|
|
|
|
|
+ buildAppletToken(applet, jedis);
|
|
|
|
|
+ }
|
|
|
|
|
+ tokenRefreshMapper.refreshAppletTokens(list);
|
|
|
|
|
+ jedis.close();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //构建小程序token
|
|
|
|
|
+ private void buildAppletToken(JSONObject applet, Jedis jedis) {
|
|
|
|
|
+ String name = applet.getString("name");
|
|
|
|
|
+ try {
|
|
|
|
|
+ Map<String, Object> param = new HashMap<>();
|
|
|
|
|
+ String appId = applet.getString("appId");
|
|
|
|
|
+ param.put("client_key", appId);
|
|
|
|
|
+ param.put("client_secret", applet.getString("appSecret"));
|
|
|
|
|
+ param.put("grant_type", "client_credential");
|
|
|
|
|
+ String result = HttpUtils.httpPostRequest("https://open.douyin.com/oauth/client_token/", param, null);
|
|
|
|
|
+ JSONObject tokenInfo = JSONObject.parseObject(result);
|
|
|
|
|
+ if (!Check.isNull(tokenInfo)) {
|
|
|
|
|
+ JSONObject data = tokenInfo.getJSONObject("data");
|
|
|
|
|
+ if (!Check.isNull(data) && data.getInteger("error_code") == 0) {
|
|
|
|
|
+ String accessToken = data.getString("access_token");
|
|
|
|
|
+ jedis.setex("client-token-key_" + appId, 3600, accessToken);
|
|
|
|
|
+ log.info("小程序:{},获取token完成", name);
|
|
|
|
|
+ applet.put("token", accessToken);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.error("小程序:{},获取token失败!结果:{}", name, tokenInfo);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ log.error("小程序:{},获取token异常!", name);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|