From f15acf7f2d57db3a32c574b0dfc21f564dca6024 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 24 三月 2020 12:01:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div
---
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/InviteOrderSubsidyMessageListener.java | 157 +++++++++++++++++++++++++++++++++++++--------------
1 files changed, 113 insertions(+), 44 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/InviteOrderSubsidyMessageListener.java b/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/InviteOrderSubsidyMessageListener.java
index 469a4cf..72af241 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/InviteOrderSubsidyMessageListener.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/InviteOrderSubsidyMessageListener.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.util.rocketmq.consumer.order;
import java.util.Date;
+import java.util.List;
import javax.annotation.Resource;
@@ -13,20 +14,30 @@
import com.aliyun.openservices.ons.api.Producer;
import com.aliyun.openservices.ons.api.SendResult;
import com.google.gson.Gson;
-import com.yeshi.fanli.dto.order.OrderMQMsgDTO;
-import com.yeshi.fanli.dto.order.OrderMoneyRecievedMQMsgDTO;
-import com.yeshi.fanli.dto.user.coupon.UserSystemCouponUseMQMsgDTO;
+import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
+import com.yeshi.fanli.dto.mq.order.body.OrderMQMsg;
+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.UserSystemCouponUseMQMsg;
import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord;
import com.yeshi.fanli.entity.mq.MQUnSendInfo;
+import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.system.SystemCoupon;
import com.yeshi.fanli.exception.money.OrderMoneySettleException;
import com.yeshi.fanli.exception.mq.MQUnSendInfoException;
+import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.exception.order.InviteOrderSubsidyException;
+import com.yeshi.fanli.exception.order.OrderTeamRewardException;
+import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.mq.MQUnSendInfoService;
+import com.yeshi.fanli.service.inter.order.CommonOrderService;
import com.yeshi.fanli.service.inter.order.InviteOrderSubsidyService;
+import com.yeshi.fanli.service.inter.order.InviteOrderSubsidyServiceV2;
import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.TimeUtil;
+import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
/**
@@ -41,6 +52,9 @@
private InviteOrderSubsidyService inviteOrderSubsidyService;
@Resource
+ private InviteOrderSubsidyServiceV2 inviteOrderSubsidyServiceV2;
+
+ @Resource
private UserSystemCouponRecordService userSystemCouponRecordService;
@Resource(name = "producer")
@@ -52,40 +66,67 @@
@Resource
private OrderMoneySettleService orderMoneySettleService;
+ @Resource
+ private CommonOrderService commonOrderService;
+
+ // 鍥㈤槦濂栧姳寮�濮嬫椂闂�
+ private static final long TEAM_REWARD_START_TIME = TimeUtil.convertToTimeTemp("2019-04-15", "yyyy-MM-dd");
+
public InviteOrderSubsidyMessageListener() {
}
@Override
public Action consume(Message message, ConsumeContext context) {
-
- if (!Constant.IS_TASK) {// 闈炰换鍔℃湇鍔″櫒涓嶈兘娑堣垂娑堟伅
- return Action.ReconsumeLater;
- }
+ LogHelper.mqInfo("consumer:InviteOrderSubsidyMessageListener", message.getMsgID(), message.getTopic(),
+ message.getTag(), new String(message.getBody()));
+ String tag = message.getTag();
if (MQTopicName.TOPIC_ORDER.name().equalsIgnoreCase(message.getTopic())) {
- // 鏌ヨ涓婄骇绾㈠寘
- OrderMQMsgDTO dto = new Gson().fromJson(new String(message.getBody()), OrderMQMsgDTO.class);
- if (dto != null) {
- try {
- inviteOrderSubsidyService.addOrUpdateByOrder(dto.getOrderId(), dto.getType());
- } catch (InviteOrderSubsidyException e) {
- return Action.ReconsumeLater;
- }
- }
- } else if (MQTopicName.TOPIC_FANLI.name().equalsIgnoreCase(message.getTopic())) {
- if (message.getTag().equalsIgnoreCase("actual")) {
- OrderMoneyRecievedMQMsgDTO dto = new Gson().fromJson(new String(message.getBody()),
- OrderMoneyRecievedMQMsgDTO.class);
+ if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderStatistic.name())
+ || tag.equalsIgnoreCase(OrderTopicTagEnum.orderUpdate.name())) {
+ // 鏌ヨ涓婄骇绾㈠寘
+ OrderMQMsg dto = new Gson().fromJson(new String(message.getBody()), OrderMQMsg.class);
if (dto != null) {
- if (dto.getType() == OrderMoneyRecievedMQMsgDTO.TYPE_ZIGOU) {// 鑷喘鍒拌处
+ // 鏌ヨ鍑鸿鍗曞垱寤烘椂闂�
+ Date orderTime = commonOrderService.getThirdCreateTime(dto.getOrderId(), dto.getType());
+ if (orderTime.getTime() >= TEAM_REWARD_START_TIME) {
+ try {
+ inviteOrderSubsidyServiceV2.addOrUpdateByOrder(dto.getOrderId(), dto.getType());
+ return Action.CommitMessage;
+ } catch (InviteOrderSubsidyException e) {
+ e.printStackTrace();
+ LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
+ } catch (OrderTeamRewardException e) {
+ e.printStackTrace();
+ LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
+ } catch (CommonOrderException e) {
+ e.printStackTrace();
+ LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
+ }
+ return Action.ReconsumeLater;
+ } else {
+ try {
+ inviteOrderSubsidyService.addOrUpdateByOrder(dto.getOrderId(), dto.getType());
+ } catch (InviteOrderSubsidyException e) {
+ LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
+ return Action.ReconsumeLater;
+ }
+ }
+
+ }
+ } else 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) {// 鑷喘鍒拌处
// 鍒ゆ柇璁㈠崟鍙锋槸鍚﹀湪琛ヨ创涓�
long count = inviteOrderSubsidyService.countByOrderIdAndSourceType(dto.getOrderId(),
dto.getSourceType());
if (count > 0) {// 寤舵椂娑堟伅鍙戦��
sendOrderSubsidyUpdateLater(dto, 5);
}
- } else if (dto.getType() == OrderMoneyRecievedMQMsgDTO.TYPE_INVITE) {// 閭�璇峰埌璐�
+ } else if (dto.getType() == OrderMoneyRecievedMQMsg.TYPE_INVITE) {// 閭�璇峰埌璐�
// 琛ヨ创鍒拌处
try {
orderMoneySettleService.inviteSubsidySettle(dto.getUid(), message.getKey());
@@ -95,11 +136,11 @@
}
}
}
- } else if (message.getTag().equalsIgnoreCase("delay")) {
- OrderMoneyRecievedMQMsgDTO dto = new Gson().fromJson(new String(message.getBody()),
- OrderMoneyRecievedMQMsgDTO.class);
+ } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.orderFanLiDelay.name())) {
+ OrderMoneyRecievedMQMsg dto = new Gson().fromJson(new String(message.getBody()),
+ OrderMoneyRecievedMQMsg.class);
if (dto != null) {
- if (dto.getType() == OrderMoneyRecievedMQMsgDTO.TYPE_ZIGOU) {// 寤舵椂鏃堕棿宸插埌
+ if (dto.getType() == OrderMoneyRecievedMQMsg.TYPE_ZIGOU) {// 寤舵椂鏃堕棿宸插埌
// 鍒ゆ柇璁㈠崟鍙锋槸鍚﹀湪琛ヨ创涓�
long count = inviteOrderSubsidyService.countByOrderIdAndSourceType(dto.getOrderId(),
dto.getSourceType());
@@ -111,30 +152,58 @@
&& record.getCouponType()
.equalsIgnoreCase(SystemCoupon.CouponTypeEnum.rebatePercentCoupon.name())
&& record.getGoodSource() == dto.getSourceType()) {// 鎴愬姛浣跨敤浜嗗鍔卞埜
- inviteOrderSubsidyService.invalidByOrderIdAndSourceType(dto.getOrderId(),
- dto.getSourceType());
+
+ Date orderTime = commonOrderService.getThirdCreateTime(dto.getOrderId(), dto.getType());
+ if (orderTime.getTime() >= TEAM_REWARD_START_TIME) {
+ inviteOrderSubsidyServiceV2.invalidByOrderIdAndSourceType(dto.getOrderId(),
+ dto.getSourceType());
+ } else
+
+ inviteOrderSubsidyService.invalidByOrderIdAndSourceType(dto.getOrderId(),
+ dto.getSourceType());
} else {
// 浣挎暟鎹湁鏁�
- inviteOrderSubsidyService.validByOrderIdAndSourceType(dto.getOrderId(),
- dto.getSourceType());
+ try {
+ Date orderTime = commonOrderService.getThirdCreateTime(dto.getOrderId(),
+ dto.getType());
+ if (orderTime.getTime() >= TEAM_REWARD_START_TIME) {
+ inviteOrderSubsidyServiceV2.validByOrderIdAndSourceType(dto.getOrderId(),
+ dto.getSourceType());
+ } else
+
+ inviteOrderSubsidyService.validByOrderIdAndSourceType(dto.getOrderId(),
+ dto.getSourceType());
+ } catch (InviteOrderSubsidyException e) {
+ e.printStackTrace();
+ return Action.ReconsumeLater;
+ }
}
}
}
}
}
-
- } else if (MQTopicName.TOPIC_SYSTEM_COUPON_USE.name().equalsIgnoreCase(message.getTopic())) {// 濂栧姳鍒镐娇鐢ㄦ垚鍔�
- UserSystemCouponUseMQMsgDTO dto = new Gson().fromJson(new String(message.getBody()),
- UserSystemCouponUseMQMsgDTO.class);
- if (dto != null) {
- long count = inviteOrderSubsidyService.countByOrderIdAndSourceType(dto.getOrderId(),
- dto.getSourceType());
- if (count > 0) {
- // 浣跨浉鍏宠鍗曞け鏁�
- inviteOrderSubsidyService.invalidByOrderIdAndSourceType(dto.getOrderId(), dto.getSourceType());
+ } else if (MQTopicName.TOPIC_USER.name().equalsIgnoreCase(message.getTopic())) {
+ if (tag.equalsIgnoreCase(UserTopicTagEnum.useSystemCoupon.name())) {
+ UserSystemCouponUseMQMsg dto = new Gson().fromJson(new String(message.getBody()),
+ UserSystemCouponUseMQMsg.class);
+ if (dto != null && dto.getCouponType()
+ .equalsIgnoreCase(SystemCoupon.CouponTypeEnum.rebatePercentCoupon.name())) {// 杩斿埄濂栧姳鍒哥殑浣跨敤
+ long count = inviteOrderSubsidyService.countByOrderIdAndSourceType(dto.getOrderId(),
+ dto.getSourceType());
+ if (count > 0) {
+ // 浣跨浉鍏宠鍗曞け鏁�
+ Date orderTime = commonOrderService.getThirdCreateTime(dto.getOrderId(), dto.getSourceType());
+ if (orderTime.getTime() >= TEAM_REWARD_START_TIME) {
+ inviteOrderSubsidyServiceV2.invalidByOrderIdAndSourceType(dto.getOrderId(),
+ dto.getSourceType());
+ } else
+ inviteOrderSubsidyService.invalidByOrderIdAndSourceType(dto.getOrderId(),
+ dto.getSourceType());
+ }
+ return Action.CommitMessage;
}
- return Action.CommitMessage;
}
+ //
}
return Action.CommitMessage;
}
@@ -144,11 +213,11 @@
*
* @param day
*/
- private boolean sendOrderSubsidyUpdateLater(OrderMoneyRecievedMQMsgDTO dto, int day) {
+ private boolean sendOrderSubsidyUpdateLater(OrderMoneyRecievedMQMsg dto, int day) {
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "delay", new Gson().toJson(dto).getBytes());
+ Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.orderFanLiDelay, dto);
msg.setKey(dto.getSourceType() + "_" + dto.getOrderId());
- long delayTime = System.currentTimeMillis() + 1000 * 60 * 60 * 24L * day;
+ long delayTime = System.currentTimeMillis() + (Constant.IS_TEST ? 1000 * 30L : 1000 * 60 * 60 * 24L * day);
msg.setStartDeliverTime(delayTime);
SendResult sendResult = producer.send(msg);
if (sendResult != null) {
--
Gitblit v1.8.0