From 733281fcb5f1ab01e1196b542b7e07b49b3e44c4 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 25 十月 2019 17:02:55 +0800
Subject: [PATCH] 订单消息,返利消息,返利券使用,邀请订单补贴

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java |  552 ++++++++----------------------------------------------
 1 files changed, 89 insertions(+), 463 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
index 8ffe63e..887ecca 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -2,7 +2,6 @@
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -10,6 +9,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 
 import javax.annotation.Resource;
 
@@ -29,9 +29,9 @@
 import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
 import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
 import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
-import com.yeshi.fanli.dto.HongBao;
 import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO;
 import com.yeshi.fanli.dto.order.OrderMQMsgDTO;
+import com.yeshi.fanli.dto.order.OrderMoneyRecievedMQMsgDTO;
 import com.yeshi.fanli.entity.bus.user.HongBaoV2;
 import com.yeshi.fanli.entity.bus.user.Order;
 import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
@@ -49,6 +49,7 @@
 import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack;
 import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
+import com.yeshi.fanli.exception.money.OrderMoneySettleException;
 import com.yeshi.fanli.exception.money.UserMoneyDetailException;
 import com.yeshi.fanli.exception.order.CommonOrderException;
 import com.yeshi.fanli.exception.order.HongBaoException;
@@ -64,6 +65,7 @@
 import com.yeshi.fanli.service.inter.order.CommonOrderService;
 import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
 import com.yeshi.fanli.service.inter.order.LostOrderService;
+import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
 import com.yeshi.fanli.service.inter.order.OrderProcessService;
 import com.yeshi.fanli.service.inter.order.jd.JDOrderService;
 import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService;
@@ -78,12 +80,12 @@
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TaoBaoConstant;
 import com.yeshi.fanli.util.TimeUtil;
-import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager;
 import com.yeshi.fanli.util.cmq.PlaceOrderCMQManager;
 import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
 import com.yeshi.fanli.util.jd.JDApiUtil;
 import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
