From e56237a31ca70bc6bb1ba8ffab12a0bea90cddb3 Mon Sep 17 00:00:00 2001
From: yujian <yujian>
Date: 星期一, 22 四月 2019 17:40:09 +0800
Subject: [PATCH] 免单券使用记录查询优化

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java |   73 +++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 26 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java
index 945f3a3..87baa53 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoWeiQuanDrawBackServiceImpl.java
@@ -13,7 +13,6 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.yeshi.fanli.dao.mybatis.AccountDetailsMapper;
 import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper;
 import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
 import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper;
@@ -21,10 +20,10 @@
 import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanDrawBackMapper;
-import com.yeshi.fanli.entity.bus.user.AccountDetails;
 import com.yeshi.fanli.entity.bus.user.HongBaoV2;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.money.UserMoneyDetail;
+import com.yeshi.fanli.entity.order.CommonOrder;
 import com.yeshi.fanli.entity.order.HongBaoOrder;
 import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack;
@@ -32,13 +31,13 @@
 import com.yeshi.fanli.exception.TaoBaoWeiQuanException;
 import com.yeshi.fanli.exception.money.UserMoneyDetailException;
 import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService;
 import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService;
 import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService;
 import com.yeshi.fanli.service.inter.user.UserNotificationService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.factory.AccountDetailsFactory;
 import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
 import com.yeshi.fanli.vo.order.CommonOrderVO;
 
@@ -60,9 +59,6 @@
 	private UserMoneyDetailMapper userMoneyDetailMapper;
 
 	@Resource
-	private AccountDetailsMapper accountDetailsMapper;
-
-	@Resource
 	private UserNotificationService userNotificationService;
 
 	@Resource
@@ -73,6 +69,9 @@
 
 	@Resource
 	private HongBaoOrderMapper hongBaoOrderMapper;
+
+	@Resource
+	private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
 
 	@Override
 	public void addWeiQuanDrawBack(TaoBaoWeiQuanDrawBack taoBaoWeiQuanDrawBack) {
@@ -96,6 +95,9 @@
 		for (TaoBaoOrder order : orderList)
 			if (order.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻"))
 				sumFee = sumFee.add(order.geteIncome());
+		if (new BigDecimal(0).compareTo(sumFee) == 0)
+			throw new TaoBaoWeiQuanException(TaoBaoWeiQuanException.CODE_NEDD_UPDATE_ORDER, "闇�瑕佹洿鏂拌鍗�");
+
 		// 鑾峰彇鍜岃璁㈠崟鍙锋湁鍏宠仈鐨勭敤鎴�
 		// 鑾峰彇涓荤孩鍖�(鍚屼竴涓鍗曞彿鐨勫崟鍙細瀵瑰簲鍚屼竴涓敤鎴�)
 		List<CommonOrderVO> typeList = new ArrayList<>();
@@ -104,18 +106,26 @@
 		cv.setOrderNo(orderId);
 		typeList.add(cv);
 
-		List<CommonOrderVO> commonOrderList = commonOrderMapper.listByOrderNoAndType(typeList);
+		List<CommonOrderVO> commonOrderList = commonOrderMapper.listOrderGoodsInfo(typeList);
 		List<HongBaoV2> mainHongBaoList = new ArrayList<>();
 		if (commonOrderList != null)
 			for (CommonOrderVO vo : commonOrderList) {
+				// 淇敼璁㈠崟鐘舵�佷负缁存潈
+				CommonOrder co = new CommonOrder(vo.getId());
+				co.setState(CommonOrder.STATE_WQ);
+				co.setUpdateTime(new Date());
+				commonOrderMapper.updateByPrimaryKeySelective(co);
+
 				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId());
 				mainHongBaoList.add(hongBaoOrder.getHongBaoV2());
 			}
 		if (mainHongBaoList == null || mainHongBaoList.size() == 0)
 			return;
 		for (int i = 0; i < mainHongBaoList.size(); i++) {
+			HongBaoV2 hb = hongBaoV2Mapper.selectByPrimaryKey(mainHongBaoList.get(i).getId());
+			mainHongBaoList.set(i, hb);
 			// 鍙鐞嗚繑鍒╄鍗�
-			if (mainHongBaoList.get(i).getType() != HongBaoV2.TYPE_ZIGOU) {
+			if (hb.getType() != HongBaoV2.TYPE_ZIGOU) {
 				mainHongBaoList.remove(i);
 				i--;
 			}
@@ -171,15 +181,10 @@
 			// 閫�娆鹃噾棰�
 			BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(userGetMoney.multiply(fanMoney), sumFee);
 			userInfoMapper.subHongBaoByUid(uid, drawBackMoney);
-			// 娣诲姞璧勯噾璁板綍
-			AccountDetails accountDetails = AccountDetailsFactory.create("-" + drawBackMoney,
-					AccountDetailsFactory.SHARE_GOODS_DRAWBACK, null, null, new UserInfo(uid));
-			accountDetailsMapper.insertSelective(accountDetails);
 			// 鏂扮増璧勯噾璁板綍
 			try {
 				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createFanLiWeiQuan(uid, weiQuanDrawBack,
 						drawBackMoney);
-				userMoneyDetail.setId(accountDetails.getId());
 				userMoneyDetailMapper.insert(userMoneyDetail);
 			} catch (UserMoneyDetailException e) {
 				try {
@@ -188,6 +193,10 @@
 					e1.printStackTrace();
 				}
 			}
+
+			// 鏂扮増閫氱煡
+			userMoneyMsgNotificationService.fanliOrderWeiQuan(uid, orderId, drawBackMoney,
+					userInfoMapper.selectByPrimaryKey(uid).getMyHongBao());
 
 			userNotificationService.weiQuanFanli(uid, orderId, drawBackMoney);
 		}
@@ -218,10 +227,16 @@
 		cv.setOrderNo(orderId);
 		typeList.add(cv);
 
-		List<CommonOrderVO> commonOrderList = commonOrderMapper.listByOrderNoAndType(typeList);
+		List<CommonOrderVO> commonOrderList = commonOrderMapper.listOrderGoodsInfo(typeList);
 		List<HongBaoV2> mainHongBaoList = new ArrayList<>();
 		if (commonOrderList != null)
 			for (CommonOrderVO vo : commonOrderList) {
+				// 鏇存敼璁㈠崟鐘舵��
+				CommonOrder co = new CommonOrder(vo.getId());
+				co.setState(CommonOrder.STATE_WQ);
+				co.setUpdateTime(new Date());
+				commonOrderMapper.updateByPrimaryKeySelective(co);
+
 				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId());
 				mainHongBaoList.add(hongBaoOrder.getHongBaoV2());
 			}
@@ -293,15 +308,10 @@
 			// 閫�娆鹃噾棰�
 			BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(userGetMoney.multiply(fanMoney), sumFee);
 			userInfoMapper.subHongBaoByUid(uid, drawBackMoney);
-			// 娣诲姞璧勯噾璁板綍
-			AccountDetails accountDetails = AccountDetailsFactory.create("-" + drawBackMoney,
-					AccountDetailsFactory.SHARE_GOODS_DRAWBACK, null, null, new UserInfo(uid));
-			accountDetailsMapper.insertSelective(accountDetails);
 			// 鏂扮増璧勯噾璁板綍
 			try {
 				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShareWeiQuan(uid, weiQuanDrawBack,
 						drawBackMoney);
-				userMoneyDetail.setId(accountDetails.getId());
 				userMoneyDetailMapper.insert(userMoneyDetail);
 			} catch (UserMoneyDetailException e) {
 				try {
@@ -310,6 +320,9 @@
 					e1.printStackTrace();
 				}
 			}
+
+			userMoneyMsgNotificationService.shareOrderWeiQuan(uid, orderId, drawBackMoney,
+					userInfoMapper.selectByPrimaryKey(uid).getMyHongBao());
 
 			userNotificationService.weiQuanTiCheng(uid, orderId, drawBackMoney);
 		}
