fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java
@@ -18,6 +18,7 @@ import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.user.UserLevelUtil; @@ -174,14 +175,16 @@ key = String.format("official_subsidy_zigou_%s", userLevel.getLevel()); BigDecimal rate = null; if (date != null) rate = hongBaoManageService.getByKeyAndMaxTime(key, date.getTime()); rate = hongBaoManageService.getByKeyAndMaxTimeCache(key, TimeUtil .convertToTimeTemp(TimeUtil.getGernalTime(date.getTime(), "yyyy-MM-dd HH"), "yyyy-MM-dd HH")); else rate = new BigDecimal(hongBaoManageService.get(key)); return rate; } private BigDecimal getRateByLevel(UserLevelEnum level, Date date) { BigDecimal baseRate = hongBaoManageService.getBaseFanliRate(date.getTime()); BigDecimal baseRate = hongBaoManageService.getBaseFanliRateCache( TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(date.getTime(), "yyyy-MM-dd HH"), "yyyy-MM-dd HH")); BigDecimal subsidyRate = getOfficialSubsidyRate(date, level, false); @@ -379,7 +382,9 @@ } private BigDecimal getFanliRate(Date time, UserLevelEnum userLevel) { BigDecimal rate = hongBaoManageService.getBaseFanliRate(time.getTime()) BigDecimal rate = hongBaoManageService .getBaseFanliRateCache(TimeUtil .convertToTimeTemp(TimeUtil.getGernalTime(time.getTime(), "yyyy-MM-dd HH"), "yyyy-MM-dd HH")) .add(getOfficialSubsidyRate(time, getCommonUserLevel(time, userLevel), false)); if (userLevel == UserLevelEnum.normalVIP) fanli/src/main/java/com/yeshi/fanli/service/impl/order/config/HongBaoManageServiceImpl.java
@@ -59,6 +59,11 @@ return null; } @Cacheable(value = "homeBaoManage", key = "'getByKeyAndMaxTime-'+#key+'-'+#time") public BigDecimal getByKeyAndMaxTimeCache(String key, Long time) { return getByKeyAndMaxTime(key, time); } @Cacheable(value = "homeBaoManage", key = "'convertMap'") public Map<String, String> convertMap() { List<HongBaoManage> list = hongBaoManageMapper.listAll(); @@ -272,4 +277,10 @@ return getBaseFanliRate(System.currentTimeMillis()); } @Cacheable(value = "homeBaoManage", key = "'getBaseFanliRate'+#time") @Override public BigDecimal getBaseFanliRateCache(long time) { return getBaseFanliRate(System.currentTimeMillis()); } } fanli/src/main/java/com/yeshi/fanli/service/inter/order/config/HongBaoManageService.java
@@ -19,6 +19,8 @@ public BigDecimal getByKeyAndMaxTime(String key, Long time); public BigDecimal getByKeyAndMaxTimeCache(String key, Long time); public Map<String, String> convertMap(); /** @@ -173,4 +175,6 @@ */ public BigDecimal getBaseFanliRate(); public BigDecimal getBaseFanliRateCache(long time); } fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/SyncBeforeInfoMessageListener.java
@@ -16,16 +16,19 @@ import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; import com.yeshi.fanli.dto.mq.user.body.UserActiveMQMsg; import com.yeshi.fanli.entity.bus.user.UserActiveLog; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.bus.user.UserInfoRegister; import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo; import com.yeshi.fanli.exception.user.vip.UserVIPPreInfoException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.user.UserActiveLogService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService; import com.yeshi.fanli.service.inter.user.UserInfoRegisterService; import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService; import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.rocketmq.MQTopicName; @@ -53,6 +56,9 @@ @Resource private UserVIPPreInfoService userVIPPreInfoService; @Resource private UserInfoExtraService userInfoExtraService; @Override public Action consume(Message message, ConsumeContext context) { @@ -74,10 +80,33 @@ //同步老用户等级 UserActiveLog log = userActiveLogService.getUserLatestActiveInfo(uid); if (log != null && VersionUtil.greaterThan_2_1( "appstore".equalsIgnoreCase(log.getChannel()) ? "ios" : "android", log.getVersionCode())) { //线上老用户升级到2.1,自动计算等级 // 低版本全部升级普通会员 if (log != null && !VersionUtil.greaterThan_2_1( "appstore".equalsIgnoreCase(log.getChannel()) ? "ios" : "android", log.getVersionCode())) { UserVIPPreInfo vipInfo = userVIPPreInfoService.getLatestProcessInfo(uid); if (vipInfo == null) { vipInfo = userVIPPreInfoService.getLatestProcessInfo(uid); if (vipInfo == null) {// 没有生成高级及以上会员 UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid); if (extra != null && !StringUtil.isNullOrEmpty(extra.getInviteCode())) { // 老用户生成普通会员 UserVIPPreInfo vip = new UserVIPPreInfo(); vip.setCreateTime(new Date()); vip.setProcess(UserVIPPreInfo.PROCESS_1); vip.setUid(uid); try { userVIPPreInfoService.addUserVIPPreInfo(vip); } catch (UserVIPPreInfoException e) { e.printStackTrace(); } } } } } else if (log != null && VersionUtil.greaterThan_2_1( "appstore".equalsIgnoreCase(log.getChannel()) ? "ios" : "android", log.getVersionCode())) {// 2.1后升级其他等级 // 线上老用户升级到2.1,自动计算等级 List<Long> uids = new ArrayList<>(); uids.add(uid); List<UserInfoRegister> list = userInfoRegisterService.listByMultipleUids(uids); @@ -92,6 +121,8 @@ userVIPPreInfoService.upgradeVipByTeamNum(uid); vipInfo = userVIPPreInfoService.getLatestProcessInfo(uid); if (vipInfo == null) {// 没有生成高级及以上会员 UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid); if (extra != null && !StringUtil.isNullOrEmpty(extra.getInviteCode())) { // 老用户生成普通会员 UserVIPPreInfo vip = new UserVIPPreInfo(); vip.setCreateTime(new Date()); @@ -107,6 +138,7 @@ } } } } } }