-import com.yeshi.fanli.util.taobao.TaoKeOrderApiUtil;
+import com.yeshi.fanli.util.rocketmq.MQTagConstant;
+import com.yeshi.fanli.util.rocketmq.MQTopicName;
 
 @Service
 public class OrderProcessServiceImpl implements OrderProcessService {
@@ -147,6 +149,9 @@
 
 	@Resource(name = "orderTransactionProducer")
 	private TransactionProducer orderTransactionProducer;
+
+	@Resource
+	private OrderMoneySettleService orderMoneySettleService;
 
 	/**
 	 * 鏄惁鏄垎浜鍗�
@@ -361,12 +366,7 @@
 			return;
 		}
 
-		if (hongBaoOrder.getCommonOrder() == null) {// ||
-													// hongBaoOrder.getCommonOrder().getSourceType()
-													// ==
-													// Constant.SOURCE_TYPE_JD
-			// || hongBaoOrder.getCommonOrder().getSourceType() ==
-			// Constant.SOURCE_TYPE_PDD
+		if (hongBaoOrder.getCommonOrder() == null) {
 			return;
 		}
 
@@ -390,134 +390,29 @@
 				return;
 		}
 
-		// 鏌ヨ鍚屼竴璁㈠崟鍙风殑绾㈠寘
-		List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(
-				hongBaoOrder.getCommonOrder().getSourceType(), hongBaoOrder.getCommonOrder().getOrderNo());
-		List<HongBaoV2> hongBaoList = new ArrayList<>();
-		Map<Long, BigDecimal> userMoney = new HashMap<>();
-		Map<Long, List<HongBaoV2>> userHongBao = new HashMap<>();
-		Map<Long, Integer> userGoodsCount = new HashMap<>();
-		// Map<Long, BigDecimal> userPayMent = new HashMap<>();
-		for (CommonOrder co : orderList) {
-			hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId());
-			hongBaoList.add(hongBaoOrder.getHongBaoV2());
-			Long uid = co.getUserInfo().getId();
-			if (userGoodsCount.get(uid) == null)
-				userGoodsCount.put(uid, co.getCount());
-			else
-				userGoodsCount.put(uid, Integer.valueOf(co.getCount() + userGoodsCount.get(uid)));
-			// if (userPayMent.get(uid) == null)
-			// userPayMent.put(uid, new BigDecimal(0));
-			// if (co.getState() == CommonOrder.STATE_JS)
-			// userPayMent.put(uid,
-			// userPayMent.get(uid).add(co.getSettlement()));
-			// else
-			// userPayMent.put(uid, userPayMent.get(uid).add(co.getPayment()));
-		}
-
-		for (HongBaoV2 hb : hongBaoList) {
-			long currentTimeMillis = System.currentTimeMillis();
-			if (hb.getState() != HongBao.STATE_SHIXIAO) {
-				// 璁剧疆涓哄凡杩斿埄
-				// 澶勭悊涓荤孩鍖�
-				if (hb.getState() != HongBaoV2.STATE_SHIXIAO && hb.getState() != HongBaoV2.STATE_YILINGQU
-						&& hb.getType() == HongBaoV2.TYPE_ZIGOU) {
-					// 濡傛灉绾㈠寘娌¤棰嗗彇
-					Long uid = hb.getUserInfo().getId();
-					HongBaoV2 updateHongBao = new HongBaoV2();
-					updateHongBao.setId(hb.getId());
-					updateHongBao.setState(HongBaoV2.STATE_YILINGQU);
-					updateHongBao.setGetTime(new Date(currentTimeMillis));
-					hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao);
-					if (userMoney.get(uid) == null)
-						userMoney.put(uid, hb.getMoney());
-					else
-						userMoney.put(uid, userMoney.get(uid).add(hb.getMoney()));
-
-					// 娣诲姞绾㈠寘鍒扮敤鎴�
-					if (userHongBao.get(uid) == null)
-						userHongBao.put(uid, new ArrayList<>());
-					userHongBao.get(uid).add(hb);
-				}
-			}
-		}
-
-		Iterator<Long> its = userMoney.keySet().iterator();
-
-		while (its.hasNext()) {
-			// 灏嗚嚜宸辨坊鍔犲埌鐢ㄦ埛
-			Long uid = its.next();
-			BigDecimal money = userMoney.get(uid);
-			UserMoneyDetail userMoneyDetail = null;
-			// 鎻掑叆鏂扮増璧勯噾鏄庣粏
-			try {
-				// 姝ゅ涓嶇敤璁㈠崟鍙峰仛鍞竴鎬х储寮�
-				userMoneyDetail = UserMoneyDetailFactory.createFanLi(uid, hongBaoOrder.getCommonOrder().getOrderNo(),
-						hongBaoOrder.getCommonOrder().getSourceType(), null, money);
-			} catch (UserMoneyDetailException e1) {
-				try {
-					LogHelper.errorDetailInfo(e1, "璁㈠崟鍙�:" + hongBaoOrder.getCommonOrder().getOrderNo(), "");
-				} catch (Exception e2) {
-					e2.printStackTrace();
-				}
-			}
-
-			userMoneyService.addUserMoney(uid, money, userMoneyDetail);
-			// 娣诲姞璧勯噾鏄庣粏涓庣孩鍖呯殑鏄犲皠鍏崇郴
-			for (HongBaoV2 v2 : userHongBao.get(uid)) {
-				accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), userMoneyDetail.getId());
-				try {
-					HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(v2.getId());
-				} catch (Exception e) {
-					LogHelper.errorDetailInfo(e);
-				}
-			}
-
-			// 绔欏唴淇�+鎺ㄩ��
-			UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
-
-			// 鏂扮増閫氱煡
-			userMoneyMsgNotificationService.fanliOrderReceived(uid, hongBaoOrder.getCommonOrder().getOrderNo(),
-					hongBaoOrder.getCommonOrder().getSourceType(), userGoodsCount.get(uid), money, user.getMyHongBao());
-		}
-		// 閫氱煡鍏嶅崟鍒拌处
+		// 鑷喘鍒拌处浜嬪姟娑堟伅
+		OrderMoneyRecievedMQMsgDTO mqMsg = new OrderMoneyRecievedMQMsgDTO(OrderMoneyRecievedMQMsgDTO.TYPE_ZIGOU,
+				mainUser.getId(), hongBaoOrder.getCommonOrder().getSourceType(),
+				hongBaoOrder.getCommonOrder().getOrderNo(), null, new Date());
+		Message msg = new Message(MQTopicName.TOPIC_FANLI.name(), "actual", new Gson().toJson(mqMsg).getBytes());
+		String key = mainUser.getId() + "-" + UUID.randomUUID().toString();
+		msg.setKey(key);
 		try {
-			userSystemCouponService.updateStateByArrivalAccount(hongBaoOrder.getCommonOrder().getOrderNo());
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		// 缁存潈鎵f锛�2018-08-05鍚庡紑濮嬪疄琛岋級
-		if (hongBaoOrder.getCommonOrder().getSettleTime() != null && hongBaoOrder.getCommonOrder().getSettleTime()
-				.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) {
-			try {
-				if (hongBaoOrder.getCommonOrder().getSourceType() == Constant.SOURCE_TYPE_TAOBAO)
-					taoBaoWeiQuanDrawBackService.doWeiQuanFanli(hongBaoOrder.getCommonOrder().getOrderNo());
-			} catch (TaoBaoWeiQuanException e) {
-				if (e.getCode() == TaoBaoWeiQuanException.CODE_NEDD_UPDATE_ORDER) {
-					List<TaoBaoOrder> olist = taoBaoOrderService
-							.getTaoBaoOrderByOrderId(hongBaoOrder.getCommonOrder().getOrderNo());
-
-					if (olist != null && olist.size() > 0) {
-						long time = TimeUtil.convertToTimeTemp(olist.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss");
-						olist = TaoKeOrderApiUtil.getTaoBaoCommonOrderList(time, time + 1000 * 2L, 1);
-						if (olist != null && olist.size() > 0) {
-							for (int i = 0; i < olist.size(); i++) {
-								if (!olist.get(i).getOrderId()
-										.equalsIgnoreCase(hongBaoOrder.getCommonOrder().getOrderNo())) {// 鍒犻櫎鏃犲叧璁㈠崟
-									olist.remove(i);
-									i--;
-								}
-							}
-
-							taoBaoOrderService.addTaoBaoOrderList(olist);
-						}
+			orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
+				@Override
+				public TransactionStatus execute(Message arg0, Object arg1) {
+					try {
+						orderMoneySettleService.ziGouSettle(hongBaoOrder.getCommonOrder().getOrderNo(),
+								hongBaoOrder.getCommonOrder().getSourceType(), key);
+						return TransactionStatus.CommitTransaction;
+					} catch (Exception e) {
+						return TransactionStatus.RollbackTransaction;
 					}
-				} else
-					throw new TaoBaoWeiQuanException(e.getCode(), e.getMsg());
-			}
+				}
+			}, null);
+		} catch (Exception e) {
+			LogHelper.mqError(e.getMessage(), msg.getTopic(), msg.getTag(), new Gson().toJson(mqMsg));
 		}
-
 	}
 
 	@Override
@@ -598,297 +493,46 @@
 		}
 	}
 
-	private HongBaoV2 filterWeiQuanINGHongBao(HongBaoV2 hongBao) {
-
-		long hbId = hongBao.getId();
-		if (hongBao.getParent() != null) {
-			hbId = hongBao.getParent().getId();
-		}
-
-		HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByHongBaoId(hbId);
-
-		if (hongbaoOrder == null)
-			return null;
-
-		List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper
-				.selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "缁存潈鍒涘缓");
-
-		List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList1 = taoBaoWeiQuanOrderMapper
-				.selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "绛夊緟澶勭悊");
-		if ((taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0)
-				|| (taoBaoWeiQuanList1 != null && taoBaoWeiQuanList1.size() > 0)) {
-			return null;
-		}
-		return hongBao;
-	}
-
 	@Override
 	@Transactional
 	public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException {
-		List<Long> recieveHongBaoIds = new ArrayList<>();
-		/**
-		 * 澶勭悊閭�璇疯禋璁㈠崟
-		 */
-		// 鏌ヨUID鐨勯個璇疯禋璁㈠崟
-		List<Integer> types = new ArrayList<>();
-		types.add(HongBaoV2.TYPE_YIJI);
-		types.add(HongBaoV2.TYPE_ERJI);
-		long count = hongBaoV2Mapper.countCanBalanceHongBaoByTypeAndUid(types, uid);
-		List<HongBaoV2> hongBaoList = new ArrayList<>();
-		// 1000鏉℃暟鎹负1椤�
-		int page = (int) (count % 1000 == 0 ? count / 1000 : count / 1000 + 1);
-		for (int i = 0; i < page; i++) {
-			List<HongBaoV2> tempHongBaoList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, i * 1000,
-					1000);
-			if (tempHongBaoList != null && tempHongBaoList.size() > 0)
-				hongBaoList.addAll(tempHongBaoList);
-		}
-		// 鐏板害娴嬭瘯涓紝浜笢/鎷煎澶氳鍗曞垎浜�/閭�璇疯鍗曚笉杩斿埄
-		for (int i = 0; i < hongBaoList.size(); i++) {
-			HongBaoV2 item = hongBaoList.get(i);
-			if (item.getType() == HongBaoV2.TYPE_SHARE_GOODS) {
-			} else {
-				item = item.getParent();
-			}
-			if (item != null) {
-				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(item.getId());
-				if (hongBaoOrder != null && hongBaoOrder.getCommonOrder() != null) {
-					CommonOrder co = hongBaoOrder.getCommonOrder();
-					// 涓婄骇鐢ㄦ埛涓嶆槸姝e父鐢ㄦ埛锛岃鍗曞潎涓嶈兘鍒拌处
-					UserInfo userInfo = userInfoMapper.selectAvailableByPrimaryKey(co.getUserInfo().getId());
-					if (userInfo == null || userInfo.getState() != UserInfo.STATE_NORMAL) {
-						hongBaoList.remove(i);
-						i--;
-					}
-
-				}
-			}
-		}
-
-		List<Long> hbIdList = new ArrayList<>();
-
-		BigDecimal invitemoney = new BigDecimal(0);
-		Set<String> inviteOrders = new HashSet<>();
-		int inviteGoodsCount = 0;
-
-		// 闇�瑕佸垽鏂��娆剧殑璁㈠崟鍙�
-		Set<String> drawBackOrders = new HashSet<String>();
-		for (HongBaoV2 hongBao : hongBaoList) {
-			hongBao = filterWeiQuanINGHongBao(hongBao);
-			if (hongBao == null)
-				continue;
-
-			hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId());
-			if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
-				invitemoney = invitemoney.add(hongBao.getMoney());
-				HongBaoV2 updateHongBao = new HongBaoV2();
-				updateHongBao.setId(hongBao.getId());
-				updateHongBao.setGetTime(new Date());
-				updateHongBao.setState(HongBaoV2.STATE_YILINGQU);
-				updateHongBao.setUpdateTime(new Date());
-				hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao);
-				// 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚�
-				hbIdList.add(hongBao.getId());
-
-				// 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈
-
-				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getParent().getId());
-				inviteGoodsCount += hongBaoOrder.getCommonOrder().getCount();
-				inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
-
-				Date balanceTime = hongBaoOrder.getCommonOrder().getSettleTime();
-				if (balanceTime != null
-						&& balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) {
-					if (!StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getOrderNo()))
-						drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
-				}
-			}
-		}
-
-		/**
-		 * 澶勭悊涓�绾т簩绾у垎浜禋(灞炰簬閭�璇疯禋绫诲瀷)
-		 */
-
-		List<HongBaoV2> totalHongBaoList = new ArrayList<>();
-		// 鏌ヨUID鐨勪簩绾ф垨鑰呬笁绾у垎浜禋璁㈠崟
-		// TODO 鏆傛椂鏌ヨ10000鏉℃暟鎹紝鍚庨潰鍐嶅仛鍒嗛〉
-		types.clear();
-		types.add(HongBaoV2.TYPE_SHARE_YIJI);
-		types.add(HongBaoV2.TYPE_SHARE_ERJI);
-		// TODO 闇�瑕佸鐞嗚秴杩�1w鏉℃暟鎹殑璁㈠崟
-		List<HongBaoV2> hbList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, 0, 10000);
-
-		if (hbList != null && hbList.size() > 0)
-			totalHongBaoList.addAll(hbList);
-
-		for (HongBaoV2 hb : totalHongBaoList) {
-			if (hb.getState() == HongBaoV2.STATE_BUKELINGQU || hb.getState() == HongBaoV2.STATE_KELINGQU) {
-				hb = filterWeiQuanINGHongBao(hb);
-				if (hb == null)
-					continue;
-				invitemoney = invitemoney.add(hb.getMoney());
-				HongBaoV2 updateHongBao = new HongBaoV2();
-				updateHongBao.setId(hb.getId());
-				updateHongBao.setGetTime(new Date());
-				updateHongBao.setState(HongBaoV2.STATE_YILINGQU);
-				updateHongBao.setUpdateTime(new Date());
-				hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao);
-				// 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚�
-				hbIdList.add(hb.getId());
-
-				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hb.getParent().getId());
-				inviteGoodsCount += hongBaoOrder.getCommonOrder().getCount();
-				inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
-				if (!StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getOrderNo()))
-					drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
-			}
-		}
-
 		// 閭�璇疯禋鍒拌处
