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/ActivityServiceImpl.java   |    5 
 server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java                        |    1 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java       |    4 
 server/dmmall_service/src/main/java/com/doumee/core/utils/UniqueVerificationCodeGenerator.java  |  255 ++++++++++++++++++++++++++++++++++++
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/AddrServiceImpl.java       |   22 +++
 server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java          |    3 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java |   49 ++++++
 server/dmmall_web/src/main/java/com/doumee/api/web/mall/PaymentCallback.java                    |    4 
 server/dmmall_service/src/main/java/com/doumee/task/ScheduleTool.java                           |    1 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java     |   11 +
 server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java                              |   16 +-
 server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java              |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java  |    4 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java   |    7 -
 14 files changed, 359 insertions(+), 25 deletions(-)

diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
index 0957b51..a884c7f 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -168,6 +168,7 @@
         public static final String ACTIVITY_SIGN_KEY = "actcode_";
         public static final String AFTERSALE_KEY = "salecode_";
         public static final String WITHDRAW_KEY = "withdraw_";
+        public static final String EXCHANGE_KEY = "exchange_";
     }
     /**
      * 浼佷笟鏁版嵁鏉ユ簮 0骞冲彴娉ㄥ唽 1鍚庡彴瀵煎叆
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/UniqueVerificationCodeGenerator.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/UniqueVerificationCodeGenerator.java
new file mode 100644
index 0000000..8ae73ed
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/UniqueVerificationCodeGenerator.java
@@ -0,0 +1,255 @@
+package com.doumee.core.utils;
+
+import java.security.SecureRandom;
+import java.util.HashSet;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * 涓嶉噸澶嶆牳閿�鐮佺敓鎴愬櫒
+ * 鐢ㄤ簬鐢熸垚鍞竴涓旀槗浜庤瘑鍒殑鏍搁攢鐮�
+ */
+public class UniqueVerificationCodeGenerator {
+    
+    private final Set<String> usedCodes;
+    private final int codeLength;
+    private final String prefix;
+    private final String suffix;
+    private final Random random;
+    private final boolean useSecureRandom;
+    private final CodeFormat format;
+    
+    // 鏍搁攢鐮佹牸寮忔灇涓�
+    public enum CodeFormat {
+        NUMERIC_ONLY("0123456789"),
+        ALPHANUMERIC("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
+        LETTERS_ONLY("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
+        
+        private final String characters;
+        
+        CodeFormat(String characters) {
+            this.characters = characters;
+        }
+        
+        public String getCharacters() {
+            return characters;
+        }
+    }
+    
+    /**
+     * 鏋勯�犲嚱鏁� - 榛樿鏁板瓧鏍煎紡
+     * @param codeLength 鏍搁攢鐮侀暱搴�
+     */
+    public UniqueVerificationCodeGenerator(int codeLength) {
+        this(codeLength, "", "", CodeFormat.NUMERIC_ONLY, false);
+    }
+    
+    /**
+     * 鏋勯�犲嚱鏁� - 瀹屾暣閰嶇疆
+     * @param codeLength 鏍搁攢鐮侀暱搴�
+     * @param prefix 鍓嶇紑
+     * @param suffix 鍚庣紑
+     * @param format 鏍搁攢鐮佹牸寮�
+     * @param useSecureRandom 鏄惁浣跨敤瀹夊叏闅忔満鏁扮敓鎴愬櫒
+     */
+    public UniqueVerificationCodeGenerator(int codeLength, String prefix, String suffix, 
+                                         CodeFormat format, boolean useSecureRandom) {
+        if (codeLength < 1) {
+            throw new IllegalArgumentException("鏍搁攢鐮侀暱搴﹀繀椤诲ぇ浜�0");
+        }
+        
+        this.codeLength = codeLength;
+        this.prefix = prefix != null ? prefix : "";
+        this.suffix = suffix != null ? suffix : "";
+        this.format = format;
+        this.usedCodes = new HashSet<>();
+        this.useSecureRandom = useSecureRandom;
+        this.random = useSecureRandom ? new SecureRandom() : ThreadLocalRandom.current();
+    }
+    
+    /**
+     * 鐢熸垚涓嬩竴涓笉閲嶅鐨勬牳閿�鐮�
+     * @return 鏍搁攢鐮侊紝濡傛灉娌℃湁鍙敤缁勫悎鍒欒繑鍥瀗ull
+     */
+    public String nextUniqueCode() {
+        int maxAttempts = 1000;
+        int attempts = 0;
+        
+        while (attempts < maxAttempts) {
+            String code = generateCode();
+            if (!usedCodes.contains(code)) {
+                usedCodes.add(code);
+                return code;
+            }
+            attempts++;
+        }
+        
+        // 濡傛灉闅忔満鐢熸垚澶辫触锛屽皾璇曢『搴忕敓鎴�
+        return generateSequentialCode();
+    }
+    
+    /**
+     * 鐢熸垚鎸囧畾鏁伴噺鐨勪笉閲嶅鏍搁攢鐮�
+     * @param count 鏁伴噺
+     * @return 鏍搁攢鐮佸垪琛�
+     */
+    public List<String> nextUniqueCodes(int count) {
+        List<String> result = new ArrayList<>();
+        for (int i = 0; i < count; i++) {
+            String code = nextUniqueCode();
+            if (code == null) {
+                break; // 娌℃湁鏇村鍙敤缁勫悎
+            }
+            result.add(code);
+        }
+        return result;
+    }
+    
+    /**
+     * 鐢熸垚鍗曚釜鏍搁攢鐮侊紙涓嶆鏌ラ噸澶嶏級
+     * @return 鏍搁攢鐮�
+     */
+    private String generateCode() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(prefix);
+        
+        String characters = format.getCharacters();
+        for (int i = 0; i < codeLength; i++) {
+            int index = random.nextInt(characters.length());
+            sb.append(characters.charAt(index));
+        }
+        
+        sb.append(suffix);
+        return sb.toString();
+    }
+    
+    /**
+     * 椤哄簭鐢熸垚鏍搁攢鐮侊紙浣滀负澶囬�夋柟妗堬級
+     */
+    private String generateSequentialCode() {
+        String characters = format.getCharacters();
+        long totalCombinations = (long) Math.pow(characters.length(), codeLength);
+        
+        if (usedCodes.size() >= totalCombinations) {
+            return null; // 鎵�鏈夊彲鑳界粍鍚堥兘宸蹭娇鐢�
+        }
+        
+        // 瀵绘壘涓嬩竴涓湭浣跨敤鐨勭粍鍚�
+        for (long i = 0; i < totalCombinations; i++) {
+            String code = convertToCode(i, characters);
+            String fullCode = prefix + code + suffix;
+            if (!usedCodes.contains(fullCode)) {
+                usedCodes.add(fullCode);
+                return fullCode;
+            }
+        }
+        
+        return null;
+    }
+    
+    /**
+     * 灏嗘暟瀛楄浆鎹负鎸囧畾瀛楃闆嗙殑缂栫爜
+     */
+    private String convertToCode(long number, String characters) {
+        StringBuilder sb = new StringBuilder();
+        long base = characters.length();
+        
+        for (int i = 0; i < codeLength; i++) {
+            sb.append(characters.charAt((int) (number % base)));
+            number /= base;
+        }
+        
+        return sb.reverse().toString();
+    }
+    
+    /**
+     * 閲嶇疆鐢熸垚鍣�
+     */
+    public void reset() {
+        usedCodes.clear();
+    }
+    
+    /**
+     * 鑾峰彇宸蹭娇鐢ㄧ殑鏍搁攢鐮佹暟閲�
+     */
+    public int getUsedCount() {
+        return usedCodes.size();
+    }
+    
+    /**
+     * 妫�鏌ユ槸鍚﹁繕鏈夊彲鐢ㄧ殑鏍搁攢鐮佺粍鍚�
+     */
+    public boolean hasMoreCodes() {
+        String characters = format.getCharacters();
+        long totalCombinations = (long) Math.pow(characters.length(), codeLength);
+        return usedCodes.size() < totalCombinations;
+    }
+    
+    // ==================== 闈欐�佷究鎹锋柟娉� ====================
+    
+    /**
+     * 鐢熸垚鏁板瓧鍨嬫牳閿�鐮侊紙榛樿6浣嶏級
+     */
+    public static String generateNumericCode() {
+        return generateNumericCode(6);
+    }
+    
+    /**
+     * 鐢熸垚鎸囧畾闀垮害鐨勬暟瀛楀瀷鏍搁攢鐮�
+     */
+    public static String generateNumericCode(int length) {
+        UniqueVerificationCodeGenerator generator =
+            new UniqueVerificationCodeGenerator(length, "", "", CodeFormat.NUMERIC_ONLY, true);
+        return generator.nextUniqueCode();
+    }
+    
+    /**
+     * 鎵归噺鐢熸垚鏁板瓧鍨嬫牳閿�鐮�
+     */
+    public static List<String> generateNumericCodes(int length, int count) {
+        UniqueVerificationCodeGenerator generator =
+            new UniqueVerificationCodeGenerator(length, "", "", CodeFormat.NUMERIC_ONLY, true);
+        return generator.nextUniqueCodes(count);
+    }
+    
+    /**
+     * 鐢熸垚甯﹀墠缂�鐨勬牳閿�鐮�
+     */
+    public static String generatePrefixedCode(String prefix, int length) {
+        UniqueVerificationCodeGenerator generator =
+            new UniqueVerificationCodeGenerator(length, prefix, "", CodeFormat.NUMERIC_ONLY, true);
+        return generator.nextUniqueCode();
+    }
+    
+    /**
+     * 鐢熸垚瀛楁瘝鏁板瓧娣峰悎鏍搁攢鐮�
+     */
+    public static String generateAlphanumericCode(int length) {
+        UniqueVerificationCodeGenerator generator =
+            new UniqueVerificationCodeGenerator(length, "", "", CodeFormat.ALPHANUMERIC, true);
+        return generator.nextUniqueCode();
+    }
+    
+    /**
+     * 鐢熸垚璁㈠崟鍙锋牸寮忕殑鏍搁攢鐮侊紙濡傦細ORD20241201XXXXXX锛�
+     */
+    public static String generateOrderCode(String prefix) {
+        String datePart = java.time.LocalDateTime.now().format(
+            java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd"));
+        UniqueVerificationCodeGenerator generator =
+            new UniqueVerificationCodeGenerator(6, prefix + datePart, "", CodeFormat.NUMERIC_ONLY, true);
+        return generator.nextUniqueCode();
+    }
+    
+    /**
+     * 鐢熸垚浼樻儬鍒哥爜鏍煎紡锛堝锛欳OUPON-XXXXXX锛�
+     */
+    public static String generateCouponCode() {
+        UniqueVerificationCodeGenerator generator =
+            new UniqueVerificationCodeGenerator(8, "COUPON-", "", CodeFormat.ALPHANUMERIC, true);
+        return generator.nextUniqueCode();
+    }
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
index a37c8c9..f47066a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -239,4 +239,7 @@
 
 
     void orderRefund(Goodsorder goodsorder);
+
+    String createExchangeCode();
+
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
index 10742fd..ee20e5d 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -130,7 +130,7 @@
     AccountResponse wxLogin(String code);
 
 
-//    AccountResponse wxLoginTest( Integer recId);
+    AccountResponse wxLoginTest( Integer memberId);
 
 
     /**
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java
index 0470ffd..218c342 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java
@@ -1117,8 +1117,9 @@
                 .eq(Activity::getStatus,Constants.ZERO)
                 .eq(Objects.nonNull(model.getLabelId()),Activity::getLabelId,model.getLabelId())
                 .eq(Objects.nonNull(model.getBrandId()),Activity::getBrandId,model.getBrandId())
-                .like(StringUtils.isNotBlank(model.getInfo()),Activity::getContent,model.getInfo())
-                .orderByDesc(Labels::getId)
+                .and(StringUtils.isNotBlank(model.getInfo()),i->i.like(Activity::getContent,model.getInfo()).or()
+                        .like(Activity::getName,model.getInfo()))
+                .orderByDesc(Activity::getId)
         ;
         queryWrapper.orderByDesc(Activity::getCreateDate);
         IPage<Activity> activityIPage = activityJoinMapper.selectJoinPage(page, Activity.class, queryWrapper);
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AddrServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AddrServiceImpl.java
index 808a33c..e70f2cc 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AddrServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AddrServiceImpl.java
@@ -1,5 +1,7 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
@@ -41,7 +43,15 @@
 
     @Override
     public Integer create(AddrDTO addrDTO,Integer memberId) {
-
+        if(Objects.isNull(addrDTO)
+        || StringUtils.isBlank(addrDTO.getAddr())
+        || StringUtils.isBlank(addrDTO.getName())
+        || StringUtils.isBlank(addrDTO.getPhone())
+        || Objects.isNull(addrDTO.getAreaId())
+        || Objects.isNull(addrDTO.getIsDefault())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         Addr addr = new Addr();
         addr.setMemberId(memberId);
         addr.setIsDefault(addrDTO.getIsDefault());
@@ -165,6 +175,16 @@
 
     @Override
     public void update(AddrDTO addrDTO) {
+        if(Objects.isNull(addrDTO)
+                || StringUtils.isBlank(addrDTO.getAddr())
+                || StringUtils.isBlank(addrDTO.getName())
+                || StringUtils.isBlank(addrDTO.getPhone())
+                || Objects.isNull(addrDTO.getAreaId())
+                || Objects.isNull(addrDTO.getIsDefault())
+                || Objects.isNull(addrDTO.getId())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         //瀛樺湪璁剧疆
         if (Objects.nonNull(addrDTO.getIsDefault())
                 && Constants.equalsInteger(addrDTO.getIsDefault(),Constants.ONE)){
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 4d1003d..38747e8 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
@@ -1173,6 +1173,10 @@
                 .eq(Goodsorder::getId, goodsorder.getId())
         );
 
+        //閲婃斁鏍搁攢鐮�
+        if(Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)&&StringUtils.isNotBlank(goodsorder.getExchangeCode())){
+            RedisUtil.deleteObject(redisTemplate,Constants.RedisKeys.EXCHANGE_KEY+goodsorder.getExchangeCode());
+        }
     }
 
 
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);
+        }
+    }
+
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 217c3c1..e7949b5 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -339,6 +339,17 @@
 
 
     @Override
+    public AccountResponse wxLoginTest(Integer memberId){
+        Member member = memberMapper.selectById(memberId);
+        AccountResponse accountResponse = new AccountResponse();
+        String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
+        accountResponse.setToken(token);
+        accountResponse.setMember(member);
+        return accountResponse;
+    }
+
+
+    @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
         try {
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 263d5f3..61c08ad 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
@@ -712,7 +712,9 @@
                 .selectAll(Shop.class)
                 .select(" CONVERT( ST_Distance_Sphere ( POINT ( LONGITUDE, LATITUDE ), POINT ( '"+dto.getLgt()+"' , '"+dto.getLat()+"' )) /1000,DECIMAL(15,2))",Shop::getDistance)
                 .leftJoin(SystemUser.class,SystemUser::getId,Shop::getCreator)
-                .like(StringUtils.isNotBlank(dto.getCityName()),Shop::getAddr,dto.getCityName())
+                .leftJoin("areas a1 on a1.id=t.area_id")
+                .leftJoin("areas a2 on a2.id=a1.parent_id")
+                .like(StringUtils.isNotBlank(dto.getCityName()),"a2.name",dto.getCityName())
                 .like(StringUtils.isNotBlank(dto.getShopName()),Shop::getName,dto.getShopName())
                 .orderByDesc(!isArea,Shop::getId)
                 .orderByAsc(isArea," distance ")
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java
index 8bc2f8a..e8b89d8 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java
@@ -234,13 +234,6 @@
                 .eq("MEMBER_ID",addCartGoodsRequest.getMemberId())
                 .eq("GOODS_SKU_ID",addCartGoodsRequest.getGoodsSkuId())
         );
-//        Goods goods = goodsMapper.selectById(addCartGoodsRequest.getGoodsId());
-//        if(Objects.isNull(goods)){
-//            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗗搧淇℃伅");
-//        }
-//        if(!goods.getType().equals(Constants.ZERO)){
-//            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"闈炲晢鍩庡晢鍝佹棤娉曞姞鍏ヨ喘鐗╄溅");
-//        }
         GoodsSku goodsSku = goodsSkuMapper.selectById(addCartGoodsRequest.getGoodsSkuId());
         if(Objects.isNull(goodsSku)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍟嗗搧SKU淇℃伅");
diff --git a/server/dmmall_service/src/main/java/com/doumee/task/ScheduleTool.java b/server/dmmall_service/src/main/java/com/doumee/task/ScheduleTool.java
index 3a35880..b19a90e 100644
--- a/server/dmmall_service/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/dmmall_service/src/main/java/com/doumee/task/ScheduleTool.java
@@ -40,6 +40,7 @@
 
     @Autowired
     private AreasService areasService;
+
 //    @Autowired
 //    private AftersaleService aftersaleService;
 //
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
index 28b6fc6..8269a4a 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java
@@ -59,14 +59,14 @@
         return  ApiResponse.success(memberService.wxPhone(wxPhoneRequest));
     }
 
-//    @ApiOperation(value = "娴嬭瘯鐧婚檰鎺ュ彛", notes = "灏忕▼搴忕")
-//    @GetMapping("/testLogin")
-//    @ApiImplicitParams({
-//            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "memberId", value = "鐢ㄦ埛缂栫爜", required = false)
-//    })
-//    public ApiResponse testLogin(@RequestParam   Integer memberId) {
-//        return  ApiResponse.success(memberService.wxLoginTest(memberId));
-//    }
+    @ApiOperation(value = "娴嬭瘯鐧婚檰鎺ュ彛", notes = "灏忕▼搴忕")
+    @GetMapping("/testLogin")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "memberId", value = "鐢ㄦ埛缂栫爜", required = false)
+    })
+    public ApiResponse testLogin(@RequestParam  Integer memberId) {
+        return  ApiResponse.success(memberService.wxLoginTest(memberId));
+    }
 
     @ApiOperation(value = "鑾峰彇绯荤粺閰嶇疆", notes = "灏忕▼搴忕")
     @GetMapping("/getPlatformAboutUs")
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/PaymentCallback.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/PaymentCallback.java
index 8de04d0..0aae790 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/PaymentCallback.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/PaymentCallback.java
@@ -115,7 +115,9 @@
                         goodsOrder.setPayOrderId(paymentNo);
                         goodsOrder.setStatus(Constants.OrderStatus.PAY_DONE.getKey());
                         //鐢熸垚鏍搁攢鐮�
-                        goodsOrder.setExchangeCode(Constants.equalsInteger(goodsOrder.getReceiveType(),Constants.ZERO)?null:Constants.getRandomNumber());
+                        if(Constants.equalsInteger(goodsOrder.getReceiveType(),Constants.ONE)){
+                            goodsOrder.setExchangeCode(goodsorderService.createExchangeCode());
+                        }
                         goodsOrder.setPayMethod(Constants.ZERO);
                         goodsorderService.updateById(goodsOrder);
                         if(Objects.nonNull(goodsOrder.getPickUpShopId())){

--
Gitblit v1.9.3