From c6b718c3cadf5e5fff4c2a47fd1247842439f8c7 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期三, 15 四月 2020 10:45:18 +0800
Subject: [PATCH] 团队消息
---
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/InviteOrderSubsidyMessageListener.java | 162 ++++++++++++++++++------------------------------------
1 files changed, 54 insertions(+), 108 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..e1881d6 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
@@ -11,22 +11,22 @@
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
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.entity.bus.user.UserSystemCouponRecord;
-import com.yeshi.fanli.entity.mq.MQUnSendInfo;
-import com.yeshi.fanli.entity.system.SystemCoupon;
+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.TeamRewardPreRecieveMQMsg;
+import com.yeshi.fanli.exception.ParamsException;
import com.yeshi.fanli.exception.money.OrderMoneySettleException;
-import com.yeshi.fanli.exception.mq.MQUnSendInfoException;
+import com.yeshi.fanli.exception.money.TeamEincomeRecordException;
+import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.exception.order.InviteOrderSubsidyException;
+import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.mq.MQUnSendInfoService;
-import com.yeshi.fanli.service.inter.order.InviteOrderSubsidyService;
+import com.yeshi.fanli.service.inter.order.CommonOrderService;
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.service.manger.order.TeamSubsidyManager;
+import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
/**
@@ -38,7 +38,7 @@
@Component
public class InviteOrderSubsidyMessageListener implements MessageListener {
@Resource
- private InviteOrderSubsidyService inviteOrderSubsidyService;
+ private TeamSubsidyManager teamSubsidyManager;
@Resource
private UserSystemCouponRecordService userSystemCouponRecordService;
@@ -52,122 +52,68 @@
@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) {// 鑷喘鍒拌处
- // 鍒ゆ柇璁㈠崟鍙锋槸鍚﹀湪琛ヨ创涓�
- long count = inviteOrderSubsidyService.countByOrderIdAndSourceType(dto.getOrderId(),
- dto.getSourceType());
- if (count > 0) {// 寤舵椂娑堟伅鍙戦��
- sendOrderSubsidyUpdateLater(dto, 5);
- }
- } else if (dto.getType() == OrderMoneyRecievedMQMsgDTO.TYPE_INVITE) {// 閭�璇峰埌璐�
- // 琛ヨ创鍒拌处
+ // 鏌ヨ鍑鸿鍗曞垱寤烘椂闂�
+ Date orderTime = commonOrderService.getThirdCreateTime(dto.getOrderId(), dto.getType());
+ if (orderTime.getTime() >= TEAM_REWARD_START_TIME) {
try {
- orderMoneySettleService.inviteSubsidySettle(dto.getUid(), message.getKey());
+ teamSubsidyManager.addOrUpdateOrder(dto.getOrderId(), dto.getType());
return Action.CommitMessage;
- } catch (OrderMoneySettleException e) {
+ } catch (InviteOrderSubsidyException 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 {
+ teamSubsidyManager.addOrUpdateOrder(dto.getOrderId(), dto.getType());
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e, new Gson().toJson(dto), "");
return Action.ReconsumeLater;
}
}
}
- } else if (message.getTag().equalsIgnoreCase("delay")) {
- OrderMoneyRecievedMQMsgDTO dto = new Gson().fromJson(new String(message.getBody()),
- OrderMoneyRecievedMQMsgDTO.class);
- if (dto != null) {
- if (dto.getType() == OrderMoneyRecievedMQMsgDTO.TYPE_ZIGOU) {// 寤舵椂鏃堕棿宸插埌
- // 鍒ゆ柇璁㈠崟鍙锋槸鍚﹀湪琛ヨ创涓�
- long count = inviteOrderSubsidyService.countByOrderIdAndSourceType(dto.getOrderId(),
- dto.getSourceType());
- if (count > 0) {
- // 鍒ゆ柇鏄惁瑕佷娇鐢ㄥ鍔卞埜
- UserSystemCouponRecord record = userSystemCouponRecordService
- .getRecordByOrderNo(dto.getOrderId(), UserSystemCouponRecord.STATE_SUCCESS);
- if (record != null
- && record.getCouponType()
- .equalsIgnoreCase(SystemCoupon.CouponTypeEnum.rebatePercentCoupon.name())
- && record.getGoodSource() == dto.getSourceType()) {// 鎴愬姛浣跨敤浜嗗鍔卞埜
- inviteOrderSubsidyService.invalidByOrderIdAndSourceType(dto.getOrderId(),
- dto.getSourceType());
- } else {
- // 浣挎暟鎹湁鏁�
- inviteOrderSubsidyService.validByOrderIdAndSourceType(dto.getOrderId(),
- dto.getSourceType());
- }
- }
- }
+ } else if (tag.equalsIgnoreCase(OrderTopicTagEnum.teamRewardPreRecieved.name())) {// 鍥㈤槦濂栭噾棰勫埌璐�
+ TeamRewardPreRecieveMQMsg dto = new Gson().fromJson(new String(message.getBody()),
+ TeamRewardPreRecieveMQMsg.class);
+ try {
+ teamSubsidyManager.addToTeamEincome(dto.getUid(), message.getKey(), dto.getPreGetTime());
+ return Action.CommitMessage;
+ } catch (OrderMoneySettleException e) {
+ e.printStackTrace();
+ } catch (TeamEincomeRecordException e) {
+ e.printStackTrace();
+ } catch (ParamsException e) {
+ e.printStackTrace();
}
- }
- } 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());
- }
- return Action.CommitMessage;
+ return Action.ReconsumeLater;
}
}
return Action.CommitMessage;
}
-
- /**
- * 鍙戦�佽鍗曞欢鏃舵秷鎭�
- *
- * @param day
- */
- private boolean sendOrderSubsidyUpdateLater(OrderMoneyRecievedMQMsgDTO dto, int day) {
-
- Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "delay", new Gson().toJson(dto).getBytes());
- msg.setKey(dto.getSourceType() + "_" + dto.getOrderId());
- long delayTime = System.currentTimeMillis() + 1000 * 60 * 60 * 24L * day;
- msg.setStartDeliverTime(delayTime);
- SendResult sendResult = producer.send(msg);
- if (sendResult != null) {
- return true;
- } else {
- MQUnSendInfo info = new MQUnSendInfo();
- info.setBody(new String(msg.getBody()));
- if (msg.getStartDeliverTime() > 0)
- info.setDeliverTime(new Date(msg.getStartDeliverTime()));
- info.setKey(msg.getKey());
- info.setTag(msg.getTag());
- info.setTopic(msg.getTopic());
- try {
- mqUnSendInfoService.addMQUnSendInfo(info);
- } catch (MQUnSendInfoException e) {
- e.printStackTrace();
- }
- return false;
- }
- }
-
}
--
Gitblit v1.8.0