From d295f1f7706e51b158cb7252b6ac633b1f9a1982 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 12 五月 2026 09:07:56 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dingyuannongji

---
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDict.java                       |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java             |  119 +++-
 server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/GoodsSkuResponse.java           |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/ActivityService.java                  |    1 
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityReplyCommentDTO.java      |    6 
 server/.gitignore                                                                                     |    3 
 server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java                        |   22 
 server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java                                     |   10 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemMenu.java                       |    6 
 server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java                           |   29 +
 server/dmmall_service/src/main/java/com/doumee/dao/business/IntegralMapper.java                       |    3 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderDetailServiceImpl.java |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDictData.java                   |    2 
 server/dmmall_service/src/main/java/com/doumee/dao/web/request/AfterSaleApplyRequest.java             |    2 
 server/dmmall_service/src/main/resources/application-test.yml                                         |    2 
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/UserCenterVO.java                          |    1 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java            |   58 +-
 server/dmmall_admin/src/main/java/com/doumee/api/business/ActivityController.java                     |    1 
 server/dmmall_service/src/main/java/com/doumee/core/utils/aliyun/ALiYunSmSUtil.java                   |    6 
 server/dmmall_web/src/main/java/com/doumee/api/web/UtilApi.java                                       |    1 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/InviteRecord.java                   |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java         |   37 +
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java                   |    2 
 server/dmmall_service/src/main/resources/mappers/SystemMenuMapper.xml                                 |   16 
 server/dmmall_service/src/main/resources/mappers/SystemDictDataMapper.xml                             |    6 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java                     |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java                          |   54 --
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityCommentDTO.java           |    4 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/CollectServiceImpl.java          |    4 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java       |  168 +++++-
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java     |    7 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Collect.java                        |    8 
 server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java        |    4 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPosition.java                   |    6 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java                   |    2 
 .vscode/launch.json                                                                                   |   84 +++
 server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsSkuMapper.java                       |    2 
 server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java                                       |   11 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java               |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java        |   99 ++--
 server/dmmall_service/src/main/resources/mappers/SystemPositionMapper.xml                             |   16 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPermission.java                 |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java           |    2 
 server/dmmall_admin/src/main/java/com/doumee/api/business/CommentController.java                      |   14 
 server/dmmall_service/src/main/resources/mappers/SystemDictMapper.xml                                 |    6 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java                   |    2 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java                 |    2 
 server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java                                   |   18 
 server/dmmall_service/src/main/resources/mappers/SystemPermissionMapper.xml                           |   18 
 server/dmmall_web/src/main/java/com/doumee/api/web/CommentApi.java                                    |   14 
 server/dmmall_service/src/main/resources/application-dev.yml                                          |   30 +
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java           |   77 ++-
 server/dmmall_service/src/main/resources/application-pro.yml                                          |   22 
 server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java                                    |    4 
 server/dmmall_admin/src/main/resources/application.yml                                                |    2 
 server/dmmall_service/src/main/resources/mappers/SystemDataPermissionMapper.xml                       |    8 
 server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java                    |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java                   |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java         |    2 
 server/dmmall_service/src/main/resources/mappers/SystemDepartmentMapper.xml                           |   10 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUser.java                       |    2 
 server/dmmall_admin/src/main/java/com/doumee/api/business/AftersaleController.java                    |    7 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRole.java                       |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java              |    8 
 server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java         |   10 
 server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java                              |    2 
 .vscode/settings.json                                                                                 |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java             |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java          |  119 +++-
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopUpdatePwdDTO.java                 |   16 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java     |   24 +
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/NoticeCardDTO.java                         |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/CommentService.java                   |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java                |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java   |    1 
 server/dmmall_service/src/main/resources/mappers/SystemUserMapper.xml                                 |   14 
 server/dmmall_web/src/main/resources/application.yml                                                  |    2 
 server/dmmall_service/src/main/resources/mappers/SystemRoleMapper.xml                                 |   10 
 server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java                      |    8 
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java             |    2 
 server/.vscode/settings.json                                                                          |    3 
 server/dmmall_web/src/main/java/com/doumee/api/common/PublicController.java                           |   51 +
 server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java             |    2 
 83 files changed, 917 insertions(+), 431 deletions(-)

diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..e4133bd
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,84 @@
+{
+    // 浣跨敤 IntelliSense 浜嗚В鐩稿叧灞炴�с�� 
+    // 鎮仠浠ユ煡鐪嬬幇鏈夊睘鎬х殑鎻忚堪銆�
+    // 娆蹭簡瑙f洿澶氫俊鎭紝璇疯闂�: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "type": "java",
+            "name": "Current File",
+            "request": "launch",
+            "mainClass": "${file}"
+        },
+        {
+            "type": "java",
+            "name": "AdminApplication",
+            "request": "launch",
+            "mainClass": "com.doumee.AdminApplication",
+            "projectName": "dmmall_admin"
+        },
+        {
+            "type": "java",
+            "name": "CodeGenerator",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.CodeGenerator",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "CodeVerifyUtils",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.CodeVerifyUtils",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "Constants",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.Constants",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "DateUtil",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.DateUtil",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "GeneratePicUtil",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.GeneratePicUtil",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "HttpsUtil",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.HttpsUtil",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "PinYinUtil",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.PinYinUtil",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "ALiYunUtil",
+            "request": "launch",
+            "mainClass": "com.doumee.core.utils.aliyun.ALiYunUtil",
+            "projectName": "dmmall_service"
+        },
+        {
+            "type": "java",
+            "name": "InterfaceApplication",
+            "request": "launch",
+            "mainClass": "com.doumee.InterfaceApplication",
+            "projectName": "dmmall_web"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..8f2b711
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "java.compile.nullAnalysis.mode": "disabled"
+}
\ No newline at end of file
diff --git a/server/.gitignore b/server/.gitignore
index 6d4d538..a897f61 100644
--- a/server/.gitignore
+++ b/server/.gitignore
@@ -26,4 +26,5 @@
 unpackage/ 
 mini-program/unpackage/
 mini-program/node_modules/
-mini-program/mp-weixin/
\ No newline at end of file
+mini-program/mp-weixin/
+/CLAUDE.md
diff --git a/server/.vscode/settings.json b/server/.vscode/settings.json
new file mode 100644
index 0000000..7b016a8
--- /dev/null
+++ b/server/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "java.compile.nullAnalysis.mode": "automatic"
+}
\ No newline at end of file
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/ActivityController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/ActivityController.java
index a986f90..958646f 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/ActivityController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/ActivityController.java
@@ -50,6 +50,7 @@
     @GetMapping("/delete/batch")
     @RequiresPermissions("business:activity:delete")
     public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        
         String [] idArray = ids.split(",");
         List<Integer> idList = new ArrayList<>();
         for (String id : idArray) {
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/AftersaleController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/AftersaleController.java
index 307fd1e..58fa80c 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/AftersaleController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/AftersaleController.java
@@ -1,8 +1,7 @@
 package com.doumee.api.business;
 
 import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.excel.ExcelExporter; 
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
@@ -15,9 +14,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
+ 
 
 /**
  * @author 姹熻箘韫�
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/CommentController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/CommentController.java
index c729db0..1e07049 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/CommentController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/CommentController.java
@@ -30,13 +30,13 @@
     @Autowired
     private CommentService commentService;
 
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:comment:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        commentService.deleteById(id);
-        return ApiResponse.success(null);
-    }
+//    @ApiOperation("鏍规嵁ID鍒犻櫎")
+//    @GetMapping("/delete/{id}")
+//    @RequiresPermissions("business:comment:delete")
+//    public ApiResponse deleteById(@PathVariable Integer id) {
+//        commentService.deleteById(id);
+//        return ApiResponse.success(null);
+//    }
 
     @ApiOperation("鎵归噺鍒犻櫎")
     @GetMapping("/delete/batch")
diff --git a/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java b/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java
index ef3ba1a..d99d45c 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/task/ScheduleTool.java
@@ -131,6 +131,24 @@
     }
 
     /**
+     * 瀹氭椂鑷姩瀹屾垚 7 澶╂湭纭鏀惰揣鐨勭墿娴佸彂璐ц鍗�
+     * 姣� 10 鍒嗛挓鎵ц涓�娆�
+     */
+    @Scheduled(fixedDelay = 1000L * 60 * 10L )
+    public void autoCompleteOrder(){
+        if (timing) {
+            System.out.println("寮�濮嬫墽琛岃鍗曡嚜鍔ㄥ畬鎴愪换鍔�--------Begin------");
+            try {
+                goodsorderService.autoCompleteOrder();
+                System.out.println("璁㈠崟鑷姩瀹屾垚浠诲姟鎵ц鎴愬姛--------End------");
+            } catch (Exception e) {
+                System.out.println("璁㈠崟鑷姩瀹屾垚浠诲姟鎵ц澶辫触锛�" + e.getMessage());
+            }
+        }
+    }
+
+
+    /**
      * 瀹氭椂瀹屾垚鍞悗鍗曠姸鎬�
      */
 //    @Scheduled(fixedDelay = 1000L * 10L )
diff --git a/server/dmmall_admin/src/main/resources/application.yml b/server/dmmall_admin/src/main/resources/application.yml
index 1df4a1a..b3e6363 100644
--- a/server/dmmall_admin/src/main/resources/application.yml
+++ b/server/dmmall_admin/src/main/resources/application.yml
@@ -8,7 +8,7 @@
   #  application:
   #    name: doumeemes
   profiles:
-    active: dev
+    active: pro
 
   # JSON杩斿洖閰嶇疆
   jackson:
diff --git a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
index 3fdc912..87fb6f5 100644
--- a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
+++ b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
@@ -1,10 +1,13 @@
 package com.doumee.config.Jwt;
 
+import com.alibaba.fastjson.JSONObject;
 import com.doumee.config.annotation.LoginRequired;
 import com.doumee.config.annotation.LoginShopRequired;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.Shop;
 import io.jsonwebtoken.JwtException;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +23,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.lang.reflect.Method;
+import java.util.Objects;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
@@ -103,19 +106,28 @@
             if(StringUtils.isBlank(tokenRedis)){
                 throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
             }
+            Member member = JSONObject.parseObject(tokenRedis, Member.class);
+            if(Objects.isNull(member)||StringUtils.isBlank(member.getOpenId())){
+                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
+            }
+            String openid = member.getOpenId();
             Integer memberId = getTokenId(token);
-            Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,0)  from Member where id  = ?", Integer.class, memberId);
+            Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,0)  from member where id  = ?", Integer.class, memberId);
             if(isDeleted== Constants.ONE){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
             }
-            Integer isForbidden = dao.queryForObject(" select COALESCE(STATUS,0)  from Member where id  = ?", Integer.class, memberId);
+            Integer isForbidden = dao.queryForObject(" select COALESCE(STATUS,0)  from member where id  = ?", Integer.class, memberId);
             if(isForbidden == Constants.ONE){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
             }
             if(isForbidden == Constants.TWO){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸叉敞閿�,璇疯仈绯荤鐞嗗憳");
             }
