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/ShopServiceImpl.java         |    2 -
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java        |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java    |    6 +-
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java   |   22 ++++++----
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java |   36 +++++++++++++----
 5 files changed, 44 insertions(+), 24 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
index e1c461d..bab7944 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
@@ -1050,7 +1050,7 @@
         aftersale.setCode(getNextInCode());
 
         //璁㈠崟閫�鍥炶繑鍥炵粰缁忛攢鍟嗙殑绉垎
-        if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnCustomerIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+        if(Objects.nonNull(goodsorder.getDistributionShopId())){
             Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
             //缁忛攢鍟嗗瓨鍦ㄥ墿浣欑Н鍒�
             if(Objects.nonNull(shop)&&shop.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
@@ -1072,7 +1072,7 @@
         }
 
         //璁㈠崟閫�鍥� 缁忛攢鍟嗙粨绠椾綑棰�
-        if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getShopSettlement().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+        if(Objects.nonNull(goodsorder.getDistributionShopId())){
             Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
             //缁忛攢鍟嗗瓨鍦ㄥ墿浣欑Н鍒�
             if(Objects.nonNull(shop)&&shop.getAmount().compareTo(BigDecimal.ZERO)>Constants.ZERO){
@@ -1095,7 +1095,7 @@
         }
 
         //璁㈠崟閫�鍥� 杩旇繕缁欏鎴风殑绉垎
-        if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnMemberIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+        if(Objects.nonNull(goodsorder.getDistributionShopId())){
             Member member = memberMapper.selectById(goodsorder.getMemberId());
             //瀹㈡埛瀛樺湪鍓╀綑绉垎
             if(Objects.nonNull(member)&&member.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
index f7e17dc..0ce6f17 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -973,6 +973,7 @@
         MPJLambdaWrapper<Goods> wrapper = new MPJLambdaWrapper<Goods>()
                 .selectAll(Goods.class)
                 .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0)   ",Goods::getMinPrice)
+                .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0)   ",Goods::getLinePrice)
                 .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
                 .eq(Goods::getIsdeleted,Constants.ZERO)
                 .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
@@ -1062,7 +1063,6 @@
         //鐪熷疄閿�閲� = realSaleNum  - saleNum;
         //鐪熷疄搴撳瓨= sumStock - (realSaleNum  - saleNum)
         goodsResponse.setStock(sumStock);
-        goodsResponse.setRealSaleNum(goodsResponse.getRealSaleNum()+sumStock);
         goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList);
         //Sku鍩虹淇℃伅
         List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId());
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 7f9c503..9c0c299 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -857,12 +857,14 @@
             if(!Constants.equalsInteger(goods.getStatus(),Constants.ZERO)||!Constants.equalsInteger(goods.getIsdeleted(),Constants.ZERO)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鍟嗗搧宸插垹闄ゆ垨宸蹭笅鏋讹紝鏃犳硶涓嬪崟");
             }
-            if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鍟嗗搧搴撳瓨涓嶈冻锛屾棤娉曚笅鍗曪紒");
+            if(Objects.nonNull(goodsSku.getStock())){
+                if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){
+                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鍟嗗搧搴撳瓨涓嶈冻锛屾棤娉曚笅鍗曪紒");
+                }
+                //鍟嗗搧搴撳瓨鎵i櫎
+                goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum()))));
+                goodsSkuMapper.updateById(goodsSku);
             }
-            //鍟嗗搧搴撳瓨鎵i櫎
-            goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum()))));
-            goodsSkuMapper.updateById(goodsSku);
             GoodsorderDetail goodsOrderDetail = new GoodsorderDetail();
             goodsOrderDetail.setCreator(member.getId());
             goodsOrderDetail.setCreateDate(new Date());
@@ -1443,6 +1445,7 @@
         orderPayConfirmResponse.setCouponAmount(couponAmount);
         //鑾峰彇鍙互浣跨敤鐨勪紭鎯犲埜
         List<MemberCoupon> memberCouponList = memberCouponService.getApplyCoupon(request.getPayDetailRequestList(),request.getMemberId());
+
         if(CollectionUtils.isNotEmpty(memberCouponList)){
             orderPayConfirmResponse.setMemberCouponList(memberCouponList);
             if(Objects.nonNull(request.getCouponId())&&Constants.equalsInteger(request.getCouponId(),-Constants.ONE)&&Objects.nonNull(memberCouponList)){
@@ -1456,11 +1459,11 @@
                 }
                 memberCoupon = memberCoupons.get(Constants.ZERO);
                 couponAmount = memberCoupon.getValidAmount();
-                memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
+//                memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
                 orderPayConfirmResponse.setMemberCoupon(memberCoupon);
             }
         }else {
-            if(Objects.nonNull(request.getCouponId())){
+            if(Objects.nonNull(request.getCouponId())&&!Constants.equalsInteger(request.getCouponId(),-Constants.ONE)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犲彲鐢ㄤ紭鎯犲埜锛岃鍒锋柊鏌ョ湅");
             }
         }
@@ -1533,7 +1536,7 @@
             orderPayConfirmResponse.setIntegralAmount(integralAmount);
         }
         //浣跨敤浼樻儬鍒� 鍑忓幓浼樻儬鍒告姷鎵i噾棰�
-        if(Objects.nonNull(request.getCouponId())){
+        if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
             orderPayConfirmResponse.setCouponAmount(couponAmount);
         }
         //瀹為檯鏀粯閲戦 鍑忓幓浼樻儬鍒搞�佺Н鍒嗘姷鎵i噾棰�
@@ -2285,6 +2288,7 @@
         List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
                 .eq(Goodsorder::getIsdeleted,Constants.ZERO)
                 .eq(Goodsorder::getReceiveType,Constants.ONE)
+                .isNotNull(Goodsorder::getExchangeCode)
                 .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey(),
                 Constants.OrderStatus.WAIT_PAY.getKey(),
                 Constants.OrderStatus.PAY_DONE.getKey())
@@ -2325,7 +2329,7 @@
         List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
                 .eq(Goodsorder::getIsdeleted, Constants.ZERO)
                 .eq(Goodsorder::getStatus, Constants.OrderStatus.WAIT_PAY.getKey())
-                .ge(Goodsorder::getCreateDate, "DATE_SUB(NOW(), INTERVAL 15 MINUTE)")
+                        .apply(" CREATE_DATE >  DATE_SUB(NOW(), INTERVAL 15 MINUTE) ")
         );
         if(CollectionUtils.isNotEmpty(goodsorderList)){
             for (Goodsorder goodsorder:goodsorderList) {
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;
     }
 
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
index 8642b11..c027aad 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -724,9 +724,7 @@
         String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
         for(Shop model:shopList){
-
             model.setImgFullUrl(StringUtils.isNotBlank(model.getImgurl())?path+model.getImgurl():null);
-
         }
         return shopList;
     }

--
Gitblit v1.9.3