yumeng hace 6 meses
padre
commit
b1bf5e0d90

+ 23 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KwaiJSTController.java

@@ -0,0 +1,23 @@
+package com.ruixuan.isc.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.isc.service.IKwaiJSTService;
+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.RestController;
+
+@RestController
+@RequestMapping("/kwaixiaodian/jst")
+public class KwaiJSTController {
+    @Autowired
+    private IKwaiJSTService kwaiJSTService;
+
+    @GetMapping(value = "/refreshToken")
+    public JSONObject refreshToken() {
+        return kwaiJSTService.refreshToken();
+
+
+    }
+
+}

+ 12 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KwaiJSTMapper.java

@@ -0,0 +1,12 @@
+package com.ruixuan.isc.mapper;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface KwaiJSTMapper {
+    List<JSONObject> getList();
+
+    void updateToken(@Param("id") Long id, @Param("accessToken") String accessToken, @Param("refreshToken") String refreshToken);
+}

+ 7 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKwaiJSTService.java

@@ -0,0 +1,7 @@
+package com.ruixuan.isc.service;
+
+import com.alibaba.fastjson.JSONObject;
+
+public interface IKwaiJSTService {
+    JSONObject refreshToken();
+}

+ 76 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KwaiJSTServiceImpl.java

@@ -0,0 +1,76 @@
+package com.ruixuan.isc.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.common.utils.Check;
+import com.ruixuan.common.utils.http.HttpUtil;
+import com.ruixuan.isc.mapper.KwaiJSTMapper;
+import com.ruixuan.isc.service.IKwaiJSTService;
+import com.ruixuan.isc.utils.JSTSignUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class KwaiJSTServiceImpl implements IKwaiJSTService {
+    @Autowired
+    private KwaiJSTMapper kwaiJSTMapper;
+    private static String accessTokenUrl = "https://openapi.jushuitan.com/openWeb/auth/refreshToken";
+
+    @Override
+    public JSONObject refreshToken() {
+
+        JSONObject returnJson = new JSONObject();
+        try {
+            List<JSONObject> list = kwaiJSTMapper.getList();
+            if (Check.isNull(list)) {
+                throw new Exception("token信息为空");
+            }
+
+            for (int i = 0; i < list.size(); i++) {
+                JSONObject jsonObject = list.get(i);
+                Long id = jsonObject.getLong("id");
+                String appKey = jsonObject.getString("appKey");
+                String appSecret = jsonObject.getString("appSecret");
+                String refreshToken = jsonObject.getString("refreshToken");
+                Map<String, Object> requestMap = new HashMap<>();
+                requestMap.put("app_key", appKey);
+                requestMap.put("grant_type", "refresh_token");
+                requestMap.put("charset", "utf-8");
+                long timestamp = System.currentTimeMillis() / 1000;
+                requestMap.put("timestamp", String.valueOf(timestamp));
+          //      requestMap.put("code", JSTSignUtils.generateSoleName());
+
+                requestMap.put("refresh_token", refreshToken);
+                requestMap.put("scope", "all");
+                String sign = JSTSignUtils.getSign(appSecret, requestMap);
+                requestMap.put("sign", sign);
+
+                String s = HttpUtil.httpPostFormRequest(accessTokenUrl, requestMap, null);
+                JSONObject info = JSONObject.parseObject(s);
+                if(!Check.isNull(info)){
+                    Integer code = info.getInteger("code");
+                    if(code == 0){
+                        JSONObject data = info.getJSONObject("data");
+                        if(!Check.isNull(data)){
+                            String accessToken1 = data.getString("access_token");
+                            String refreshToken1 = data.getString("refresh_token");
+                            kwaiJSTMapper.updateToken(id,accessToken1,refreshToken1);
+                        }
+                    }
+                }
+
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            returnJson.put("code", 500);
+            returnJson.put("message", e.getMessage());
+
+        }
+        return returnJson;
+    }
+}

+ 108 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/utils/JSTSignUtils.java

@@ -0,0 +1,108 @@
+package com.ruixuan.isc.utils;
+
+import com.ruixuan.common.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.TreeSet;
+
+@Slf4j
+public class JSTSignUtils {
+
+    private static final Random RANDOM = new Random();
+
+    public static String getSign(String app_secret, Map<String, Object> params) {
+        try {
+            String sortedStr = getSortedParamStr(params);
+            String paraStr = app_secret + sortedStr;
+
+            return createSign(paraStr);
+        } catch (UnsupportedEncodingException e) {
+            log.warn("getSign UnsupportedEncodingException ", e);
+        }
+
+        return StringUtils.EMPTY;
+    }
+
+    /**
+     * 构造自然排序请求参数
+     *
+     * @param params 请求
+     * @return 字符串
+     */
+    private static String getSortedParamStr(Map<String, Object> params) throws UnsupportedEncodingException {
+        Set<String> sortedParams = new TreeSet<>(params.keySet());
+
+        StringBuilder strB = new StringBuilder();
+        // 排除sign和空值参数
+        for (String key : sortedParams) {
+            if ("sign".equalsIgnoreCase(key)) {
+                continue;
+            }
+            String value = String.valueOf(params.get(key));
+
+            if (StringUtils.isNotEmpty(value)) {
+                strB.append(key).append(value);
+            }
+        }
+        return strB.toString();
+    }
+
+    /**
+     * 生成新sign
+     *
+     * @param str 字符串
+     * @return String
+     */
+    private static String createSign(String str) {
+        if (str == null || str.length() == 0) {
+            return null;
+        }
+        char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+        try {
+            MessageDigest mdTemp = MessageDigest.getInstance("MD5");
+            mdTemp.update(str.getBytes("UTF-8"));
+
+            byte[] md = mdTemp.digest();
+            int j = md.length;
+            char[] buf = new char[j * 2];
+            int k = 0;
+            int i = 0;
+            while (i < j) {
+                byte byte0 = md[i];
+                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
+                buf[k++] = hexDigits[byte0 & 0xf];
+                i++;
+            }
+            return new String(buf);
+        } catch (Exception e) {
+            log.warn("create sign was failed", e);
+            return null;
+        }
+    }
+
+
+    public static String generateSoleName() {
+        StringBuilder soleResult = new StringBuilder();
+        for (int i = 0; i < 6; i++) {
+            //判断产生的随机数是0还是1,是0进入if语句用于输出数字,是1进入else用于输出字符
+            int mark = Math.random() >= 0.5 ? 1 : 0;
+            if (0 == mark) {
+                soleResult.append(RANDOM.nextInt(10));
+            } else {
+                soleResult.append((char) ('A' + RANDOM.nextInt(26)));
+            }
+        }
+        return soleResult.toString();
+    }
+
+    public static void main(String[] args) {
+        String s = generateSoleName();
+        System.err.println(s);
+    }
+
+}

+ 19 - 0
ruixuan-live/src/main/resources/mapper/isc/KwaiJSTMapper.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="com.ruixuan.isc.mapper.KwaiJSTMapper">
+    <update id="updateToken">
+        UPDATE kwaixiaodian_jst_token
+        SET access_token  = #{accessToken},
+            refresh_token =#{refreshToken}
+        WHERE id = #{id}
+    </update>
+
+
+    <select id="getList" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT id AS 'id', app_key AS 'appKey', app_secret AS 'appSecret', access_token AS 'accessToken', refresh_token AS 'refreshToken'
+
+        FROM kwaixiaodian_jst_token
+    </select>
+</mapper>

+ 5 - 2
ruixuan-live/src/main/resources/mapper/isc/SupplyChainMapper.xml

@@ -2673,8 +2673,11 @@
         2),
         '%') as 'validOrderRate',
         round(sum(t2.orderAmount) / 100, 2) as 'orderAmount',
-        round(sum(t2.regimentalPromotionAmount) / 100, 2) as 'regimentalPromotionAmount',
-        round(sum(t2.totalRegimentalSettleAmount) / 100, 2) as 'totalRegimentalSettleAmount'
+
+        round(sum(case when t2.order_status != 80 then t2.regimental_promotion_amount end) / 100, 2) as
+        'regimentalPromotionAmount',
+        round(sum(case when t2.order_status != 80 then t2.total_regimental_settle_amount end) / 100, 2) as
+        'totalRegimentalSettleAmount'
         from promoter_bind_channel_date t1
         left join (select promoter_id as 'promoter_id',
         stat_date as 'stat_date',