admin
2020-04-28 e8f00cc0506705a2bed7dd4e060541230a7d2ab2
线上版本用户升级普通会员
4个文件已修改
84 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/config/HongBaoManageServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/order/config/HongBaoManageService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/SyncBeforeInfoMessageListener.java 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
@@ -271,5 +276,11 @@
    public BigDecimal getBaseFanliRate() {
        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
@@ -18,6 +18,8 @@
    public String get(String key);
    public BigDecimal getByKeyAndMaxTime(String key, Long time);
    public BigDecimal getByKeyAndMaxTimeCache(String key, Long time);
    public Map<String, String> convertMap();
@@ -172,5 +174,7 @@
     * @return
     */
    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) {
@@ -72,12 +78,35 @@
                // 老用户同步绑定信息
                userInfoModifyRecordService.syncBeforeInfo(uid);
                //同步老用户等级
                // 同步老用户等级
                UserActiveLog log = userActiveLogService.getUserLatestActiveInfo(uid);
                if (log != null && VersionUtil.greaterThan_2_1(
                // 低版本全部升级普通会员
                if (log != null && !VersionUtil.greaterThan_2_1(
                        "appstore".equalsIgnoreCase(log.getChannel()) ? "ios" : "android", log.getVersionCode())) {
                    //线上老用户升级到2.1,自动计算等级
                    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,15 +121,18 @@
                                userVIPPreInfoService.upgradeVipByTeamNum(uid);
                                vipInfo = userVIPPreInfoService.getLatestProcessInfo(uid);
                                if (vipInfo == null) {// 没有生成高级及以上会员
                                    // 老用户生成普通会员
                                    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();
                                    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();
                                        }
                                    }
                                }
                            }