From 1e28ac69827ff7578a418a79bd95aff2c6637f5c Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期日, 28 六月 2020 16:47:00 +0800
Subject: [PATCH] 2.1.3

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java |  134 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 134 insertions(+), 0 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
index 9687b36..791a108 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
@@ -19,17 +19,22 @@
 import com.yeshi.fanli.entity.bus.user.UserActiveLog;
 import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
 import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
 import com.yeshi.fanli.entity.order.CommonOrder;
 import com.yeshi.fanli.entity.redpack.RedPackWinInvite;
 import com.yeshi.fanli.entity.redpack.RedPackWinInvite.RedPackWinInviteTypeEnum;
+import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
+import com.yeshi.fanli.exception.user.UserSystemCouponException;
 import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
 import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
+import com.yeshi.fanli.service.inter.order.CommonOrderGoodsService;
 import com.yeshi.fanli.service.inter.order.CommonOrderService;
 import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService;
 import com.yeshi.fanli.service.inter.redpack.RedPackConfigService;
 import com.yeshi.fanli.service.inter.redpack.RedPackWinInviteService;
 import com.yeshi.fanli.service.inter.user.UserActiveLogService;
 import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
 import com.yeshi.fanli.service.inter.user.integral.IntegralTaskRecordService;
 import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
 import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
@@ -78,6 +83,13 @@
 
 	@Resource
 	private HongBaoV2CountService hongBaoV2CountService;
+	
+	@Resource
+	private CommonOrderGoodsService commonOrderGoodsService;
+	
+	@Resource
+	private UserSystemCouponService userSystemCouponService;
+	
 
 	@Override
 	public List<RedPackWinInvite> getRewardList(int start, int count, Long uid) {
@@ -444,4 +456,126 @@
 		}
 		return count;
 	}
+	
+
+	@Override
+	@RequestSerializableByKeyService(key = "#orderUid")
+	@Transactional(rollbackFor = Exception.class)
+	public void winRedPackByOrder(Long orderUid, String orderNo, Integer source) {
+		if (orderUid == null || StringUtil.isNullOrEmpty(orderNo)) {
+			return;
+		}
+		
+		// 鏄惁瀛樺湪涓婁笅绾у叧绯�
+		ThreeSale threeSale = threeSaleSerivce.getByWorkerId(orderUid);
+		if (threeSale == null)
+			return;
+
+		Long bossId = threeSale.getBoss().getId();
+		if (bossId == null)
+			return;
+		
+		// 璇ラ個璇锋槸鍚﹀凡棰嗗彇
+		RedPackWinInvite threeStage = redPackWinInviteMapper.getByUidAndTeamUid(bossId, orderUid);
+		if (threeStage != null)
+			return;
+		
+		// 鏌ヨ璁㈠崟
+		List<CommonOrder> list = commonOrderService.getByOrderNo(orderUid, orderNo);
+		if (list == null || list.size() ==0) {
+			return;
+		}
+		
+		// 48灏忔椂鍐呰鍗�
+		long spaceTime = 1000 * 60 * 48;
+		Long succeedTime = threeSale.getSucceedTime();
+	    Date thirdCreateTime = list.get(0).getThirdCreateTime();
+	    if (thirdCreateTime == null || thirdCreateTime.getTime() > succeedTime + spaceTime) {
+	    	return;
+	    }
+		
+	    // 鍟嗗搧姣斾緥闄愬埗
+	    BigDecimal limitRate = new BigDecimal(redPackConfigService.getValueByKey("goods_reate_limit"));
+	    BigDecimal limitPayMent = new BigDecimal(redPackConfigService.getValueByKey("goods_pay_ment_limit"));
+	    
+	    boolean satisfy = false;
+		// 閬嶅巻鏄惁瀛樺湪绗﹀悎鐩稿簲鍟嗗搧
+		for (CommonOrder commonOrder: list) {
+			// 浠樻閲戦闄愬埗
+			BigDecimal payment = commonOrder.getPayment();
+			if (payment == null || payment.compareTo(limitPayMent) < 0) 
+				continue;
+			
+			// 鍟嗗搧浣i噾姣斾緥闄愬埗
+			BigDecimal eIncome = commonOrder.geteIncome();
+			BigDecimal settlement = commonOrder.getSettlement();
+			if(eIncome == null || settlement == null) {
+				continue;
+			}
+			BigDecimal rete = MoneyBigDecimalUtil.div(eIncome, settlement);
+			if (rete.compareTo(limitRate) >= 0) {
+				satisfy = true;
+				break;
+			}
+		}
+		
+		if (!satisfy) {
+			return;
+		}
+		
+		// 鑾峰緱绾㈠寘璁板綍
+		RedPackWinInvite winInvite = new RedPackWinInvite();
+		winInvite.setUid(bossId);
+		winInvite.setTeamUid(orderUid);
+		winInvite.setMoney(null);
+		winInvite.setSource(source);
+		winInvite.setOrderNo(orderNo);
+		winInvite.setCreateTime(new Date());
+		winInvite.setUpdateTime(new Date());
+		winInvite.setType(RedPackWinInviteTypeEnum.inviteDownOrder);
+		winInvite.setIdentifyCode(StringUtil.Md5(RedPackWinInviteTypeEnum.inviteDownOrder.name() + ":" + orderUid));
+		redPackWinInviteMapper.insertSelective(winInvite);
+		
+		
+		// 璧犻�佽喘涔拌�呬竴寮犲厤鍗曞埜
+		try {
+			userSystemCouponService.freeCouponWinBySystem(orderUid, CouponTypeEnum.freeCouponBuy, UserSystemCoupon.SOURCE_EXCHANGE,
+					1, true, 2);
+		} catch (UserSystemCouponException e) {
+			e.printStackTrace();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	
+	@Override
+	public List<Long> listWinUid(int start, int count) {
+		return redPackWinInviteMapper.listWinUid(start, count);
+	}
+	
+	
+	@Override
+	public List<RedPackWinInvite> listLastMonthByUid(int start, int count, Long uid) {
+		return redPackWinInviteMapper.listLastMonthByUid(start, count, uid);
+	}
+	
+	
+	@Override
+	public long countLastMonthByUid(Long uid) {
+		Long count = redPackWinInviteMapper.countLastMonthByUid(uid);
+		if (count == null)
+			count = 0L;
+		return count;
+	}
+	
+//	@Override
+//	public void arriveMoney(Long uid, ) {
+//		// 4銆佸鍔犵孩鍖�
+//		redPackBalanceService.addRedPack(bossId, money, RedPackDetailFactory.createSeriesReward(winInvite));
+//	}
+	
+	
+
+	
 }

--
Gitblit v1.8.0