From 972d3bc71115ec977dccf835fbcd148da3bcc86c Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期二, 03 九月 2019 16:41:49 +0800 Subject: [PATCH] 统计可用的免单券数量-countUsableFreeCouponForBuy --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 148 +++++++++++++++++++++++++++++++++++-------------- 1 files changed, 105 insertions(+), 43 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 bb5b115..466e8d9 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 @@ -221,6 +221,32 @@ return commonOrderMapper.countByUidAndOrderState(uid, type, startTime, endTime, day, source); } + private BigDecimal getWeiQuanMoney(List<TaoBaoWeiQuanOrder> listWQ, int sourceType, Long uid) { + BigDecimal weiQuanMoney = new BigDecimal(0); + if (listWQ != null && listWQ.size() > 0) { + for (TaoBaoWeiQuanOrder weiQuanOrder : listWQ) { + String tradeId = weiQuanOrder.getOrderItemId(); + // 鏌ヨ绾㈠寘 + List<String> tradeList = new ArrayList<>(); + tradeList.add(tradeId); + List<HongBaoV2> hongBaoList = hongBaoV2Service.listBySourceTypeAndTradeIdListAndUid(sourceType, uid, + tradeList); + if (hongBaoList != null && hongBaoList.size() > 0) { + CommonOrder commonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(sourceType, tradeId); + if (commonOrder != null && commonOrder.getSettlement().compareTo(new BigDecimal(0)) > 0) { + BigDecimal wqMoney = MoneyBigDecimalUtil + .mul(hongBaoList.get(0).getMoney(), weiQuanOrder.getMoney()) + .divide(commonOrder.getSettlement(), 2, BigDecimal.ROUND_UP); + if (wqMoney.compareTo(hongBaoList.get(0).getMoney()) > 0) + wqMoney = hongBaoList.get(0).getMoney(); + weiQuanMoney = weiQuanMoney.add(wqMoney); + } + } + } + } + return weiQuanMoney; + } + public void listDataFactory(AcceptData acceptData, List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods, Long uid) { @@ -329,7 +355,10 @@ SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd"); // 鏄惁瀛樺湪濂栧姳鍒� - boolean hasRewardCoupon = userSystemCouponService.hasRewardCoupon(uid); + // boolean hasRewardCoupon = + // userSystemCouponService.hasRewardCoupon(uid); + boolean hasRewardCoupon = userSystemCouponService.getIncludeNotExchange(uid); + boolean exchangeCoupon = userSystemCouponService.getIncludeExchange(uid); // 2019.8.1寮�濮嬭繑鍥炵淮鏉冧俊鎭� Date august = null; @@ -407,21 +436,7 @@ .selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛"); boolean isPart = false;// 榛樿澶辨晥 - BigDecimal weiQuanMoney = new BigDecimal(0); - if (listWQ != null && listWQ.size() > 0) { - BigDecimal fanTotalMoney = new BigDecimal(0); - for (TaoBaoWeiQuanOrder weiQuanOrder : listWQ) { - BigDecimal fanMoney = weiQuanOrder.getFanMoney(); - if (fanMoney != null) { - fanTotalMoney = MoneyBigDecimalUtil.add(fanTotalMoney, fanMoney); - } - weiQuanMoney = MoneyBigDecimalUtil.add(weiQuanOrder.getMoney(), weiQuanMoney); - } - - if (fanTotalMoney.compareTo(hongBao) < 0) { - isPart = true; - } - } + BigDecimal weiQuanMoney = getWeiQuanMoney(listWQ, sourceType, uid); if (!VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) { if (isPart) { @@ -435,19 +450,17 @@ orderStateContent = "缁存潈鎴愬姛"; WeiQuanInfo weiQuanInfo = new WeiQuanInfo(); weiQuanInfo.setOldHongBao("楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString()); - if (isPart) { - // 缁存潈澶辨晥閲戦=缁存潈鐨勯噾棰�*鑾峰緱鐨勭孩鍖�/缁撶畻閲戦 - BigDecimal settlement = order.getSettlement(); - BigDecimal wqHongbao = MoneyBigDecimalUtil - .div(MoneyBigDecimalUtil.mul(hongBao, settlement), settlement); - weiQuanInfo.setWqHongBao( - "缁存潈锛�-楼" + wqHongbao.setScale(2, BigDecimal.ROUND_DOWN).toString()); - hongBao = MoneyBigDecimalUtil.sub(hongBao, wqHongbao); - } else { - weiQuanInfo - .setWqHongBao("缁存潈锛�-楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString()); - hongBao = new BigDecimal(0); - } + // if (isPart) { + weiQuanInfo + .setWqHongBao("缁存潈锛�-楼" + weiQuanMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); + hongBao = MoneyBigDecimalUtil.sub(hongBao, weiQuanMoney); + // } else { + // weiQuanInfo + // .setWqHongBao("缁存潈锛�-楼" + weiQuanMoney.setScale(2, + // BigDecimal.ROUND_DOWN).toString()); + // hongBao = MoneyBigDecimalUtil.sub(hongBao, + // weiQuanMoney); + // } order.setWeiQuanInfo(weiQuanInfo); } } @@ -548,13 +561,17 @@ } else { // 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍 if (sourceType == null) { - setSystemCouponRecord(order, hasRewardCoupon, hongBaoState, hongBaoType, null, signList); + setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType, null, + signList, acceptData); } else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) { - setSystemCouponRecord(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordTB, signList); + setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType, + listRecordTB, signList, acceptData); } else if (sourceType == Constant.SOURCE_TYPE_JD) { - setSystemCouponRecord(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordJD, signList); + setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType, + listRecordJD, signList, acceptData); } else if (sourceType == Constant.SOURCE_TYPE_PDD) { - setSystemCouponRecord(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordPDD, signList); + setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType, + listRecordPDD, signList, acceptData); } } @@ -576,8 +593,9 @@ * @param list * @param signList */ - public void setSystemCouponRecord(CommonOrderVO order, boolean hasRewardCoupon, Integer hongBaoState, - Integer hongBaoType, List<UserSystemCouponRecord> list, List<String> signList) { + public void setSystemCouponRecord(CommonOrderVO order, boolean hasRewardCoupon, boolean exchangeCoupon, + Integer hongBaoState, Integer hongBaoType, List<UserSystemCouponRecord> list, List<String> signList, + AcceptData acceptData) { // 鏄惁鍏嶅崟鍟嗗搧 boolean freeOrder = false; @@ -597,7 +615,8 @@ signList.add(PIC_REWARD); // 鍔犲叆濂栧姳鎴愬姛鍥剧墖 } else if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType) - || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)) { + || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType) + || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) { if (UserSystemCouponRecord.STATE_FREE_ON == state) { // 鍏嶅崟涓� @@ -623,6 +642,21 @@ // 璁㈠崟鏍囪瘑 order.setSignList(signList); + // 1.6.5 鏄惁瀛樺湪鏂板厬鎹㈢殑鍒� + if (!hasRewardCoupon && exchangeCoupon) { + try { + Date thirdCreateTime = order.getThirdCreateTime(); + if (thirdCreateTime != null) { + long downOrderTime = thirdCreateTime.getTime(); + long limitDate = TimeUtil.convertDateToTemp("2019-09-05"); + if (downOrderTime > limitDate) + hasRewardCoupon = true; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + boolean rewardOrder = false; int type = 1; // 1 甯歌璺宠浆椤甸潰 2寮瑰嚭閫夐」锛堝鍔卞埜锛� @@ -645,6 +679,9 @@ Map<String, Object> jumpLink = new HashMap<String, Object>(); jumpLink.put("orderNo", order.getOrderNo()); + if (VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) { + jumpLink.put("goodsType", order.getSourceType()); + } Map<String, Object> jump = new HashMap<String, Object>(); jump.put("type", type); @@ -667,6 +704,9 @@ Map<String, Object> jumpLink = new HashMap<String, Object>(); jumpLink.put("orderNo", order.getOrderNo()); + if (VersionUtil.greaterThan_1_6_0(acceptData.getPlatform(), acceptData.getVersion())) { + jumpLink.put("goodsType", order.getSourceType()); + } Map<String, Object> jump = new HashMap<String, Object>(); jump.put("type", 1); // 椤甸潰璺宠浆 @@ -838,9 +878,17 @@ goods = JDUtil.getGoodsFromWeb(itemOrder.getSkuId()); } + if (goods == null) { + goods = new JDGoods(); + goods.setSkuName(itemOrder.getSkuName()); + goods.setPrice(itemOrder.getPrice()); + goods.setSkuId(itemOrder.getSkuId()); + } + if (goods != null) { cog = CommonOrderGoodsFactory.create(goods); } + cog.setCreateTime(new Date()); cog.setUpdateTime(new Date()); commonOrderGoodsMapper.insertSelective(cog); @@ -892,10 +940,9 @@ if (!StringUtil.isNullOrEmpty(commonOrder.getTradeId())) oldCommonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(commonOrder.getSourceType(), commonOrder.getTradeId()); - else - oldCommonOrder = commonOrderMapper.selectByOrderNoAndOrderTypeAndOrderBy(commonOrder.getOrderNo(), - commonOrder.getSourceType(), commonOrder.getOrderBy()); - + else { + throw new CommonOrderException(10, "浜ゆ槗ID涓虹┖"); + } if (oldCommonOrder == null)// 鏂板 { commonOrder.setCreateTime(new Date()); @@ -1158,9 +1205,12 @@ String systemCouponType = couponRecord.getCouponType(); Integer couponState = couponRecord.getState(); if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType) - || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)) { + || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType) + || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) { if (UserSystemCouponRecord.STATE_SUCCESS == couponState) { // 鍏嶅崟鎴愬姛 + order.setOtherState(2); + } else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) { order.setOtherState(1); } } @@ -1173,9 +1223,12 @@ String systemCouponType = couponRecord.getCouponType(); Integer couponState = couponRecord.getState(); if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType) - || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)) { + || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType) + || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) { if (UserSystemCouponRecord.STATE_SUCCESS == couponState) { // 鍏嶅崟鎴愬姛 + order.setOtherState(2); + } else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) { order.setOtherState(1); } } @@ -1188,9 +1241,12 @@ String systemCouponType = couponRecord.getCouponType(); Integer couponState = couponRecord.getState(); if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType) - || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)) { + || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType) + || CouponTypeEnum.freeCouponBuy.name().equals(systemCouponType)) { if (UserSystemCouponRecord.STATE_SUCCESS == couponState) { // 鍏嶅崟鎴愬姛 + order.setOtherState(2); + } else if (UserSystemCouponRecord.STATE_FREE_ON == couponState) { order.setOtherState(1); } } @@ -1389,4 +1445,10 @@ return commonOrderMapper.listBySourceTypeAndStateAndThirdCrateTime(sourceType, state, minTime, maxTime, (page - 1) * pageSize, pageSize); } + + @Override + public List<CommonOrder> getByOrderNo(Long uid, String orderNO) { + return commonOrderMapper.getByOrderNo(uid, orderNO); + } + } -- Gitblit v1.8.0