-            Integer count = dao.queryForObject("select count(1) from Member where id  = ?", Integer.class, memberId);
+            String dbOpenid = dao.queryForObject(" select ifnull(open_id,'')  from member where id  = ?", String.class, memberId);
+            if(StringUtils.isBlank(dbOpenid)||!openid.equals(dbOpenid)){
+                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�");
+            }
+            Integer count = dao.queryForObject("select count(1) from member where id  = ?", Integer.class, memberId);
             if (count != null && count > 0) {
                 request.setAttribute(JwtTokenUtil.UserId_Name, memberId);
                 return true;
@@ -138,6 +150,11 @@
             if(StringUtils.isBlank(tokenRedis)){
                 throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
             }
+            Shop shop = JSONObject.parseObject(tokenRedis, Shop.class);
+            if(Objects.isNull(shop)||StringUtils.isBlank(shop.getOpenId())){
+                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
+            }
+            String openid = shop.getOpenId();
             Integer shopId = getTokenId(token);
             Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,0)  from shop where id  = ?", Integer.class, shopId);
             if(isDeleted== Constants.ONE){
@@ -147,6 +164,10 @@
             if(isForbidden== Constants.ONE){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
             }
+            String dbOpenid = dao.queryForObject(" select ifnull(open_id,'')  from shop where id  = ?", String.class, shopId);
+            if(StringUtils.isBlank(dbOpenid)||!openid.equals(dbOpenid)){
+                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�");
+            }
             Integer count = dao.queryForObject("select count(1) from shop where id  = ?", Integer.class, shopId);
             if (count != null && count > 0) {
                 request.setAttribute(JwtTokenUtil.ShopId_Name, shopId);
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 ba8ae45..5caab6b 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
@@ -1385,7 +1385,7 @@
         // 鍦烘櫙鐮侊紝涓庡墠绔害瀹氾紝鏈�缁堟槸闇�瑕佸墠绔В鏋�
         body.put("scene", scene);
         // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛��
-        String env_version = "develop";
+        String env_version = "trial";
         body.put("env_version", env_version);
         if(isUsePage){
             body.put("page", page);
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
index 89f9c8d..c4bd328 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/GeneratePicUtil.java
@@ -24,7 +24,7 @@
 @Slf4j
 public class GeneratePicUtil {
 
-    static String bg="https://shoeslxkj.oss-cn-beijing.aliyuncs.com/file/20230404/SysBaseBackGround/D56231512C0B4A4C9D06B02F9566B0B0.png";
+    static String bg="https://dynometacn.oss-cn-shanghai.aliyuncs.com/goods/20260319/feccd954-32f7-47e2-96fb-be102b643f1f.png";
 
     static String headUrl = "https://shoeslxkj.oss-cn-beijing.aliyuncs.com/file/20230404/SysBaseBackGround/B802B64FE31447DCB030F13ECC7CA9F9.png";
 
@@ -339,22 +339,22 @@
         g2.fillRect(0, 0, width, height);
 
         //鑳屾櫙鍥剧墖
-//        BufferedImage titles = ImageIO.read(new URL(bg));
-//        g2.drawImage(titles, 1, 1, 894, 1305, null);
-//        g2.drawRect(0, 0, width - 1, height - 1);
+        BufferedImage titles = ImageIO.read(new URL(bg));
+        g2.drawImage(titles, 1, 1, 894, 1305, null);
+        g2.drawRect(0, 0, width - 1, height - 1);
         //澶撮儴鍥剧墖
         BufferedImage headBg = ImageIO.read(new URL(headImg));
 //        BufferedImage headBg = getImgIO(imgurl);
         g2.drawImage(headBg, 1, 1, 894, 1080, null);
         g2.drawRect(0, 0, width - 1, height - 1);
 
-        g2.setColor(Color.black);
-        g2.setFont(new Font("榛戜綋", Font.PLAIN, 40));
-        g2.drawString("闀挎寜璇嗗埆灏忕▼搴�", 46, 1180);
-
-        g2.setColor(Color.gray);
-        g2.setFont(new Font("榛戜綋", Font.PLAIN, 32));
-        g2.drawString("鏌ョ湅鏇村绮惧僵鍐呭", 48, 1230);
+//        g2.setColor(Color.black);
+//        g2.setFont(new Font("榛戜綋", Font.PLAIN, 40));
+//        g2.drawString("闀挎寜璇嗗埆灏忕▼搴�", 46, 1180);
+//
+//        g2.setColor(Color.gray);
+//        g2.setFont(new Font("榛戜綋", Font.PLAIN, 32));
+//        g2.drawString("鏌ョ湅鏇村绮惧僵鍐呭", 48, 1230);
 
         //璁剧疆浜岀淮鐮佸浘鐗�
 //        BufferedImage barcodeCode = ImageIO.read(new URL(wxQrCodeImg));
diff --git a/server/dmmall_service/src/main/java/com/doumee/core/utils/aliyun/ALiYunSmSUtil.java b/server/dmmall_service/src/main/java/com/doumee/core/utils/aliyun/ALiYunSmSUtil.java
index 5f760fe..48053a3 100644
--- a/server/dmmall_service/src/main/java/com/doumee/core/utils/aliyun/ALiYunSmSUtil.java
+++ b/server/dmmall_service/src/main/java/com/doumee/core/utils/aliyun/ALiYunSmSUtil.java
@@ -30,7 +30,7 @@
          * accessSecret 鑷繁鐨勭敤鎴穉ccessSecret
          */
         DefaultProfile profile = DefaultProfile.getProfile(
-                "cn-hangzhou", "LTAI5tP56bE38bWvqqfSRkCQ", "lXcIyDrc9K01x3FjSgZqcKlrHwsE8b");
+                "cn-hangzhou", "LTAI5tDuA9DXBJvVfJfMb19L", "IUsWIhUXd9pEgTNEkz1b3POI3javKN");
         IAcsClient client = new DefaultAcsClient(profile);
         // 鏋勫缓璇锋眰锛�
         CommonRequest request = new CommonRequest();
@@ -42,9 +42,9 @@
         // 鎵嬫満鍙�
         request.putQueryParameter("PhoneNumbers", phone);
         // 鐭俊绛惧悕
-        request.putQueryParameter("SignName", "璞嗙背绉戞妧");
+        request.putQueryParameter("SignName", "鍚堣偉榧庡厓鏃嬪帇绉戞妧");
         // 鐭俊妯$増CODE
-        request.putQueryParameter("TemplateCode", "SMS_243960729");
+        request.putQueryParameter("TemplateCode", "SMS_332555204");
         // 鏋勫缓鐭俊楠岃瘉鐮�
         request.putQueryParameter("TemplateParam", JSONObject.toJSONString(codeMap));
         try {
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsSkuMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsSkuMapper.java
index a4113ce..5d70e94 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsSkuMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsSkuMapper.java
@@ -20,7 +20,7 @@
      * @param goodsId
      * @return
      */
-    @Select(" select s.* , g.IMGURL as goodsImgUrl from goods_sku s  left join goods g on s.GOODS_ID = g.id  where   s.isdeleted = 0 and  s.goods_Id = #{goodsId} ")
+    @Select(" select s.* , s.stock as stockStr , g.IMGURL as goodsImgUrl from goods_sku s  left join goods g on s.GOODS_ID = g.id  where   s.isdeleted = 0 and  s.goods_Id = #{goodsId} ")
     List<GoodsSkuResponse> getSkuResponseList(@Param("goodsId") Integer goodsId);
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/IntegralMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/IntegralMapper.java
index b0b8567..9cddfde 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/IntegralMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/IntegralMapper.java
@@ -2,11 +2,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.doumee.dao.business.model.Integral;
+import com.github.yulichang.base.mapper.MPJJoinMapper;
 
 /**
  * @author 姹熻箘韫�
  * @date 2023/03/21 15:48
  */
-public interface IntegralMapper extends BaseMapper<Integral> {
+public interface IntegralMapper extends MPJJoinMapper<Integral> {
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java
index 7b90f19..75e67c6 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Areas.java
@@ -136,58 +136,4 @@
         }
     }
 
-
-    /**
-     * 鐢ㄦ埛淇℃伅鎿嶄綔璁板綍琛�
-     * @author 姹熻箘韫�
-     * @date 2023/03/21 15:17
-     */
-    @Data
-    @ApiModel("鐢ㄦ埛淇℃伅鎿嶄綔璁板綍琛�")
-    @TableName("`member_history`")
-    public static class MemberHistory {
-
-        @ApiModelProperty(value = "涓婚敭", example = "1")
-        @ExcelColumn(name="涓婚敭")
-        private Integer id;
-
-        @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-        @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
-        private Integer creator;
-
-        @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-        @ExcelColumn(name="鍒涘缓鏃堕棿")
-        
-        private Date createDate;
-
-        @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-        @ExcelColumn(name="鏇存柊浜虹紪鐮�")
-        private Integer editor;
-
-        @ApiModelProperty(value = "鏇存柊鏃堕棿")
-        @ExcelColumn(name="鏇存柊鏃堕棿")
-        
-        private Date editDate;
-
-        @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-        @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
-        private Integer isdeleted;
-
-        @ApiModelProperty(value = "澶囨敞")
-        @ExcelColumn(name="澶囨敞")
-        private String remark;
-
-        @ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級", example = "1")
-        @ExcelColumn(name="鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級")
-        private Integer memberId;
-
-        @ApiModelProperty(value = "绫诲瀷 0绂佺敤 1鍚敤", example = "1")
-        @ExcelColumn(name="绫诲瀷 0绂佺敤 1鍚敤")
-        private Integer type;
-
-        @ApiModelProperty(value = "鎿嶄綔澶囨敞")
-        @ExcelColumn(name="鎿嶄綔澶囨敞")
-        private String info;
-
-    }
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Collect.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Collect.java
index 1901852..c0b42cd 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Collect.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Collect.java
@@ -110,11 +110,19 @@
     @TableField(exist = false)
     private String content;
 
+    @ApiModelProperty(value = "鏈�浣庝环" )
+    @TableField(exist = false)
+    private BigDecimal minPrice;
+
 
     @ApiModelProperty(value = "绀惧尯灏侀潰鍥�")
     @TableField(exist = false)
     private String activityImgurl;
 
+    @ApiModelProperty(value = "鍒嗙被棰滆壊")
+    @TableField(exist = false)
+    private String param;
+
 
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 13a8ba5..c8a63d7 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -221,6 +221,9 @@
     @ApiModelProperty(value = "閫�娆惧娉�", example = "1")
     private Integer refundInfo;
 
+    @ApiModelProperty(value = "閫�娆鹃厤缃俊鎭�", example = "1")
+    private String refundConfigInfo;
+
     @ApiModelProperty(value = "鏂囦欢鍦板潃")
     @TableField(exist = false)
     private String resourcePath;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/InviteRecord.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/InviteRecord.java
index 7bf1095..d8a2b0f 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/InviteRecord.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/InviteRecord.java
@@ -55,7 +55,7 @@
     private String phone;
 
     @ApiModelProperty(value = "鏄惁瀹屾垚棣栧崟锛�0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="瀹屾垚鏋佺" ,index =4,width = 10,valueMapping = "0=宸叉敞鍐�;1=瀹屾垚棣栧崟;")
+    @ExcelColumn(name="瀹屾垚闃舵" ,index =4,width = 10,valueMapping = "0=宸叉敞鍐�;1=瀹屾垚棣栧崟;")
     private Integer firstOrderStatus;
 
     @ApiModelProperty(value = "瀹屾垚棣栧崟鏃堕棿")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
index 9f2e4b9..c907446 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
@@ -20,7 +20,7 @@
  */
 @Data
 @ApiModel("鏁版嵁鏉冮檺閰嶇疆")
-@TableName("SYSTEM_DATA_PERMISSION")
+@TableName("system_data_permission")
 public class SystemDataPermission implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java
index 142e88b..4b9c41d 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.doumee.core.constants.OperaType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -21,6 +22,7 @@
  */
 @Data
 @ApiModel("閮ㄩ棬")
+@TableName("system_department")
 public class SystemDepartment implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java
index 292901a..35edc65 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,6 +17,7 @@
  */
 @Data
 @ApiModel("閮ㄩ棬鐢ㄦ埛")
+@TableName("system_department_user")
 public class SystemDepartmentUser implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDict.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDict.java
index 3b7729a..6ea2820 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDict.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDict.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.doumee.core.constants.OperaType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -19,6 +20,7 @@
  */
 @Data
 @ApiModel("瀛楀吀")
+@TableName("system_dict")
 public class SystemDict implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDictData.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDictData.java
index a28f058..f0fe35c 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDictData.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemDictData.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.doumee.core.constants.OperaType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -19,6 +20,7 @@
  */
 @Data
 @ApiModel("瀛楀吀鏁版嵁")
+@TableName("system_dict_data")
 public class SystemDictData implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
index 41ea8dd..8f81707 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -18,6 +19,7 @@
  */
 @Data
 @ApiModel("鐧诲綍鏃ュ織")
+@TableName("system_login_log")
 public class SystemLoginLog {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemMenu.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemMenu.java
index be604dc..5d13e08 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemMenu.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemMenu.java
@@ -1,12 +1,9 @@
 package com.doumee.dao.system.model;
 
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.*;
 import com.doumee.core.constants.OperaType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -21,6 +18,7 @@
  */
 @Data
 @ApiModel("绯荤粺鑿滃崟")
+@TableName("system_menu")
 public class SystemMenu implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPermission.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPermission.java
index 0a51540..d71469e 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPermission.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPermission.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.doumee.core.constants.OperaType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -19,6 +20,7 @@
  */
 @Data
 @ApiModel("绯荤粺鏉冮檺")
+@TableName("system_permission")
 public class SystemPermission implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPosition.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPosition.java
index 9999c3e..200f249 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPosition.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPosition.java
@@ -1,12 +1,9 @@
 package com.doumee.dao.system.model;
 
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.*;
 import com.doumee.core.constants.OperaType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -21,6 +18,7 @@
  */
 @Data
 @ApiModel("宀椾綅")
+@TableName("system_position")
 public class SystemPosition implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java
index 80407e9..05d5fc5 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,6 +17,7 @@
  */
 @Data
 @ApiModel("宀椾綅鐢ㄦ埛")
+@TableName("system_position_user")
 public class SystemPositionUser implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRole.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRole.java
index 38a7b9e..b3b75a6 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRole.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRole.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.doumee.core.constants.OperaType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -19,6 +20,7 @@
  */
 @Data
 @ApiModel("绯荤粺瑙掕壊")
+@TableName("`system_role`")
 public class SystemRole implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java
index 37b0608..4fbcc6b 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -16,6 +17,7 @@
  */
 @Data
 @ApiModel("瑙掕壊鑿滃崟鍏宠仈")
+@TableName("system_role_menu")
 public class SystemRoleMenu implements Serializable {
 
     @ApiModelProperty(value = "涓婚敭", example = "1")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java
index 5caea59..b49f195 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -16,6 +17,7 @@
  */
 @Data
 @ApiModel("瑙掕壊鏉冮檺鍏宠仈")
+@TableName("system_role_permission")
 public class SystemRolePermission implements Serializable {
 
     @ApiModelProperty(value = "涓婚敭", example = "1")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java
index 7f9ddab..8bf39f1 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -17,6 +18,7 @@
  */
 @Data
 @ApiModel("璺熻釜鏃ュ織")
+@TableName("system_trace_log")
 public class SystemTraceLog implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUser.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
index 2eead31..08c67e7 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -24,7 +24,7 @@
  */
 @Data
 @ApiModel("绯荤粺鐢ㄦ埛")
-@TableName("`SYSTEM_USER`")
+@TableName("`system_user`")
 public class SystemUser implements Serializable {
 
     @TableId(type = IdType.AUTO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java
index 5ce3e2e..791325c 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.system.model;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -16,6 +17,7 @@
  */
 @Data
 @ApiModel("鐢ㄦ埛瑙掕壊鍏宠仈")
+@TableName("`system_user_role`")
 public class SystemUserRole implements Serializable {
 
     @ApiModelProperty(value = "涓婚敭", example = "1")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/NoticeCardDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/NoticeCardDTO.java
index f15497e..d6b9d7b 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/NoticeCardDTO.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/NoticeCardDTO.java
@@ -31,7 +31,7 @@
     @ApiModelProperty(value = "瀵硅薄缂栫爜", example = "1")
     private Integer objId;
 
-    @ApiModelProperty(value = "瀵硅薄绫诲瀷 0鍟嗗煄璁㈠崟 1绉垎娴佹按 2浜掑姩璇勪环 3浼樻儬鍒� 4鐜伴噾娴佹按", example = "1")
+    @ApiModelProperty(value = "瀵硅薄绫诲瀷 0鍟嗗煄璁㈠崟 1绉垎娴佹按 2浼樻儬鍒稿彂鏀� 3杩囨湡鎻愰啋 4绀惧尯娑堟伅", example = "1")
     private Integer objType;
 
     @ApiModelProperty(value = "娑堟伅绫诲瀷 0璁㈠崟閫氱煡 1绯荤粺娑堟伅 2浜掑姩娑堟伅 3浼樻儬鍒告彁閱� 4瀹樻柟瀹㈡湇  5娲诲姩鎺ㄨ崘 6鎴戠殑鍏虫敞", example = "1")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/UserCenterVO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/UserCenterVO.java
index 72f47f1..8d77121 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/UserCenterVO.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/UserCenterVO.java
@@ -17,6 +17,7 @@
 
     @ApiModelProperty(value = "绉垎瑙勫垯")
     private String integralRule;
+
     @ApiModelProperty(value = "閭�璇疯鍒欒鏄�")
     private String invitelRule;
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityCommentDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityCommentDTO.java
index 3b7fbfa..afde5e4 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityCommentDTO.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityCommentDTO.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.web.dto.activity;
 
+import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.dao.business.model.Multifile;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
@@ -20,6 +21,9 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createDate;
 
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    private Integer isdeleted;
+
     @ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級", example = "1")
     private Integer memberId;
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityReplyCommentDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityReplyCommentDTO.java
index 8ff14e2..2f7657d 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityReplyCommentDTO.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityReplyCommentDTO.java
@@ -17,14 +17,16 @@
     @ApiModelProperty(value = "涓婚敭", example = "1")
     private Integer id;
 
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    private Integer isdeleted;
 
     @ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級", example = "1")
     private Integer memberId;
 
-    @ApiModelProperty(value = "鐢ㄦ埛鏄电О" )
+    @ApiModelProperty(value = "鍙戝竷鐢ㄦ埛鏄电О" )
     private String nikeName;
 
-    @ApiModelProperty(value = "鐢ㄦ埛鏄电О" )
+    @ApiModelProperty(value = "鐢ㄦ埛澶村儚" )
     private String memberImgUrl;
 
     @ApiModelProperty(value = "瀵硅薄缂栫爜锛堝叧鑱攁ctivity琛級", example = "1")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopUpdatePwdDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopUpdatePwdDTO.java
new file mode 100644
index 0000000..7c49753
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/shop/ShopUpdatePwdDTO.java
@@ -0,0 +1,16 @@
+package com.doumee.dao.web.dto.shop;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("缁忛攢鍟嗕慨鏀瑰瘑鐮佽姹�")
+public class ShopUpdatePwdDTO {
+
+    @ApiModelProperty("鏃у瘑鐮�")
+    private String oldPassword;
+
+    @ApiModelProperty("鏂板瘑鐮�")
+    private String newPassword;
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/AfterSaleApplyRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/AfterSaleApplyRequest.java
index d92bc71..b1c8a74 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/AfterSaleApplyRequest.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/AfterSaleApplyRequest.java
@@ -24,7 +24,7 @@
     @ApiModelProperty(value = "鏄惁鎵i櫎杩旇繕缁忛攢鍟嗙Н鍒嗭細0=鍚︼紱1=鏄�")
     private Integer returnShopIntegralStatus;
 
-    @ApiModelProperty(value = "鏄惁鎵i櫎杩旇繕鐢ㄦ埛绉垎锛�0=鍚︼紱1=鏄�")
+    @ApiModelProperty(value = "鏄惁鎵i櫎宸茶繑杩樼敤鎴风Н鍒嗭細0=鍚︼紱1=鏄�")
     private Integer returnIntegralStatus;
 
     @ApiModelProperty(value = "鏄惁鎵i櫎杩旇繕缁忛攢鍟嗙粨绠楅噾棰濓細0=鍚︼紱1=鏄�")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/GoodsSkuResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/GoodsSkuResponse.java
index 87a8aa7..3bf036c 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/GoodsSkuResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/GoodsSkuResponse.java
@@ -57,4 +57,6 @@
     @ApiModelProperty(value = "涓嬫爣鏁版嵁", example = "1")
     private String indexData;
 
+    @ApiModelProperty(value = "搴撳瓨閲廠tr", example = "1")
+    private String stockStr;
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/ActivityService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/ActivityService.java
index 00b403b..e0046d0 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/ActivityService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/ActivityService.java
@@ -23,7 +23,6 @@
      * @return Integer
      */
     Integer create(Activity activity);
-
     /**
      * 涓婚敭鍒犻櫎
      *
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/CommentService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/CommentService.java
index f7c4102..a971358 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/CommentService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/CommentService.java
@@ -31,7 +31,7 @@
      *
      * @param id 涓婚敭
      */
-    void deleteById(Integer id);
+    void deleteById(Integer id,Integer memberId);
 
     /**
      * 鍒犻櫎
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 1961abc..8f483f6 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
@@ -245,4 +245,6 @@
 
     void autoCancelOrder();
 
+    void autoCompleteOrder();
+
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java
index 547e39e..7dbcc6b 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java
@@ -19,6 +19,14 @@
     String createShareImg(Integer userType,Integer memberId,String posterImg) throws Exception;
 
     String createShopMiniProgramCode(Integer shopId) throws Exception;
+
+    /**
+     * 鐢熸垚浼氬憳绔皬绋嬪簭鍒嗕韩鐮侊紙绾皬绋嬪簭鐮侊紝鏃犳捣鎶ュ悎鎴愶級
+     * @param memberId 浼氬憳ID
+     * @return OSS鏂囦欢璺緞
+     * @throws Exception
+     */
+    String createMemberMiniProgramCode(Integer memberId) throws Exception;
     /**
      * 鍒涘缓
      *
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 ee20e5d..3a200ee 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
@@ -12,6 +12,7 @@
 import com.doumee.dao.web.request.UpdateMemberRequest;
 import com.doumee.dao.web.request.WxPhoneRequest;
 import com.doumee.dao.web.response.AccountResponse;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
@@ -127,7 +128,7 @@
      * @param code
      * @return
      */
-    AccountResponse wxLogin(String code);
+    AccountResponse wxLogin(String code) throws WxErrorException;
 
 
     AccountResponse wxLoginTest( Integer memberId);
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
index 689a720..12d2496 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java
@@ -218,4 +218,12 @@
 
 
     void logOut(String token,Integer shopId);
+
+    /**
+     * 缁忛攢鍟嗕慨鏀瑰瘑鐮�
+     * @param shopId 鍟嗘埛ID
+     * @param oldPassword 鏃у瘑鐮�
+     * @param newPassword 鏂板瘑鐮�
+     */
+    void updatePwd(Integer shopId, String oldPassword, String newPassword);
 }
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 bab7944..62db222 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
@@ -1,5 +1,6 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -1049,78 +1050,81 @@
         aftersale.setReturnShopSettlement(BigDecimal.ZERO);
         aftersale.setCode(getNextInCode());
 
-        //璁㈠崟閫�鍥炶繑鍥炵粰缁忛攢鍟嗙殑绉垎
-        if(Objects.nonNull(goodsorder.getDistributionShopId())){
-            Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
-            //缁忛攢鍟嗗瓨鍦ㄥ墿浣欑Н鍒�
-            if(Objects.nonNull(shop)&&shop.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
-                //寮�鍚簡鎵i櫎杩旇繕缁忛攢鍟嗙Н鍒�
-                if(Constants.equalsInteger(afterSaleApplyRequest.getReturnShopIntegralStatus(),Constants.ONE)){
-                    //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
-                    aftersale.setReturnShopIntegral(shop.getIntegral().compareTo(goodsorder.getReturnCustomerIntegral())>Constants.ZERO
-                            ?goodsorder.getReturnCustomerIntegral():shop.getIntegral());
-                    DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
-                    dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
-                    dealIntegralRequest.setDealType(Constants.ONE);
-                    dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
-                    dealIntegralRequest.setObjId(goodsorder.getId());
-                    dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
-                    dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_REFUND_INTEGRAL);
-                    integralService.dealShopIntegral(dealIntegralRequest,null);
-                }
+        //璁㈠崟閫�鍥� 鎵i櫎宸茬粨绠� 璁㈠崟璧犻�佺Н鍒� - 缁忛攢鍟�
+        if(Constants.equalsInteger(afterSaleApplyRequest.getReturnShopIntegralStatus(),Constants.ONE)){
+            //璁㈠崟閫�鍥炶繑鍥炵粰缁忛攢鍟嗙殑绉垎
+            if(Objects.nonNull(goodsorder.getDistributionShopId())){
+                Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
+                //缁忛攢鍟嗗瓨鍦ㄥ墿浣欑Н鍒�
+                if(Objects.nonNull(shop)&&shop.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+                        //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
+                        aftersale.setReturnShopIntegral(shop.getIntegral().compareTo(goodsorder.getReturnCustomerIntegral())>Constants.ZERO
+                                ?goodsorder.getReturnCustomerIntegral():shop.getIntegral());
+                        DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+                        dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
+                        dealIntegralRequest.setDealType(Constants.ONE);
+                        dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
+                        dealIntegralRequest.setObjId(goodsorder.getId());
+                        dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
+                        dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_REFUND_INTEGRAL);
+                        integralService.dealShopIntegral(dealIntegralRequest,null);
+                    }
             }
         }
 
-        //璁㈠崟閫�鍥� 缁忛攢鍟嗙粨绠椾綑棰�
-        if(Objects.nonNull(goodsorder.getDistributionShopId())){
-            Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
-            //缁忛攢鍟嗗瓨鍦ㄥ墿浣欑Н鍒�
-            if(Objects.nonNull(shop)&&shop.getAmount().compareTo(BigDecimal.ZERO)>Constants.ZERO){
-                //寮�鍚簡鎵i櫎杩旇繕缁忛攢鍟嗙Н鍒�
-                if(Constants.equalsInteger(afterSaleApplyRequest.getReturnShopSettlementStatus(),Constants.ONE)){
-                    //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
-                    aftersale.setReturnShopSettlement(shop.getAmount().compareTo(goodsorder.getShopSettlement())>Constants.ZERO
-                            ?goodsorder.getShopSettlement():shop.getAmount());
-                    DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
-                    dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
-                    dealIntegralRequest.setDealType(Constants.ONE);
-                    dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
-                    dealIntegralRequest.setObjId(goodsorder.getId());
-                    dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
-                    dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_REFUND_CASH);
-                    integralService.dealShopAmount(dealIntegralRequest);
-
-                }
+        //璁㈠崟閫�鍥� 鎵i櫎宸茬粨绠� 缁撶畻浣欓 - 缁忛攢鍟�
+        if(Constants.equalsInteger(afterSaleApplyRequest.getReturnShopSettlementStatus(),Constants.ONE)){
+            if(Objects.nonNull(goodsorder.getDistributionShopId())){
+                Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
+                //鏌ヨ璁㈠崟鏄庣粏缁忛攢鍟嗙粨绠楅噾棰�
+                List<GoodsorderDetail> list = goodsorderDetailMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
+                        .eq(GoodsorderDetail::getIsdeleted,Constants.ZERO)
+                        .eq(GoodsorderDetail::getOrderId,goodsorder.getId())
+                        .isNotNull(GoodsorderDetail::getShopSettlement)
+                );
+                //缁忛攢鍟嗗瓨鍦ㄥ墿浣欎綑棰�
+                if(Objects.nonNull(shop)&&shop.getAmount().compareTo(BigDecimal.ZERO)>Constants.ZERO&&list.size()>Constants.ZERO){
+                        BigDecimal total = list.stream().map(i->i.getShopSettlement()).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
+                        aftersale.setReturnShopSettlement(shop.getAmount().compareTo(total)>Constants.ZERO
+                                ?total:shop.getAmount());
+                        DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+                        dealIntegralRequest.setIntegralNum(aftersale.getReturnShopSettlement());
+                        dealIntegralRequest.setDealType(Constants.ONE);
+                        dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
+                        dealIntegralRequest.setObjId(goodsorder.getId());
+                        dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
+                        dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_REFUND_CASH);
+                        dealIntegralRequest.setParam1(goodsorder.getCode().toString());
+                        integralService.dealShopAmount(dealIntegralRequest);
+                    }
             }
         }
 
-        //璁㈠崟閫�鍥� 杩旇繕缁欏鎴风殑绉垎
-        if(Objects.nonNull(goodsorder.getDistributionShopId())){
+        //鎵i櫎宸茶繑杩樼敤鎴风Н鍒� - 鐢ㄦ埛
+        if(Constants.equalsInteger(afterSaleApplyRequest.getReturnIntegralStatus(),Constants.ONE)){
             Member member = memberMapper.selectById(goodsorder.getMemberId());
             //瀹㈡埛瀛樺湪鍓╀綑绉垎
             if(Objects.nonNull(member)&&member.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
-                //寮�鍚簡鎵i櫎杩旇繕瀹㈡埛绉垎
-                if(Constants.equalsInteger(afterSaleApplyRequest.getReturnIntegralStatus(),Constants.ONE)){
                     //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
                     aftersale.setReturnIntegral(member.getIntegral().compareTo(goodsorder.getReturnCustomerIntegral())>Constants.ZERO
                             ?goodsorder.getReturnCustomerIntegral():member.getIntegral());
                     DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
-                    dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
+                    dealIntegralRequest.setIntegralNum(aftersale.getReturnIntegral());
                     dealIntegralRequest.setDealType(Constants.ONE);
                     dealIntegralRequest.setMemberId(member.getId());
                     dealIntegralRequest.setObjId(goodsorder.getId());
                     dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
                     dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER_REFUND_RETURN);
                     integralService.dealIntegral(dealIntegralRequest,null);
-                }
             }
         }
 
         //璁㈠崟閫�娆� 杩旇繕瀹㈡埛浣跨敤鐨勭Н鍒�
-        if(Constants.equalsInteger(afterSaleApplyRequest.getReturnIntegralStatus(),Constants.ONE)
+        if(Constants.equalsInteger(afterSaleApplyRequest.getReturnUseIntegralStatus(),Constants.ONE)
             && goodsorder.getUseIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
             DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
-            dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
+            dealIntegralRequest.setIntegralNum(goodsorder.getUseIntegral());
             dealIntegralRequest.setDealType(Constants.ZERO);
             dealIntegralRequest.setMemberId(goodsorder.getMemberId());
             dealIntegralRequest.setObjId(goodsorder.getId());
@@ -1172,6 +1176,7 @@
                 .set(Goodsorder::getRefundMoney, afterSaleApplyRequest.getMoney())
                 .set(Goodsorder::getRefundUserId, loginUserInfo.getId())
                 .set(Goodsorder::getRefundInfo, afterSaleApplyRequest.getRemark())
+                .set(Goodsorder::getRefundConfigInfo, JSONObject.toJSONString(afterSaleApplyRequest))
                 .eq(Goodsorder::getId, goodsorder.getId())
         );
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CollectServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CollectServiceImpl.java
index 18ddbf7..9a9a3de 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CollectServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CollectServiceImpl.java
@@ -234,7 +234,8 @@
                     .selectAs(Goods::getName,Collect::getName)
                     .selectAs(Goods::getPrice,Collect::getPrice)
                     .selectAs(Goods::getImgurl,Collect::getActivityImgurl)
-                    .select(" ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t1.id ),0) ", Collect::getLinePrice)
+                    .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t1.id and gs.ISDELETED = 0  ),0)   ",Collect::getMinPrice)
+                    .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t1.id and gs.ISDELETED = 0 ),0)   ",Collect::getLinePrice)
                     .leftJoin(Goods.class,Goods::getId,Collect::getObjId)
                     .eq(Collect::getIsdeleted,Constants.ZERO)
                     .eq(Collect::getMemberId,memberId)
@@ -252,6 +253,7 @@
                     .selectAs(Activity::getCreateDate,Collect::getReleaseDate)
                     .selectAs(Activity::getLooknum,Collect::getReadNum)
                     .selectAs(Activity::getImgurl,Collect::getActivityImgurl)
+                    .selectAs(Labels::getParam,Collect::getParam)
                     .selectAs(Labels::getName,Collect::getLabelName)
                     .selectAs(Activity::getContent,Collect::getContent)
                     .leftJoin(Activity.class,Activity::getId,Collect::getObjId)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java
index 6512e54..c1cba43 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java
@@ -1,5 +1,7 @@
 package com.doumee.service.business.impl;
 
+import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckRequest;
+import cn.binarywang.wx.miniapp.bean.security.WxMaMsgSecCheckCheckResponse;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,14 +14,9 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.CommentJoinMapper;
-import com.doumee.dao.business.CommentMapper;
-import com.doumee.dao.business.MemberMapper;
-import com.doumee.dao.business.MultifileMapper;
-import com.doumee.dao.business.model.Activity;
-import com.doumee.dao.business.model.Comment;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.business.model.Multifile;
+import com.doumee.core.wx.WxMiniConfig;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.model.*;
 import com.doumee.dao.web.dto.CommentDTO;
 import com.doumee.dao.web.dto.ZanDTO;
 import com.doumee.dao.web.dto.activity.ActivityCommentDTO;
@@ -28,6 +25,7 @@
 import com.doumee.service.business.CommentService;
 import com.doumee.service.business.ZanService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
@@ -57,6 +55,9 @@
     private MemberMapper memberMapper;
 
     @Autowired
+    private NoticeMapper noticeMapper;
+
+    @Autowired
     private ZanService zanService;
 
     @Autowired
@@ -70,6 +71,26 @@
 
     @Override
     public Comment apply(CommentApplyRequest comment, Integer memberId) {
+        if (StringUtils.isNotBlank(comment.getContent())) {
+            try {
+                WxMaMsgSecCheckCheckRequest checkRequest = WxMaMsgSecCheckCheckRequest.builder()
+                        .version("2")
+                        .scene(3)
+                        .openid(getMemberOpenId(memberId))
+                        .content(comment.getContent())
+                        .build();
+                WxMaMsgSecCheckCheckResponse checkResponse = WxMiniConfig.wxMaService.getSecurityService().checkMessage(checkRequest);
+                if (checkResponse.getResult() != null && checkResponse.getResult().getSuggest() != null) {
+                    String suggest = checkResponse.getResult().getSuggest();
+                    if ("risky".equalsIgnoreCase(suggest)) {
+                        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇勮鍐呭鍖呭惈杩濊淇℃伅锛岃淇敼鍚庨噸鏂板彂甯�");
+                    }
+                }
+            } catch (WxErrorException e) {
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍐呭瀹夊叏妫�娴嬪け璐ワ紝璇风◢鍚庨噸璇�");
+            }
+        }
+
         Comment target = new Comment();
         target.setCreateDate(new Date());
         target.setEditDate(new Date());
@@ -90,14 +111,23 @@
             );
             reply = Optional.ofNullable(reply).orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍥炲鐩爣涓嶅瓨鍦�"));
             target.setReplyId(reply.getId());
-            target.setReplyMemberId(reply.getMemberId());
-            target.setReplyMemberNikeName(reply.getReplyMemberNikeName());
-            target.setCommentId(reply.getId());
-            target.setCommentMemberId(reply.getMemberId());
+            target.setCommentId(Objects.isNull(reply.getCommentId())?reply.getId():reply.getCommentId());
             target.setType(Constants.ONE);
-            target.setCommentId(reply.getCommentId());
-            target.setCommentMemberId(reply.getCommentMemberId());
-        }else if (comment.getCommentId() != null ){
+            target.setCommentMemberId(reply.getMemberId());
+
+            if(!Constants.equalsInteger(memberId,reply.getMemberId())){
+                Member member = memberMapper.selectById(memberId);
+                //璇勮鍙戦�佺敤鎴锋秷鎭�
+                //鍙戦�佹牳閿�閫氱煡
+                Notice notice = Notice.getNotice(
+                        Constants.NoticeType.COMMENT,
+                        reply.getMemberId(),
+                        reply.getActivityId()
+                );
+                notice.setContent(notice.getContent().replace("{param}",member.getNickname()));
+                noticeMapper.insert(notice);
+            }
+        }else if(comment.getCommentId() != null ){
             Comment reply = commentMapper.selectById(comment.getCommentId());
             reply = Optional.ofNullable(reply).orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "涓�绾ц瘎璁虹洰鏍囦笉瀛樺湪"));
             target.setCommentId(reply.getCommentId());
@@ -138,8 +168,18 @@
 
 
     @Override
-    public void deleteById(Integer id) {
-        commentMapper.deleteById(id);
+    public void deleteById(Integer id,Integer memberId) {
+        Comment comment = commentMapper.selectById(id);
+        if(Objects.isNull(comment)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "璇勮涓嶅瓨鍦�");
+        }
+        if(!Constants.equalsInteger(memberId,comment.getMemberId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "闈炴偍鐨勮瘎璁烘棤鏉冮檺鍒犻櫎");
+        }
+        commentMapper.update(new UpdateWrapper<Comment>().lambda()
+                .set(Comment::getIsdeleted,Constants.ONE)
+                .eq(Comment::getId,id)
+        );
     }
 
     @Override
@@ -247,7 +287,7 @@
         queryWrapper.eq(Comment::getType, Constants.ZERO);
         queryWrapper.eq(Comment::getStatus, Constants.ZERO);
         queryWrapper.eq(Comment::getActivityId,pageWrap.getModel().getActivityId());
-        queryWrapper.orderByDesc(Comment::getId);
+        queryWrapper.orderByAsc(Comment::getId);
         IPage<ActivityCommentDTO> result = commentJoinMapper.selectJoinPage(page, ActivityCommentDTO.class, queryWrapper);
 
         if (CollectionUtils.isEmpty(result.getRecords())){
@@ -258,6 +298,8 @@
         MPJLambdaWrapper<Comment> replyWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         replyWrapper.selectAs(Comment::getId,ActivityReplyCommentDTO::getId);
+        replyWrapper.selectAs(Comment::getReplyId,ActivityReplyCommentDTO::getReplyId);
+        replyWrapper.selectAs(Comment::getIsdeleted,ActivityReplyCommentDTO::getIsdeleted);
         if(Objects.isNull(pageWrap.getModel().getMemberId())){
             replyWrapper.select(" 0 ",ActivityReplyCommentDTO::getZanStatus);
         }else{
@@ -271,11 +313,12 @@
         replyWrapper.selectAs(Member::getImgurl,ActivityReplyCommentDTO::getMemberImgUrl);
         replyWrapper.selectCount(Comment::getId,ActivityReplyCommentDTO::getReplyCount);
         replyWrapper.selectMin(Comment::getCreateDate,ActivityReplyCommentDTO::getCreateDate);
+        replyWrapper.select("reply.NICKNAME",ActivityReplyCommentDTO::getReplyMemberNikeName);
         replyWrapper.leftJoin(Member.class,Member::getId,Comment::getMemberId);
+        replyWrapper.leftJoin("member reply on reply.id = t.REPLY_MEMBER_ID");
         replyWrapper.eq(Comment::getType, Constants.ONE);
         replyWrapper.eq(Comment::getStatus, Constants.ZERO);
         replyWrapper.in(Comment::getCommentId,commentIds);
-        replyWrapper.orderByDesc(Comment::getId);
         replyWrapper.groupBy(Comment::getCommentId);
 
         List<ActivityReplyCommentDTO> activityCommentDTOS = commentJoinMapper.selectJoinList(ActivityReplyCommentDTO.class, replyWrapper);
@@ -300,17 +343,25 @@
             }
         }
         result.getRecords().forEach(s->{
-            s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
-            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
-                s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+            if(Constants.equalsInteger(s.getIsdeleted(),Constants.ONE)){
+                s.setContent("璇ヨ瘎璁哄凡琚師浣滆�呭垹闄�");
+            }else{
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+                    s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+                }
             }
+            s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
             ZanDTO object = MapUtils.getObject(count, s.getId());
             ActivityReplyCommentDTO replyCommentDTO = collect.get(s.getId());
             if(Objects.nonNull(replyCommentDTO)){
                 ZanDTO replyZan = MapUtils.getObject(count, replyCommentDTO.getId());
                 replyCommentDTO.setZanCount(replyZan != null ? replyZan.getCount() : 0);
-                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
-                    replyCommentDTO.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+                if(Constants.equalsInteger(replyCommentDTO.getIsdeleted(),Constants.ONE)){
+                    replyCommentDTO.setContent("璇ヨ瘎璁哄凡琚師浣滆�呭垹闄�");
+                }else{
+                    if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+                        replyCommentDTO.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(replyCommentDTO.getId())).collect(Collectors.toList()));
+                    }
                 }
                 replyCommentDTO.setMemberImgUrl(StringUtils.isNotBlank(replyCommentDTO.getMemberImgUrl())?memberFile+replyCommentDTO.getMemberImgUrl():null);
                 s.setActivityReplyCommentDTO(replyCommentDTO);
@@ -338,11 +389,11 @@
         queryWrapper.select(" (select count(1) from zan z where z.OBJ_ID = t.id and z.ISDELETED = 0 and z.OBJ_TYPE = 0)  ",ActivityReplyCommentDTO::getZanCount);
         queryWrapper.select("reply.NICKNAME as replyMemberNikeName");
         queryWrapper.leftJoin(Member.class,Member::getId,Comment::getMemberId);
-        queryWrapper.leftJoin("member reply on reply.id = t.REPLY_MEMBER_ID");
+        queryWrapper.leftJoin("member reply on reply.id = t.COMMENT_MEMBER_ID");
         queryWrapper.eq(Comment::getType, Constants.ONE);
         queryWrapper.eq(Comment::getStatus, Constants.ZERO);
         queryWrapper.eq(Comment::getCommentId,pageWrap.getModel().getCommentId());
-        queryWrapper.orderByDesc(Comment::getId);
+        queryWrapper.orderByAsc(Comment::getId);
         IPage<ActivityReplyCommentDTO> result = commentJoinMapper.selectJoinPage(page, ActivityReplyCommentDTO.class, queryWrapper);
         if (CollectionUtils.isEmpty(result.getRecords())){
             return PageData.from(result);
@@ -363,13 +414,16 @@
             }
         }
         List<Integer> integerStream = result.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList());
-
         Map<Integer, ZanDTO> count = zanService.count(integerStream);
         result.getRecords().forEach(s->{
-            s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
-            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
-                s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+            if(Constants.equalsInteger(s.getIsdeleted(),Constants.ONE)){
+                s.setContent("璇ヨ瘎璁哄凡琚師浣滆�呭垹闄�");
+            }else{
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+                    s.setMultifileList(multifileList.stream().filter(t -> t.getObjId().equals(s.getId())).collect(Collectors.toList()));
+                }
             }
+            s.setMemberImgUrl(StringUtils.isNotBlank(s.getMemberImgUrl())?memberFile+s.getMemberImgUrl():null);
             ZanDTO replyZan = MapUtils.getObject(count, s.getId());
             s.setZanCount(replyZan != null ? replyZan.getCount() : 0);
             if (pageWrap.getModel().getCommentId().equals(s.getReplyId())){
@@ -378,4 +432,9 @@
         });
         return PageData.from(result);
     }
+
+    private String getMemberOpenId(Integer memberId) {
+        Member member = memberMapper.selectById(memberId);
+        return member != null ? member.getOpenId() : null;
+    }
 }
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 0ce6f17..71ef791 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
@@ -372,17 +372,9 @@
                     .eq(GoodsSku::getIsdeleted,Constants.ZERO)
                     .in(GoodsSku::getGoodsId,idList));
         }
