From 11261b1ecf556ebb6cc4d619c6e685ed0e08e9a9 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期三, 06 十一月 2019 18:14:09 +0800 Subject: [PATCH] 红包领取 --- fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinNewUserServiceImpl.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 46 insertions(+), 2 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinNewUserServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinNewUserServiceImpl.java index d596829..c03afe6 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinNewUserServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinNewUserServiceImpl.java @@ -12,6 +12,7 @@ import com.yeshi.fanli.dao.mongodb.redpack.RedPackWinNewUserDao; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.redpack.RedPackWinNewUser; +import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; import com.yeshi.fanli.service.inter.redpack.RedPackConfigService; @@ -42,10 +43,52 @@ private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + @Override + public boolean verifyHasReward(Long uid) { + try { + if (uid == null || uid <= 0) + return true; // 鏈櫥褰曞脊鍑� + + UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); + if (userInfoExtra == null || userInfoExtra.getFirstLoginTime() == null) + return false; + + Date nowTime = new Date(); + Date firstLoginTime = userInfoExtra.getFirstLoginTime(); + int days = DateUtil.daysBetween2(firstLoginTime, nowTime); + if (days > Constant.RED_PACK_NEW_USER_DAYS) + return false; // 宸茬粡瓒呭嚭璁剧疆澶╂暟 + + RedPackWinNewUser redPackWin = redPackWinNewUserDao.getByUid(uid); + if (redPackWin != null) { + if (redPackWin.getMoney().compareTo(Constant.RED_PACK_NEW_USER_MONEY) >= 0) + return false; // 宸查鍙栧畬 + + Date updateTime = redPackWin.getUpdateTime(); + int daysNum = DateUtil.daysBetween2(updateTime, nowTime); + if (daysNum == 0) + return false; // 浠婃棩宸查鍙� + + Integer num = redPackWin.getNum(); + if (num >= Constant.RED_PACK_NEW_USER_DAYS) + return false; // 棰嗗彇娆℃暟瓒呴檺 + } + return true; + } catch (Exception e) { + LogHelper.errorDetailInfo(e); + } + return false; + } + + + @RequestSerializableByKeyService(key = "#uid") @Transactional(rollbackFor = Exception.class) @Override public RedPackWinDetailVO receiveReward(Long uid) throws Exception { + if (uid == null || uid <= 0) + return null; // 鏈櫥褰曞脊鍑� + UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra == null || userInfoExtra.getFirstLoginTime() == null) return null; @@ -77,14 +120,15 @@ 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/100).setScale(2); + randomNum = randomNum/100; + 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) { // 鏈�鍚庝竴澶� money = MoneyBigDecimalUtil.sub(Constant.RED_PACK_NEW_USER_MONEY, redPackWin.getMoney()); } else { // 璁$畻鍓╀綑闅忔満濂栧姳 10%-25% double randomNum = 10 + Math.random() * (20 - 10); - BigDecimal rate = new BigDecimal(randomNum/100).setScale(2); + BigDecimal rate = new BigDecimal(randomNum/100).setScale(2, BigDecimal.ROUND_DOWN); money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.sub(Constant.RED_PACK_NEW_USER_MONEY,redPackWin.getMoney()),rate); } -- Gitblit v1.8.0