From 77fc61a25c14071584e45731476207959137d6b6 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 04 三月 2026 17:17:39 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java | 36 +++++++++++++++++++++++++++---------
1 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
index 56b5695..18d141b 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -594,9 +594,13 @@
if(CollectionUtils.isNotEmpty(allCoupon)){
for (MemberCoupon memberCoupon:allCoupon) {
- //閫傜敤绫诲瀷锛�0=鍏ㄥ満;1=鍝佺被锛�2=鎸囧畾鍟嗗搧
+ if(this.calculateCouponRata(memberCoupon,goodsCalculateList,totalAmount).compareTo(memberCoupon.getPrice())<=Constants.ZERO){
+ continue;
+ }
+ memberCouponList.add(memberCoupon);
+ /*//閫傜敤绫诲瀷锛�0=鍏ㄥ満;1=鍝佺被锛�2=鎸囧畾鍟嗗搧
if(Constants.equalsInteger(memberCoupon.getApplyType(),Constants.ZERO)){
- memberCoupon.setValidAmount(memberCoupon.getPrice());
+ memberCoupon.setValidAmount(memberCoupon.getMaxPrice());
memberCouponList.add(memberCoupon);
}else{
List<String> applyIdList = Arrays.asList(memberCoupon.getApplyIds().split(","));
@@ -604,13 +608,13 @@
isVaildUse(applyIdList,goodsCalculateList,memberCoupon.getApplyType());
BigDecimal skuAmount = goodsCalculateList.stream().filter(i->i.getUseCoupon()).map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
if(skuAmount.compareTo(memberCoupon.getLimitPrice())>=Constants.ZERO){
- //鏍规嵁閲戦璁$畻瀹為檯鎶樻墸閲戦
- BigDecimal couponPrice = skuAmount.multiply(memberCoupon.getPrice()).divide(new BigDecimal("100"),2, RoundingMode.HALF_UP);
+ //鏍规嵁閲戦璁$畻瀹為檯鎶樻墸閲戦 PRICE 瀛樺偍鎶樻墸鍊� 渚嬪 5鎶� 瀛樺偍鍊� 5
+ BigDecimal couponPrice = skuAmount.multiply(memberCoupon.getPrice()).divide(new BigDecimal("10"),2, RoundingMode.HALF_UP);
//鎶樻墸閲戦澶т簬鏈�澶у彲鎶樻墸閲戦 鍒欎娇鐢ㄦ渶澶у彲鎶樻墸閲戦
memberCoupon.setValidAmount(couponPrice.compareTo(memberCoupon.getMaxPrice())>Constants.ZERO?memberCoupon.getMaxPrice():couponPrice);
memberCouponList.add(memberCoupon);
}
- }
+ }*/
}
}
// 浣跨敤 Stream 鎺掑簭 reversed() 琛ㄧず鍊掑簭
@@ -683,14 +687,15 @@
/**
- * 璁$畻褰撳墠宸查�夋嫨浼樻儬鍒告瘡涓晢鍝佸崰姣旈噾棰�
+ * 璁$畻浼樻儬鍒告瘡涓晢鍝佸崰姣旈噾棰�
* @param coupon 浼樻儬鍒镐俊鎭�
* @param goodsCalculateList 鍟嗗搧闆嗗悎
* @param totalAmount 璁㈠崟鎬婚噾棰�
+ * @return 鍙互浣跨敤浼樻儬鍒哥殑鍟嗗搧鎬婚噾棰�
*/
- public void calculateCouponRata(MemberCoupon coupon,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalAmount){
+ public BigDecimal calculateCouponRata(MemberCoupon coupon,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalAmount){
//鎬讳綑棰�
- BigDecimal validAmount = coupon.getValidAmount();
+ BigDecimal validAmount = coupon.getMaxPrice();
//鍓╀綑鍙垎閰嶉噾棰�
BigDecimal surplusValidAmount = validAmount;
//宸茬敤鍗犳瘮姣斾緥鍊�
@@ -699,12 +704,22 @@
if(!Constants.equalsInteger(coupon.getApplyType(),Constants.ZERO)){
List<String> applyIdList = Arrays.asList(coupon.getApplyIds().split(","));
isVaildUse(applyIdList,goodsCalculateList,coupon.getApplyType());
- //Constants.equalsInteger(coupon.getApplyType(),Constants.ONE)?Constants.ONE:Constants.ZERO);
}else{
isVaildUse(null,goodsCalculateList,coupon.getApplyType());
}
//浣跨敤浜嗕紭鎯犲埜鐨勫晢鍝佹暟閲�
Integer countCouponNum = goodsCalculateList.stream().filter(i->i.getUseCoupon()).collect(Collectors.toList()).size();
+ //浣跨敤浼樻儬鍒哥殑鎬婚噾棰�
+ BigDecimal useCouponPrice = goodsCalculateList.stream().filter(i->i.getUseCoupon())
+ .map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
+ if(Constants.equalsInteger(coupon.getCouponType(),Constants.ONE)){
+ //鏈�澶у彲浼樻儬閲戦
+ BigDecimal couponAmount = useCouponPrice.multiply(coupon.getPrice()).divide(new BigDecimal("10"),2,BigDecimal.ROUND_DOWN);
+ if(couponAmount.compareTo(validAmount)<=Constants.ZERO){
+ validAmount = couponAmount;
+ surplusValidAmount = validAmount;
+ }
+ }
Integer useCouponNum = Constants.ZERO;
for (int i = 0; i < goodsCalculateList.size(); i++) {
if(!goodsCalculateList.get(i).getUseCoupon()){
@@ -714,6 +729,7 @@
if(Constants.equalsInteger(useCouponNum+1,countCouponNum)){
goodsCalculateList.get(i).setOrderCouponRata(new BigDecimal("1").subtract(rata));
goodsCalculateList.get(i).setCouponDeductCash(surplusValidAmount);
+ surplusValidAmount = BigDecimal.ZERO;
break;
}
goodsCalculateList.get(i).setOrderCouponRata(goodsCalculateList.get(i).getSkuAmount().divide(totalAmount,2,BigDecimal.ROUND_DOWN));
@@ -722,6 +738,8 @@
rata = rata.add(goodsCalculateList.get(i).getOrderCouponRata());
useCouponNum = useCouponNum + 1;
}
+ coupon.setValidAmount(validAmount.subtract(surplusValidAmount));
+ return useCouponPrice;
}
--
Gitblit v1.9.3