-        long shopNum   = shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
-                .eq(Shop::getIsdeleted,Constants.ZERO)
-                .eq(Shop::getStatus,Constants.ZERO));
-        MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
-        queryWrapper.selectAll(Goods.class);
-        queryWrapper.select("(select count(s.id) from shop_goods_relation s  " +
-                "left join shop g on s.SHOP_ID =g.id " +
-                "where g.status=0 and s.ISDELETED=0 and s.GOODS_ID=t.id) as pricedShopNum ");
-        queryWrapper.eq(GoodsSku::getIsdeleted,Constants.ZERO);
-        queryWrapper.in(Goods::getId,idList);
-        List<Goods> goodsList= goodsAdminJoinMapper.selectJoinList(Goods.class,queryWrapper);
+        List<Goods> goodsList= goodsMapper.selectList(new QueryWrapper<Goods>().lambda()
+                .eq(Goods::getIsdeleted,Constants.ZERO)
+                .in(Goods::getId,idList));
         if(goodsList==null || goodsList.size() == 0){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍟嗗搧淇℃伅鏌ヨ鏃犳晥 ");
         }
@@ -409,14 +401,6 @@
                  throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":鍟嗗搧鍟嗗搧灏氭湭璁剧疆闆跺敭浠凤紝鏃犳硶涓婃灦");
                 }
             }
