From 11e35e0257e48667292b4f563ddf6ce02a3a22bb Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 02 三月 2026 13:49:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java |   49 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 45 insertions(+), 4 deletions(-)

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 42dc97c..057ce21 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
@@ -1205,6 +1205,10 @@
         goodsorder.setCancelInfo(cancelInfo);
         goodsorder.setCancelUser(optUserId);
         goodsorderMapper.updateById(goodsorder);
+        if(Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)){
+            //閲婃斁鏍搁攢鐮�
+            this.releaseExchangeCode(goodsorder.getExchangeCode());
+        }
         String goodsName = "";
         List<GoodsorderDetail> goodsorderDetailList =  goodsorderDetailMapper.selectList(new QueryWrapper<GoodsorderDetail>().eq("ORDER_ID",goodsorder.getId()));
         if(!Objects.isNull(goodsorderDetailList)&&goodsorderDetailList.size()>Constants.ZERO){
@@ -1282,6 +1286,10 @@
         goodsorder.setCancelInfo(StringUtils.isBlank(cancelInfo)?"鐢ㄦ埛涓诲姩鍙栨秷":cancelInfo);
         goodsorder.setCancelUser(optUserId);
         goodsorderMapper.updateById(goodsorder);
+        if(Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)){
+            //閲婃斁鏍搁攢鐮�
+            this.releaseExchangeCode(goodsorder.getExchangeCode());
+        }
         String goodsName = "";
         List<GoodsorderDetail> goodsorderDetailList =  goodsorderDetailMapper.selectList(new QueryWrapper<GoodsorderDetail>().eq("ORDER_ID",goodsorder.getId()));
         if(!Objects.isNull(goodsorderDetailList)&&goodsorderDetailList.size()>Constants.ZERO){
@@ -1311,8 +1319,6 @@
                 memberCouponMapper.updateById(memberCoupon);
             }
         }
-
-
     }
 
     public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){
@@ -1777,6 +1783,8 @@
         goodsorder.setStatus(Constants.OrderStatus.DONE.getKey());
         goodsorder.setDoneDate(new Date());
         goodsorderMapper.updateById(goodsorder);
+        //閲婃斁鏍搁攢鐮�
+        this.releaseExchangeCode(goodsorder.getExchangeCode());
         //瀛樺湪鐜伴噾鏀粯 璧犻�� 绉垎
         if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
             //璧犻�佹秷璐硅�呯Н鍒�
@@ -1911,8 +1919,6 @@
         if(!goodsorder.getStatus().equals(Constants.OrderStatus.DONE.getKey())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎿嶄綔澶辫触锛氳鍗曟湭瀹屾垚锛屾棤娉曢��娆撅紒");
         }
-
-
     }
 
 
@@ -2222,4 +2228,39 @@
 
 
 
+    @Override
+    public String createExchangeCode(){
+        List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
+                .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+                .eq(Goodsorder::getReceiveType,Constants.ONE)
+                .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey(),
+                Constants.OrderStatus.WAIT_PAY.getKey(),
+                Constants.OrderStatus.PAY_DONE.getKey())
+        );
+        String exchangeCode = UniqueVerificationCodeGenerator.generateNumericCode();
+        if(CollectionUtils.isNotEmpty(goodsorderList)){
+            Boolean flag = true;
+            while (flag){
+                String finalExchangeCode = exchangeCode;
+                flag = goodsorderList.stream().filter(i->i.getExchangeCode().equals(finalExchangeCode)).count()>0L?true:false;
+                if(flag){
+                    exchangeCode = UniqueVerificationCodeGenerator.generateNumericCode();
+                }
+            }
+        }
+        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.EXCHANGE_KEY+exchangeCode,exchangeCode);
+        return exchangeCode;
+    }
+
+
+    /**
+     * 閲婃斁鏍搁攢鐮�
+     * @param code
+     */
+    public void releaseExchangeCode(String code){
+        if(StringUtils.isNotBlank(code)){
+            RedisUtil.deleteObject(redisTemplate,Constants.RedisKeys.EXCHANGE_KEY+code);
+        }
+    }
+
 }

--
Gitblit v1.9.3