yujian
2020-05-07 a9c9da611563738e2974103a45270d5857b746b6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package com.yeshi.fanli.util.rocketmq.consumer.user;
 
import javax.annotation.Resource;
 
import org.springframework.stereotype.Component;
 
import com.aliyun.openservices.ons.api.Action;
import com.aliyun.openservices.ons.api.ConsumeContext;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
import com.google.gson.Gson;
import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
import com.yeshi.fanli.dto.mq.order.body.OrderConfirmMQMsg;
import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg;
import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
import com.yeshi.fanli.dto.mq.user.body.ThreeSaleSeparateMQMsg;
import com.yeshi.fanli.dto.mq.user.body.UserLevelChangedMQMsg;
import com.yeshi.fanli.entity.bus.user.UserActiveLog;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
import com.yeshi.fanli.service.inter.user.vip.TeamLevelDailyRecordService;
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.VersionUtil;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
 
/**
 * 用户超级会员
 * 
 * @author Administrator
 *
 */
@Component
public class UserVIPMessageListener implements MessageListener {
 
    @Resource
    private UserVIPPreInfoService userVIPPreInfoService;
 
    @Resource
    private TeamUserLevelStatisticService teamUserLevelStatisticService;
 
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
 
    @Resource
    private UserInviteValidNumService userInviteValidNumService;
 
    @Resource
    private UserActiveLogService userActiveLogService;
    
    @Resource
    private TeamLevelDailyRecordService teamLevelDailyRecordService;
    
 
    @Override
    public Action consume(Message message, ConsumeContext context) {
 
        LogHelper.mqInfo("consumer-UserVIPMessageListener", message.getMsgID(), message.getTopic(), message.getTag(),
                new String(message.getBody()));
        String tag = message.getTag();
        if (tag == null)
            tag = "";
 
        if (java.lang.System.currentTimeMillis() <= Constant.NEW_ORDER_FANLI_RULE_TIME) {
            return Action.CommitMessage;
        }
 
        // 邀请相关
        if (MQTopicName.TOPIC_USER.name().equalsIgnoreCase(message.getTopic())) {
            if (tag.equalsIgnoreCase(UserTopicTagEnum.userLevelChanged.name())) {// 用户等级发生变化
                UserLevelChangedMQMsg msg = new Gson().fromJson(new String(message.getBody()),
                        UserLevelChangedMQMsg.class);
 
                for (Long fuid : Constant.NO_UPGRADE_UIDS) {// 禁止不能升级的用户升级
                    if (msg.getUid().longValue() == fuid)
                        return Action.CommitMessage;
                }
 
                // 更新上2级的邀请统计
                teamUserLevelStatisticService.updateUserLevel(msg.getUid());
                UserInfo boss = threeSaleSerivce.getBoss(msg.getUid());
                if (boss != null) {
                    teamUserLevelStatisticService.initData(boss.getId());
                    boss = threeSaleSerivce.getBoss(boss.getId());
                    if (boss != null) {
                        teamUserLevelStatisticService.initData(boss.getId());
                    }
                    
                    // 重新统计粉丝等级数量
                    teamLevelDailyRecordService.addStatisticByUid(boss.getId());
                }
                return Action.CommitMessage;
            } else if (tag.equalsIgnoreCase(UserTopicTagEnum.threeSaleSeparate.name())) {// 邀请关系脱离
                ThreeSaleSeparateMQMsg msg = new Gson().fromJson(new String(message.getBody()),
                        ThreeSaleSeparateMQMsg.class);
 
                // 更新上两级邀请统计
                teamUserLevelStatisticService.initData(msg.getBossUid());
                UserInfo boss = threeSaleSerivce.getBoss(msg.getBossUid());
                if (boss != null) {
                    teamUserLevelStatisticService.initData(boss.getId());
                }
                return Action.CommitMessage;
            }
 
        } else if (MQTopicName.TOPIC_ORDER.name().equalsIgnoreCase(message.getTopic())) {
            // 订单到账相关
            if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderFanLiActual.name())) {
                OrderMoneyRecievedMQMsg dto = new Gson().fromJson(new String(message.getBody()),
                        OrderMoneyRecievedMQMsg.class);
                if (dto != null) {
                    for (Long fuid : Constant.NO_UPGRADE_UIDS) {// 禁止不能升级的用户升级
                        if (dto.getUid().longValue() == fuid)
                            return Action.CommitMessage;
                    }
                    // 判断版本
                    UserActiveLog log = userActiveLogService.getUserLatestActiveInfo(dto.getUid());
 
                    if (log == null || !VersionUtil.greaterThan_2_1(
                            "appstore".equalsIgnoreCase(log.getChannel()) ? "ios" : "android", log.getVersionCode())) {
                        return Action.CommitMessage;
                    }
 
                    if (dto.getType() == OrderMoneyRecievedMQMsg.TYPE_ZIGOU) {// 自购到账
                        // 会员升级-自购订单数量验证
                        userVIPPreInfoService.upgradeVipByMyOrder(dto.getUid());
                    } else if (dto.getType() == OrderMoneyRecievedMQMsg.TYPE_SHARE) {// 分享到账
                        // 会员升级-分享订单数量验证
                        userVIPPreInfoService.upgradeVipByMyOrder(dto.getUid());
                    }
                }
            } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderConfirm.name())) {
                OrderConfirmMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderConfirmMQMsg.class);
                if (dto != null) {
                    for (Long fuid : Constant.NO_UPGRADE_UIDS) {// 禁止不能升级的用户升级
                        if (dto.getSourceUid().longValue() == fuid)
                            return Action.CommitMessage;
                    }
 
                    // 会员等级升级-粉丝数量验证
                    userVIPPreInfoService.upgradeVipByTeamNum(dto.getSourceUid());
                    userInviteValidNumService.addValidTeamNum(dto.getSourceUid(), dto.getSettleMent(),
                            dto.getPlaceOrderTime());
                }
            }
        }
 
        return Action.CommitMessage;
    }
}