-            if(Constants.formatLongNum(goods.getPricedShopNum()) < shopNum){
-                //榛樿sku淇℃伅
-                s =false;
-                if(idList.size()==1){
-                  throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":鏈夋湭璁剧疆渚涜揣浠风殑缁忛攢鍟嗭紝鏃犳硶涓婃灦");
-                }
-
-            }
             if(s){
                 idList2.add(param.getId());
             }
@@ -432,7 +416,7 @@
 
         if(successNum != idList.size()){
             if( idList.size()>1){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鎴愬姛涓婃灦鍟嗗搧鏁帮細銆�"+successNum+"銆戯紝涓婃灦澶辫触锛氥��"+(idList.size()-successNum)+"銆戜釜鍟嗗搧,璇风‘淇濆緟涓婃灦鍟嗗搧鐨勫潎閿�鍞环鍜屼緵璐т环宸茶缃�");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鎴愬姛涓婃灦鍟嗗搧鏁帮細銆�"+successNum+"銆戯紝涓婃灦澶辫触锛氥��"+(idList.size()-successNum)+"銆戜釜鍟嗗搧,璇风‘淇濆緟涓婃灦鍟嗗搧鐨勯攢鍞环宸茶缃�");
             }else {
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode()," 涓婃灦澶辫触");
             }
@@ -889,9 +873,9 @@
         queryWrapper.eq(pageWrap.getModel().getBrandId() != null, Goods::getBrandId, pageWrap.getModel().getBrandId());
         queryWrapper.eq(pageWrap.getModel().getStatus() != null, Goods::getStatus, pageWrap.getModel().getStatus());
         queryWrapper.in(pageWrap.getModel().getIdList() != null && pageWrap.getModel().getIdList().size()>0, Goods::getId, pageWrap.getModel().getIdList());
-        if(pageWrap.getModel().getShopId() !=null){
-            queryWrapper.orderByAsc("shopPrice");
-        }
+//        if(pageWrap.getModel().getShopId() !=null){
+//            queryWrapper.orderByAsc("shopPrice");
+//        }
         queryWrapper.orderByDesc(Goods::getId);
         IPage<Goods> result = goodsAdminJoinMapper.selectJoinPage(page, Goods.class, queryWrapper);
         initResult(result.getRecords(),pageWrap.getModel().getShopId()==null);
@@ -972,8 +956,8 @@
        GoodsRequest model = pageWrap.getModel();
         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)
+                .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0  ),0)   ",Goods::getMinPrice)
+                .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0 ),0)   ",Goods::getLinePrice)
                 .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
                 .eq(Goods::getIsdeleted,Constants.ZERO)
                 .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
@@ -989,10 +973,10 @@
                 .like(StringUtils.isNotBlank(model.getGoodsName()),Goods::getName,model.getGoodsName());
         if(Objects.nonNull(model.getShopId())){
             wrapper.select("  ifnull( ( select sgr.PRICE from shop_goods_relation sgr where sgr.GOODS_ID = t.ID and sgr.ISDELETED = 0 and sgr.`STATUS` = 0  and sgr.SHOP_ID = "+model.getShopId()+" ) ,0) ",Goods::getExFactoryPrice);
-            wrapper.select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where gd.GOODS_ID = t.`id` and  go.DISTRIBUTION_SHOP_ID = "+model.getShopId()+" ),0) ",Goods::getRealSaleNum);
+            wrapper.select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where go.PAY_STATUS = 1 and gd.GOODS_ID = t.`id` and  go.DISTRIBUTION_SHOP_ID = "+model.getShopId()+" ),0) ",Goods::getRealSaleNum);
 
         }else{
-            wrapper.select(" (( select ifnull(sum(GOODS_NUM),0) from goodsorder_detail gd  where gd.GOODS_ID =  t.id  )) ",Goods::getRealSaleNum);
+            wrapper.select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where go.PAY_STATUS = 1 and gd.GOODS_ID = t.`id` ),0) ",Goods::getRealSaleNum);
         }
 
         if(Objects.nonNull(model.getSortInfo())){
@@ -1000,11 +984,11 @@
             if(Constants.equalsInteger(model.getSortInfo(),Constants.ZERO)){
                 wrapper.orderByDesc("t.CREATE_DATE");
             }else if(Constants.equalsInteger(model.getSortInfo(),Constants.ONE)){
-                wrapper.orderByAsc("(realSaleNum + t.SALENUM)");
+                wrapper.orderByAsc("(realSaleNum + ifnull(t.SALENUM,0))");
             }else if(Constants.equalsInteger(model.getSortInfo(),Constants.TWO)){
                 wrapper.orderByAsc("minPrice");
             }else if(Constants.equalsInteger(model.getSortInfo(),Constants.THREE)){
-                wrapper.orderByDesc("(realSaleNum + t.SALENUM)");
+                wrapper.orderByDesc("(realSaleNum + ifnull(t.SALENUM,0))");
             }else if(Constants.equalsInteger(model.getSortInfo(),Constants.FOUR)){
                 wrapper.orderByDesc("minPrice");
             }
@@ -1056,13 +1040,21 @@
 
         List<GoodsSkuResponse>  goodsSkuResponseList = goodsSkuMapper.getSkuResponseList(goodsResponse.getId());
         Integer sumStock = Constants.ZERO;
+        Boolean noRestrictions = true;
         for (GoodsSkuResponse goodsSkuResponse:goodsSkuResponseList) {
             goodsSkuResponse.setStock(Objects.isNull(goodsSkuResponse.getStock())?Constants.ZERO:goodsSkuResponse.getStock());
             sumStock = sumStock + goodsSkuResponse.getStock();
+            if(StringUtils.isNotBlank(goodsSkuResponse.getStockStr())){
+                noRestrictions  = false;
+            }
         }
         //鐪熷疄閿�閲� = realSaleNum  - saleNum;
         //鐪熷疄搴撳瓨= sumStock - (realSaleNum  - saleNum)
-        goodsResponse.setStock(sumStock);
+        if(noRestrictions){
+            goodsResponse.setStock(-Constants.ONE);
+        }else{
+            goodsResponse.setStock(sumStock);
+        }
         goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList);
         //Sku鍩虹淇℃伅
         List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId());
@@ -1084,9 +1076,9 @@
         Goods goodsResponse = goodsMapper.selectOne(
                  new MPJLambdaWrapper<Goods>()
                         .selectAll(Goods.class)
-                        .select(" (( select ifnull(sum(GOODS_NUM),0) from goodsorder_detail gd  where gd.GOODS_ID =  t.id  )) ",Goods::getRealSaleNum)
-                        .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)
+                        .select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where go.PAY_STATUS = 1 and gd.GOODS_ID = t.`id`  ),0) ",Goods::getRealSaleNum)
+                        .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0),0)   ",Goods::getMinPrice)
+                         .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0),0)   ",Goods::getLinePrice)
                         .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
 //                        .eq(Goods::getIsdeleted,Constants.ZERO)
 //                        .eq(Goods::getStatus, Constants.ZERO)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderDetailServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderDetailServiceImpl.java
index b39e0da..06561b0 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderDetailServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderDetailServiceImpl.java
@@ -1,8 +1,7 @@
 package com.doumee.service.business.impl;
 
 import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.Constants;
+import com.doumee.core.model.PageWrap; 
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.GoodsorderDetailMapper;
 import com.doumee.dao.business.PlanorderDetailMapper;
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 9c0c299..17a94a0 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
@@ -286,7 +286,7 @@
                     Constants.UserActionType.CHANGE_ORDER_KD,
                     userActionMapper,
                     update.getEditDate(),
-                    new String[]{goodsorder.getKdInfo()},
+                    StringUtils.isNotBlank(goodsorder.getKdInfo())?new String[]{query.getKdInfo()}:null,
                     JSONObject.toJSONString(update) ,
                     query.getKdName()+"(鍗曞彿锛�"+query.getKdCode()+")",
                     goodsorder.getKdName()+"(鍗曞彿锛�"+goodsorder.getKdCode()+")");
@@ -296,7 +296,7 @@
         //鍙戦�佸彂璐х珯鍐呬俊
         Notice notice = Notice.getNotice(
                 Constants.NoticeType.NOTICE_ORDER_SEND,
-                goodsorder.getMemberId(),
+                query.getMemberId(),
                 goodsorder.getId()
         );
         notice.setContent(notice.getContent().replace("{param}",goodsorder.getCode().toString()));
@@ -787,12 +787,13 @@
             if(Objects.isNull(member.getBindShopId())){
                 memberMapper.update(new UpdateWrapper<Member>().lambda()
                         .set(Member::getBindShopId,shop.getId())
+                        .set(Member::getBindShopDate,new Date())
                         .eq(Member::getId,member.getId())
                 );
             }
             goodsorder.setPickUpShopId(shop.getId());
             goodsorder.setDistributionShopId(shop.getId());
-            goodsorder.setLinkname(member.getName());
+            goodsorder.setLinkname(StringUtils.isNotBlank(member.getName())?member.getName():member.getNickname());
             goodsorder.setLinkphone(member.getPhone());
             if(Objects.isNull(member.getBindShopId())){
                 member.setBindShopId(shop.getId());
@@ -835,8 +836,8 @@
                     .eq(MemberCoupon::getId,orderPayConfirmResponse.getMemberCoupon().getId())
             );
         }
-        goodsorder.setReturnCustomerIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ONE));
-        goodsorder.setReturnMemberIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ZERO));
+        goodsorder.setReturnCustomerIntegral(getBackIntegral(goodsorder.getPrice().subtract(goodsorder.getMailPrice()),Constants.ONE));
+        goodsorder.setReturnMemberIntegral(getBackIntegral(goodsorder.getPrice().subtract(goodsorder.getMailPrice()),Constants.ZERO));
         goodsorderMapper.insert(goodsorder);
         List<OrderGoodsCalculateResponse> goodsCalculateList  = orderPayConfirmResponse.getGoodsCalculateList();
         if(CollectionUtils.isEmpty(goodsCalculateList)){
@@ -844,7 +845,8 @@
         }
         List<GoodsorderDetail> goodsOrderDetailList = new ArrayList<>();
         BigDecimal shopSettlement = BigDecimal.ZERO;
