From 8c66e480d8a3c129a9032a90d39688e875f45ee5 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 25 二月 2019 14:50:02 +0800
Subject: [PATCH] 奖励订单到账逻辑添加

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java |  181 ++++++++++++++++++++++++++-------------------
 1 files changed, 105 insertions(+), 76 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
index 2446abf..4bec0e2 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -11,14 +11,17 @@
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.yeshi.utils.DateUtil;
 
 import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper;
 import com.yeshi.fanli.entity.bus.user.HongBaoV2;
+import com.yeshi.fanli.entity.bus.user.Order;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
 import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
 import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord;
 import com.yeshi.fanli.entity.common.JumpDetailV2;
+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.system.SystemCoupon;
@@ -28,12 +31,18 @@
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.config.SystemCouponService;
 import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
+import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService;
 import com.yeshi.fanli.service.inter.order.CommonOrderService;
 import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
+import com.yeshi.fanli.service.inter.order.OrderHongBaoMapService;
+import com.yeshi.fanli.service.inter.order.OrderService;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
 import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
+import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
 import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
 import com.yeshi.fanli.vo.order.CommonOrderVO;
 import com.yeshi.fanli.vo.user.UserSystemCouponRecordVO;
@@ -67,11 +76,24 @@
 
 	@Resource
 	private HongBaoOrderService hongBaoOrderService;
-	
+
+	@Resource
+	private OrderHongBaoMapService orderHongBaoMapService;
+
+	@Resource
+	private OrderService orderService;
+
+	@Resource
+	private UserMoneyDetailService userMoneyDetailService;
+
+	@Resource
+	private UserInfoService userInfoService;
+
+	@Resource
+	private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
+
 	// 鍒稿け鏁堝浘鐗�
-	public final static String PIC_INVALID= "http://192.168.1.200/icon/mian_invalid.png";
-	
-	
+	public final static String PIC_INVALID = "http://192.168.1.200/icon/mian_invalid.png";
 
 	@Override
 	public int insertSelective(UserSystemCoupon record) {
@@ -147,15 +169,14 @@
 			userCouponVO.setCouponPicture(systemCoupon.getPicture());
 			userCouponVO.setCouponEffect(systemCoupon.getEffect());
 			userCouponVO.setCouponRule(systemCoupon.getRule());
-			
+
 			// 浣跨敤涓姸鎬� 鏀瑰彉涓哄凡浣跨敤
 			Integer state = userCouponVO.getState();
-			if (UserSystemCoupon.STATE_IN_USE == state) { 
+			if (UserSystemCoupon.STATE_IN_USE == state) {
 				state = UserSystemCoupon.STATE_END_USE;
 				userCouponVO.setState(state);
 			}
-			
-			
+
 			// 鎸夐挳璺宠浆
 
 			Map<String, Object> jumpBtn = null;
@@ -164,7 +185,7 @@
 				// 鏄剧ず瑙勫垯
 				userCouponVO.setCouponRule(systemCoupon.getRemark());
 				systemCoupon.setEffect("寰呮縺娲�");
-				
+
 				// 鐘舵�佹湭婵�娲�
 				userCouponVO.setState(0);
 
@@ -201,7 +222,7 @@
 				} else if (UserSystemCoupon.STATE_END_USE == state || UserSystemCoupon.STATE_OVERDUE == state) {
 					userCouponVO.setCouponPicture(PIC_INVALID);
 				}
-				
+
 			}
 			userCouponVO.setJumpBtn(jumpBtn);
 
@@ -241,9 +262,8 @@
 			listCouponId.add(systemCoupon.getId());
 		}
 
-		List<UserSystemCouponVO> listVO = userSystemCouponMapper.getEnableListByCouponId(uid, activated,
-				listCouponId);
-		
+		List<UserSystemCouponVO> listVO = userSystemCouponMapper.getEnableListByCouponId(uid, activated, listCouponId);
+
 		if (listVO == null || listVO.size() == 0) {
 			return null;
 		}
@@ -268,7 +288,7 @@
 			userCouponVO.setCouponName(systemCoupon.getName());
 			userCouponVO.setCouponEffect(systemCoupon.getEffect());
 			userCouponVO.setCouponRule(systemCoupon.getRule());
