| | |
| | | Date nowTime = new Date();
|
| | | Date firstLoginTime = userInfoExtra.getFirstLoginTime();
|
| | | int days = DateUtil.daysBetween2(firstLoginTime, nowTime);
|
| | | if (days > Constant.RED_PACK_NEW_USER_DAYS)
|
| | | if (days >= Constant.RED_PACK_NEW_USER_DAYS)
|
| | | return null; // 已经超出设置天数
|
| | |
|
| | | RedPackWinNewUser redPackWin = redPackWinNewUserDao.getByUid(uid);
|
| | |
| | |
|
| | | BigDecimal money = null;
|
| | | if (redPackWin == null) { // 第一次
|
| | | if (days == Constant.RED_PACK_NEW_USER_DAYS) { // 最后一天
|
| | | if (days == Constant.RED_PACK_NEW_USER_DAYS - 1) { // 最后一天
|
| | | money = Constant.RED_PACK_NEW_USER_MONEY;
|
| | | } else { // 计算随机奖励
|
| | | double randomNum = Constant.RED_PACK_NEW_USER_MIN + Math.random() * (Constant.RED_PACK_NEW_USER_MAX - Constant.RED_PACK_NEW_USER_MIN);
|
| | |
| | | BigDecimal rate = new BigDecimal(randomNum).setScale(2, BigDecimal.ROUND_DOWN);
|
| | | money = MoneyBigDecimalUtil.mul(Constant.RED_PACK_NEW_USER_MONEY,rate);
|
| | | }
|
| | | } else if (days == Constant.RED_PACK_NEW_USER_DAYS) { // 最后一天
|
| | | } else if (days == Constant.RED_PACK_NEW_USER_DAYS - 1) { // 最后一天
|
| | | money = MoneyBigDecimalUtil.sub(Constant.RED_PACK_NEW_USER_MONEY, redPackWin.getMoney());
|
| | | } else { // 计算剩余随机奖励 10%-25%
|
| | | double randomNum = 10 + Math.random() * (20 - 10);
|
| | |
| | | money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.sub(Constant.RED_PACK_NEW_USER_MONEY,redPackWin.getMoney()),rate);
|
| | | }
|
| | |
|
| | | int num = 1;
|
| | | money = money.setScale(2);
|
| | | // 4、增加红包
|
| | | redPackBalanceService.addRedPack(uid, money, RedPackDetailFactory.createNewUserReward(uid, days, money));
|
| | | |
| | | // 插入领取记录
|
| | | int num = 1;
|
| | | if (redPackWin == null) {
|
| | | redPackWin = new RedPackWinNewUser();
|
| | | redPackWin.setNum(1);
|
| | |
| | | redPackWin.setUpdateTime(nowTime);
|
| | | } else {
|
| | | num = redPackWin.getNum() + 1;
|
| | | redPackWin = new RedPackWinNewUser();
|
| | | redPackWin.setUid(uid.toString());
|
| | | redPackWin.setNum(num);
|
| | | redPackWin.setMoney(MoneyBigDecimalUtil.add(money, redPackWin.getMoney()));
|
| | | redPackWin.setUpdateTime(nowTime);
|
| | | }
|
| | | redPackWinNewUserDao.save(redPackWin);
|
| | | |
| | | // 4、增加红包
|
| | | redPackBalanceService.addRedPack(uid, money, RedPackDetailFactory.createNewUserReward(uid,num, money));
|
| | |
|
| | | RedPackWinDetailVO winDetailVO = new RedPackWinDetailVO();
|
| | | winDetailVO.setTitle("新人红包");
|