-        for (OrderGoodsCalculateResponse payDetailRequest:goodsCalculateList) {
+        for (int i = 0; i < goodsCalculateList.size(); i++) {
+            OrderGoodsCalculateResponse payDetailRequest = goodsCalculateList.get(i);
             //鏌ヨ鍟嗗搧
             GoodsSku goodsSku = goodsSkuMapper.selectById(payDetailRequest.getSkuId());
             if(Objects.isNull(goodsSku)||!Constants.equalsInteger(goodsSku.getIsdeleted(),Constants.ZERO)){
@@ -896,10 +898,10 @@
                 //缁忛攢鍟嗕紭鎯犳壙鎷呭崰姣�
                 BigDecimal shopRate = new BigDecimal("100").subtract(platformConfigDTO.getTotalRate());
                 //璁$畻缁忛攢鍟嗕紭鎯犳壙鎷呴噾棰�  锛堜紭鎯犲埜鎶垫墸閲戦 + 绉垎鎶垫墸閲戦锛� * 鍗犳瘮姣斾緥
-                BigDecimal shopDeductAmount = payDetailRequest.getCouponDeductCash().add(payDetailRequest.getIntegralDeductCash())
+                BigDecimal shopDeductAmount = payDetailRequest.getCouponDeductCash().add(Constants.equalsInteger(orderPayRequest.getUseIntegral(),Constants.ONE)?payDetailRequest.getIntegralDeductCash():BigDecimal.ZERO)
                         .multiply(shopRate).divide(new BigDecimal("100"),2, RoundingMode.HALF_UP);
                 //鏍规嵁缁忛攢鍟嗛攢鍞ā寮� 璁$畻搴旂粨绠楅噾棰�
-                if(shop.getSaleType().equals(Constants.ONE)){
+                if(Constants.equalsInteger(shop.getSaleType(),Constants.ONE)&&Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)){
                     goodsOrderDetail.setShopSettlement(goodsOrderDetail.getPrice().subtract(shopDeductAmount));
                 }else {
                     //骞冲彴閾鸿揣
@@ -944,6 +946,10 @@
 
         //瀛樺湪鐜伴噾鏀粯
         if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
+            goodsorderMapper.update(null,new UpdateWrapper<Goodsorder>().lambda()
+                    .set(Goodsorder::getShopSettlement,shopSettlement)
+                    .eq(Goodsorder::getId,goodsorder.getId())
+            );
             PayResponse payResponse = this.wxPay(goodsorder,member);
             payResponse.setLockKey(lockKey);
             return payResponse;
@@ -954,7 +960,7 @@
                 .set(Goodsorder::getShopSettlement,shopSettlement)
                 .set(Goodsorder::getPayStatus,Constants.OrderStatus.PAY_DONE.getKey())
                 .set(Goodsorder::getPayDate,DateUtil.getCurrDateTime())
-                .set(Goodsorder::getId,goodsorder.getId())
+                .eq(Goodsorder::getId,goodsorder.getId())
         );
         PayResponse payResponse = new PayResponse();
         payResponse.setOrderId(goodsorder.getId());
@@ -1312,7 +1318,7 @@
                     Goods goods = goodsMapper.selectById(goodsSku.getGoodsId());
                     goodsName = goods.getName();
                 }
-                if(!Objects.isNull(goodsSku)){
+                if(!Objects.isNull(goodsSku)&&Objects.nonNull(goodsSku.getStock())){
                     goodsSku.setStock(goodsSku.getStock().add(new BigDecimal(Constants.formatIntegerNum(goodsorderDetail.getGoodsNum()))));
                     goodsSkuMapper.updateById(goodsSku);
                 }
@@ -1441,7 +1447,7 @@
                 amount = amount.add(response.getSkuAmount());
             }
         }
-        MemberCoupon memberCoupon = new MemberCoupon();
+        MemberCoupon memberCoupon = null;
         orderPayConfirmResponse.setCouponAmount(couponAmount);
         //鑾峰彇鍙互浣跨敤鐨勪紭鎯犲埜
         List<MemberCoupon> memberCouponList = memberCouponService.getApplyCoupon(request.getPayDetailRequestList(),request.getMemberId());
@@ -1467,6 +1473,11 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犲彲鐢ㄤ紭鎯犲埜锛岃鍒锋柊鏌ョ湅");
             }
         }
+        if(Objects.nonNull(memberCoupon)){
+            //璁$畻浼樻儬鍒稿崰姣�
+            memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
+        }
+
         //鏌ヨ鐢ㄦ埛鎬荤Н鍒�
         Member member = memberMapper.selectById(request.getMemberId());
         //鏈�浣庡彲鐢ㄥ惎鐢ㄧН鍒�
@@ -1480,6 +1491,7 @@
         orderPayConfirmResponse.setDeductIntegral(deductIntegral);
         orderPayConfirmResponse.setIntegralAmount(integralAmount);
         if(Constants.equalsInteger(orderPayConfirmResponse.getIntegralStatus(),Constants.ZERO)){
+            //璁$畻绉垎鍗犳瘮
             integralAmount = this.calculateIntegralRata(orderPayConfirmResponse,goodsCalculateList,member.getIntegral());
         }else{
             orderPayConfirmResponse.setSurplusIntegral(member.getIntegral());
@@ -1566,15 +1578,16 @@
         if(Constants.equalsInteger(type,Constants.ZERO)){
             if( Constants.equalsInteger(platformConfigDTO.getReturnMemberIntegralStatus(),Constants.ZERO)
                 && Objects.nonNull(platformConfigDTO.getReturnMemberIntegral())){
-                integralBack = payAmount.multiply(platformConfigDTO.getReturnMemberIntegral()).divide(BigDecimal.ONE,0,BigDecimal.ROUND_DOWN);
+                integralBack = payAmount.divide(platformConfigDTO.getReturnMemberIntegral(),2,BigDecimal.ROUND_DOWN);
             }
         }else{
             if( Constants.equalsInteger(platformConfigDTO.getReturnShopIntegralStatus(),Constants.ZERO)
                     && Objects.nonNull(platformConfigDTO.getReturnShopIntegral())){
-                integralBack = payAmount.multiply(platformConfigDTO.getReturnShopIntegral()).divide(BigDecimal.ONE,0,BigDecimal.ROUND_DOWN);
+                integralBack = payAmount.divide(platformConfigDTO.getReturnShopIntegral(),2,BigDecimal.ROUND_DOWN);
             }
         }
-        return integralBack;
+        //绉垎鑾峰彇鍚戜笅鍙栨暣
+        return integralBack.setScale(0, BigDecimal.ROUND_DOWN);
     }
 
 
@@ -1591,6 +1604,12 @@
                 .multiply(i.getDeductRata()).divide(new BigDecimal("100"),2,RoundingMode.DOWN)).reduce(BigDecimal.ZERO,BigDecimal::add);
         //绉垎-鐜伴噾鍏戞崲姣斾緥锛圶XX绉垎鎶垫墸1鍏冿級
         BigDecimal cashToIntegralRata = new BigDecimal(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET,Constants.INTERALSET_DEDUCTINTEGRALLIMIT).getCode());
+        //绉垎鏈�澶у彲鎶垫墸閲戦
+        BigDecimal deductionCash = totalIntegral.divide(cashToIntegralRata,2,RoundingMode.DOWN);
+        BigDecimal surDeductionCash = deductionCash;
+        BigDecimal goodUseIntegral = BigDecimal.ZERO;
+        BigDecimal surUseIntegral = totalIntegral;
+
         //褰撳墠閫夋嫨鍟嗗搧鎶垫墸闇�瑕佷娇鐢ㄧ殑绉垎
         BigDecimal maxDeductionIntegral =  maxDeductionCash.multiply(cashToIntegralRata);
         //鑾峰彇褰撳墠闇�瑕佹敮浠樼殑鐜伴噾鎬婚
@@ -1601,20 +1620,32 @@
         BigDecimal realDeductionCash = BigDecimal.ZERO;
         for (int j = 0; j < goodsCalculateList.size(); j++) {
             //鑾峰彇鏈�澶у彲鎶垫墸閲戦
-            BigDecimal deductionCash = goodsCalculateList.get(j).getSkuAmount().subtract(goodsCalculateList.get(j).getCouponDeductCash())
+            BigDecimal goodDeductionCash = goodsCalculateList.get(j).getSkuAmount().subtract(goodsCalculateList.get(j).getCouponDeductCash())
                     .multiply(goodsCalculateList.get(j).getDeductRata()).divide(new BigDecimal("100"),2,RoundingMode.DOWN);
-            goodsCalculateList.get(j).setIntegralMaxDeductCash(deductionCash);
+            goodsCalculateList.get(j).setIntegralMaxDeductCash(goodDeductionCash);
+            BigDecimal rata = goodDeductionCash.divide(maxDeductionCash,2,BigDecimal.ROUND_HALF_UP);
             //濡傛灉鍓╀綑绉垎澶т簬鍙互浣跨敤绉垎 鍒欑洿鎺ユ弧棰濊绠� 鍙嶄箣 鍓╀綑绉垎涓嶈兘婊¤冻鍏ㄩ儴鎶垫墸 鍗曠嫭璁$畻姣忎釜鍟嗗搧鍗犳瘮
             if(totalIntegral.compareTo(maxDeductionIntegral)<Constants.ZERO){
-                deductionCash  = deductionCash.divide(payCash).multiply(totalIntegral);
+                if(Constants.equalsInteger(j+1,goodsCalculateList.size())){
+                    goodDeductionCash = surDeductionCash;
+                    goodUseIntegral = surUseIntegral;
+                }else{
+                    goodDeductionCash  = (goodDeductionCash.multiply(deductionCash)).divide(maxDeductionCash,2,BigDecimal.ROUND_HALF_UP);
+                    surDeductionCash = surDeductionCash.subtract(goodDeductionCash);
+                    goodUseIntegral = (goodDeductionCash.multiply(totalIntegral)).divide(maxDeductionCash,2,BigDecimal.ROUND_HALF_UP);
+                    surUseIntegral = totalIntegral.subtract(goodUseIntegral);
+                }
             }
-            goodsCalculateList.get(j).setIntegralDeductCash(deductionCash);
-            realDeductionCash = realDeductionCash.add(deductionCash);
+            goodsCalculateList.get(j).setIntegralDeductCash(goodDeductionCash);
+            goodsCalculateList.get(j).setIntegralDeduct(goodUseIntegral);
+            realDeductionCash = realDeductionCash.add(goodDeductionCash);
+
         }
         //鍓╀綑绉垎鍊�
         orderPayConfirmResponse.setSurplusIntegral(totalIntegral);
-        //瀹為檯鎶垫墸浣跨敤绉垎
-        orderPayConfirmResponse.setDeductIntegral(totalIntegral.compareTo(maxDeductionIntegral)<=Constants.ZERO?totalIntegral:maxDeductionIntegral);
+        //瀹為檯鎶垫墸浣跨敤绉垎锛堝悜涓婂彇鏁达級
+        BigDecimal deductIntegralValue = totalIntegral.compareTo(maxDeductionIntegral)<=Constants.ZERO?totalIntegral:maxDeductionIntegral;
+        orderPayConfirmResponse.setDeductIntegral(deductIntegralValue.setScale(0, BigDecimal.ROUND_UP));
         return realDeductionCash;
 
     }
@@ -1757,7 +1788,22 @@
                 if(Objects.isNull(coupon)||Constants.equalsInteger(coupon.getIsdeleted(),Constants.ONE)&&num>Constants.ZERO){
                     continue;
                 }
+                if(coupon.getNum()>Constants.ZERO){
+                    //鏌ヨ宸查鍙栨暟閲�
+                    Integer getNum = memberCouponMapper.selectCount(new QueryWrapper<MemberCoupon>().lambda()
+                            .eq(MemberCoupon::getIsdeleted,Constants.ZERO)
+                            .eq(MemberCoupon::getCouponId,couponId)
+                            .ne(MemberCoupon::getGetMethod,Constants.TWO)
+                    ).intValue();
+                    if(getNum >= coupon.getNum()){
+                        continue;
+                    }
+                    if(num>(coupon.getNum() - getNum)){
+                        num = coupon.getNum().intValue() - getNum;
+                    }
+                }
                 MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,inviteMember,new Date(),Constants.ONE,null);
+
                 for (int i = 0; i < num; i++) {
                     //婊″噺鍗蜂笉浼氱敓鎴恗axPrice 闇�瑕佹牴鎹紭鎯犲埜鍑忓皯閲戦璁剧疆
                     if(Constants.equalsInteger(coupon.getCouponType(),Constants.ZERO)){
@@ -1823,9 +1869,9 @@
         if(Objects.isNull(shop)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌璁㈠崟鍏宠仈缁忛攢鍟嗕俊鎭�,璇疯仈绯荤鐞嗗憳");
         }
-//        if(!Constants.equalsInteger(shop.getMemberId(),memberId)){
-//            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"["+shop.getName()+"]闈炴偍缁戝畾鐨勭粡閿�鍟嗭紝鏃犳硶杩涜璇ユ搷浣滐紒");
-//        }
+        if(!Constants.equalsInteger(shop.getId(),memberId)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝褰撳墠璁㈠崟鏍搁攢闂ㄥ簵涓篬"+shop.getName()+"]锛屾偍鏃犳硶杩涜璇ユ搷浣滐紒");
+        }
         goodsorder.setStatus(Constants.OrderStatus.DONE.getKey());
         goodsorder.setDoneDate(new Date());
         goodsorderMapper.updateById(goodsorder);
@@ -1862,11 +1908,10 @@
         if(Objects.isNull(goodsorder.getDistributionShopId()) || Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ONE)){
             return;
         }
-        BigDecimal backIntegral = getBackIntegral(goodsorder.getPrice(),Constants.ONE);
-        if (backIntegral.compareTo(BigDecimal.ZERO) > 0) {
+        if (goodsorder.getReturnCustomerIntegral().compareTo(BigDecimal.ZERO) > 0) {
             //鏇存柊浣欓淇℃伅 娣诲姞绉垎鍙樺姩璁板綍
             DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
-            dealIntegralRequest.setIntegralNum(backIntegral);
+            dealIntegralRequest.setIntegralNum(goodsorder.getReturnCustomerIntegral());
             dealIntegralRequest.setDealType(Constants.ZERO);
             dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
             dealIntegralRequest.setObjId(goodsorder.getId());
@@ -1911,11 +1956,10 @@
         if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ONE)){
             return;
         }
-        BigDecimal backIntegral = getBackIntegral(goodsorder.getPrice(),Constants.ZERO);
-        if (backIntegral.compareTo(BigDecimal.ZERO) > 0) {
+        if (goodsorder.getReturnMemberIntegral().compareTo(BigDecimal.ZERO) > 0) {
             //鏇存柊浣欓淇℃伅 娣诲姞绉垎鍙樺姩璁板綍
             DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
-            dealIntegralRequest.setIntegralNum(backIntegral);
+            dealIntegralRequest.setIntegralNum(goodsorder.getReturnMemberIntegral());
             dealIntegralRequest.setDealType(Constants.ZERO);
             dealIntegralRequest.setMemberId(goodsorder.getMemberId());
             dealIntegralRequest.setObjId(goodsorder.getId());
@@ -2099,9 +2143,6 @@
         }
         //鍔犲叆redis缂撳瓨锛屽埛鏂颁粖澶╁敭鍚庣紪鍙�0寮�濮�
         RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,countWithdraw);
-
-
-
     }
 
 
@@ -2214,7 +2255,7 @@
                         .eq(Notice::getIsdeleted,Constants.ZERO)
                         .eq(Notice::getMemberId,member.getId())
                         .eq(Notice::getStatus,Constants.ZERO)
-                )>=Constants.ZERO?Constants.ZERO:Constants.ONE
+                )>Constants.ZERO?Constants.ZERO:Constants.ONE
         );
 
         return homeInfoResponse;
@@ -2329,16 +2370,67 @@
         List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
                 .eq(Goodsorder::getIsdeleted, Constants.ZERO)
                 .eq(Goodsorder::getStatus, Constants.OrderStatus.WAIT_PAY.getKey())
-                        .apply(" CREATE_DATE >  DATE_SUB(NOW(), INTERVAL 15 MINUTE) ")
+                        .apply(" CREATE_DATE <  DATE_SUB(NOW(), INTERVAL 15 MINUTE) ")
         );
         if(CollectionUtils.isNotEmpty(goodsorderList)){
             for (Goodsorder goodsorder:goodsorderList) {
                 this.cancel(goodsorder,null,"璁㈠崟鏈敮浠樿秴鏃惰嚜鍔ㄥ彇娑�");
             }
         }
-
-
-
     }
 
