From 4bf96fb425e655e1a099aa750bb4bd6c9e158261 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期四, 16 四月 2020 17:34:35 +0800 Subject: [PATCH] 奖励券使用限制 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 87 ++++++++++++++++++++++--------------------- 1 files changed, 45 insertions(+), 42 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java index 75b0088..8dc4b6e 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java @@ -36,6 +36,7 @@ import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.jd.JDOrder; import com.yeshi.fanli.entity.jd.JDOrderItem; +import com.yeshi.fanli.entity.money.InviteOrderSubsidyDebt; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.CommonOrderGoods; import com.yeshi.fanli.entity.order.CommonOrderTradeIdMap; @@ -57,6 +58,7 @@ import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.SystemCouponService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; +import com.yeshi.fanli.service.inter.money.InviteOrderSubsidyDebtService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.HongBaoOrderService; import com.yeshi.fanli.service.inter.order.HongBaoV2Service; @@ -133,6 +135,9 @@ @Resource private InviteOrderSubsidyService inviteOrderSubsidyService; + + @Resource + private InviteOrderSubsidyDebtService inviteOrderSubsidyDebtService; @Resource private UserVIPInfoService userVIPInfoService; @@ -585,16 +590,16 @@ if (HongBaoV2.TYPE_ZIGOU == hongBaoType) { // 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍 if (sourceType == null) { - couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, null, uid, vip, acceptData); + couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, null, uid, vip, acceptData, hongBao); } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordTB, uid, vip, - acceptData); + acceptData, hongBao); } else if (sourceType == Constant.SOURCE_TYPE_JD) { couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordJD, uid, vip, - acceptData); + acceptData, hongBao); } else if (sourceType == Constant.SOURCE_TYPE_PDD) { couponFactory(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordPDD, uid, vip, - acceptData); + acceptData, hongBao); } } @@ -617,7 +622,7 @@ * @param signList */ private void couponFactory(CommonOrderVO order, boolean hasRewardCoupon, Integer hongBaoState, Integer hongBaoType, - List<UserSystemCouponRecord> list, Long uid, boolean vip, AcceptData acceptData) throws Exception { + List<UserSystemCouponRecord> list, Long uid, boolean vip, AcceptData acceptData, BigDecimal hongBao) throws Exception { // 鏄惁鍏嶅崟鍟嗗搧 boolean freeOrder = false; @@ -715,6 +720,11 @@ order.setRewardDetail(rewardMap); } + // 浣跨敤濂栧姳鍒� 閲戦棰濋檺鍒� + if (hongBao.compareTo(Constant.REWARD_COUPON_LIMIT_MONEY) > 0){ + return; + } + // 鏄惁鍙娇鐢ㄥ鍔卞埜 if (!rewardSuccess && !freeOrder && HongBaoV2.TYPE_ZIGOU == hongBaoType && HongBaoV2.STATE_YILINGQU == hongBaoState && !vip && CommonOrder.STATE_WQ != order.getState()) { @@ -2041,11 +2051,11 @@ // 鏄惁宸蹭娇鐢ㄥ鍔卞埜銆佸厤鍗曞埜鎯呭喌 if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { - couponUseFactory(order, signList, listRecordTB); + couponUseFactory(order, listRecordTB); } else if (sourceType == Constant.SOURCE_TYPE_JD) { - couponUseFactory(order, signList, listRecordJD); + couponUseFactory(order, listRecordJD); } else if (sourceType == Constant.SOURCE_TYPE_PDD) { - couponUseFactory(order, signList, listRecordPDD); + couponUseFactory(order, listRecordPDD); } } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) { // 鍒嗕韩 @@ -2062,6 +2072,21 @@ order.setOrderOrigin("3"); order.setHongBaoTypePic(CommonOrder.TYPE_INVITE); signList.add(CommonOrder.TYPE_INVITE); + + // 绾㈠寘鍔犱笂琛ヨ创閲戦 + InviteOrderSubsidy orderSubsidy = inviteOrderSubsidyService.getByOrderNoAndType(uid, orderNo, sourceType); + if (orderSubsidy != null && orderSubsidy.getMoney() != null) { + BigDecimal subsidyMoney = orderSubsidy.getMoney(); + // 缁存潈閲戦 + InviteOrderSubsidyDebt subsidyDebt = inviteOrderSubsidyDebtService.getBySourceId(orderSubsidy.getId()); + if (subsidyDebt != null && subsidyDebt.getOriginMoney() != null) { + subsidyMoney = subsidyMoney.subtract(subsidyDebt.getOriginMoney()); + } + // 鏈�缁堣ˉ璐� + if (subsidyMoney.compareTo(new BigDecimal(0)) > 0) { + hongBao = hongBao.add(subsidyMoney); + } + } } order.setSignList(signList); @@ -2104,9 +2129,8 @@ stateMap.put("content", stateContent); stateMap.put("fontColor", stateFontColor); order.setAccountState(stateMap); - hongbaoInfo = hongBaoState_Str + hongbaoInfo; - + Map<String, String> hongBaoMap = new HashMap<String, String>(); hongBaoMap.put("content", hongbaoInfo + " 楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString()); hongBaoMap.put("fontColor", hongbaoInfoFontColor); @@ -2124,18 +2148,14 @@ * 璁㈠崟锛� 鍏嶅崟鏍囪瘑 濂栧姳鏍囪瘑 * * @param order - * @param hasRewardCoupon - * @param hongBaoState * @param list - * @param signList */ - private void couponUseFactory(CommonOrderVO order,List<String> signList, List<UserSystemCouponRecord> list) throws Exception { + private void couponUseFactory(CommonOrderVO order, List<UserSystemCouponRecord> list) throws Exception { if (list == null || list.size() == 0) { return; } - // 鏄惁鍏嶅崟鍟嗗搧 - boolean freeOrder = false; + String text = null; for (UserSystemCouponRecord couponRecord : list) { int goodSource = couponRecord.getGoodSource(); if (goodSource == 0) @@ -2145,47 +2165,30 @@ if (order.getOrderNo().equals(orderNo) && goodSource == order.getSourceType()) { Integer state = couponRecord.getState(); String systemCouponType = couponRecord.getCouponType(); - if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType) + if (CouponTypeEnum.rebatePercentCoupon.name().equals(systemCouponType) + && UserSystemCouponRecord.STATE_SUCCESS == state) { + text = "宸插鍔�"; + } else if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType) || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType) || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) { if (UserSystemCouponRecord.STATE_FREE_ON == state) { - // 鍏嶅崟涓� - freeOrder = true; - signList.add(PIC_FREE_ON); + text = "鍏嶅崟涓�"; } else if (UserSystemCouponRecord.STATE_SUCCESS == state) { - // 鍏嶅崟鎴愬姛 - freeOrder = true; - signList.add(PIC_FREE_SUCCEED); - } else if (UserSystemCouponRecord.STATE_FAIL_RULE == state - || UserSystemCouponRecord.STATE_FAIL_DRAWBACK == state) { - // 瑙勫垯涓嶅尮閰嶃�侀��娆� - freeOrder = true; - signList.add(PIC_FREE_FAIL); - } + text = "鍏嶅崟鎴愬姛"; + } } break; } } - // 鍏嶅崟璇︽儏 - if (freeOrder) { + if (!StringUtil.isNullOrEmpty(text)) { ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO(); - rewardStyleVO.setContent("鍏嶅崟璇︽儏 >"); + rewardStyleVO.setContent(text); rewardStyleVO.setColor("#E5005C"); rewardStyleVO.setBottomColor("#FFDCEA"); - Map<String, Object> jumpLink = new HashMap<String, Object>(); - jumpLink.put("orderNo", order.getOrderNo()); - jumpLink.put("goodsType", order.getSourceType() + ""); - - Map<String, Object> jump = new HashMap<String, Object>(); - jump.put("type", 1); // 椤甸潰璺宠浆 - jump.put("params", jumpLink); - jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("freeCouponDetail")); - Map<String, Object> rewardMap = new HashMap<String, Object>(); rewardMap.put("text", rewardStyleVO); - rewardMap.put("jump", jump); order.setRewardDetail(rewardMap); } } -- Gitblit v1.8.0