Browse Source

快手快分销数据获取

yumeng 2 năm trước cách đây
mục cha
commit
7d6f5cb483

+ 145 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouOrderLIstGetJob.java

@@ -0,0 +1,145 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.batch.Enums.KuaishouHourEnum;
+import cn.com.ctop.kuaishou.modules.batch.Enums.KuaishouMinSecEnum;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouSupplyChainService;
+import cn.com.ctop.kuaishou.modules.material.service.IKuaishouBidWarningService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Slf4j
+@Component
+public class KuaishouOrderLIstGetJob {
+
+    @Autowired
+    private IKuaishouSupplyChainService ikuaishouSupplyChainService;
+
+    /**
+     * 昨日快分销数据获取
+     **/
+    @XxlJob("yesterdayOrderGet")
+    public void yesterdayOrderGet() throws Exception {
+        log.info("-------------------------获取快分销订单昨日数据开始数据开始--------------------------");
+        String cookie = ikuaishouSupplyChainService.getCookie();
+        if (Check.isNull(cookie)) {
+            log.error("cookie数据为空");
+            return;
+        }
+        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+        String date = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+        JSONArray hourList = KuaishouHourEnum.getHourList();
+        JSONArray minSecList = KuaishouMinSecEnum.getMinSecList();
+        for (int i = 0; i < hourList.size(); i++) {
+            String hour = hourList.getString(i);
+            for (int j = 0; j < minSecList.size(); j++) {
+                JSONObject minSecJson = minSecList.getJSONObject(j);
+                String startTime = minSecJson.getString("startTime");
+                String endTime = minSecJson.getString("endTime");
+                String start = date + hour + startTime;
+                String end = date + hour + endTime;
+                System.err.println("开始时间:" + start);
+                System.err.println("结束时间:" + end);
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                Long orderCreateTimeStart = sdf.parse(start).getTime();
+                Long orderCreateTimeEnd = sdf.parse(end).getTime();
+                ikuaishouSupplyChainService.getOrderList(cookie, 0, orderCreateTimeStart, orderCreateTimeEnd);
+
+            }
+        }
+    }
+
+
+    /**
+     * 当前小时数据获取
+     **/
+    @XxlJob("nowHourOrderGet")
+    public void nowHourOrderGet() throws Exception {
+        log.info("-------------------------获取快分销订单当天当小时数据开始--------------------------");
+        String cookie = ikuaishouSupplyChainService.getCookie();
+        if (Check.isNull(cookie)) {
+            log.error("cookie数据为空");
+            return;
+        }
+        String date = DateUtils.getNowDate("yyyy-MM-dd");
+        Integer nowHour = DateUtils.getNowHour();
+        JSONArray minSecList = KuaishouMinSecEnum.getMinSecList();
+        for (int j = 0; j < minSecList.size(); j++) {
+            JSONObject minSecJson = minSecList.getJSONObject(j);
+            String startTime = minSecJson.getString("startTime");
+            String endTime = minSecJson.getString("endTime");
+            String start = date + " " + nowHour + ":" + startTime;
+            String end = date + " " + nowHour + ":" + endTime;
+            System.err.println("开始时间:" + start);
+            System.err.println("结束时间:" + end);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Long orderCreateTimeStart = sdf.parse(start).getTime();
+            Long orderCreateTimeEnd = sdf.parse(end).getTime();
+            ikuaishouSupplyChainService.getOrderList(cookie, 0, orderCreateTimeStart, orderCreateTimeEnd);
+        }
+    }
+
+
+    /**
+     * 当前小时数据获取
+     **/
+    @XxlJob("frontHourOrderGet")
+    public void frontHourOrderGet() throws Exception {
+        log.info("-------------------------获取快分销订单当天前一小时数据开始--------------------------");
+        String cookie = ikuaishouSupplyChainService.getCookie();
+        if (Check.isNull(cookie)) {
+            log.error("cookie数据为空");
+            return;
+        }
+        String date = DateUtils.getNowDate("yyyy-MM-dd");
+        Integer nowHour = DateUtils.getNowHour();
+        Integer hour = null;
+        if (nowHour == 0) {
+            date = DateUtils.getAnotherDay("yyyy-MM-dd", date, -1);
+            hour = 23;
+        } else {
+            hour = nowHour - 1;
+        }
+        JSONArray minSecList = KuaishouMinSecEnum.getMinSecList();
+        for (int j = 0; j < minSecList.size(); j++) {
+            JSONObject minSecJson = minSecList.getJSONObject(j);
+            String startTime = minSecJson.getString("startTime");
+            String endTime = minSecJson.getString("endTime");
+            String start = date + " " + hour + ":" + startTime;
+            String end = date + " " + hour + ":" + endTime;
+            System.err.println("开始时间:" + start);
+            System.err.println("结束时间:" + end);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Long orderCreateTimeStart = sdf.parse(start).getTime();
+            Long orderCreateTimeEnd = sdf.parse(end).getTime();
+            ikuaishouSupplyChainService.getOrderList(cookie, 0, orderCreateTimeStart, orderCreateTimeEnd);
+        }
+    }
+
+
+    public static void main(String[] args) throws ParseException {
+        String date = DateUtils.getNowDate("yyyy-MM-dd");
+        Integer nowHour = 0;
+        Integer hour = null;
+        if (nowHour == 0) {
+            date = DateUtils.getAnotherDay("yyyy-MM-dd", date, -1);
+            hour = 23;
+        } else {
+            hour = nowHour - 1;
+        }
+
+        System.err.println(date);
+        System.err.println(hour);
+
+
+    }
+}