+
+
+    /**
+     * 鑷姩瀹屾垚 7 澶╂湭纭鏀惰揣鐨勭墿娴佸彂璐ц鍗�
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void autoCompleteOrder(){
+        //鏌ヨ鍙戣揣鍚� 7 澶╂湭纭鏀惰揣鐨勮鍗曟暟鎹紙浠呭鐞嗗揩閫掗厤閫佽鍗曪級
+        List<Goodsorder> goodsOrderList = goodsorderMapper.selectList(
+                new QueryWrapper<Goodsorder>()
+                        .eq("STATUS", Constants.OrderStatus.WAIT_RECEIVE.getKey())
+                        .eq("RECEIVE_TYPE", Constants.ZERO)  // 浠呭鐞嗗揩閫掗厤閫佽鍗�
+                        .isNotNull("KD_CODE")  // 鏈夌墿娴佸崟鍙�
+                        .ne("KD_CODE", "")  // 鐗╂祦鍗曞彿涓嶄负绌�
+                        .apply(" KD_DATE IS NOT NULL ")  // 鏈夊彂璐ф椂闂�
+                        .apply(" NOW() >= DATE_SUB(KD_DATE, INTERVAL -7 DAY) ")  // 鍙戣揣鍚� 7 澶�
+        );
+
+        if (!goodsOrderList.isEmpty()) {
+            for (Goodsorder order : goodsOrderList) {
+                try {
+                    Goodsorder updateOrder = new Goodsorder();
+                    updateOrder.setId(order.getId());
+                    updateOrder.setStatus(Constants.OrderStatus.DONE.getKey());
+                    updateOrder.setDoneDate(new Date());
+                    updateOrder.setDoneInfo("鍙戣揣 7 澶╁悗绯荤粺鑷姩纭鏀惰揣");
+                    goodsorderMapper.updateById(updateOrder);
+
+                    //瀛樺湪鐜伴噾鏀粯 璧犻�� 绉垎
+                    if(Constants.equalsInteger(updateOrder.getPayMethod(),Constants.ZERO)){
+                        //璧犻�佹秷璐硅�呯Н鍒�
+                        this.orderAddMemberIntegral(order);
+                        //涓嬪崟瀹屾垚 鏍规嵁淇℃伅纭鏄惁闇�瑕佽禒閫侀個璇疯�呬紭鎯犲埜
+                        this.orderDoneRewardInviteCoupon(order);
+                        //缁忛攢鍟� 娣诲姞璧犻�佺Н鍒�
+                        this.orderAddShopIntegral(order);
+                        //缁忛攢鍟� 缁撶畻閲戦
+                        this.orderAddShopCash(order);
+                    }
+
+
+                    System.out.println("璁㈠崟鑷姩瀹屾垚锛氳鍗� ID=" + order.getId() + ", 璁㈠崟缂栧彿=" + order.getCode());
+                } catch (Exception e) {
+                    System.out.println("璁㈠崟鑷姩瀹屾垚澶辫触锛氳鍗� ID=" + order.getId() + ", 閿欒锛�" + e.getMessage());
+                }
+            }
+        }
+    }
+
+
+
+
+
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
index abb185f..cf285ec 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -68,6 +68,9 @@
     private GoodsorderMapper goodsorderMapper;
 
     @Autowired
+    private GoodsorderDetailMapper goodsorderDetailMapper;
+
+    @Autowired
     private NoticeService noticeService;
 
     @Autowired
@@ -147,6 +150,14 @@
     @Override
     @Transactional(rollbackFor = {Exception.class, BusinessException.class})
     public Integer dealIntegral(DealIntegralRequest dealIntegralRequest,Member member) {
+        // 绉垎鍙栨暣锛氳幏鍙栧悜涓嬪彇鏁达紝娑堣�楀悜涓婂彇鏁�
+        if(dealIntegralRequest.getIntegralNum() != null){
+            if(Constants.equalsInteger(dealIntegralRequest.getDealType(),Constants.ZERO)){
+                dealIntegralRequest.setIntegralNum(dealIntegralRequest.getIntegralNum().setScale(0, BigDecimal.ROUND_DOWN));
+            }else{
+                dealIntegralRequest.setIntegralNum(dealIntegralRequest.getIntegralNum().setScale(0, BigDecimal.ROUND_UP));
+            }
+        }
         if(member == null){
               member = memberMapper.selectById(dealIntegralRequest.getMemberId());
         }
@@ -160,7 +171,7 @@
         integral.setIsdeleted(Constants.ZERO);
         integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
         String info = dealIntegralRequest.getIntegralObjType().getNoteinfo();
-        info = info.replace("${param}",dealIntegralRequest.getIntegralNum().intValue()+"");
+        info = info.replace("${param}",dealIntegralRequest.getIntegralNum().toBigInteger().toString());
         if(StringUtils.isNotBlank(dealIntegralRequest.getParam1())){
             info = info .replace("${param1}",dealIntegralRequest.getParam1());
         }
@@ -185,7 +196,7 @@
 
         //绔欏唴淇�
         noticeService.saveMemberIntegralNotice(
-                dealIntegralRequest.getIntegralObjType(),Constants.ONE,member.getId(),dealIntegralRequest.getIntegralNum(),
+                dealIntegralRequest.getIntegralObjType(),Constants.ZERO,member.getId(),dealIntegralRequest.getIntegralNum(),
                 integral.getId(), info
         );
         return integral.getId();
@@ -193,6 +204,14 @@
 
     @Override
     public Integer dealShopIntegral(DealIntegralRequest dealIntegralRequest,Shop shop) {
+        // 绉垎鍙栨暣锛氳幏鍙栧悜涓嬪彇鏁达紝娑堣�楀悜涓婂彇鏁�
+        if(dealIntegralRequest.getIntegralNum() != null){
+            if(Constants.equalsInteger(dealIntegralRequest.getDealType(),Constants.ZERO)){
+                dealIntegralRequest.setIntegralNum(dealIntegralRequest.getIntegralNum().setScale(0, BigDecimal.ROUND_DOWN));
+            }else{
+                dealIntegralRequest.setIntegralNum(dealIntegralRequest.getIntegralNum().setScale(0, BigDecimal.ROUND_UP));
+            }
+        }
         if(shop ==null){
             shop = shopMapper.selectById(dealIntegralRequest.getMemberId());
         }
@@ -205,7 +224,7 @@
         integral.setIsdeleted(Constants.ZERO);
         integral.setTitle( dealIntegralRequest.getIntegralObjType()!=null?dealIntegralRequest.getIntegralObjType().getName():"");
         String info = dealIntegralRequest.getIntegralObjType().getNoteinfo();
-        info = info.replace("${param}",dealIntegralRequest.getIntegralNum().toString());
+        info = info.replace("${param}",dealIntegralRequest.getIntegralNum().toBigInteger().toString());
         if(StringUtils.isNotBlank(dealIntegralRequest.getParam1())){
             info = info .replace("${param1}",dealIntegralRequest.getParam1());
         }
@@ -268,9 +287,9 @@
         shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
                 .eq(Shop::getId,shop.getId())
                 .set(Shop::getEditDate,new Date())
-                .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"total_integral = ifnull(total_integral,0)+" + dealIntegralRequest.getIntegralNum())//绱澧炲姞
-                .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"integral = ifnull(integral,0)+" +  dealIntegralRequest.getIntegralNum())
-                .setSql(dealIntegralRequest.getDealType().equals(Constants.ONE),"integral = ifnull(integral,0)-" + dealIntegralRequest.getIntegralNum()));
+                .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"TOTAL_AMOUNT = ifnull(TOTAL_AMOUNT,0)+" + dealIntegralRequest.getIntegralNum())//绱澧炲姞
+                .setSql(dealIntegralRequest.getDealType().equals(Constants.ZERO),"AMOUNT = ifnull(AMOUNT,0)+" +  dealIntegralRequest.getIntegralNum())
+                .setSql(dealIntegralRequest.getDealType().equals(Constants.ONE),"AMOUNT = ifnull(AMOUNT,0)-" + dealIntegralRequest.getIntegralNum()));
         return integral.getId();
     }
 
@@ -615,12 +634,14 @@
                                 .reduce(BigDecimal.ZERO, BigDecimal::add)
                 );
                 integralDataResponse.setWaitPayAmount(
-                        goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
+                        goodsorderDetailMapper.selectJoinList(GoodsorderDetail.class,new MPJLambdaWrapper<GoodsorderDetail>()
+                                .selectAll(GoodsorderDetail.class)
+                                .leftJoin(Goodsorder.class,Goodsorder::getId,GoodsorderDetail::getOrderId)
                                 .eq(Goodsorder::getDistributionShopId,model.getMemberId())
                                 .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey(),
                                         Constants.OrderStatus.PAY_DONE.getKey(),
                                         Constants.OrderStatus.WAIT_RECEIVE.getKey())
-                        ).stream().map(Goodsorder::getShopSettlement)
+                        ).stream().map(GoodsorderDetail::getShopSettlement)
                         .reduce(BigDecimal.ZERO, BigDecimal::add)
                 );
             }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
index ea46af2..232406b 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java
@@ -173,6 +173,30 @@
     }
 
 
+    @Override
+    public String createMemberMiniProgramCode(Integer memberId) throws Exception {
+        InputStream inputStream = Constants.generateWxMiniImgStream(
+                "uid_"+memberId,
+                "/pages/index/index",
+                true);
+        if (inputStream == null) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "灏忕▼搴忓垎浜爜鐢熸垚澶辫触");
+        }
+        ALiYunUtil obs = new ALiYunUtil(
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode()
+                ,systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode());
+
+        String shareFolder = systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHARES_FILE).getCode();
+        String key = DateUtil.getNowShortDate() + "/" + UUID.randomUUID().toString() + ".jpg";
+        String fileName = shareFolder + key;
+        if (obs.uploadOnlineObject(inputStream,systemDictDataBiz.queryByCode(Constants.OSS, Constants.BUCKETNAME).getCode(), fileName,null)) {
+            return key;
+        }
+        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "灏忕▼搴忓垎浜爜涓婁紶澶辫触");
+    }
+
+
 
 
 
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 18d141b..2bb5078 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
@@ -165,6 +165,7 @@
     private List<Member> getMemberListByParam(MemberCouponAddDTO memberCoupon) {
         List<Member>  list = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                 .eq(Member::getIsdeleted,Constants.ZERO)
+                .eq(Member::getStatus,Constants.ZERO)
                 .eq(memberCoupon.getAddType() == Constants.ZERO,Member::getId,memberCoupon.getAddMemberIds())
                 .in(memberCoupon.getAddType() == Constants.ONE,Member::getPhone,memberCoupon.getPhones()));
         if(list == null || list.size()==0){
@@ -400,8 +401,7 @@
                 .apply(Objects.nonNull(status)&&Constants.equalsInteger(status,Constants.TWO),"m.STATUS = 0 and  m.END_DATE < now() " )
                 .eq("TYPE",couponType)
                 .apply(!Objects.isNull(price)," m.LIMIT_PRICE >= "+price+" ")
-//                .apply("   now() between m.START_DATE and m.END_DATE ")
-                .orderByDesc(" m.PRICE ")
+                .orderByDesc( " m.CREATE_DATE ")
         );
         return page;
     }
@@ -589,8 +589,7 @@
                         .apply("  now() between START_DATE and  END_DATE ")
                         .orderByDesc(MemberCoupon::getMaxPrice)
                         .orderByAsc(MemberCoupon::getEndDate)
-        )
-                ;
+        );
 
         if(CollectionUtils.isNotEmpty(allCoupon)){
             for (MemberCoupon memberCoupon:allCoupon) {
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 339d3aa..81433af 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
@@ -85,6 +85,8 @@
     @Autowired
     private CouponMapper couponMapper;
     @Autowired
+    private MemberCouponMapper memberCouponMapper;
+    @Autowired
     private MemberCouponJoinMapper memberCouponJoinMapper;
     @Autowired
     private IntegralMapper integralMapper;
@@ -310,34 +312,33 @@
 
 
     @Override
-    public AccountResponse wxLogin(String code){
-        try {
-            //鑾峰彇寰俊鏁忔劅鏁版嵁
-            WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
-            String openId = session.getOpenid();
-            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
-            }
-            Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getOpenId, openId)
-                            .eq(Member::getIsdeleted,Constants.ZERO).eq(Member::getStatus,Constants.ZERO)
-                    .last(" limit 1"));
-            AccountResponse accountResponse = new AccountResponse();
-            if(Objects.nonNull(member)){
-                memberMapper.updateById(member);
-                member.setImgFullUrl(StringUtils.isNotBlank(member.getImgurl())?systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
-                        systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl():null);
-                String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
-                accountResponse.setToken(token);
-                accountResponse.setOpenid(openId);
-                accountResponse.setMember(member);
-            }else{
-                accountResponse.setOpenid(openId);
-            }
-            return accountResponse;
-        } catch (WxErrorException e) {
-            e.printStackTrace();
+    public AccountResponse wxLogin(String code) throws WxErrorException {
+        WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
+        String openId = session.getOpenid();
+        if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
         }
-        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
+        Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+                .eq(Member::getOpenId, openId)
+                .eq(Member::getIsdeleted,Constants.ZERO)
+                .eq(Member::getStatus,Constants.ZERO)
+                .last(" limit 1"));
+
+        AccountResponse accountResponse = new AccountResponse();
+        if(Objects.nonNull(member)){
+            String ossPath = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode();
+            String memberPath = systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode();
+            if(StringUtils.isNotBlank(member.getImgurl())){
+                member.setImgFullUrl(ossPath + memberPath + member.getImgurl());
+            }
+            String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
+            accountResponse.setToken(token);
+            accountResponse.setOpenid(openId);
+            accountResponse.setMember(member);
+        }else{
+            accountResponse.setOpenid(openId);
+        }
+        return accountResponse;
     }
 
 
@@ -444,6 +445,20 @@
                     if(Objects.isNull(coupon)||Constants.equalsInteger(coupon.getIsdeleted(),Constants.ONE)&&num>Constants.ZERO){
                         continue;
                     }
+                    if(coupon.getNum()>Constants.ZERO) {
+                        //鏌ヨ宸查鍙栨暟閲�
+                        Integer getNum = memberCouponMapper.selectCount(new QueryWrapper<MemberCoupon>().lambda()
+                                .eq(MemberCoupon::getIsdeleted, Constants.ZERO)
+                                .eq(MemberCoupon::getCouponId, couponId)
+                                .ne(MemberCoupon::getGetMethod, Constants.TWO)
+                        ).intValue();
+                        if (getNum >= coupon.getNum()) {
+                            continue;
+                        }
+                        if (num > (coupon.getNum() - getNum)) {
+                            num = coupon.getNum().intValue() - getNum;
+                        }
+                    }
                     MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,member,new Date(),Constants.ZERO,null);
                     for (int i = 0; i < num; i++) {
                         //婊″噺鍗蜂笉浼氱敓鎴恗axPrice 闇�瑕佹牴鎹紭鎯犲埜鍑忓皯閲戦璁剧疆
@@ -486,6 +501,10 @@
         //璧犻�侀個璇风Н鍒�
         //寮�鍚個璇锋敞鍐岄�佺Н鍒�
         if(Constants.equalsInteger(platformConfigDTO.getShareIntegralRewardStatus(),Constants.ZERO)){
+            member = memberMapper.selectById(member.getRecId());
+            if(Objects.isNull(member)){
+                return;
+            }
             DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
             dealIntegralRequest.setIntegralNum(platformConfigDTO.getShareIntegralReward());
             dealIntegralRequest.setDealType(Constants.ZERO);
@@ -493,8 +512,6 @@
             dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.INVITENEWUSER);
             dealIntegralRequest.setParam1(member.getNickname());
             integralService.dealIntegral(dealIntegralRequest,member);
-            //娣诲姞娑堟伅璁板綍
-
         }
     }
 
@@ -690,7 +707,7 @@
         }
         this.verifyPhoneCode(request.getCode(),request.getPhone());
         memberMapper.update(new UpdateWrapper<Member>().lambda()
-                .eq(Member::getPhone,request.getPhone())
+                .set(Member::getPhone,request.getPhone())
                 .eq(Member::getId,request.getMemberId())
         );
     }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java
index 6216bb3..f74321e 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java
@@ -224,7 +224,7 @@
 
         Notice notice = pageWrap.getModel();
 
-        queryWrapper.ne(Objects.nonNull(notice.getQueryType()),
+        queryWrapper.eq(Objects.nonNull(notice.getQueryType()),
                         Notice::getType,notice.getQueryType())
                     .eq(Notice::getMemberId,notice.getMemberId())
                 .orderByAsc(Notice::getStatus)
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 c027aad..5604bf5 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
@@ -162,12 +162,15 @@
                             .set(Shop::getProgramCode,url)
                     .eq(Shop::getId,shop.getId()));
         }
-        //鍒嗕韩娴锋姤
-        String posterUrl = inviteRecordService.createShareImg(Constants.ONE,shop.getId(),shop.getPosterImg());
-        if(StringUtils.isNotBlank(posterUrl)){
-            shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
-                    .set(Shop::getPosterImgCode,posterUrl)
-                    .eq(Shop::getId,shop.getId()));
+        if(StringUtils.isNotBlank(shop.getPosterImg())) {
+            //鍒嗕韩娴锋姤
+            String posterUrl = inviteRecordService.createShareImg(Constants.ONE, shop.getId(), shop.getPosterImg());
+            //鐢熸垚澶辫触浼氱敓鎴愬瓧绗︿覆 1
+            if (StringUtils.isNotBlank(posterUrl)&&!posterUrl.equals("1")) {
+                shopMapper.update(null, new UpdateWrapper<Shop>().lambda()
+                        .set(Shop::getPosterImgCode, posterUrl)
+                        .eq(Shop::getId, shop.getId()));
+            }
         }
         return shop.getId();
     }
@@ -260,17 +263,16 @@
         shop.setEditor(user.getId());
         shop.setEditDate(new Date());
 
-        if(StringUtils.isBlank(model.getProgramCode())){
-            //鍒嗕韩鐮�
-            String url = inviteRecordService.createShopMiniProgramCode(shop.getId());
-            if(StringUtils.isNotBlank(url)){
-                shop.setProgramCode(url);
-            }
+        //鍒嗕韩鐮�
+        String url = inviteRecordService.createShopMiniProgramCode(shop.getId());
+        if(StringUtils.isNotBlank(url)){
+            shop.setProgramCode(url);
         }
         if(StringUtils.isNotBlank(shop.getPosterImg())){
             //鍒嗕韩娴锋姤
             String posterUrl = inviteRecordService.createShareImg(Constants.ONE,shop.getId(),shop.getPosterImg());
-            if(StringUtils.isNotBlank(posterUrl)){
+            //鐢熸垚澶辫触浼氱敓鎴愬瓧绗︿覆 1
+            if (StringUtils.isNotBlank(posterUrl)&&!posterUrl.equals("1")) {
                 shop.setPosterImgCode(posterUrl);
             }
         }
@@ -284,8 +286,8 @@
                     shop.getEditDate(),
                     new String[]{user.getUsername(), DateUtil.getPlusTime2(shop.getEditDate())},
                     JSONObject.toJSONString(shop) ,
-                    Constants.equalsInteger(model.getSaleType(),Constants.ONE)?"鑷敱閲囪喘":"骞冲彴閾鸿揣",
-                    Constants.equalsInteger(shop.getSaleType(),Constants.ONE)?"鑷敱閲囪喘":"骞冲彴閾鸿揣");
+                    Constants.equalsInteger(model.getSaleType(),Constants.ONE)?"鑷富閲囪喘":"骞冲彴閾鸿揣",
+                    Constants.equalsInteger(shop.getSaleType(),Constants.ONE)?"鑷富閲囪喘":"骞冲彴閾鸿揣");
         }
     }
 
@@ -782,6 +784,7 @@
         if(!pwd.equals(shop.getPassword())){
             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
         }
+        shop.setOpenId(dto.getOpenid());
         //鍒涘缓token
 //        JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
 //        String token = JwtTokenUtil.generateToken(payLoad);
@@ -892,34 +895,53 @@
                         //鑷畾涔夋棩鏈�
                         .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  t.CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
                         .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  t.CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
-                        .ne(Goodsorder::getStatus,Constants.OrderStatus.CLOSE.getKey())
+                        .in(Goodsorder::getStatus,Constants.OrderStatus.PAY_DONE.getKey(),Constants.OrderStatus.WAIT_RECEIVE.getKey(),Constants.OrderStatus.DONE.getKey())
                         .orderByDesc(Goodsorder::getId)
         );
 
         if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(goodsorderList)) {
-            saleReportResponse.setSaleTotal(goodsorderList.stream().map(i->i.getPrice().subtract(i.getMailPrice())).reduce(BigDecimal.ZERO, BigDecimal::add));
+            saleReportResponse.setSaleTotal(goodsorderList.stream().map(i->i.getTotalPrice().subtract(i.getMailPrice())).reduce(BigDecimal.ZERO, BigDecimal::add));
             saleReportResponse.setOrderNum(goodsorderList.size());
         }
-        List<Integral> integralList = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
-                .eq(Integral::getIsdeleted,Constants.ZERO)
-                .eq(Integral::getMemberId,shopId)
-                .eq(Integral::getUserType,Constants.TWO)
-                .eq(Integral::getType,Constants.ZERO)
-                .eq(Integral::getObjType,Constants.IntegralObjType.ORDER_DONE_AMOUNT.getKey())
-                //浠婃棩
-                .apply(Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(CREATE_DATE) = DATE(NOW())  ")
-                //褰撴湀
-                .apply(Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
-                //涓婃湀
-                .apply(Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
-                //鍥哄畾鏈堜唤
-                .apply(Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
-                //鑷畾涔夋棩鏈�
-                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
-                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
+//        List<Integral> integralList = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
+//                .eq(Integral::getIsdeleted,Constants.ZERO)
+//                .eq(Integral::getMemberId,shopId)
+//                .eq(Integral::getUserType,Constants.TWO)
+//                .eq(Integral::getType,Constants.ZERO)
+//                .eq(Integral::getObjType,Constants.IntegralObjType.ORDER_DONE_AMOUNT.getKey())
+//                //浠婃棩
+//                .apply(Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(CREATE_DATE) = DATE(NOW())  ")
+//                //褰撴湀
+//                .apply(Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
+//                //涓婃湀
+//                .apply(Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
+//                //鍥哄畾鏈堜唤
+//                .apply(Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
+//                //鑷畾涔夋棩鏈�
+//                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
+//                .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
+//        );
+        goodsorderList = goodsorderJoinMapper.selectJoinList(Goodsorder.class,
+                new MPJLambdaWrapper<Goodsorder>()
+                        .selectAll(Goodsorder.class)
+                        .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+                        .eq(Goodsorder::getDistributionShopId,shopId)
+                        //浠婃棩
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(t.DONE_DATE) = DATE(NOW())  ")
+                        //褰撴湀
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(t.DONE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
+                        //涓婃湀
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(t.DONE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
+                        //鍥哄畾鏈堜唤
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(t.DONE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
+                        //鑷畾涔夋棩鏈�
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getStartDate()), "  t.DONE_DATE >= '"+request.getStartDate()+" 00:00:00'")
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  t.DONE_DATE <= '"+request.getEndDate()+" 23:59:59'")
+                        .in(Goodsorder::getStatus,Constants.OrderStatus.DONE.getKey())
+                        .orderByDesc(Goodsorder::getId)
         );
-        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(integralList)) {
-            saleReportResponse.setProfitTotal(integralList.stream().map(i->i.getNum()).reduce(BigDecimal.ZERO, BigDecimal::add));
+        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(goodsorderList)) {
+            saleReportResponse.setProfitTotal(goodsorderList.stream().filter(i->Objects.nonNull(i.getShopSettlement())).map(i->i.getShopSettlement()).reduce(BigDecimal.ZERO, BigDecimal::add));
         }
         return  saleReportResponse;
     }
@@ -978,8 +1000,29 @@
         redisTemplate.delete(token);
     }
 
-
-
+    @Override
+    public void updatePwd(Integer shopId, String oldPassword, String newPassword){
+        if(StringUtils.isBlank(oldPassword) || StringUtils.isBlank(newPassword)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏃у瘑鐮佸拰鏂板瘑鐮佷笉鑳戒负绌�");
+        }
+        if(oldPassword.equals(newPassword)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�");
+        }
+        Shop shop = shopMapper.selectById(shopId);
+        if(shop == null){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍟嗘埛淇℃伅涓嶅瓨鍦�");
+        }
+        String oldPwd = Utils.Secure.encryptPassword(oldPassword, shop.getSalt());
+        if(!oldPwd.equals(shop.getPassword())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏃у瘑鐮侀敊璇�");
+        }
+        String newSalt = RandomStringUtils.randomAlphabetic(6);
+        String newPwd = Utils.Secure.encryptPassword(newPassword, newSalt);
+        shopMapper.update(null, new UpdateWrapper<Shop>().lambda()
+                .set(Shop::getPassword, newPwd)
+                .set(Shop::getSalt, newSalt)
+                .eq(Shop::getId, shopId));
+    }
 
 
 }
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 18e9dac..1b9c3ec 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
@@ -227,7 +227,7 @@
      * @param addCartGoodsRequest
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public void addCart(AddCartGoodsRequest addCartGoodsRequest){
         //鏌ヨ璐墿杞︽槸鍚﹀瓨鍦ㄥ綋鍓嶉�変腑鐨勫晢鍝佷俊鎭�
         Shopcart shopcart = shopcartMapper.selectOne(new QueryWrapper<Shopcart>()
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java
index 262523f..7f05cc3 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WithdrawRecordServiceImpl.java
@@ -292,6 +292,7 @@
                      .le(pageWrap.getModel().getEndtime() != null,WithdrawRecord::getCreateDate, pageWrap.getModel().getEndtime())
                      .like(pageWrap.getModel().getShopName() != null,Shop::getName, pageWrap.getModel().getShopName())
                      .eq(WithdrawRecord::getIsdeleted,Constants.ZERO)
+                    .in(WithdrawRecord::getStatus,Constants.ZERO,Constants.ONE)
                      .eq(pageWrap.getModel().getStatus()!=null,WithdrawRecord::getStatus,pageWrap.getModel().getStatus())
             );
             if(count == null){
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index 2c90010..8266ae6 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -47,7 +47,7 @@
         loginLog.setOsInfo(Utils.User_Client.getOS(request));
         loginLog.setServerIp(Utils.Server.getIP());
         // 鏍¢獙楠岃瘉鐮�
-    /*    try {
+        try {
             captchaService.check(dto.getUuid(), dto.getCode());
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -55,7 +55,7 @@
             loginLog.setSuccess(Boolean.FALSE);
             systemLoginLogService.create(loginLog);
             throw e;
-        }*/
+        }
         // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜
         Subject subject = SecurityUtils.getSubject();
         UsernamePasswordToken token = new UsernamePasswordToken(dto.getUsername(), dto.getPassword());
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
index 55655d6..8a82b5a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
@@ -126,11 +126,11 @@
     @Override
     public PageData<SystemUserListVO> findPage(PageWrap<QuerySystemUserDTO> pageWrap) {
         // 鏍归儴闂ㄦ潯浠跺鐞嗭紙闇�鏌ヨ鏍归儴闂ㄤ笅鎵�鏈夐儴闂ㄧ殑鐢ㄦ埛锛�
-        if (pageWrap.getModel().getRootDeptId() != null) {
-            pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(pageWrap.getModel().getRootDeptId()));
-        } else {
-            pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(null));
-        }
+//        if (pageWrap.getModel().getRootDeptId() != null) {
+//            pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(pageWrap.getModel().getRootDeptId()));
+//        } else {
+//            pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(null));
+//        }
         // 鎵ц鏌ヨ
         PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
         List<SystemUserListVO> userList = systemUserMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause());
