From aa552facf6d833acab0d3e3e29bda2a0fb826ffe Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期一, 25 十一月 2019 16:14:13 +0800 Subject: [PATCH] 品牌缓存生效 --- fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinNewUserServiceImpl.java | 52 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 39 insertions(+), 13 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 c03afe6..7e67fe3 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 @@ -11,15 +11,19 @@ import com.yeshi.fanli.dao.mongodb.redpack.RedPackWinNewUserDao; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; +import com.yeshi.fanli.entity.push.DeviceActive; 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.push.DeviceActiveService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; import com.yeshi.fanli.service.inter.redpack.RedPackConfigService; +import com.yeshi.fanli.service.inter.redpack.RedPackForbidService; import com.yeshi.fanli.service.inter.redpack.RedPackWinNewUserService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService; import com.yeshi.fanli.util.factory.RedPackDetailFactory; import com.yeshi.fanli.vo.redpack.RedPackWinDetailVO; @@ -42,12 +46,35 @@ @Resource private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + @Resource + private DeviceActiveService deviceActiveService; + + @Resource + private RedPackForbidService redPackForbidService; + @Override - public boolean verifyHasReward(Long uid) { + public boolean verifyHasReward(Long uid, String device) { try { - if (uid == null || uid <= 0) - return true; // 鏈櫥褰曞脊鍑� + if (StringUtil.isNullOrEmpty(device) && (uid == null || uid <= 0)) + return false; + + if (uid == null || uid <= 0) { + DeviceActive deviceActive = deviceActiveService.getFirstActiveInfo(device); + if (deviceActive == null) + return true; // 鏂拌澶囧脊鍑� + + Date nowTime = new Date(); + Date createTime = deviceActive.getCreateTime(); + int days = DateUtil.daysBetween2(createTime, nowTime); + if (days >= Constant.RED_PACK_NEW_USER_DAYS) { + return false; // 宸茬粡瓒呭嚭璁剧疆澶╂暟 + } + return true; // 鏈秴杩囨椂闂� + } + + if(redPackForbidService.verifyForbid(uid)) + return false; // 绾㈠寘灏佺 UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra == null || userInfoExtra.getFirstLoginTime() == null) @@ -56,7 +83,7 @@ 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 false; // 宸茬粡瓒呭嚭璁剧疆澶╂暟 RedPackWinNewUser redPackWin = redPackWinNewUserDao.getByUid(uid); @@ -96,7 +123,7 @@ 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); @@ -116,7 +143,7 @@ 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); @@ -124,7 +151,7 @@ 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); @@ -132,8 +159,12 @@ 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); @@ -143,16 +174,11 @@ 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("鏂颁汉绾㈠寘"); -- Gitblit v1.8.0