yumeng 1 年之前
父节点
当前提交
92581fcec2

+ 28 - 2
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/controller/JiaoYangCallbackController.java

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 @Slf4j
 @RestController
@@ -26,6 +28,8 @@ public class JiaoYangCallbackController {
     private static String appSecret = "sqc2y31qQEY2E3AIWWvmCg";
     private static String signSecret = "6ef1e2a231733bb0c38fb2bf0f50e45b";
 
+    static ExecutorService executorService = Executors.newFixedThreadPool(2);
+
     @GetMapping("/oauth")
     @ApiOperation(value = "骄阳-达人授权")
     public String oauth(String code, String state) {
@@ -51,9 +55,31 @@ public class JiaoYangCallbackController {
         if (result == 1) {
             String accessToken = jsonObject.getString("access_token");
             String refreshToken = jsonObject.getString("refresh_token");
+            String openId = jsonObject.getString("open_id");
             Long promoterId = Long.valueOf(state);
-            jiaoYangCallbackService.replaceTokenInfo(promoterId, appId, appSecret, signSecret, accessToken, refreshToken);
-            openPhotoListService.insertKuaishouOpenPhotoListByPromoter(promoterId);
+            JSONObject json = jiaoYangCallbackService.getDataByOpenId(openId);
+            if (Check.isNull(json)) {
+                jiaoYangCallbackService.replaceTokenInfo(promoterId, openId, appId, appSecret, signSecret, accessToken, refreshToken);
+                executorService.submit(new Runnable() {
+                    @Override
+                    public void run() {
+                        try {
+                            openPhotoListService.insertKuaishouOpenPhotoListByPromoter(promoterId);
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
+                });
+            } else {
+                Long oldPromoterId = json.getLong("promoterId");
+                if (promoterId.equals(oldPromoterId)) {
+                    jiaoYangCallbackService.replaceTokenInfo(promoterId, openId, appId, appSecret, signSecret, accessToken, refreshToken);
+                } else {
+                    jiaoYangCallbackService.updateToken(openId, accessToken, refreshToken);
+                    return "授权失败,授权账号与当前登录账户不不一致";
+                }
+            }
+
         } else {
             return "授权失败,请联系技术解决";
         }

+ 6 - 1
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/mapper/JiaoYangCallbackMapper.java

@@ -1,7 +1,12 @@
 package com.ruixuan.jiaoyang.mapper;
 
+import com.alibaba.fastjson.JSONObject;
 import org.apache.ibatis.annotations.Param;
 
 public interface JiaoYangCallbackMapper {
-    void replaceTokenInfo(@Param("promoterId") Long promoterId, @Param("appId") String appId, @Param("appSecret") String appSecret, @Param("signSecret") String signSecret, @Param("accessToken") String accessToken, @Param("refreshToken") String refreshToken);
+    void replaceTokenInfo(@Param("promoterId") Long promoterId,@Param("openId") String openId, @Param("appId") String appId, @Param("appSecret") String appSecret, @Param("signSecret") String signSecret, @Param("accessToken") String accessToken, @Param("refreshToken") String refreshToken);
+
+    JSONObject getDataByOpenId(@Param("openId") String openId);
+
+    void updateToken(@Param("openId") String openId, @Param("accessToken") String accessToken, @Param("refreshToken") String refreshToken);
 }

+ 7 - 1
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/service/IJiaoYangCallbackService.java

@@ -1,5 +1,11 @@
 package com.ruixuan.jiaoyang.service;
 
+import com.alibaba.fastjson.JSONObject;
+
 public interface IJiaoYangCallbackService {
-    void replaceTokenInfo(Long promoterId, String appId, String appSecret, String signSecret, String accessToken, String refreshToken);
+    void replaceTokenInfo(Long promoterId, String openId,String appId, String appSecret, String signSecret, String accessToken, String refreshToken);
+
+    JSONObject getDataByOpenId(String openId);
+
+    void updateToken(String openId, String accessToken, String refreshToken);
 }

+ 13 - 2
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/service/impl/JiaoYangCallbackServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruixuan.jiaoyang.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ruixuan.jiaoyang.mapper.JiaoYangCallbackMapper;
 import com.ruixuan.jiaoyang.service.IJiaoYangCallbackService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,7 +12,17 @@ public class JiaoYangCallbackServiceImpl implements IJiaoYangCallbackService {
     private JiaoYangCallbackMapper jiaoYangCallbackMapper;
 
     @Override
-    public void replaceTokenInfo(Long promoterId, String appId, String appSecret, String signSecret, String accessToken, String refreshToken) {
-        jiaoYangCallbackMapper.replaceTokenInfo(promoterId, appId, appSecret, signSecret, accessToken, refreshToken);
+    public void replaceTokenInfo(Long promoterId, String openId, String appId, String appSecret, String signSecret, String accessToken, String refreshToken) {
+        jiaoYangCallbackMapper.replaceTokenInfo(promoterId, openId, appId, appSecret, signSecret, accessToken, refreshToken);
+    }
+
+    @Override
+    public JSONObject getDataByOpenId(String openId) {
+        return jiaoYangCallbackMapper.getDataByOpenId(openId);
+    }
+
+    @Override
+    public void updateToken(String openId, String accessToken, String refreshToken) {
+        jiaoYangCallbackMapper.updateToken(openId, accessToken, refreshToken);
     }
 }

+ 13 - 1
ruixuan-live/src/main/resources/mapper/jiaoyang/JiaoYangCallbackMapper.xml

@@ -7,9 +7,10 @@
 
     <insert id="replaceTokenInfo">
         replace
-        into jy_promoter_access_token(promoter_id,app_key,app_secret,sign_secret,access_token,refresh_token )
+        into jy_promoter_access_token(promoter_id,open_id,app_key,app_secret,sign_secret,access_token,refresh_token )
                 VALUES (
         #{promoterId},
+        #{opneId},
         #{appId},
         #{appSecret},
         #{signSecret},
@@ -17,4 +18,15 @@
         #{refreshToken}
         )
     </insert>
+    <update id="updateToken">
+        UPDATE jy_promoter_access_token
+        SET access_token  = #{accessToken},
+            refresh_token = #{refreshToken}
+        WHERE open_id = #{opneId}
+    </update>
+    <select id="getDataByOpenId" resultType="com.alibaba.fastjson.JSONObject" parameterType="java.lang.String">
+        SELECT promoter_id AS 'promoterId',open_id AS 'openId'
+        FROM jy_promoter_access_token
+        WHERE open_id = #{openId}
+    </select>
 </mapper>