+ 72 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/Enums/KuaishouHourEnum.java

@@ -0,0 +1,72 @@
+package cn.com.ctop.kuaishou.modules.batch.Enums;
+
+
+import com.alibaba.fastjson.JSONArray;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public enum KuaishouHourEnum {
+    HOUR_0(" 00:"),
+    HOUR_1(" 01:"),
+    HOUR_2(" 02:"),
+    HOUR_3(" 03:"),
+    HOUR_4(" 04:"),
+    HOUR_5(" 05:"),
+    HOUR_6(" 06:"),
+    HOUR_7(" 07:"),
+    HOUR_8(" 08:"),
+    HOUR_9(" 09:"),
+    HOUR_10(" 10:"),
+    HOUR_11(" 11:"),
+    HOUR_12(" 12:"),
+    HOUR_13(" 13:"),
+    HOUR_14(" 14:"),
+    HOUR_15(" 15:"),
+    HOUR_16(" 16:"),
+    HOUR_17(" 17:"),
+    HOUR_18(" 18:"),
+    HOUR_19(" 19:"),
+    HOUR_20(" 20:"),
+    HOUR_21(" 21:"),
+    HOUR_22(" 22:"),
+    HOUR_23(" 23:");
+
+
+    /**
+     * 类型
+     */
+    private String value;
+
+
+    KuaishouHourEnum(String value) {
+        this.value = value;
+
+    }
+
+    public static JSONArray getHourList() {
+        JSONArray hourList = new JSONArray();
+        for (KuaishouHourEnum hourEnum : KuaishouHourEnum.values()) {
+            hourList.add(hourEnum.getValue());
+        }
+        return hourList;
+    }
+
+
+    public String getValue() {
+        return this.value;
+    }
+
+
+    public void setType(String value) {
+        this.value = value;
+    }
+
+    public static void main(String[] args) {
+        JSONArray hourList = getHourList();
+        System.err.println(hourList);
+    }
+
+
+
+}

+ 63 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/Enums/KuaishouMinSecEnum.java

