From b7a7e26bc6ce23ca9b5060903d9518015019f3bc Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期五, 30 八月 2019 15:04:15 +0800
Subject: [PATCH] 订单bug
---
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 121 +++++++++++++++++++++++++++-------------
1 files changed, 82 insertions(+), 39 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 066ec25..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, acceptData);
+ setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType, null,
+ signList, acceptData);
} else if (sourceType == Constant.SOURCE_TYPE_TAOBAO) {
- setSystemCouponRecord(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordTB, signList, acceptData);
+ setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType,
+ listRecordTB, signList, acceptData);
} else if (sourceType == Constant.SOURCE_TYPE_JD) {
- setSystemCouponRecord(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordJD, signList, acceptData);
+ setSystemCouponRecord(order, hasRewardCoupon, exchangeCoupon, hongBaoState, hongBaoType,
+ listRecordJD, signList, acceptData);
} else if (sourceType == Constant.SOURCE_TYPE_PDD) {
- setSystemCouponRecord(order, hasRewardCoupon, hongBaoState, hongBaoType, listRecordPDD, signList, acceptData);
+ 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, AcceptData acceptData) {
+ 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) {
// 鍏嶅崟涓�
@@ -622,6 +641,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;
@@ -1171,7 +1205,8 @@
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);
@@ -1188,7 +1223,8 @@
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);
@@ -1205,7 +1241,8 @@
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);
@@ -1408,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