From ec60e757d358636dcac1589c44a66f3e276fe58c Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期一, 29 六月 2020 14:41:42 +0800 Subject: [PATCH] 拉新 --- fanli/src/main/java/com/yeshi/fanli/job/RedPackJob.java | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 89 insertions(+), 0 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/job/RedPackJob.java b/fanli/src/main/java/com/yeshi/fanli/job/RedPackJob.java new file mode 100644 index 0000000..96495a4 --- /dev/null +++ b/fanli/src/main/java/com/yeshi/fanli/job/RedPackJob.java @@ -0,0 +1,89 @@ +package com.yeshi.fanli.job; + +import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.yeshi.fanli.dto.user.PullNewRuleTerm; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.redpack.RedPackConfigService; +import com.yeshi.fanli.service.inter.redpack.RedPackWinInviteService; +import com.yeshi.fanli.util.StringUtil; + +@Component +public class RedPackJob { + + @Resource + private RedPackWinInviteService redPackWinInviteService; + + @Resource + private RedPackConfigService redPackConfigService; + + + /** + * 绾㈠寘姣忔湀26鍒拌处 + */ + @Scheduled(cron = "0 20 0 26 * ? ") + public void arriveMoney() { + try { + String value = redPackConfigService.getValueByKey("win_redpack_term"); + if (StringUtil.isNullOrEmpty(value)) { + return; + } + + Type type = new TypeToken<ArrayList<PullNewRuleTerm>>() { + }.getType(); + List<PullNewRuleTerm> listRule = new Gson().fromJson(value, type); + if (listRule == null || listRule.size() == 0) { + return; + } + + int start = 0; + Date date = new Date(); + while(true) { + // 涓婃湀瀛樺湪閭�璇风殑鐢ㄧ敤鎴穒d + List<Long> list = redPackWinInviteService.listWinUid(start, 1000); + if (list == null || list.size() == 0) { + break; + } + + for (Long uid: list) { + // 缁熻涓婃湀閭�璇锋垚鍔熸暟閲� + long count = redPackWinInviteService.countLastMonthByUid(uid); + if (count == 0) + continue; + + BigDecimal money = null; + for (PullNewRuleTerm term: listRule) { + if (count >= term.getMin() && (term.getMax() != null && count <= term.getMax())) { + money = term.getMoney(); + } + } + + if (money == null) { + LogHelper.test("绾㈠寘濂栧姳鏈尮閰嶅埌瑙勫垯count =" + count + " uid =" + uid); + continue; + } + + try { + redPackWinInviteService.arriveMoney(uid, money, date); + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + } + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + } + +} -- Gitblit v1.8.0