-			
+
 			Integer stateActivated = userCouponVO.getStateActivated();
 			if (stateActivated == null || stateActivated == 0) {
 				userCouponVO.setCouponPicture(PIC_INVALID); // 鏈縺娲�
@@ -374,9 +394,9 @@
 		if (!uid.equals(couponUid)) {
 			throw new UserSystemCouponException(1, "浼犻�掑弬鏁颁笉鍖归厤");
 		}
-		
+
 		SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
-		
+
 		SystemCoupon baseCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
 		if (baseCoupon == null || baseCoupon.getId() == null) {
 			throw new UserSystemCouponException(1, "鏈壘鍒板埜鍩烘湰淇℃伅");
@@ -401,6 +421,7 @@
 		userSystemCouponRecordService.insertSelective(couponRecord);
 	}
 
+	@Transactional
 	@Override
 	public void useOrderCoupon(Long uid, Long id, String orderNo) throws UserSystemCouponException, Exception {
 
@@ -444,6 +465,10 @@
 		// 鏉′欢: A:蹇呴』鏄繑鍒╄鍗� 銆丅:蹇呴』宸茬粡澶勪簬宸插埌璐︾姸鎬�
 		if (HongBaoV2.TYPE_ZIGOU == hongBaoType && HongBaoV2.STATE_YILINGQU == hongBaoState || hongBao != null) {
 
+			Order order = orderService.findOrderByOrderIdAndType(orderNo, Order.ORDER_TYPE_TAOBAO);
+			if (order == null)
+				return;
+
 			/* 濂栭噾璁$畻 浠ュ強鐩稿叧绾㈠寘淇℃伅澶勭悊 */
 
 			// 杞崲鎴愬皬鏁扮偣
@@ -460,15 +485,22 @@
 			hongBaoV2.setCreateTime(new Date());
 			hongBaoV2.setUpdateTime(new Date());
 			hongBaoV2.setUserInfo(new UserInfo(uid));
+			hongBaoV2.setPreGetTime(new Date());
+			hongBaoV2.setGetTime(new Date());
 			hongBaoV2Service.insertSelective(hongBaoV2);
 
-			// 2銆佽鍗曞叧鑱旂孩鍖呰〃
-			HongBaoOrder hongBaoOrder = new HongBaoOrder();
-			hongBaoOrder.setHongBaoV2(hongBaoV2);
-			hongBaoOrder.setCommonOrder(new CommonOrder(commonOrderId));
-			hongBaoOrderService.insertSelective(hongBaoOrder);
+			// 2.鎻掑叆鍏宠仈
+			orderHongBaoMapService.addOrderHongBaoMap(hongBaoV2, order);
 
-			// TODO 绾㈠寘鐩稿叧淇℃伅鎻掑叆浠ュ強閫氱煡
+			// 3.鎻掑叆璧勯噾鏄庣粏,鐢ㄦ埛浣欓
+			UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createOrderReward(orderNo, money,
+					new UserInfo(uid));
+			userMoneyDetailService.addUserMoneyDetail(userMoneyDetail);
+			userInfoService.addMoney(new UserInfo(uid), money);
+
+			// 鎻掑叆璧勯噾閫氱煡
+			userMoneyMsgNotificationService.orderReward(uid, orderNo, money,
+					userInfoService.selectByPKey(uid).getMyHongBao());
 
 			/* 鐢ㄦ埛鍒镐俊鎭姸鎬佸強璁板綍澶勭悊 */
 
@@ -492,7 +524,6 @@
 
 	}
 
-	
 	@Override
 	public UserSystemCouponRecordVO getRewardCouponRecord(String orderNo) throws UserSystemCouponException, Exception {
 
@@ -563,7 +594,6 @@
 		return userRecordVO;
 	}
 
-	
 	@Override
 	public UserSystemCouponRecordVO getFreeCouponRecord(String orderNo) throws UserSystemCouponException, Exception {
 
@@ -597,20 +627,19 @@
 		if (orderVO == null) {
 			throw new UserSystemCouponException(1, "璁㈠崟淇℃伅鑾峰彇澶辫触");
 		}
-		
+
 		UserSystemCouponRecordVO userRecordVO = new UserSystemCouponRecordVO();
 		userRecordVO.setCommonOrder(orderVO);
-		
+
 		ClientTextStyleVO fanMoney = new ClientTextStyleVO();
-		fanMoney.setContent("杩斿埄: 楼" + orderVO.getHongBao().setScale(2, BigDecimal.ROUND_DOWN));		
+		fanMoney.setContent("杩斿埄: 楼" + orderVO.getHongBao().setScale(2, BigDecimal.ROUND_DOWN));
 		fanMoney.setColor("#000000"); // 榛樿榛戣壊
 		userRecordVO.setFanMoney(fanMoney);
-		
+
 		ClientTextStyleVO payMoney = new ClientTextStyleVO();
-		payMoney.setContent("瀹炰粯娆�:楼"+ orderVO.getPayment().setScale(2, BigDecimal.ROUND_DOWN)); 
+		payMoney.setContent("瀹炰粯娆�:楼" + orderVO.getPayment().setScale(2, BigDecimal.ROUND_DOWN));
 		payMoney.setColor("#000000"); // 榛樿榛戣壊
-		
-		
+
 		String progressMsg = "";
 		String progressColor = "";
 		// 璺宠浆濂栧姳鍒歌鍒�
@@ -618,62 +647,62 @@
 
 		// 杩涘害锛� 1 鐏拌壊 2 绾㈣壊 3 缁胯壊
 		String progressState1 = "3";
-		String progressState2 = "1"; 
+		String progressState2 = "1";
 		String progressState3 = "1";
 		String progressState4 = "1";
-		
+
 		String goodsState = "鍟嗗搧鏀惰揣";
 		// 鏂囧瓧鐘舵��
 		String text2Color = "#999999";
 		String text3Color = "#999999";
 		String text4Color = "#999999";
-		
+
 		// 搴曢儴澶囨敞
 		String rewardCouponRemark = "";
 		// 鐘舵�佽烦杞�
 		JumpDetailV2 jumpDetail = null;
-		// 杩涘害鐘舵�� 1绛夊緟 2 澶辫触  3鎴愬姛
+		// 杩涘害鐘舵�� 1绛夊緟 2 澶辫触 3鎴愬姛
 		int progressState = 1;
-		
+
 		Integer stateRecord = record.getState();
 		if (UserSystemCouponRecord.STATE_FAIL_RULE == stateRecord) {
 			// 瑙勫垯涓嶅尮閰�
 			progressState = 2;
-			
+
 			progressColor = "#E41212";
-			progressMsg = "鎶辨瓑涓嶇鍚堝厤鍗曡鍒欙紝鍏嶅崟澶辫触" ;
-			
-			progressState1 = "2"; //涓嶅尮閰�
-			
+			progressMsg = "鎶辨瓑涓嶇鍚堝厤鍗曡鍒欙紝鍏嶅崟澶辫触";
+
+			progressState1 = "2"; // 涓嶅尮閰�
+
 			payMoney.setColor("#E41212");
-			
+
 			userRecordVO.setCouponMoneyState("宸查��鍥�");
 			userRecordVO.setCouponName(baseCoupon.getName());
-			
+
 			jumpDetail = jumpDetailV2Service.getByTypeCache("welfareCore");
-			
+
 			rewardCouponRemark = configService.get("free_coupon_back_remark");
-			
+
 		} else if (UserSystemCouponRecord.STATE_FAIL_DRAWBACK == stateRecord) {
 			// 閫�娆�
 			progressState = 2;
-			
+
 			progressColor = "#E41212";
 			progressMsg = "鍟嗗搧宸查��娆撅紝鍏嶅崟澶辫触";
-			
+
 			text2Color = "#E41212";
 			goodsState = "鍟嗗搧宸查��娆�";
-			
+
 			progressState2 = "2";
-			
+
 			userRecordVO.setCouponMoneyState("宸查��鍥�");
 			userRecordVO.setCouponName(baseCoupon.getName());
-			
+
 			jumpDetail = jumpDetailV2Service.getByTypeCache("welfareCore");
-			
+
 			rewardCouponRemark = configService.get("free_coupon_back_remark");
-			
-		}  else if (UserSystemCouponRecord.STATE_FREE_ON == stateRecord) {
+
+		} else if (UserSystemCouponRecord.STATE_FREE_ON == stateRecord) {
 			// 鍏嶅崟涓�
 			if (CommonOrder.STATE_JS == orderVO.getState()) {
 				progressColor = "#ECA01B";
@@ -684,65 +713,65 @@
 				progressColor = "#ECA01B";
 				progressMsg = "鍏嶅崟鍙戣捣锛岀瓑寰呮敹璐�";
 			}
-			
+
 			rewardCouponRemark = configService.get("free_coupon_remark");
-			
-		}  else if (UserSystemCouponRecord.STATE_SUCCESS == stateRecord) {
+
+		} else if (UserSystemCouponRecord.STATE_SUCCESS == stateRecord) {
 			// 鍏嶅崟鎴愬姛
 			progressState = 3;
-			
+
 			progressColor = "#3EBF13";
 			progressMsg = "鍏嶅崟鎴愬姛锛屽厤鍗曢噾宸茶浆鍏ヤ綑棰�";
-			
+
 			progressState2 = "3";
 			progressState3 = "3";
 			progressState4 = "3";
-			
+
 			text2Color = "#000000";
 			text3Color = "#000000";
 			text4Color = "#000000";
-			
+
 			userRecordVO.setCouponMoneyState("宸插埌璐�");
 			userRecordVO.setCouponName("杩斿埄: 楼" + orderVO.getHongBao().setScale(2, BigDecimal.ROUND_DOWN));
-			
+
 			jumpDetail = jumpDetailV2Service.getByTypeCache("capitalDetails");
-			
+
 			rewardCouponRemark = configService.get("free_coupon_remark");
 		}
 		userRecordVO.setProgressState(progressState);
 		userRecordVO.setPayMoney(payMoney);
-		
+
 		// 鏄剧ず鎻愮ず杈冨ぇ瀛�
 		ClientTextStyleVO progressMsgStyle = new ClientTextStyleVO();
-		progressMsgStyle.setContent(progressMsg);		
+		progressMsgStyle.setContent(progressMsg);
 		progressMsgStyle.setColor(progressColor);
 		userRecordVO.setProgressMsg(progressMsgStyle);
-		
-		/* --- 杩涘害鐐� ----  */
+
+		/* --- 杩涘害鐐� ---- */
 		Map<String, Object> map1 = new HashMap<String, Object>();
 		map1.put("state", progressState1);
-		
+
 		Map<String, Object> map2 = new HashMap<String, Object>();
 		map2.put("state", progressState2);
 		ClientTextStyleVO style2 = new ClientTextStyleVO();
-		style2.setContent(goodsState);		
+		style2.setContent(goodsState);
 		style2.setColor(text2Color);
 		map2.put("text", style2);
-		
+
 		Map<String, Object> map3 = new HashMap<String, Object>();
 		map3.put("state", progressState3);
 		ClientTextStyleVO style3 = new ClientTextStyleVO();
-		style3.setContent("杩斿埄鍒拌处");		
+		style3.setContent("杩斿埄鍒拌处");
 		style3.setColor(text3Color);
 		map3.put("text", style3);
-		
+
 		Map<String, Object> map4 = new HashMap<String, Object>();
 		map4.put("state", progressState4);
 		ClientTextStyleVO style4 = new ClientTextStyleVO();
-		style4.setContent("鍏嶅崟鎴愬姛");		
+		style4.setContent("鍏嶅崟鎴愬姛");
 		style4.setColor(text4Color);
 		map4.put("text", style4);
-		
+
 		// 鍦嗙偣棰滆壊
 		List<Object> progressList = new ArrayList<Object>();
 		progressList.add(map1);
@@ -750,7 +779,7 @@
 		progressList.add(map3);
 		progressList.add(map4);
 		userRecordVO.setProgressList(progressList);
-		
+
 		if (jumpDetail != null) {
 			Map<String, Object> jumpState = new HashMap<String, Object>();
 			jumpState.put("jumpDetail", jumpDetail);
@@ -762,8 +791,8 @@
 		if (rewardCouponRemark != null && rewardCouponRemark.trim().length() > 0) {
 			userRecordVO.setRemark(JSONObject.fromObject(rewardCouponRemark));
 		}
-		
+
 		return userRecordVO;
 	}
-	
+
 }

--
Gitblit v1.8.0