-		if (invitemoney.compareTo(new BigDecimal(0)) > 0) {
-
-			// 娣诲姞鏂扮増璇︽儏璁板綍
-			try {
-				// 鏌ヨ閭�璇疯禋鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗�
-				Calendar ca = Calendar.getInstance();
-				Date maxDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				ca.add(Calendar.MONTH, -1);
-
-				Date minDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				long validCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
-						minDate, maxDate);
-				long weiQuanCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
-						minDate, maxDate);
-
-				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, Constant.SOURCE_TYPE_TAOBAO,
-						(int) validCount, (int) weiQuanCount, invitemoney, new Date());
-
-				// 澧炲姞璧勯噾
-				userMoneyService.addUserMoney(uid, invitemoney, userMoneyDetail);
-				// 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚�
-				accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId());
-			} catch (UserMoneyDetailException e) {
-				try {
-					LogHelper.errorDetailInfo(e);
-				} catch (Exception e1) {
-					e1.printStackTrace();
-				}
-			}
-
-			// 鏂扮増閫氱煡
-			userMoneyMsgNotificationService.inviteOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, inviteOrders.size(),
-					inviteGoodsCount, invitemoney, userInfoMapper.selectByPrimaryKey(uid).getMyHongBao());
-
-			for (String orderId : drawBackOrders)
-				taoBaoWeiQuanDrawBackService.doWeiQuanInvite(orderId);
-		}
-		if (hbIdList.size() > 0)
-			recieveHongBaoIds.addAll(hbIdList);
-		hbIdList.clear();
-		drawBackOrders.clear();
-
-		/**
-		 * 澶勭悊鍒嗕韩璧�
-		 */
-
-		int shareGoodsCount = 0;
-		Set<String> shareOrders = new HashSet<>();
-		BigDecimal sharemoney = new BigDecimal(0);
-		// 鏌ヨUID鐨勫垎浜禋璁㈠崟
-		types.clear();
-		types.add(HongBaoV2.TYPE_SHARE_GOODS);
-		// TODO 闇�瑕佸鐞嗚秴杩�10000鏉℃暟鎹殑璁㈠崟
-		List<HongBaoV2> hongBaoShareList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, 0, 10000);
-		for (HongBaoV2 hongBao : hongBaoShareList) {
-			hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId());
-			hongBao = filterWeiQuanINGHongBao(hongBao);
-			if (hongBao == null)
-				continue;
-			if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
-				sharemoney = sharemoney.add(hongBao.getMoney());
-				HongBaoV2 updateHongBao = new HongBaoV2();
-				updateHongBao.setId(hongBao.getId());
-				updateHongBao.setGetTime(new Date());
-				updateHongBao.setState(HongBao.STATE_YILINGQU);
-				updateHongBao.setUpdateTime(new Date());
-				hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao);
-				// 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚�
-				hbIdList.add(hongBao.getId());
-				// 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈
-				Date balanceTime = null;
-				HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId());
-				if (hongBaoOrder != null) {
-					balanceTime = hongBaoOrder.getCommonOrder().getSettleTime();
-					shareGoodsCount += hongBaoOrder.getCommonOrder().getCount();
-				}
-				shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
-				if (balanceTime != null
-						&& balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) {
-					drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo());
-				}
-			}
+		try {
+			orderMoneySettleService.inviteSettleTB(uid);
+		} catch (OrderMoneySettleException e) {
+			e.printStackTrace();
 		}
 
