From 2147d023563a7c9d05d97547c00d6b0162c0644c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 09 十一月 2020 18:37:24 +0800
Subject: [PATCH] 刷单风险规则优化

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/shop/BanLiShopOrderServiceImpl.java |   37 +++++++++++++++++++++----------------
 1 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/shop/BanLiShopOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/shop/BanLiShopOrderServiceImpl.java
index 614fb40..5e5e70f 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/shop/BanLiShopOrderServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/shop/BanLiShopOrderServiceImpl.java
@@ -40,11 +40,13 @@
 import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
 import com.yeshi.fanli.service.inter.mq.MQUnSendInfoService;
 import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService;
+import com.yeshi.fanli.service.inter.redpack.RedPackForbidService;
 import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsClassService;
 import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsService;
 import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsSetPayService;
 import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsSetService;
 import com.yeshi.fanli.service.inter.shop.BanLiShopOrderService;
+import com.yeshi.fanli.service.manger.msg.RocketMQManager;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.factory.RedPackDetailFactory;
 import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
@@ -73,8 +75,8 @@
 	@Resource
 	private RedPackBalanceService redPackBalanceService;
 
-	@Resource(name = "producer")
-	private Producer producer;
+	@Resource
+	private RocketMQManager rocketMQManager;
 
 	@Resource
 	private MQUnSendInfoService mqUnSendInfoService;
@@ -91,7 +93,10 @@
 	@Resource
 	private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
 
-	@Transactional
+	@Resource
+	private RedPackForbidService redPackForbidService;
+
+	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void addOrder(BanLiShopOrder order) throws BanLiShopOrderException {
 		// 鏌ヨ蹇呰鐨勫弬鏁版槸鍚︽坊鍔�
@@ -176,7 +181,8 @@
 		msg.setKey(orderId + "");
 		long delayTime = System.currentTimeMillis() + (Constant.IS_TEST ? 1000 * 30L : 1000 * 60 * 10);// 10鍒嗛挓鍚庨�氱煡
 		msg.setStartDeliverTime(delayTime);
-		SendResult sendResult = producer.send(msg);
+		
+		SendResult sendResult =	rocketMQManager.sendNormalMsg(msg,  Constant.IS_TEST ? 1000 * 30L : 1000 * 60 * 10L, orderId + "");
 		if (sendResult == null) {
 			MQUnSendInfo info = new MQUnSendInfo();
 			info.setBody(new String(msg.getBody()));
@@ -219,7 +225,7 @@
 		banLiShopOrderMapper.updateByPrimaryKeySelective(order);
 	}
 
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void payOrderByHongBao(Long orderId) throws BanLiShopOrderException, RedPackBalanceException {
 		BanLiShopOrder order = banLiShopOrderMapper.selectByPrimaryKeyForUpdate(orderId);
@@ -324,6 +330,7 @@
 		return banLiShopOrderMapper.selectByPrimaryKeyForUpdate(id);
 	}
 
+	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void invalidOrderByOrderId(Long id, String desc) {
 		// 鍒ゆ柇璁㈠崟鏄惁瀛樺湪
@@ -342,9 +349,9 @@
 					if (isS)// 鏀粯鎴愬姛锛岄噸鏂板彂閫佹敮浠樻垚鍔熸秷鎭�
 					{
 						BanLiShopOrderMQMsg msg = new BanLiShopOrderMQMsg(order.getId(), order.getUid());
-						Message message =MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER,
-								OrderTopicTagEnum.banLiShopOrderPaid,msg);
-						producer.send(message);
+						Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER,
+								OrderTopicTagEnum.banLiShopOrderPaid, msg);
+						rocketMQManager.sendNormalMsg(message, null);
 						return;
 					}
 
@@ -374,8 +381,8 @@
 		if (order.getState() != BanLiShopOrder.STATE_PAID)
 			throw new BanLiShopOrderException(1, "璁㈠崟鏈浜庡緟瀹℃牳鐘舵��");
 
-		Message message =MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.banLiShopOrderRefund,
-			new BanLiShopOrderMQMsg(order.getId(), order.getUid()));
+		Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER, OrderTopicTagEnum.banLiShopOrderRefund,
+				new BanLiShopOrderMQMsg(order.getId(), order.getUid()));
 		try {
 			orderTransactionProducer.send(message, new LocalTransactionExecuter() {
 				@Override
@@ -435,13 +442,11 @@
 			throw new BanLiShopOrderException(22, "鍟嗗搧宸蹭笅绾�");
 		}
 
+		if (redPackForbidService.verifyForbid(uid))
+			throw new BanLiShopOrderException(25, "绾㈠寘鍔熻兘宸茶灏佺");
+
 		if (pay.getHongBaoPrice() != null && pay.getHongBaoPrice().compareTo(new BigDecimal(0)) > 0) {
-			BigDecimal money = null;
-			try {
-				money = redPackBalanceService.getBalance(uid);
-			} catch (RedPackBalanceException e) {
-				throw new BanLiShopOrderException(25, "绾㈠寘鍔熻兘寮傚父");
-			}
+			BigDecimal money = redPackBalanceService.getBalance(uid);
 			if (money.compareTo(pay.getHongBaoPrice()) < 0) {
 				throw new BanLiShopOrderException(24, "绾㈠寘浣欓涓嶈冻");
 			}

--
Gitblit v1.8.0