diff --git a/server/dmmall_service/src/main/resources/application-dev.yml b/server/dmmall_service/src/main/resources/application-dev.yml
index 44ced57..51155a9 100644
--- a/server/dmmall_service/src/main/resources/application-dev.yml
+++ b/server/dmmall_service/src/main/resources/application-dev.yml
@@ -48,12 +48,28 @@
 ########################寰俊鏀粯鐩稿叧閰嶇疆########################
 wx:
   pay:
-    appId: wxcd2b89fd2ff065f8
-    appSecret: 3462fa186da7cb06c544df8d8664b63a
-    mchId: 1229817002
-    mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
-    notifyUrl: https://test.doumee.cn/dmmall_web_api/web/api/wxPayNotify
-    keyPath: /usr/local/apiclient_cert.p12
+    appId: wx6264b4f3a697cbe8
+    appSecret: 23734577e8978138c946b727f0394027
+    mchId: 1629568742
+    mchKey: NJTLJSTZYXZRGScaiwubuzichanbu666
+    notifyUrl: http://xiaopiqiu2.natapp1.cc/web/api/wxPayNotify
+    keyPath: D:\DouMee\gtxljcWxcert\apiclient_cert.p12
+#    appId: wxcd2b89fd2ff065f8
+#    appSecret: 3462fa186da7cb06c544df8d8664b63a
+#    mchId: 1229817002
+#    mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
+#    notifyUrl: https://test.doumee.cn/dmmall_web_api/web/api/wxPayNotify
+#    keyPath: /usr/local/apiclient_cert.p12 #D:\DouMee\dmkjWxcert\apiclient_cert.p12 #
+
+#wx:
+#  pay:
+#    appId: wx0115b948d647e9b2
+#    appSecret: 4b5b97d6770f1fc6b09a7019804739a7
+#    mchId: 1739990831
+#    mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
+#    notifyUrl: http://xiaopiqiu2.natapp1.cc/web/api/wxPayNotify #https://test.doumee.cn/dmmall_web_api/web/api/wxPayNotify
+#    keyPath: D:\DouMee\1739990831_20260306_cert #D:\DouMee\dmkjWxcert\apiclient_cert.p12 #
+
 
 tencent:
   map:
@@ -62,4 +78,4 @@
 
 
 ########################瀹氭椂寮�鍚厤缃�########################
-timing: true
\ No newline at end of file
+timing: false
\ No newline at end of file
diff --git a/server/dmmall_service/src/main/resources/application-pro.yml b/server/dmmall_service/src/main/resources/application-pro.yml
index 86150aa..a1b7b79 100644
--- a/server/dmmall_service/src/main/resources/application-pro.yml
+++ b/server/dmmall_service/src/main/resources/application-pro.yml
@@ -2,9 +2,9 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://192.168.0.211:3306/dmmall_full?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
-    username: root
-    password: Doumee@168
+    url: jdbc:mysql://rm-uf6916tp3306gqv43vo.mysql.rds.aliyuncs.com:3306/dynj?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+    username: dynj
+    password: dynj@2026
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
 
@@ -49,12 +49,18 @@
 ########################寰俊鏀粯鐩稿叧閰嶇疆########################
 wx:
   pay:
-    appId: wxcd2b89fd2ff065f8
-    appSecret: 3462fa186da7cb06c544df8d8664b63a
-    mchId: 1229817002
+    appId: wx0115b948d647e9b2
+    appSecret: 4b5b97d6770f1fc6b09a7019804739a7
+    mchId: 1739990831
     mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
-    notifyUrl: https://dmtest.ahapp.net/dmmall_interface/web/api/wxPayNotify
-    keyPath: /usr/local/apiclient_cert.p12
+    notifyUrl: https://dynometaie.com/dmmall_web_api/web/api/wxPayNotify
+    keyPath: /usr/local/jars/apiclient_cert.p12
+#    appId: wxcd2b89fd2ff065f8
+#    appSecret: 3462fa186da7cb06c544df8d8664b63a
+#    mchId: 1229817002
+#    mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
+#    notifyUrl: https://mall.dynometacn.com/dmmall_web_api/web/api/wxPayNotify
+#    keyPath: /usr/local/jars/dm_apiclient_cert.p12
 
 tencent:
   map:
diff --git a/server/dmmall_service/src/main/resources/application-test.yml b/server/dmmall_service/src/main/resources/application-test.yml
index 56b6c1b..1a261f0 100644
--- a/server/dmmall_service/src/main/resources/application-test.yml
+++ b/server/dmmall_service/src/main/resources/application-test.yml
@@ -63,4 +63,4 @@
 
 
 ########################瀹氭椂寮�鍚厤缃�########################
-timing: true
\ No newline at end of file
+timing: false
\ No newline at end of file
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemDataPermissionMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemDataPermissionMapper.xml
index 13f821f..e933bf0 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemDataPermissionMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemDataPermissionMapper.xml
@@ -25,10 +25,10 @@
       role.`ID` AS ROLE_ID, role.`CODE` AS ROLE_CODE, role.`NAME` AS ROLE_NAME,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_DATA_PERMISSION sdp
-    INNER JOIN `SYSTEM_ROLE` role ON role.ID = sdp.ROLE_ID
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = sdp.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = sdp.UPDATE_USER
+    FROM system_data_permission sdp
+    INNER JOIN `system_role` role ON role.ID = sdp.ROLE_ID
+    LEFT JOIN `system_user` create_user ON create_user.ID = sdp.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = sdp.UPDATE_USER
     <where>
       sdp.DELETED = 0
       <if test="dto.businessCode != null and dto.businessCode != ''">
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemDepartmentMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemDepartmentMapper.xml
index 0a57944..7f515ba 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemDepartmentMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemDepartmentMapper.xml
@@ -20,11 +20,11 @@
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME,
       COUNT(usr.ID) USER_COUNT