-		/**
-		 * 鍒嗕韩璧氬埌璐�
-		 */
-
-		if (sharemoney.compareTo(new BigDecimal(0)) > 0) {
-			// 娣诲姞鏂扮増璇︽儏璁板綍
-			try {
-				// 璁$畻鏈湀鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗�
-				Calendar ca = Calendar.getInstance();
-
-				Date maxDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				ca.add(Calendar.MONTH, -1);
-
-				Date minDate = new Date(TimeUtil
-						.convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
-				long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
-						minDate, maxDate);
-				long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
-						minDate, maxDate);
-				long invalidCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_SX,
-						minDate, maxDate);
-
-				UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO,
-						(int) validCount, (int) weiQuanCount, sharemoney, new Date());
-				// 娣诲姞璧勯噾
-				userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail);
-
-				// 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚�
-				accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hbIdList, userMoneyDetail.getId());
-				if (hbIdList.size() > 0)
-					recieveHongBaoIds.addAll(hbIdList);
-			} catch (UserMoneyDetailException e) {
-				try {
-					LogHelper.errorDetailInfo(e);
-				} catch (Exception e1) {
-					e1.printStackTrace();
-				}
-			}
-
-			// 鏂扮増閫氱煡
-			userMoneyMsgNotificationService.shareOrderReceived(uid, Constant.SOURCE_TYPE_TAOBAO, shareOrders.size(),
-					shareGoodsCount, sharemoney, userInfoMapper.selectAvailableByPrimaryKey(uid).getMyHongBao());
-
-			for (String orderId : drawBackOrders)
-				taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId);
+		try {
+			orderMoneySettleService.inviteSettleJD(uid);
+		} catch (OrderMoneySettleException e) {
+			e.printStackTrace();
 		}
 