@@ -0,0 +1,63 @@
+package cn.com.ctop.kuaishou.modules.batch.Enums;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public enum KuaishouMinSecEnum {
+    MIN_SEC_1("00:00", "10:00"),
+    MIN_SEC_2("10:00", "20:00"),
+    MIN_SEC_3("20:00", "30:00"),
+    MIN_SEC_4("30:00", "40:00"),
+    MIN_SEC_5("40:00", "50:00"),
+    MIN_SEC_6("50:00", "60:00");
+
+
+    /**
+     * 类型
+     */
+    private String startTime;
+    private String endTime;
+
+
+    KuaishouMinSecEnum(String startTime, String endTime) {
+        this.startTime = startTime;
+        this.endTime = endTime;
+
+    }
+
+    public static JSONArray getMinSecList() {
+        JSONArray minSecList = new JSONArray();
+        for (KuaishouMinSecEnum minSecEnum : KuaishouMinSecEnum.values()) {
+            JSONObject json = new JSONObject();
+            json.put("startTime",minSecEnum.getStartTime());
+            json.put("endTime",minSecEnum.getEndTime());
+            minSecList.add(json);
+        }
+        return minSecList;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public static void main(String[] args) {
+        JSONArray minSecList = getMinSecList();
+        System.err.println(minSecList);
+    }
+}

+ 199 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/entity/KuaishouSupplyChain.java

@@ -0,0 +1,199 @@
+package cn.com.ctop.kuaishou.modules.batch.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 快手电商-供应链订单信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2022-12-01
+ */
+@Data
+@TableName("kuaishou_supply_chain")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "kuaishou_supply_chain对象", description = "快手电商-供应链订单信息")
+public class KuaishouSupplyChain {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 订单ID
+     */
+    @Excel(name = "订单ID", width = 15)
+    @ApiModelProperty(value = "订单ID")
+    private Long oid;
+    /**
+     * 商品ID
+     */
+    @Excel(name = "商品ID", width = 15)
+    @ApiModelProperty(value = "商品ID")
+    private Long itemId;
+    /**
+     * 商品标题
+     */
+    @Excel(name = "商品标题", width = 15)
+    @ApiModelProperty(value = "商品标题")
+    private String itemTitle;
+    /**
+     * 商品单价
+     */
+    @Excel(name = "商品单价", width = 15)
+    @ApiModelProperty(value = "商品单价")
+    private Long reservePrice;
+    /**
+     * 商品图片
+     */
+    @Excel(name = "商品图片", width = 15)
+    @ApiModelProperty(value = "商品图片")
+    private String imageUrl;
+    /**
+     * 订单状态
+     */
+    @Excel(name = "订单状态", width = 15)
+    @ApiModelProperty(value = "订单状态")
+    private Integer orderStatus;
+    /**
+     * 订单创建时间
+     */
+    @Excel(name = "订单创建时间", width = 15)
+    @ApiModelProperty(value = "订单创建时间")
+    private Long orderCreateTime;
+    /**
+     * 是否发货
+     */
+    @Excel(name = "是否发货", width = 15)
+    @ApiModelProperty(value = "是否发货")
+    private Integer sendStatus;
+    /**
+     * 订单类型
+     */
+    @Excel(name = "订单类型", width = 15)
+    @ApiModelProperty(value = "订单类型")
+    private Integer settlementBizType;
+    /**
+     * 订单类型翻译
+     */
+    @Excel(name = "订单类型翻译", width = 15)
+    @ApiModelProperty(value = "订单类型翻译")
+    private String settlementBizTypeDesc;
+    /**
+     * 发货时间
+     */
+    @Excel(name = "发货时间", width = 15)
+    @ApiModelProperty(value = "发货时间")
+    private Long sendTime;
+    /**
+     * 收获时间
+     */
+    @Excel(name = "收获时间", width = 15)
+    @ApiModelProperty(value = "收获时间")
+    private Long recvTime;
+    /**
+     * 商家id
+     */
+    @Excel(name = "商家id", width = 15)
+    @ApiModelProperty(value = "商家id")
+    private Long sellerId;
+    /**
+     * 达人id
+     */
+    @Excel(name = "达人id", width = 15)
+    @ApiModelProperty(value = "达人id")
+    private Long promoterId;
+    /**
+     * 达人昵称
+     */
+    @Excel(name = "达人昵称", width = 15)
+    @ApiModelProperty(value = "达人昵称")
+    private String promoterNickName;
+    /**
+     * 活动id
+     */
+    @Excel(name = "活动id", width = 15)
+    @ApiModelProperty(value = "活动id")
+    private Long activityId;
+    /**
+     * 订单金额
+     */
+    @Excel(name = "订单金额", width = 15)
+    @ApiModelProperty(value = "订单金额")
+    private Long orderAmount;
+    /**
+     * 付款金额
+     */
+    @Excel(name = "付款金额", width = 15)
+    @ApiModelProperty(value = "付款金额")
+    private Long payAmount;
+    /**
+     * 服务费率
+     */
+    @Excel(name = "服务费率", width = 15)
+    @ApiModelProperty(value = "服务费率")
+    private Long regimentalPromotionRate;
+    /**
+     * 分成比例
+     */
+    @Excel(name = "分成比例", width = 15)
+    @ApiModelProperty(value = "分成比例")
+    private Long shareRate;
+    /**
+     * 货款基数
+     */
+    @Excel(name = "货款基数", width = 15)
+    @ApiModelProperty(value = "货款基数")
+    private Long baseAmount;
+    /**
+     * 技术服务费
+     */
+    @Excel(name = "技术服务费", width = 15)
+    @ApiModelProperty(value = "技术服务费")
+    private Long serviceAmount;
+    /**
+     * 预估服务费收入
+     */
+    @Excel(name = "预估服务费收入", width = 15)
+    @ApiModelProperty(value = "预估服务费收入")
+    private Long regimentalPromotionAmount;
+    /**
+     * 结算服务费收入
+     */
+    @Excel(name = "结算服务费收入", width = 15)
+    @ApiModelProperty(value = "结算服务费收入")
+    private Long totalRegimentalSettleAmount;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 21 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaishouSupplyChainMapper.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.kuaishou.modules.batch.mapper;
+
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouSupplyChain;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 快手电商-供应链订单信息
+ * @author jeecg-boot
+ * 2022-12-01
+ * @version V1.0
+ */
+public interface KuaishouSupplyChainMapper extends BaseMapper<KuaishouSupplyChain> {
+
+    void replace(@Param(value = "adds") List<KuaishouSupplyChain> supplyChains);
+
+    String getCookie();
+}

+ 67 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaishouSupplyChainMapper.xml

@@ -0,0 +1,67 @@
+<?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.kuaishou.modules.batch.mapper.KuaishouSupplyChainMapper">
+
+    <insert id="replace">
+        replace into ruixuan.kuaishou_supply_chain(
+        id,
+        oid,
+        item_id,
+        item_title,
+        reserve_price,
+        image_url,
+        order_status,
+        order_create_time,
+        send_status,
+        settlement_biz_type,
+        settlement_biz_type_desc,
+        send_time,
+        recv_time,
+        seller_id,
+        promoter_id,
+        promoter_nick_name,
+        activity_id,
+        order_amount,
+        pay_amount,
+        regimental_promotion_rate,
+        share_rate,
+        base_amount,
+        service_amount,
+        regimental_promotion_amount,
+        total_regimental_settle_amount
+        )
+        values
+        <foreach collection="adds" item="add" separator=",">
+            (
+            #{add.id},
+            #{add.oid},
+            #{add.itemId},
+            #{add.itemTitle},
+            #{add.reservePrice},
+            #{add.imageUrl},
+            #{add.orderStatus},
+            #{add.orderCreateTime},
+            #{add.sendStatus},
+            #{add.settlementBizType},
+            #{add.settlementBizTypeDesc},
+            #{add.sendTime},
+            #{add.recvTime},
+            #{add.sellerId},
+            #{add.promoterId},
+            #{add.promoterNickName},
+            #{add.activityId},
+            #{add.orderAmount},
+            #{add.payAmount},
+            #{add.regimentalPromotionRate},
+            #{add.shareRate},
+            #{add.baseAmount},
+            #{add.serviceAmount},
+            #{add.regimentalPromotionAmount},
+            #{add.totalRegimentalSettleAmount}
+            )
+        </foreach>
+    </insert>
+    <select id="getCookie" resultType="java.lang.String">
+        select  cookie  from ruixuan.kuaishou_supply_chain_cookie limit 1
+    </select>
+</mapper>

+ 16 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouSupplyChainService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.kuaishou.modules.batch.service;
+
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouSupplyChain;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 快手电商-供应链订单信息
+ * @author jeecg-boot
+ * 2022-12-01
+ * @version V1.0
+ */
+public interface IKuaishouSupplyChainService extends IService<KuaishouSupplyChain> {
+    void getOrderList(String cookie,Integer offset,Long orderCreateTimeStart,Long orderCreateTimeEnd) throws Exception;
+
+    String getCookie();
+}

+ 135 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouSupplyChainServiceImpl.java

@@ -0,0 +1,135 @@
+package cn.com.ctop.kuaishou.modules.batch.service.impl;
+
+
+import cn.com.ctop.common.module.service.ISendMessageService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouSupplyChain;
+import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouSupplyChainMapper;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouSupplyChainService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.vdurmont.emoji.EmojiParser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 快手电商-供应链订单信息
+ *
+ * @author jeecg-boot
+ * 2022-12-01
+ * @version V1.0
+ */
+@Slf4j
+@Service
+public class KuaishouSupplyChainServiceImpl extends ServiceImpl<KuaishouSupplyChainMapper, KuaishouSupplyChain> implements IKuaishouSupplyChainService {
+    private static String url = "https://cps.kwaixiaodian.com/distribute/pc/investment/order/list";
+    @Autowired
+    private ISendMessageService sendMessageService;
+    @Autowired
+    private KuaishouSupplyChainMapper supplyChainMapper;
+
+    @Override
+    public void getOrderList(String cookie, Integer offset, Long orderCreateTimeStart, Long orderCreateTimeEnd) throws Exception {
+        Map<String, Object> params = new HashMap<>();
+        if (!Check.isNull(orderCreateTimeStart)) {
+            params.put("orderCreateTimeStart", orderCreateTimeStart);
+        }
+        if (!Check.isNull(orderCreateTimeEnd)) {
+            params.put("orderCreateTimeEnd", orderCreateTimeEnd);
+        }
+        params.put("fundType", 1);
+        params.put("limit", 2000);
+        params.put("offset", offset);
+
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Cookie", cookie);
+
+        String resultStr = HttpUtils.KuaiShouttpGetRequest(url, params, headers);
+        JSONObject result = JSONObject.parseObject(resultStr);
+        if (Check.isNull(result)) {
+            log.error("快分销数据返回为空");
+            return;
+        }
+        Integer code = result.getInteger("result");
+        if (code != 1) {
+            log.info("快分销数据返回异常:", resultStr);
+            sendMessageService.sendMessage("113dee46c7df464da78c07a985e92cd1", "快手供应链cookie失效,请及时更新。媒体返回信息:" + resultStr);
+            return;
+        }
+        JSONObject dataJson = result.getJSONObject("data");
+        if (Check.isNull(dataJson)) {
+            log.error("快分销数据返回为data数据为空");
+            return;
+        }
+        JSONArray list = dataJson.getJSONArray("list");
+        if (Check.isNull(list)) {
+            log.error("快分销数据返回为list数据为空");
+            return;
+        }
+        log.info("快分销当前数据条数:{}", list.size());
+        List<KuaishouSupplyChain> supplyChains = new ArrayList<>();
+        for (int i = 0; i < list.size(); i++) {
+            JSONObject jsonObject = list.getJSONObject(i);
+            KuaishouSupplyChain supplyChain = new KuaishouSupplyChain();
+            supplyChain.setOid(jsonObject.getLong("oid"));
+            JSONObject item = jsonObject.getJSONArray("itemList").getJSONObject(0);
+            if (!Check.isNull(item)) {
+                supplyChain.setItemId(item.getLong("itemId"));
+                supplyChain.setItemTitle(item.getString("itemTitle"));
+                supplyChain.setReservePrice(item.getLong("reservePrice"));
+                supplyChain.setImageUrl(item.getString("imageUrl"));
+            }
+            supplyChain.setOrderStatus(jsonObject.getInteger("orderStatus"));
+            supplyChain.setOrderCreateTime(jsonObject.getLong("orderCreateTime"));
+            supplyChain.setSendStatus(jsonObject.getInteger("sendStatus"));
+            supplyChain.setSettlementBizType(jsonObject.getInteger("settlementBizType"));
+            supplyChain.setSettlementBizTypeDesc(jsonObject.getString("settlementBizTypeDesc"));
+            supplyChain.setSendTime(jsonObject.getLong("sendTime"));
+            supplyChain.setRecvTime(jsonObject.getLong("recvTime"));
+            supplyChain.setSellerId(jsonObject.getLong("sellerId"));
+            supplyChain.setPromoterId(jsonObject.getLong("promoterId"));
+            supplyChain.setPromoterNickName(filterSupplement(jsonObject.getString("promoterNickName")));
+            supplyChain.setActivityId(jsonObject.getLong("activityId"));
+            supplyChain.setOrderAmount(jsonObject.getLong("orderAmount"));
+            supplyChain.setPayAmount(jsonObject.getLong("payAmount"));
+            supplyChain.setRegimentalPromotionRate(jsonObject.getLong("regimentalPromotionRate"));
+            supplyChain.setShareRate(jsonObject.getLong("shareRate"));
+            supplyChain.setBaseAmount(jsonObject.getLong("baseAmount"));
+            supplyChain.setServiceAmount(jsonObject.getLong("serviceAmount"));
+            supplyChain.setRegimentalPromotionAmount(jsonObject.getLong("regimentalPromotionAmount"));
+            supplyChain.setTotalRegimentalSettleAmount(jsonObject.getLong("totalRegimentalSettleAmount"));
+            supplyChains.add(supplyChain);
+        }
+        supplyChainMapper.replace(supplyChains);
+        Thread.sleep(2000L);
+        getOrderList(cookie, offset + 2000, orderCreateTimeStart, orderCreateTimeEnd);
+    }
+
+    @Override
+    public String getCookie() {
+        return supplyChainMapper.getCookie();
+    }
+
+    public static String filterSupplement(String content) {
+        StringBuilder sb = new StringBuilder();
+        for (char ch : content.toCharArray()) {
+            if (!Character.isHighSurrogate(ch) && !Character.isLowSurrogate(ch)) {
+                sb.append(ch);
+            }
+        }
+        return sb.toString();
+    }
+
+}
+
+
+

module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouCostGroupMapper.xml → module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouSupplyChainMapper.xml


module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceAdvertiserHourlyReportMapper.xml → module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/KuaishouSupplyChainMapper.xml