admin
2020-05-14 dda8f9a2347be94b8d8df1417a8feb96fc30ae54
订单统计任务添加,用户资金信息接口添加
2个文件已修改
1个文件已添加
235 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/order/OrderStatisticJob.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
@@ -87,11 +87,10 @@
    @Resource
    private OrderMoneyDailyCountService orderMoneyDailyCountService;
    @Resource
    private TeamEincomeRecordService teamEincomeRecordService;
    private Gson getGson() {
        GsonBuilder builder = new GsonBuilder();
        builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
@@ -108,7 +107,7 @@
        });
        return builder.create();
    }
    /**
     * 用户资金统计
     * 
@@ -128,7 +127,7 @@
        vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey()));
        vo.setBalanceMoney(user.getMyHongBao());
        vo.setExtractDesc("提现金额就是已成功转账到提现支付宝的资金。");
        vo.setMoneyArrivalDesc("资金已到账后提现时间不受限制、金额受限制。");
        vo.setMoneyArrivalDesc("资金已到账后提现时间不受限制、金额不受限制。");
        // 获取提现中的信息
        BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid);
@@ -239,9 +238,25 @@
        Gson gson = getGson();
        out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
    }
    @RequestMapping(value = "getUserMoneyInfo")
    public void getUserMoneyInfo(AcceptData acceptData, Long uid, PrintWriter out) {
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        UserInfo user = userInfoService.getUserById(uid);
        MoneyStatisticVO vo = new MoneyStatisticVO();
        vo.setLink(configService.get(ConfigKeyEnum.autoExtractHelpUrl.getKey()));
        vo.setBalanceMoney(user.getMyHongBao());
        // 获取提现中的信息
        BigDecimal extractingMoney = extractService.sumVerifyingMoney(uid);
        if (extractingMoney.compareTo(new BigDecimal(0)) > 0)
            vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP));
        Gson gson = getGson();
        out.print(JsonUtil.loadTrueResult(gson.toJson(vo)));
    }
    private MoneyPredictVO cratePredictVO(List<OrderMoneyDailyCount> list) {
        MoneyPredictVO predictVO = new MoneyPredictVO();
@@ -257,9 +272,11 @@
                if (dailyCount.getOrderNumTeam() != null)
                    predictVO.setTeamNum(predictVO.getTeamNum() + dailyCount.getOrderNumTeam());
                if (dailyCount.getIncome() != null)
                    predictVO.setMineMoney(predictVO.getMineMoney().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
                    predictVO.setMineMoney(predictVO.getMineMoney()
                            .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
                if (dailyCount.getIncomeTeam() != null)
                    predictVO.setTeamMoney(predictVO.getTeamMoney().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)));
                    predictVO.setTeamMoney(predictVO.getTeamMoney()
                            .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred)));
            }
        }
        predictVO.setTotalNum(predictVO.getTeamNum() + predictVO.getMineNum());
@@ -308,8 +325,6 @@
        out.print(JsonUtil.loadTrueResult(json));
    }
    /**
     * 历史详情
     * 
@@ -387,19 +402,23 @@
                        Date countDay = dailyCount.getCountDay();
                        if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
                            predictVO.setMineNum(dailyCount.getOrderNum());
                            predictVO.setMineMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
                            predictVO.setMineMoney(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
                            predictVO.setTeamNum(dailyCount.getOrderNumTeam());
                            predictVO.setTeamMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
                            predictVO.setTeamMoney(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
                            break;
                        }
                        String yearMonth = dailyCount.getYearMonth();
                        if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
                                && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                        if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals(
                                formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                            predictVO.setMineNum(dailyCount.getOrderNum());
                            predictVO.setMineMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
                            predictVO.setMineMoney(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred));
                            predictVO.setTeamNum(dailyCount.getOrderNumTeam());
                            predictVO.setTeamMoney(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
                            predictVO.setTeamMoney(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncomeTeam()), hundred));
                            break;
                        }
                    }
@@ -473,7 +492,8 @@
                for (OrderMoneyDailyCount dailyCount : listDailyCount) {
                    if (dailyCount.getSourceType() == typeEnum) {
                        detail.setNum(detail.getNum() + dailyCount.getOrderNum());
                        detail.setMoney(detail.getMoney().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
                        detail.setMoney(detail.getMoney()
                                .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getIncome()), hundred)));
                    }
                }
            }
@@ -488,8 +508,6 @@
        out.print(JsonUtil.loadTrueResult(object));
    }
    /**
     * 团队分红
     * @param acceptData
@@ -525,7 +543,6 @@
        BigDecimal subsidy = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_SUBSIDY);
        BigDecimal reward = teamEincomeRecordService.sumRecieveByType(uid, TeamEincomeRecord.TYPE_TEAM_DIVIDENTS);
        Gson gson = getGson();
        JSONObject object = new JSONObject();
        object.put("total", subsidy.add(reward).setScale(2).toString());
@@ -535,10 +552,9 @@
        object.put("month", gson.toJson(monthVO));
        out.print(JsonUtil.loadTrueResult(object));
    }
    private TeamPredictVO crateTeamPredictVO(List<OrderMoneyDailyCount> list) {
        TeamPredictVO predictVO = new TeamPredictVO(BigDecimal.ZERO,0,BigDecimal.ZERO,0);
        TeamPredictVO predictVO = new TeamPredictVO(BigDecimal.ZERO, 0, BigDecimal.ZERO, 0);
        if (list != null && list.size() > 0) {
            BigDecimal hundred = BigDecimal.valueOf(100);
            for (OrderMoneyDailyCount dailyCount : list) {
@@ -547,20 +563,19 @@
                if (dailyCount.getTeamSubsidyNum() != null)
                    predictVO.setSubsidyNum(predictVO.getSubsidyNum() + dailyCount.getTeamSubsidyNum());
                if (dailyCount.getTeamReward() != null)
                    predictVO.setReward(predictVO.getReward().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)));
                    predictVO.setReward(predictVO.getReward()
                            .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred)));
                if (dailyCount.getTeamSubsidy() != null)
                    predictVO.setSubsidy(predictVO.getSubsidy().add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred)));
                    predictVO.setSubsidy(predictVO.getSubsidy()
                            .add(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred)));
            }
        }
        predictVO.setTotalNum(predictVO.getRewardNum() + predictVO.getSubsidyNum());
        predictVO.setTotalMoney(predictVO.getReward().add(predictVO.getSubsidy()));
        return predictVO;
    }
    /**
     * 历史详情
     * 
@@ -570,7 +585,8 @@
     * @param out
     */
    @RequestMapping(value = "getTeamDividendHistory")
    public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype, PrintWriter out) {
    public void getTeamDividendHistory(AcceptData acceptData, Long uid, String date, Integer datetype,
            PrintWriter out) {
        if (uid == null || uid == 0) {
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
@@ -638,19 +654,23 @@
                        Date countDay = dailyCount.getCountDay();
                        if (datetype == 1 && countDay != null && countDate.equals(formatDay.format(countDay))) {
                            predictVO.setRewardNum(dailyCount.getTeamRewardNum());
                            predictVO.setReward(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
                            predictVO.setReward(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
                            predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
                            predictVO.setSubsidy(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
                            predictVO.setSubsidy(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
                            break;
                        }
                        String yearMonth = dailyCount.getYearMonth();
                        if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth)
                                && countDate.equals(formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                        if (datetype == 2 && !StringUtil.isNullOrEmpty(yearMonth) && countDate.equals(
                                formatMonth.format(TimeUtil.parseYYYYMMDD(DateUtil.getFirstDayOfMonth(yearMonth))))) {
                            predictVO.setRewardNum(dailyCount.getTeamRewardNum());
                            predictVO.setReward(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
                            predictVO.setReward(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamReward()), hundred));
                            predictVO.setSubsidyNum(dailyCount.getTeamSubsidyNum());
                            predictVO.setSubsidy(MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
                            predictVO.setSubsidy(
                                    MoneyBigDecimalUtil.div(BigDecimal.valueOf(dailyCount.getTeamSubsidy()), hundred));
                            break;
                        }
                    }
@@ -670,6 +690,5 @@
            e.printStackTrace();
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java
@@ -3,6 +3,7 @@
import java.util.Date;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
@@ -46,12 +47,15 @@
    @Id
    @Field
    private String id;
    @Indexed
    @Field
    private Long uid; // 上级id
    @Field
    private SourceTypeEnum sourceType; // 来源类型
    @Indexed
    @Field
    private String yearMonth; // 统计日期-字符串
    @Indexed
    @Field
    private Date countDay; // 统计日期
    @Field
fanli/src/main/java/com/yeshi/fanli/job/order/OrderStatisticJob.java
New file
@@ -0,0 +1,134 @@
package com.yeshi.fanli.job.order;
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.yeshi.fanli.service.manger.order.OrderMoneyStatisticManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
//订单统计任务
@Component
public class OrderStatisticJob {
    @Resource
    private OrderMoneyStatisticManager orderMoneyStatisticManager;
    public OrderStatisticJob() {
    }
    /**
     * 同步返利与分享赚
     * @Title: syncFanliAndShareData
     * @Description:
     * @param param
     * @return
     * @throws Exception
     * ReturnT<String> 返回类型
     * @throws
     */
    @XxlJob("order-statistic-syncFanliAndShareData")
    public ReturnT<String> syncFanliAndShareData(String param) throws Exception {
        long startTime = System.currentTimeMillis();
        if (!StringUtil.isNullOrEmpty(param)) {
            startTime = TimeUtil.convertToTimeTemp(param, "yyyy-MM-dd");
        }
        Date start = new Date(
                TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(startTime, "yyyy-MM-dd"), "yyyy-MM-dd"));
        Date end = new Date(TimeUtil.convertToTimeTemp(
                TimeUtil.getGernalTime(startTime + 1000 * 60 * 60 * 24L, "yyyy-MM-dd"), "yyyy-MM-dd"));
        orderMoneyStatisticManager.syncFanliAndShareData(start, end);
        return ReturnT.SUCCESS;
    }
    /**
     * 同步团队数据
     * @Title: syncTeamData
     * @Description:
     * @param param
     * @return
     * @throws Exception
     * ReturnT<String> 返回类型
     * @throws
     */
    @XxlJob("order-statistic-syncTeamData")
    public ReturnT<String> syncTeamData(String param) throws Exception {
        long startTime = System.currentTimeMillis();
        if (!StringUtil.isNullOrEmpty(param)) {
            startTime = TimeUtil.convertToTimeTemp(param, "yyyy-MM-dd");
        }
        Date start = new Date(
                TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(startTime, "yyyy-MM-dd"), "yyyy-MM-dd"));
        Date end = new Date(TimeUtil.convertToTimeTemp(
                TimeUtil.getGernalTime(startTime + 1000 * 60 * 60 * 24L, "yyyy-MM-dd"), "yyyy-MM-dd"));
        orderMoneyStatisticManager.syncTeamData(start, end);
        return ReturnT.SUCCESS;
    }
    /**
     * 同步订单数量
     * @Title: syncOrderNum
     * @Description:
     * @param param
     * @return
     * @throws Exception
     * ReturnT<String> 返回类型
     * @throws
     */
    @XxlJob("order-statistic-syncOrderNum")
    public ReturnT<String> syncOrderNum(String param) throws Exception {
        long startTime = System.currentTimeMillis();
        if (!StringUtil.isNullOrEmpty(param)) {
            startTime = TimeUtil.convertToTimeTemp(param, "yyyy-MM-dd");
        }
        Date start = new Date(
                TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(startTime, "yyyy-MM-dd"), "yyyy-MM-dd"));
        Date end = new Date(TimeUtil.convertToTimeTemp(
                TimeUtil.getGernalTime(startTime + 1000 * 60 * 60 * 24L, "yyyy-MM-dd"), "yyyy-MM-dd"));
        orderMoneyStatisticManager.syncOrderNum(start, end);
        return ReturnT.SUCCESS;
    }
    /**
     * 同步分红
     * @Title: syncDividents
     * @Description:
     * @param param
     * @return
     * @throws Exception
     * ReturnT<String> 返回类型
     * @throws
     */
    @XxlJob("order-statistic-syncDividents")
    public ReturnT<String> syncDividents(String param) throws Exception {
        long startTime = System.currentTimeMillis();
        if (!StringUtil.isNullOrEmpty(param)) {
            startTime = TimeUtil.convertToTimeTemp(param, "yyyy-MM-dd");
        }
        Date start = new Date(
                TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(startTime, "yyyy-MM-dd"), "yyyy-MM-dd"));
        Date end = new Date(TimeUtil.convertToTimeTemp(
                TimeUtil.getGernalTime(startTime + 1000 * 60 * 60 * 24L, "yyyy-MM-dd"), "yyyy-MM-dd"));
        orderMoneyStatisticManager.syncDividents(start, end);
        return ReturnT.SUCCESS;
    }
}