From c338aa60df58bee9f4c25afedf94fe6930a119c1 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 29 七月 2020 19:01:56 +0800
Subject: [PATCH] SpringContext中的循环任务优化,添加业务监控

---
 fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserVIPMessageListener.java |  175 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 131 insertions(+), 44 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserVIPMessageListener.java b/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserVIPMessageListener.java
index a523b45..abd2465 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserVIPMessageListener.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/user/UserVIPMessageListener.java
@@ -2,6 +2,10 @@
 
 import javax.annotation.Resource;
 
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.SystemFunction;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.util.SystemInfoUtil;
 import org.springframework.stereotype.Component;
 
 import com.aliyun.openservices.ons.api.Action;
@@ -10,60 +14,143 @@
 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.UserInviteMQMsg;
-import com.yeshi.fanli.exception.money.OrderMoneySettleException;
+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.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
  *
+ * @author Administrator
  */
-//@Component implements MessageListener
-public class UserVIPMessageListener  {
+@Component
+public class UserVIPMessageListener implements MessageListener {
 
-	@Resource
-	private UserVIPPreInfoService userVIPPreInfoService;
+    @Resource
+    private UserVIPPreInfoService userVIPPreInfoService;
 
-//	@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 (MQTopicName.TOPIC_USER.name().equalsIgnoreCase(message.getTopic())) {
-//			// 閭�璇锋垚鍔�
-//			if (tag.equalsIgnoreCase(UserTopicTagEnum.inviteSuccess.name())) {
-//				UserInviteMQMsg msg = new Gson().fromJson(new String(message.getBody()),UserInviteMQMsg.class);
-//				// 浼氬憳绛夌骇鍗囩骇
-//				userVIPPreInfoService.verifyVipPreInfo(msg.getBossId(), true);
-//			}
-//		}
-//		
-//		// 璁㈠崟鍒拌处鐩稿叧
-//		if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderFanLiActual.name())) {
-//			OrderMoneyRecievedMQMsg dto = new Gson().fromJson(new String(message.getBody()),
-//					OrderMoneyRecievedMQMsg.class);
-//			if (dto != null) {
-//				if (dto.getType() == OrderMoneyRecievedMQMsg.TYPE_ZIGOU) {// 鑷喘鍒拌处
-//					// 浼氬憳绛夌骇鍗囩骇
-//					userVIPPreInfoService.verifyVipPreInfo(dto.getUid(), false);
-//				} else if (dto.getType() == OrderMoneyRecievedMQMsg.TYPE_SHARE) {// 鍒嗕韩鍒拌处
-//					// 浼氬憳绛夌骇鍗囩骇
-//					userVIPPreInfoService.verifyVipPreInfo(dto.getUid(), false);
-//				}
-//			}
-//		}
-//		
-//		return Action.CommitMessage;
-//	}
+    @Resource
+    private TeamUserLevelStatisticService teamUserLevelStatisticService;
+
+    @Resource
+    private ThreeSaleSerivce threeSaleSerivce;
+
+    @Resource
+    private UserInviteValidNumService userInviteValidNumService;
+
+    @Resource
+    private UserActiveLogService userActiveLogService;
+
+    @Resource
+    private UserInfoService userInfoService;
+
+
+    @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);
+
+                //鍒ゆ柇绯荤粺鏄惁鏈変笁绾у垎閿�鍔熻兘
+                Long sourceUid = msg.getUid();
+                SystemEnum system = userInfoService.getUserSystem(sourceUid);
+                if (!SystemInfoUtil.hasFunctions(system, SystemFunction.threeSale, SystemFunction.vip))
+                    return Action.CommitMessage;
+
+                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());
+                    }
+                }
+                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) {
+                    SystemEnum system = userInfoService.getUserSystem(dto.getUid());
+                    if (!SystemInfoUtil.hasFunctions(system, SystemFunction.vip))
+                        return Action.CommitMessage;
+                    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) {
+                    SystemEnum system = userInfoService.getUserSystem(dto.getSourceUid());
+                    if (!SystemInfoUtil.hasFunctions(system, SystemFunction.vip))
+                        return Action.CommitMessage;
+                    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;
+    }
 }

--
Gitblit v1.8.0