-		// 鎵�鏈夌殑杩斿埄鍒拌处绾㈠寘ID
-		for (Long hongBaoId : recieveHongBaoIds) {
-			try {
-				HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
-			} catch (Exception e) {
-				LogHelper.errorDetailInfo(e);
-			}
-
+		try {
+			orderMoneySettleService.inviteSettlePDD(uid);
+		} catch (OrderMoneySettleException e) {
+			e.printStackTrace();
 		}
 
+		// 鍒嗕韩璧氬埌璐�
+		try {
+			orderMoneySettleService.shareSettleTB(uid);
+		} catch (OrderMoneySettleException e) {
+			e.printStackTrace();
+		}
+
+		try {
+			orderMoneySettleService.shareSettleJD(uid);
+		} catch (OrderMoneySettleException e) {
+			e.printStackTrace();
+		}
+
+		try {
+			orderMoneySettleService.shareSettlePDD(uid);
+		} catch (OrderMoneySettleException e) {
+			e.printStackTrace();
+		}
 	}
 
 	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@@ -910,10 +554,20 @@
 			// 鍘熸潵涓嶅瓨鍦ㄨ鍗�
 			Long uid = null;
 			if (oldOrder == null) {
-				PidUser pidUser = null;// pidUserMapper.selectByPid(pid);
-				if (pidUser != null) {
-					uid = pidUser.getUid();
+				Long targetUid = null;
+				if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)
+						&& !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {
+					targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId());
 
+				} else if (!StringUtil.isNullOrEmpty(orderList.get(0).getSpecialId())) {
+					UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService
+							.getBySpecialId(orderList.get(0).getSpecialId());
+					if (info != null && info.getUser() != null)
+						targetUid = info.getUser().getId();
+				}
+
+				if (targetUid != null) {
+					uid = targetUid;
 					// 鎻掑叆鍒癘rder涓�
 					// 娣诲姞鍒拌鍗曚腑鍘�
 					Order order = new Order();
@@ -927,36 +581,8 @@
 					// 鍔犲叆鍒拌鍗曡〃
 					orderMapper.insertSelective(order);
 					oldOrder = order;
-				} else {
-					Long targetUid = null;
-					if (pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)
-							&& !StringUtil.isNullOrEmpty(orderList.get(0).getRelationId())) {
-						targetUid = taoBaoBuyRelationMapService.selectUidByRelationId(orderList.get(0).getRelationId());
-
-					} else if (!StringUtil.isNullOrEmpty(orderList.get(0).getSpecialId())) {
-						UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService
-								.getBySpecialId(orderList.get(0).getSpecialId());
-						if (info != null && info.getUser() != null)
-							targetUid = info.getUser().getId();
-					}
-
-					if (targetUid != null) {
-						uid = targetUid;
-						// 鎻掑叆鍒癘rder涓�
-						// 娣诲姞鍒拌鍗曚腑鍘�
-						Order order = new Order();
-						order.setBeizhu("PID杩斿埄璁㈠崟");
-						order.setCreatetime(System.currentTimeMillis());
-						order.setOrderId(orderId);
-						order.setOrderType(1);
-						order.setState(Order.STATE_YIZHIFU);
-						order.setUserInfo(new UserInfo(uid));
-						order.setVersion(2);
-						// 鍔犲叆鍒拌鍗曡〃
-						orderMapper.insertSelective(order);
-						oldOrder = order;
-					}
 				}