-    FROM SYSTEM_DEPARTMENT dept
-    LEFT JOIN `SYSTEM_DEPARTMENT_USER` sdu ON sdu.DEPARTMENT_ID = dept.ID AND sdu.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` usr ON usr.ID = sdu.USER_ID AND usr.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = dept.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = dept.UPDATE_USER
+    FROM system_department dept
+    LEFT JOIN `system_department_user` sdu ON sdu.DEPARTMENT_ID = dept.ID AND sdu.DELETED = 0
+    LEFT JOIN `system_user` usr ON usr.ID = sdu.USER_ID AND usr.DELETED = 0
+    LEFT JOIN `system_user` create_user ON create_user.ID = dept.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = dept.UPDATE_USER
     <where>
       dept.DELETED = 0
       <if test="id != null">
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemDictDataMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemDictDataMapper.xml
index c1fbd67..6c3ffdc 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemDictDataMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemDictDataMapper.xml
@@ -19,9 +19,9 @@
       dict_data.`ID`, dict_data.`remark`, dict_data.`DICT_ID`, dict_data.`CODE`, dict_data.`LABEL`, dict_data.`SORT`, dict_data.`DISABLED`, dict_data.`CREATE_TIME`, dict_data.`UPDATE_TIME`, dict_data.`CREATE_USER`, dict_data.`UPDATE_USER`,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_DICT_DATA dict_data
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = dict_data.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = dict_data.UPDATE_USER
+    FROM system_dict_data dict_data
+    LEFT JOIN `system_user` create_user ON create_user.ID = dict_data.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = dict_data.UPDATE_USER
     <where>
       dict_data.DELETED = 0
       <if test="dictId != null">
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemDictMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemDictMapper.xml
index 76338cb..2bbec78 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemDictMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemDictMapper.xml
@@ -19,9 +19,9 @@
       dict.`ID`, dict.`CODE`, dict.`NAME`, dict.`REMARK`, dict.`CREATE_TIME`, dict.`UPDATE_TIME`, dict.`CREATE_USER`, dict.`UPDATE_USER`,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_DICT dict
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = dict.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = dict.UPDATE_USER
+    FROM system_dict dict
+    LEFT JOIN `system_user` create_user ON create_user.ID = dict.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = dict.UPDATE_USER
     <where>
       dict.DELETED = 0
       <if test="dto.code != null and dto.code != ''">
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemMenuMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemMenuMapper.xml
index 0ec9ada..5d019ae 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemMenuMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemMenuMapper.xml
@@ -19,9 +19,9 @@
       menu.`ID`, menu.`PARENT_ID`, menu.`NAME`, menu.`PATH`, menu.`FIXED`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_MENU menu
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = menu.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = menu.UPDATE_USER
+    FROM system_menu menu
+    LEFT JOIN `system_user` create_user ON create_user.ID = menu.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = menu.UPDATE_USER
     <where>
       menu.DELETED = 0
     </where>
@@ -32,9 +32,9 @@
   <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemMenu">
     SELECT
       DISTINCT menu.`ID`, menu.`PARENT_ID`, menu.`NAME`, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
-    FROM `SYSTEM_MENU` menu
-    INNER JOIN SYSTEM_ROLE_MENU role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
-    INNER JOIN SYSTEM_USER_ROLE user_role ON user_role.ROLE_ID = role_menu.ROLE_ID AND user_role.DELETED = 0
+    FROM `system_menu` menu
+    INNER JOIN system_role_menu role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
+    INNER JOIN system_user_role user_role ON user_role.ROLE_ID = role_menu.ROLE_ID AND user_role.DELETED = 0
     <where>
       AND menu.DELETED = 0
       AND menu.DISABLED = 0
@@ -47,8 +47,8 @@
   <select id="selectByRoleId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemMenu">
     SELECT
       menu.`ID`, menu.`PARENT_ID`, menu.`NAME`, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
-    FROM `SYSTEM_MENU` menu
-    INNER JOIN `SYSTEM_ROLE_MENU` role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
+    FROM `system_menu` menu
+    INNER JOIN `system_role_menu` role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
     <where>
       menu.DELETED = 0
       AND role_menu.ROLE_ID = #{roleId}
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemPermissionMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemPermissionMapper.xml
index 9568ef5..4fca639 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemPermissionMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemPermissionMapper.xml
@@ -19,9 +19,9 @@
       perm.`ID`, perm.`CODE`, perm.`NAME`, perm.`REMARK`, perm.`FIXED`, perm.`CREATE_TIME`, perm.`UPDATE_TIME`, perm.`CREATE_USER`, perm.`UPDATE_USER`, perm.`DELETED`,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_PERMISSION perm
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = perm.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = perm.UPDATE_USER
+    FROM system_permission perm
+    LEFT JOIN `system_user` create_user ON create_user.ID = perm.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = perm.UPDATE_USER
     <where>
       perm.DELETED = 0
       <if test="dto.code != null">
@@ -38,10 +38,10 @@
   <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemPermission">
     SELECT
       perm.`ID`, perm.`CODE`, perm.`NAME`, perm.`REMARK`, perm.`CREATE_TIME`, perm.`UPDATE_TIME`, perm.`CREATE_USER`, perm.`UPDATE_USER`, perm.`DELETED`
-    FROM SYSTEM_PERMISSION perm
-    INNER JOIN SYSTEM_ROLE_PERMISSION role_perm ON role_perm.PERMISSION_ID = perm.ID AND role_perm.DELETED = 0
-    INNER JOIN SYSTEM_ROLE role ON role.ID = role_perm.ROLE_ID AND role.DELETED = 0
-    INNER JOIN SYSTEM_USER_ROLE user_role ON user_role.ROLE_ID = role.ID AND user_role.DELETED = 0
+    FROM system_permission perm
+    INNER JOIN system_role_permission role_perm ON role_perm.PERMISSION_ID = perm.ID AND role_perm.DELETED = 0
+    INNER JOIN system_role role ON role.ID = role_perm.ROLE_ID AND role.DELETED = 0
+    INNER JOIN system_user_role user_role ON user_role.ROLE_ID = role.ID AND user_role.DELETED = 0
     <where>
       perm.DELETED = 0
       AND user_role.USER_ID = #{userId}
@@ -52,8 +52,8 @@
   <select id="selectByRoleId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemPermission">
     SELECT
       perm.`ID`, perm.`CODE`, perm.`NAME`, perm.`REMARK`, perm.`CREATE_TIME`, perm.`UPDATE_TIME`, perm.`CREATE_USER`, perm.`UPDATE_USER`, perm.`DELETED`
-    FROM SYSTEM_PERMISSION perm
-    INNER JOIN SYSTEM_ROLE_PERMISSION role_perm ON role_perm.PERMISSION_ID = perm.ID AND role_perm.DELETED = 0
+    FROM system_permission perm
+    INNER JOIN system_role_permission role_perm ON role_perm.PERMISSION_ID = perm.ID AND role_perm.DELETED = 0
     <where>
       perm.DELETED = 0
       AND role_perm.ROLE_ID = #{roleId}
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemPositionMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemPositionMapper.xml
index fc15235..412c627 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemPositionMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemPositionMapper.xml
@@ -20,11 +20,11 @@
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME,
       COUNT(usr.ID) USER_COUNT
-    FROM SYSTEM_POSITION posi
-    LEFT JOIN `SYSTEM_POSITION_USER` spu ON spu.POSITION_ID = posi.ID AND spu.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` usr ON usr.ID = spu.USER_ID AND usr.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = posi.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = posi.UPDATE_USER
+    FROM system_position posi
+    LEFT JOIN `system_position_user` spu ON spu.POSITION_ID = posi.ID AND spu.DELETED = 0
+    LEFT JOIN `system_user` usr ON usr.ID = spu.USER_ID AND usr.DELETED = 0
+    LEFT JOIN `system_user` create_user ON create_user.ID = posi.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = posi.UPDATE_USER
     <where>
       posi.DELETED = 0
       <if test="name != null and name != ''">
@@ -38,9 +38,9 @@
   <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemPosition">
     SELECT
       sp.`ID`, sp.`PARENT_ID`, sp.`CODE`, sp.`NAME`
-    FROM `SYSTEM_POSITION` sp
-    INNER JOIN `SYSTEM_POSITION_USER` spu ON spu.`POSITION_ID` = sp.`ID` AND spu.`DELETED` = 0
-    INNER JOIN `SYSTEM_USER` su ON su.`ID` = spu.`USER_ID`
+    FROM `system_position` sp
+    INNER JOIN `system_position_user` spu ON spu.`POSITION_ID` = sp.`ID` AND spu.`DELETED` = 0
+    INNER JOIN `system_user` su ON su.`ID` = spu.`USER_ID`
     <where>
       sp.DELETED = 0
       AND spu.USER_ID = #{userId}
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemRoleMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemRoleMapper.xml
index e2851b9..feaa0dd 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemRoleMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemRoleMapper.xml
@@ -19,9 +19,9 @@
       role.ID, role.`CODE`, role.`NAME`, role.`REMARK`, role.`FIXED`, role.`CREATE_TIME`, role.`UPDATE_TIME`,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_ROLE role
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = role.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = role.UPDATE_USER
+    FROM system_role role
+    LEFT JOIN `system_user` create_user ON create_user.ID = role.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = role.UPDATE_USER
     <where>
       role.DELETED = 0
       <if test="dto.code != null and dto.code != ''">
@@ -38,8 +38,8 @@
   <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemRole">
     SELECT
     role.ID, role.`CODE`, role.`NAME`, role.`REMARK`, role.`CREATE_TIME`, role.`UPDATE_TIME`
-    FROM SYSTEM_ROLE role
-    INNER JOIN SYSTEM_USER_ROLE user_role ON user_role.ROLE_ID = role.ID AND user_role.DELETED = 0
+    FROM system_role role
+    INNER JOIN system_user_role user_role ON user_role.ROLE_ID = role.ID AND user_role.DELETED = 0
     <where>
       role.DELETED = 0
       AND user_role.USER_ID = #{userId}
diff --git a/server/dmmall_service/src/main/resources/mappers/SystemUserMapper.xml b/server/dmmall_service/src/main/resources/mappers/SystemUserMapper.xml
index 02a6d47..0e93e5b 100644
--- a/server/dmmall_service/src/main/resources/mappers/SystemUserMapper.xml
+++ b/server/dmmall_service/src/main/resources/mappers/SystemUserMapper.xml
@@ -25,13 +25,13 @@
       sd.ID AS DEPARTMENT_ID, sd.`NAME` AS DEPARTMENT_NAME,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM `SYSTEM_USER` usr
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = usr.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = usr.UPDATE_USER
-    LEFT JOIN `SYSTEM_POSITION_USER` spu ON spu.USER_ID = usr.ID AND spu.DELETED = 0
-    LEFT JOIN `SYSTEM_POSITION` sp ON sp.ID = spu.POSITION_ID AND sp.DELETED = 0
-    LEFT JOIN `SYSTEM_DEPARTMENT_USER` sdu ON sdu.USER_ID = usr.ID AND sdu.DELETED = 0
-    LEFT JOIN `SYSTEM_DEPARTMENT` sd ON sd.ID = sdu.DEPARTMENT_ID AND sd.DELETED = 0
+    FROM `system_user` usr
+    LEFT JOIN `system_user` create_user ON create_user.ID = usr.CREATE_USER
+    LEFT JOIN `system_user` update_user ON update_user.ID = usr.UPDATE_USER
+    LEFT JOIN `system_position_user` spu ON spu.USER_ID = usr.ID AND spu.DELETED = 0
+    LEFT JOIN `system_position` sp ON sp.ID = spu.POSITION_ID AND sp.DELETED = 0
+    LEFT JOIN `system_department_user` sdu ON sdu.USER_ID = usr.ID AND sdu.DELETED = 0
+    LEFT JOIN `system_department` sd ON sd.ID = sdu.DEPARTMENT_ID AND sd.DELETED = 0
     <where>
       usr.DELETED = 0
       <if test="dto.positionId != null">
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/common/PublicController.java b/server/dmmall_web/src/main/java/com/doumee/api/common/PublicController.java
index bb0a3f1..c985442 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/common/PublicController.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/common/PublicController.java
@@ -7,11 +7,13 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.aliyun.ALiYunUtil;
+import com.doumee.core.wx.WxMiniConfig;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -23,6 +25,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.HashMap;
@@ -98,17 +101,14 @@
             MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
             Iterator<String> it = multipartRequest.getFileNames();
             while (it.hasNext()) {
-                MultipartFile file = multipartRequest.getFile((String) it.next());// file
-                // multipartRequest.getFile((String)
-                // it.next());
+                MultipartFile file = multipartRequest.getFile((String) it.next());
                 if (file != null) {
-                    // 1銆佷笂浼犲埌鏈嶅姟鍣ㄤ复鏃舵枃浠跺す
                     String uploadFileName = file.getOriginalFilename();
                     String originname = uploadFileName;
                     if (originname.lastIndexOf("/") >= 0) {
                         originname = originname.substring(originname.lastIndexOf("/") + 1);
                     }
-                    String nfix = "";// 鍚庣紑鍚�
+                    String nfix = "";
                     if (StringUtils.isNotBlank(uploadFileName)) {
                         nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
                     }
@@ -122,14 +122,36 @@
                         context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
                         return;
                     }
-                    String nowDate = DateUtil.getNowShortDate();// 褰撳墠鏃堕棿锛堝勾鏈堟棩锛�
+
+                    if (isImageFile(nfix)) {
+                        File tempFile = null;
+                        try {
+                            tempFile = File.createTempFile("wx_check_", nfix);
+                            java.io.FileOutputStream fos = new java.io.FileOutputStream(tempFile);
+                            fos.write(file.getBytes());
+                            fos.close();
+                            boolean isSafe = WxMiniConfig.wxMaService.getSecurityService().checkImage(tempFile);
+                            if (!isSafe) {
+                                context.put("code", 4001);
+                                context.put("message", "鍥剧墖鍐呭涓嶅悎瑙勶紝璇锋洿鎹㈠浘鐗囧悗閲嶈瘯");
+                                writerJson(response, context);
+                                return;
+                            }
+                        } catch (WxErrorException e) {
+                            log.warn("寰俊鍥剧墖瀹夊叏妫�娴嬪け璐�: {}", e.getMessage());
+                        } finally {
+                            if (tempFile != null && tempFile.exists()) {
+                                tempFile.delete();
+                            }
+                        }
+                    }
+
+                    String nowDate = DateUtil.getNowShortDate();
                     String fileName = UUID.randomUUID().toString() + nfix;
                     String tempFileName = nowDate + "/" + fileName;
-                    String key = folder + tempFileName;// 鏂囦欢鍚�
+                    String key = folder + tempFileName;
                     ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
                     if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) {
-                        // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
-                        // sendSuccessMessage(response, resourcePath+key);
                         context.put("success", true);
                         context.put("code", 200);
                         context.put("errno",0);
@@ -143,7 +165,6 @@
                         writerJson(response, context);
                         return;
                     } else {
-                        // 绉诲姩澶辫触
                         context.put("code", 0);
                         context.put("message", "涓婁紶澶辫触");
                         writerJson(response, context);
@@ -160,6 +181,16 @@
         return;
     }
 
+    private boolean isImageFile(String suffix) {
+        if (StringUtils.isBlank(suffix)) {
+            return false;
+        }
+        String lowerSuffix = suffix.toLowerCase();
+        return lowerSuffix.equals(".jpg") || lowerSuffix.equals(".jpeg") 
+            || lowerSuffix.equals(".png") || lowerSuffix.equals(".gif") 
+            || lowerSuffix.equals(".bmp") || lowerSuffix.equals(".webp");
+    }
+
     public static void writerJson(HttpServletResponse response, Object object) {
         response.setContentType("application/json");
         writer(response, JSONObject.toJSONString(object));
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 4180450..f890473 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
@@ -20,6 +20,8 @@
 import io.swagger.models.auth.In;
 import lombok.extern.java.Log;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -49,7 +51,7 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "寰俊code", required = true)
     })
-    public ApiResponse<AccountResponse> wxLogin(@RequestParam String code) {
+    public ApiResponse<AccountResponse> wxLogin(@RequestParam String code) throws WxErrorException {
         return  ApiResponse.success(memberService.wxLogin(code));
     }
 
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/CommentApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/CommentApi.java
index 2094620..f17d742 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/CommentApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/CommentApi.java
@@ -13,10 +13,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author 姹熻箘韫�
@@ -36,6 +33,15 @@
     }
 
 
+    @LoginRequired
+    @ApiOperation("鍒犻櫎璇勮")
+    @GetMapping("/delete/{id}")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        commentService.deleteById(id,getMemberId());
+        return ApiResponse.success(null);
+    }
+
+
     /**
      * 鍒嗛〉娲诲姩鎺㈠簵璇勮鏌ヨ
      *
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java
index b9cb8da..546f25c 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java
@@ -59,6 +59,16 @@
         return  ApiResponse.success(inviteRecordService.createShareImg(Constants.ZERO,getMemberId(),null));
     }
 
+    @LoginRequired
+    @ApiOperation(value = "鐢熸垚浼氬憳鍒嗕韩鐮�", notes = "灏忕▼搴忕")
+    @GetMapping("/getMemberShareCode")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse<String> getMemberShareCode() throws Exception {
+        return ApiResponse.success(inviteRecordService.createMemberMiniProgramCode(getMemberId()));
+    }
+
 
     @LoginShopRequired
     @ApiOperation(value = "鍟嗘埛鐢熸垚閭�璇锋捣鎶�", notes = "灏忕▼搴忕")
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java
index b468909..dee9d64 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java
@@ -183,6 +183,17 @@
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
+    @LoginShopRequired
+    @ApiOperation("缁忛攢鍟� - 淇敼瀵嗙爜")
+    @PostMapping("/updatePwd")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse updatePwd(@RequestBody ShopUpdatePwdDTO dto) {
+        shopService.updatePwd(getShopId(), dto.getOldPassword(), dto.getNewPassword());
+        return ApiResponse.success("淇敼鎴愬姛");
+    }
+
 
 
 
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/UtilApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/UtilApi.java
index 174999e..2d16404 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/UtilApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/UtilApi.java
@@ -71,6 +71,7 @@
     public ApiResponse<List<Areas>> treeList (@RequestBody AreasDto pageWrap) {
         Areas a = new Areas();
         BeanUtils.copyProperties(pageWrap,a);
+        areasService.cacheData();
         return ApiResponse.success(areasService.findList(a));
     }
 
diff --git a/server/dmmall_web/src/main/resources/application.yml b/server/dmmall_web/src/main/resources/application.yml
index f1360c3..44daf27 100644
--- a/server/dmmall_web/src/main/resources/application.yml
+++ b/server/dmmall_web/src/main/resources/application.yml
@@ -1,6 +1,6 @@
 # 椤圭洰淇℃伅閰嶇疆
 project:
-  name: 绂忓埄鍟嗗煄
+  name: 榧庡厓鍐滄満
   version: 1.0.0
   env: development
 #  env: production

--
Gitblit v1.9.3