| | |
| | |
|
| | | 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;
|
| | |
| | | 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();
|
| | | }
|