From 403a812d2f47ad124b8ed9e961c1a2f60156e91b Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期一, 29 六月 2020 14:59:59 +0800 Subject: [PATCH] 拉新排行榜 --- fanli/src/main/java/com/yeshi/fanli/job/UserRankingsJob.java | 114 ++++++++++++++++++++------------------------------------- 1 files changed, 40 insertions(+), 74 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/job/UserRankingsJob.java b/fanli/src/main/java/com/yeshi/fanli/job/UserRankingsJob.java index eea44d7..c66e370 100644 --- a/fanli/src/main/java/com/yeshi/fanli/job/UserRankingsJob.java +++ b/fanli/src/main/java/com/yeshi/fanli/job/UserRankingsJob.java @@ -1,10 +1,7 @@ package com.yeshi.fanli.job; import java.math.BigDecimal; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; import java.util.List; import java.util.Random; @@ -12,14 +9,11 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.yeshi.utils.DateUtil; import com.yeshi.fanli.entity.bus.user.UserRankings; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService; import com.yeshi.fanli.service.inter.user.UserRankingsService; import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; /** * 娣樺疂鍟嗗搧鏇寸粏 @@ -32,102 +26,74 @@ public class UserRankingsJob { @Resource - private ConfigService configService; - - @Resource private UserRankingsService userRankingsService; - @Resource - private TaoBaoOrderService taoBaoOrderService; - - - // 1鍔�,2鍑� - private static int ADD = 1; - - // 鍓嶇鏄剧ず涓暟 - private static int SHOW_NUM = 50; - // 姣忓ぉ00鐐�10鎵ц 锛� 鏇存敼鎺掕姒滀笂鐨勫閲� - @Scheduled(cron = "0 5 0 * * ? ") + @Scheduled(cron = "0 15 0 * * ? ") public void updateReward() { - if (!Constant.IS_TASK) { return; } - + + // 鏇存柊浜烘暟 + int showNum = 15; + // 姣忔棩澧炲箙 + double rangeAmount = 100; try { - - LogHelper.test("------鎵ц涓�--updateReward---------"); + List<UserRankings> listExist = null; + // 姣忔湀1鍙峰綊0 + int currentDate = DateUtil.getCurrentDate(); + if (currentDate != 1) + listExist = userRankingsService.getRankList(0, showNum); // 娓呯悊鏁版嵁 - userRankingsService.updateClearTradeState(); + userRankingsService.clearShareReward(); - - // 绯荤粺鎬绘潯鏁� + // 鍋囩敤鎴锋暟閲� int count = (int) userRankingsService.queryCount(null, null, null); - + // 闅忔満鏄剧ず鏂扮殑浜� Random random = new Random(); - - // 闅忔満灏嗘樉绀虹殑50涓汉淇℃伅 List<Long> listId = new ArrayList<Long>(); - while (listId.size() < SHOW_NUM) { + while (listId.size() < showNum) { long id = random.nextInt(count); if (!listId.contains(id)) { listId.add(id); } } - - // 鏄剧ず鏂扮殑浜� List<UserRankings> listNew = userRankingsService.listQueryByIds(listId); - - Calendar cal=Calendar.getInstance(); - cal.add(Calendar.DATE,-1); - Date time=cal.getTime(); - // 鏄ㄦ棩棰勮鎬绘敹鐩� - double countEstimate = taoBaoOrderService.countEstimate(new SimpleDateFormat("yyyy-MM-dd").format(time)); - if (countEstimate == 0) { - countEstimate = 600; - } - // 鍧囧�硷細鎬婚璁℃敹鐩�*50% - double avgAmount = countEstimate * 0.5; - - // 涓婁笅 娴姩閲戦鑼冨洿 - double rangeAmount = 100; - String range = configService.get("reward_rank_range"); - if (!StringUtil.isNullOrEmpty(range)) { - rangeAmount = Double.parseDouble(range); - } - - - for (UserRankings userRankings : listNew) { - - // 鐘舵�� - userRankings.setTradeState(1); - userRankings.setTradeTime(new Date()); - - // 娴姩閲戦 - double amount = Math.random() * rangeAmount; - - int[] arr = { 1, 2 }; - int index = random.nextInt(arr.length); - if (ADD == arr[index]) { - userRankings.setTradeReward(new BigDecimal(avgAmount + amount)); - } else { - while (amount > avgAmount) { - amount = Math.random() * rangeAmount; + if (listExist == null || listExist.size() == 0) { + for (UserRankings user : listNew) { + // 娴姩閲戦 + double amount = Math.random() * rangeAmount; + if (amount < 0.5) { + amount = 0.5; } - userRankings.setTradeReward(new BigDecimal(avgAmount - amount)); + user.setShareReward(new BigDecimal(amount)); + } + } else { + for (int i = 0; i < listNew.size(); i ++) { + UserRankings user = listNew.get(i); + + // 娴姩閲戦 + BigDecimal shareReward = null; + if (i < listExist.size()) { + shareReward = listExist.get(i).getShareReward(); + } + + if (shareReward == null) + shareReward = BigDecimal.ZERO; + + // 娴姩閲戦 + double amount = Math.random() * rangeAmount; + user.setShareReward(shareReward.add(BigDecimal.valueOf(amount))); } } - // 鎵归噺鏇存柊鏄ㄦ棩鏁版嵁-绉婚櫎鎺掕姒� userRankingsService.updateBatchSelective(listNew); - } catch (Exception e) { e.printStackTrace(); } - } } -- Gitblit v1.8.0