+
 			} else {
 				uid = oldOrder.getUserInfo().getId();
 			}
@@ -1017,21 +643,12 @@
 
 	@Override
 	public void processShareGoodsOrderNew(String orderId, List<TaoBaoOrder> orderList) {
-		List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
 		if (orderList != null && orderList.size() > 0) {
-			String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(),
-					orderList.get(0).getSourceMediaId(), orderList.get(0).getAdPositionId());
 			// 鍘熸潵涓嶅瓨鍦ㄨ鍗�
 			Long uid = null;
-			PidUser pidUser = null; // pidUserMapper.selectByPid(pid);-PID鏈哄埗绉婚櫎
-			if (pidUser != null)
-				uid = pidUser.getUid();
-			else {
-				UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService.getByRelationId(orderList.get(0).getRelationId());
-				if (info != null && info.getUser() != null)
-					uid = info.getUser().getId();
-			}
-
+			UserExtraTaoBaoInfo info = userExtraTaoBaoInfoService.getByRelationId(orderList.get(0).getRelationId());
+			if (info != null && info.getUser() != null)
+				uid = info.getUser().getId();
 			// 灏氭湭鎵惧埌鍜孭ID瀵瑰簲鐨勭敤鎴�
 			if (uid == null) {
 				// 閫氳繃绾㈠寘鏌ヨ
@@ -1502,7 +1119,7 @@
 	public List<HongBaoV2> getCanBalanceElmeFanliHongBao() {
 		List<Integer> list = new ArrayList<>();
 		list.add(HongBaoV2.TYPE_ELME);
-		return hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(list, null, 0, 1000);
+		return hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(list, null, null, 0, 1000);
 	}
 
 	@Override
@@ -1546,11 +1163,21 @@
 		// 杩斿埄鍒拌处
 	}
 
+	/**
+	 * 娣诲姞绾㈠寘涓庝簨鍔℃秷鎭�
+	 * 
+	 * @param commonOrderList
+	 * @param orderId
+	 * @param uid
+	 * @param sourceType
+	 * @param hongBaoType
+	 */
 	private void addHongBaoWithMQ(List<CommonOrderAddResultDTO> commonOrderList, String orderId, Long uid,
 			int sourceType, int hongBaoType) {
 		final List<CommonOrder> coList = convertCommonOrder(commonOrderList);
 		OrderMQMsgDTO mqMsg = new OrderMQMsgDTO(orderId, sourceType, uid);
-		Message msg = new Message("TOPIC_ORDER", String.format("orderhongbao-%s-%s", sourceType, hongBaoType),
+		Message msg = new Message(MQTopicName.TOPIC_ORDER.name(),
+				String.format(MQTagConstant.TAG_ORDER_STATISTIC_PREFIX + "%s-%s", sourceType, hongBaoType),
 				new Gson().toJson(mqMsg).getBytes());
 		orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
 			@Override
@@ -1572,5 +1199,4 @@
 			}
 		}, null);
 	}
-
 }

--
Gitblit v1.8.0