Selaa lähdekoodia

定时清洗账户余额和预算

zhaoxian 4 vuotta sitten
vanhempi
commit
f8e4998649

+ 64 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaiShouBudgetJob.java

@@ -0,0 +1,64 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.app.entity.KuaishouAccountBalanceBudget;
+import cn.com.ctop.kuaishou.modules.app.service.IKuaishouAccountBalanceBudgetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouAccountBudgetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import com.alibaba.fastjson.JSONObject;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Component
+public class KuaiShouBudgetJob {
+    @Autowired
+    private IKuaishouAccountBalanceBudgetService balanceBudgetService;
+    @Autowired
+    private IKuaishouInterfaceService iKuaishouInterfaceService;
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IKuaishouAccountBudgetService accountBudgetService;
+
+    static ExecutorService executorService = Executors.newFixedThreadPool(8);
+
+    /**
+     * 定时更新快手账户余额和预算
+     *
+     * @throws
+     */
+    @XxlJob("kuaiShouBudgetJob")
+    public void execute() throws Exception {
+        if (DateUtils.getNowHour() == 2) {
+            //每日凌晨2点将预算全部置为无效,避免已关闭的账户留有僵尸数据。
+            balanceBudgetService.updateAllIsInvalidState();
+        }
+        List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
+        tokens.forEach(token -> executorService.submit(() -> {
+            KuaishouAccountBalanceBudget budget = new KuaishouAccountBalanceBudget();
+            JSONObject fundJson = iKuaishouInterfaceService.fundGet(token);
+            JSONObject accountBudget = accountBudgetService.getAccountBudget(token);
+            if (!Check.isNull(accountBudget) && !Check.isNull(fundJson)) {
+                budget.setBalance(fundJson.getBigDecimal("balance"));
+                budget.setDayBudget(accountBudget.getBigDecimal("day_budget").divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_UP));
+                budget.setDayBudgetSchedule(accountBudget.getString("day_budget_schedule"));
+                budget.setAccountId(token.getAccountId());
+                budget.setState(1);
+                balanceBudgetService.replace(budget);
+            }
+        }));
+        XxlJobHelper.log("定时更新快手账户余额和预算完成");
+    }
+}
+

+ 76 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/app/entity/KuaishouAccountBalanceBudget.java

@@ -0,0 +1,76 @@
+package cn.com.ctop.kuaishou.modules.app.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 快手-账余额、预算
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-04-16
+ */
+@Data
+@TableName("ctop_kuaishou_account_balance_budget")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_kuaishou_account_balance_budget对象", description = "快手-账余额、预算")
+public class KuaishouAccountBalanceBudget {
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
+    @ApiModelProperty(value = "账户ID")
+    private Long accountId;
+    /**
+     * 状态 0 失效,1有效
+     */
+    private Integer state;
+
+    /**
+     * 账户总余额
+     */
+    @Excel(name = "账户总余额", width = 15)
+    @ApiModelProperty(value = "账户总余额")
+    private BigDecimal balance;
+    /**
+     * 单日预算
+     */
+    @Excel(name = "单日预算", width = 15)
+    @ApiModelProperty(value = "单日预算")
+    private BigDecimal dayBudget;
+    /**
+     * 分日预算
+     */
+    @Excel(name = "分日预算", width = 15)
+    @ApiModelProperty(value = "分日预算")
+    private String dayBudgetSchedule;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * updateTime
+     */
+    @ApiModelProperty(value = "updateTime")
+    private Date updateTime;
+}

+ 19 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/app/mapper/KuaishouAccountBalanceBudgetMapper.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.kuaishou.modules.app.mapper;
+
+
+import cn.com.ctop.kuaishou.modules.app.entity.KuaishouAccountBalanceBudget;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 快手-账余额、预算
+ *
+ * @author: jeecg-boot
+ * @date: 2021-04-16
+ * @cersion: V1.0
+ */
+public interface KuaishouAccountBalanceBudgetMapper extends BaseMapper<KuaishouAccountBalanceBudget> {
+
+    void replace(KuaishouAccountBalanceBudget budget);
+
+    void updateAllIsInvalidState();
+}

+ 36 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/app/mapper/xml/KuaishouAccountBalanceBudgetMapper.xml

@@ -0,0 +1,36 @@
+<?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.app.mapper.KuaishouAccountBalanceBudgetMapper">
+
+    <insert id="replace">
+        replace
+        into ctop_kuaishou_account_balance_budget
+        (
+        id,
+        account_id ,
+        balance ,
+        day_budget ,
+        day_budget_schedule ,
+        state,
+        create_time
+        )
+        values
+        (
+        #{id},
+        #{accountId},
+        #{balance},
+        #{dayBudget},
+        #{dayBudgetSchedule},
+        #{state},
+        #{createTime}
+        )
+    </insert>
+
+
+    <update id="updateAllIsInvalidState">
+        update ctop_kuaishou_account_balance_budget
+        set state =0
+        where 1 = 1
+    </update>
+
+</mapper>

+ 18 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/app/service/IKuaishouAccountBalanceBudgetService.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.kuaishou.modules.app.service;
+
+
+import cn.com.ctop.kuaishou.modules.app.entity.KuaishouAccountBalanceBudget;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 快手-账余额、预算
+ * @Author: jeecg-boot
+ * @Date: 2021-04-16
+ * @Version: V1.0
+ */
+public interface IKuaishouAccountBalanceBudgetService extends IService<KuaishouAccountBalanceBudget> {
+
+    void replace(KuaishouAccountBalanceBudget budget);
+
+    void updateAllIsInvalidState();
+}

+ 32 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/app/service/impl/KuaishouAccountBalanceBudgetServiceImpl.java

@@ -0,0 +1,32 @@
+package cn.com.ctop.kuaishou.modules.app.service.impl;
+
+import cn.com.ctop.kuaishou.modules.app.entity.KuaishouAccountBalanceBudget;
+import cn.com.ctop.kuaishou.modules.app.mapper.KuaishouAccountBalanceBudgetMapper;
+import cn.com.ctop.kuaishou.modules.app.service.IKuaishouAccountBalanceBudgetService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 快手-账余额、预算
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-04-16
+ */
+@Service
+public class KuaishouAccountBalanceBudgetServiceImpl extends ServiceImpl<KuaishouAccountBalanceBudgetMapper, KuaishouAccountBalanceBudget> implements IKuaishouAccountBalanceBudgetService {
+
+    @Autowired
+    private KuaishouAccountBalanceBudgetMapper budgetMapper;
+
+    @Override
+    public void replace(KuaishouAccountBalanceBudget budget) {
+        budgetMapper.replace(budget);
+    }
+
+    @Override
+    public void updateAllIsInvalidState() {
+        budgetMapper.updateAllIsInvalidState();
+    }
+}