yujian
2020-06-28 1e28ac69827ff7578a418a79bd95aff2c6637f5c
fanli/src/main/java/com/yeshi/fanli/job/UserRankingsJob.java
@@ -12,6 +12,7 @@
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.entity.system.ConfigKeyEnum;
@@ -46,89 +47,69 @@
   private UserInfoExtraService userInfoExtraService;
   
   // 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;
      }
//      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(ConfigKeyEnum.rewardRankRange.getKey());
         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();
      }