@@ -340,10 +353,18 @@
 		cv.setOrderNo(orderId);
 		typeList.add(cv);
 
-		List<CommonOrderVO> commonOrderList = commonOrderMapper.listByOrderNoAndType(typeList);
+		List<CommonOrderVO> commonOrderList = commonOrderMapper.listOrderGoodsInfo(typeList);
 		List<HongBaoV2> mainHongBaoList = new ArrayList<>();
 		if (commonOrderList != null)
 			for (CommonOrderVO vo : commonOrderList) {
+				CommonOrder co = commonOrderMapper.selectByPrimaryKey(vo.getId());
+				if (co.getState() != CommonOrder.STATE_WQ) {
+					co = new CommonOrder(vo.getId());
+					co.setState(CommonOrder.STATE_WQ);
+					co.setUpdateTime(new Date());
+					commonOrderMapper.updateByPrimaryKeySelective(co);
+				}
+
 				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(vo.getId());
 				mainHongBaoList.add(hongBaoOrder.getHongBaoV2());
 			}
@@ -355,6 +376,9 @@
 
 		if (mainHongBaoList != null)
 			for (HongBaoV2 hongBao : mainHongBaoList) {
+				HongBaoV2 hb = hongBaoV2Mapper.selectByPrimaryKey(hongBao.getId());
+				hongBao = hb;
+
 				if (hongBao.getState() == HongBaoV2.STATE_SHIXIAO)
 					continue;
 				// 杩斿埄绾㈠寘涓嶈鍏�
@@ -412,16 +436,11 @@
 			// 閫�娆鹃噾棰�
 			BigDecimal drawBackMoney = MoneyBigDecimalUtil.div(userGetMoney.multiply(fanMoney), sumFee);
 			userInfoMapper.subHongBaoByUid(uid, drawBackMoney);
-			// 娣诲姞璧勯噾璁板綍
-			AccountDetails accountDetails = AccountDetailsFactory.create("-" + drawBackMoney,
-					AccountDetailsFactory.SHARE_GOODS_DRAWBACK, null, null, new UserInfo(uid));
-			accountDetailsMapper.insertSelective(accountDetails);
 
 			// 鏂扮増璧勯噾璁板綍
 			try {
 				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInviteWeiQuan(uid, weiQuanDrawBack,
 						drawBackMoney);
-				userMoneyDetail.setId(accountDetails.getId());
 				userMoneyDetailMapper.insert(userMoneyDetail);
 			} catch (UserMoneyDetailException e) {
 				try {
@@ -431,7 +450,9 @@
 				}
 			}
 
-			//
+			// 鏂扮増閫氱煡
+			userMoneyMsgNotificationService.inviteOrderWeiQuan(uid, orderId, drawBackMoney,
+					userInfoMapper.selectByPrimaryKey(uid).getMyHongBao());
 
 			userNotificationService.weiQuanTiCheng(uid, orderId, drawBackMoney);
 		}

--
Gitblit v1.8.0