From 580f4d3c2ca9eee53eee95a4de2f6610b790780a Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 12 二月 2026 18:24:13 +0800
Subject: [PATCH] 小程序   接口开发

---
 server/dmmall_web/src/main/java/com/doumee/api/web/ActivityApi.java                                |  134 ++--
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java          |  176 +++--
 server/dmmall_service/src/main/java/com/doumee/service/business/ActivityService.java               |    8 
 server/dmmall_web/src/main/java/com/doumee/api/web/mall/ShopCartApi.java                           |    2 
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityReplyCommentDTO.java   |   11 
 server/dmmall_web/src/main/java/com/doumee/api/web/SharesApi.java                                  |   17 
 server/dmmall_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java                        |   43 
 server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java                              |   29 
 server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java                              |   11 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java         |   88 +-
 server/dmmall_service/src/main/java/com/doumee/service/business/SearchHistoryService.java          |    4 
 server/dmmall_web/src/main/java/com/doumee/api/web/UtilApi.java                                    |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/web/request/goods/ArticleRequest.java           |   26 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java      |  106 +++
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java      |   38 +
 server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java                       |    1 
 server/dmmall_service/src/main/java/com/doumee/dao/web/request/CommentApplyRequest.java            |   43 +
 server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java     |   32 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/SearchHistoryServiceImpl.java |   25 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java                  |    8 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java                        |    8 
 server/dmmall_web/src/main/java/com/doumee/api/web/mall/HomeApi.java                               |    2 
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/activity/ActivityCommentDTO.java        |   21 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/CollectServiceImpl.java       |   11 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java    |  113 ++-
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Collect.java                     |    4 
 server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java            |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/SearchHistory.java               |    4 
 server/dmmall_web/src/main/java/com/doumee/api/web/ShopApi.java                                    |   40 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java     |    4 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ZanServiceImpl.java           |   27 
 server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java                              |   56 +
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/NoticeServiceImpl.java        |    8 
 server/dmmall_admin/src/main/java/com/doumee/api/business/CommentController.java                   |    8 
 server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java                      |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/NoticeService.java                 |    2 
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java                       |    4 
 server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java               |   10 
 server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java              |    2 
 server/dmmall_web/src/main/java/com/doumee/api/web/CommentApi.java                                 |   16 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java        |   89 ++
 server/dmmall_web/src/main/java/com/doumee/api/web/AccountApi.java                                 |   59 +
 server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java                 |    7 
 server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java                           |   49 +
 server/dmmall_web/src/main/java/com/doumee/api/web/mall/ArticleApi.java                            |   48 +
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Zan.java                         |    4 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopcartServiceImpl.java      |    4 
 server/dmmall_web/src/main/java/com/doumee/api/web/ZanApi.java                                     |   31 
 server/dmmall_service/src/main/java/com/doumee/service/business/InviteRecordService.java           |    4 
 server/dmmall_service/src/main/java/com/doumee/core/utils/Constants.java                           |    1 
 server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java               |    8 
 server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java              |    9 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/CommentServiceImpl.java       |  141 +++
 server/dmmall_admin/src/main/java/com/doumee/api/business/ZanController.java                       |   12 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Comment.java                     |   19 
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/Activity.java                    |   23 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/InviteRecordServiceImpl.java  |   58 +
 server/dmmall_service/src/main/java/com/doumee/service/business/CommentService.java                |    3 
 server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java             |    4 
 server/dmmall_service/src/main/java/com/doumee/service/business/ShopService.java                   |    8 
 server/pom.xml                                                                                     |    1 
 server/dmmall_service/src/main/java/com/doumee/service/business/ZanService.java                    |    4 
 server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java                  |    6 
 server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java                        |   37 
 server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java                  |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java              |    2 
 66 files changed, 1,325 insertions(+), 459 deletions(-)

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 649bd8b..c729db0 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,14 +30,6 @@
     @Autowired
     private CommentService commentService;
 
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:comment:create")
-    public ApiResponse create(@RequestBody Comment comment) {
-        return ApiResponse.success(commentService.create(comment,getMemberId()));
-    }
-
     @ApiOperation("鏍规嵁ID鍒犻櫎")
     @GetMapping("/delete/{id}")
     @RequiresPermissions("business:comment:delete")
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
index 90d1978..289c5ee 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/ShopController.java
@@ -38,7 +38,7 @@
     @ApiOperation("鏂板缓")
     @PostMapping("/create")
     @RequiresPermissions("business:shop:create")
-    public ApiResponse create(@RequestBody Shop shop) {
+    public ApiResponse create(@RequestBody Shop shop) throws Exception {
         return ApiResponse.success(shopService.create(shop));
     }
     @PreventRepeat
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/ZanController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/ZanController.java
index 6139161..b50e517 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/ZanController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/ZanController.java
@@ -3,6 +3,7 @@
 import com.doumee.api.BaseController;
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
@@ -10,7 +11,8 @@
 import com.doumee.service.business.ZanService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
@@ -38,13 +40,7 @@
         return ApiResponse.success(zanService.create(zan,null));
     }
 
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:zan:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        zanService.deleteById(id);
-        return ApiResponse.success(null);
-    }
+
 
     @ApiOperation("鎵归噺鍒犻櫎")
     @GetMapping("/delete/batch")
diff --git a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
index a94a60c..8ceb003 100644
--- a/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
+++ b/server/dmmall_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
@@ -16,11 +16,20 @@
 package com.doumee.config.Jwt;
 
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.model.Member;
+import com.doumee.service.business.impl.MemberServiceImpl;
 import io.jsonwebtoken.*;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.redis.core.RedisTemplate;
 
 import java.util.Date;
 import java.util.Map;
+import java.util.Objects;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
 
 /**
  * <p>鍚庡彴绯荤粺jwt token宸ュ叿绫�</p>
@@ -49,7 +58,8 @@
     private final static String jwtSecret = "MhAjU9poLf8ko54K25XBDtonaL33vtt1";
     //杩囨湡鏃堕棿(s) 86400L=1澶� 604800L=7澶�
     private static final long expire = 86400L;
-
+    //redis杩囨湡鏃堕棿
+    private static final Integer redisExpire = 365;
     /**
      * 鐢熸垚token,鏍规嵁userId鍜岄粯璁よ繃鏈熸椂闂�
      */
@@ -58,6 +68,23 @@
         final Date expirationDate = new Date(System.currentTimeMillis() + expiredSeconds * 1000);
         return generateToken(jwtPayLoad.getMemberId(), expirationDate, jwtPayLoad.toMap());
     }
+
+
+    /**
+     * 鐢熸垚token,鏍规嵁userId鍜岄粯璁よ繃鏈熸椂闂�
+     */
+    public static String generateTokenForRedis(Integer userId, Integer userType, String userInfo, RedisTemplate<String,Object> redisTemplate) {
+        String tokenKey =  userType +""+UUID.randomUUID() + "_" + userId;
+        redisTemplate.opsForValue().set(tokenKey,userInfo,redisExpire, TimeUnit.DAYS);
+        return tokenKey;
+    }
+
+    public void loginOut(RedisTemplate<String,Object> redisTemplate,String token){
+        redisTemplate.delete(token);
+    }
+
+
+
 
     /**
      * 楠岃瘉token鏄惁澶辨晥
@@ -71,14 +98,6 @@
         }
     }
 
-    /**
-     * 鐢熸垚token,鏍规嵁userId鍜岄粯璁よ繃鏈熸椂闂�
-     */
-    public static String generateTokenOld(JwtPayLoad jwtPayLoad) {
-        Long expiredSeconds = getExpireSeconds();
-        final Date expirationDate = new Date(System.currentTimeMillis() + expiredSeconds * 1000);
-        return generateToken(jwtPayLoad.getMemberId(), expirationDate, jwtPayLoad.toMap());
-    }
 
     /**
      * 鑾峰彇jwt鐨刾ayload閮ㄥ垎
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 1f557b2..3082db6 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
@@ -10,6 +10,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.method.HandlerMethod;
@@ -27,6 +28,9 @@
 
     @Autowired
     private JdbcTemplate dao;
+
+    @Autowired
+    private RedisTemplate<String,Object> redisTemplate;
 
     /**
      * 娣诲姞鎷︽埅鍣�
@@ -81,8 +85,6 @@
                         throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
                     }
                 }
-
-
                 return true;
             }
         };
@@ -94,17 +96,14 @@
     public Boolean checkMemberLogin(HttpServletRequest request, HttpServletResponse response){
         String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
         try {
-            //鍒ゆ柇Token鏄惁瓒呮椂
-            boolean expiration = JwtTokenUtil.isTokenExpired(token);
-            if (expiration) {
+            if(!token.startsWith(Constants.ZERO+"")){
                 throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
             }
-            //鑾峰彇璐﹀彿ID
-            String memberIdInfo = JwtTokenUtil.getJwtPayLoad(token).getMemberId();
-            if(StringUtils.isBlank(memberIdInfo)||!memberIdInfo.startsWith(Constants.MEMBER_PREFIX)){
-                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
+            String tokenRedis = (String) redisTemplate.opsForValue().get(token);
+            if(StringUtils.isBlank(tokenRedis)){
+                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
             }
-            Integer memberId = Integer.valueOf(memberIdInfo.replace(Constants.MEMBER_PREFIX,""));
+            Integer memberId = getTokenId(token);
             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(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
@@ -129,17 +128,14 @@
     public Boolean checkShopLogin(HttpServletRequest request, HttpServletResponse response){
         String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
         try {
-            //鍒ゆ柇Token鏄惁瓒呮椂
-            boolean expiration = JwtTokenUtil.isTokenExpired(token);
-            if (expiration) {
+            if(!token.startsWith(Constants.ONE+"")){
                 throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
             }
-            //鑾峰彇璐﹀彿ID
-            String shopInfo = JwtTokenUtil.getJwtPayLoad(token).getMemberId();
-            if(StringUtils.isBlank(shopInfo)||!shopInfo.startsWith(Constants.SHOP_PREFIX)){
-                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
+            String tokenRedis = (String) redisTemplate.opsForValue().get(token);
+            if(StringUtils.isBlank(tokenRedis)){
+                throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
             }
-            Integer shopId = Integer.valueOf(shopInfo.replace(Constants.SHOP_PREFIX,""));
+            Integer shopId = getTokenId(token);
             Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,0)  from shop where id  = ?", Integer.class, shopId);
             if(isDeleted== Constants.ONE){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
@@ -161,6 +157,17 @@
     }
 
 
+    public Integer getTokenId(String token){
+        try {
+            Integer lastIndex = token.lastIndexOf("_")+1;
+            Integer tokenId = Integer.valueOf(token.substring(lastIndex));
+            return tokenId;
+        }catch (Exception e){
+            throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"鏈櫥褰�");
+        }
+    }
+
+
     @Bean
     public RestTemplate getRestTemplate(){
         return new RestTemplate();
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 a4e12cb..73fe3ef 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
@@ -361,6 +361,7 @@
         AFTERSALE_APPLY(8, "鐢宠鍞悗琛ュ厖璇存槑闄勪欢", "鐢宠鍞悗琛ュ厖璇存槑闄勪欢"),
         AFTERSALE_KD(9, "鐢宠鍞悗閭瘎璇存槑闄勪欢", "鐢宠鍞悗閭瘎璇存槑闄勪欢"),
         TRANSFER_FILE(10, "鎵撴鍑瘉", "鎵撴鍑瘉"),
+        COMMENT_FILE(11, "璇勮闄勪欢", "璇勮闄勪欢"),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java
index 3fc71c4..601db42 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsMapper.java
@@ -21,6 +21,7 @@
 
     @Select(" select g.* , " +
             "(( select count(1) from goodsorder_detail gd inner join goods_sku gs on gd.GOODS_SKU_ID = gs.id where gs.GOODS_ID = g.`id`  )+ g.SALENUM) as realSaleNum ," +
+            //"( select gs.id from goods_sku gs where gs.GOODS_ID = g.id  limit 1 ) as realSaleNum ," +
             " ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = g.id ),0) as minPrice  " +
             " from goods g  " +
             " ${ew.customSqlSegment} ")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
index 6cd1c00..7892713 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/GoodsorderMapper.java
@@ -26,16 +26,16 @@
     @Select(" select g.CODE AS code ,  g.id as orderId , g.CREATE_DATE as createDate    , g.TYPE as orderType , g.STATUS as orderStatus , g.IS_COMMENT as isComment , g.PAY_STATUS as  payStatus ," +
             " g.COUPON_PRICE as couponPrice , g.price , g.LINKNAME  as linkName , g.LINKPHONE as linkPhone , g.LINKADDR as linkAddress , " +
             "g.KD_DATE as kdDate , g.KD_NAME as kdName  , g.KD_CODE as kdCode , g.INTEGRAL as integral , SUBDATE(g.CREATE_DATE,interval - 15 minute) as cancelDate , g.PAY_DATE AS payDate , g.DONE_DATE as doneDate " +
-            " , g.MEMBER_INFO , g.RECEIVE_TYPE as receiveType, s.name as shopName ,s.id as shopId ,g.exchange_code as exchangeCode  " +
+            " , g.MEMBER_INFO , g.RECEIVE_TYPE as receiveType, s.name as shopName,s.phone as shopPhone ,s.id as shopId ,g.exchange_code as exchangeCode  " +
             " from goodsorder g left join shop s on g.PICK_UP_SHOP_ID = s.id   " +
             " ${ew.customSqlSegment} ")
     IPage<MemberOrderResponse> goodsOrderPage(IPage<MemberOrderResponse> page, @Param(Constants.WRAPPER) Wrapper wrapper);
 
 
-    @Select(" select g.CODE AS code , g.remark as remark ,  g.id as orderId , g.MEMBER_ID as memberId , g.CREATE_DATE as createDate    , g.TYPE as orderType , g.STATUS as orderStatus , g.IS_COMMENT as isComment , g.PAY_STATUS as  payStatus ," +
+    @Select(" select g.CODE AS code , g.MEMBER_INFO as memberInfo , g.PAY_ORDER_ID as payOrderId , g.REFUND_MONEY refundMoney , g.REFUND_TIME as refundTime, g.REFUND_INFO as refundInfo,  g.id as orderId , g.MEMBER_ID as memberId , g.CREATE_DATE as createDate    , g.TYPE as orderType , g.STATUS as orderStatus , g.IS_COMMENT as isComment , g.PAY_STATUS as  payStatus ," +
             " g.COUPON_PRICE as couponPrice , g.price , g.LINKNAME  as linkName , g.LINKPHONE as linkPhone , g.LINKADDR as linkAddress , " +
             "g.KD_DATE as kdDate , g.KD_NAME as kdName  , g.KD_CODE as kdCode , g.INTEGRAL as integral , SUBDATE(g.CREATE_DATE,interval - 15 minute) as cancelDate , g.PAY_DATE AS payDate , g.DONE_DATE as doneDate " +
-            " , g.MEMBER_INFO , g.RECEIVE_TYPE as receiveType, s.name as shopName ,s.id as shopId,g.exchange_code as exchangeCode " +
+            " , g.MEMBER_INFO , g.RECEIVE_TYPE as receiveType, s.name as shopName,s.phone as shopPhone ,s.id as shopId,g.exchange_code as exchangeCode , g.mail_price as mailPrice , g.TOTAL_PRICE as totalPrice " +
             " from goodsorder g left join shop s on g.PICK_UP_SHOP_ID = s.id   " +
             " where g.id = #{id} ")
     MemberOrderResponse goodsOrderDetail(@Param("id") Integer id);
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Activity.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Activity.java
index b4ff095..a33d203 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Activity.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Activity.java
@@ -68,22 +68,18 @@
 
     @ApiModelProperty(value = "寮�濮嬫椂闂达紙type涓烘椿鍔級")
     @ExcelColumn(name="寮�濮嬫椂闂达紙type涓烘椿鍔級")
-    
     private Date starttime;
 
     @ApiModelProperty(value = "缁撴潫鏃堕棿锛坱ype涓烘椿鍔級")
     @ExcelColumn(name="缁撴潫鏃堕棿锛坱ype涓烘椿鍔級")
-    
     private Date endtime;
 
     @ApiModelProperty(value = "鎶ュ悕寮�濮嬫椂闂达紙type涓烘椿鍔級")
     @ExcelColumn(name="鎶ュ悕寮�濮嬫椂闂达紙type涓烘椿鍔級")
-    
     private Date signStarttime;
 
     @ApiModelProperty(value = "鎶ュ悕缁撴潫鏃堕棿锛坱ype涓烘椿鍔級")
     @ExcelColumn(name="鎶ュ悕缁撴潫鏃堕棿锛坱ype涓烘椿鍔級")
-    
     private Date signEndtime;
 
     @ApiModelProperty(value = "娲诲姩鍦板潃锛坱ype涓烘椿鍔級")
@@ -129,6 +125,7 @@
     @ApiModelProperty(value = "鎵�灞炲垎绫荤紪鐮侊紙鍏宠仈labels)", example = "1")
     @ExcelColumn(name="鎵�灞炲垎绫荤紪鐮侊紙鍏宠仈labels)")
     private Integer labelId;
+
     @ApiModelProperty(value = "鎵�灞炲搧鐗岀紪鐮侊紙鍏宠仈labels)", example = "1")
     @ExcelColumn(name="鎵�灞炲搧鐗岀紪鐮侊紙鍏宠仈labels)")
     private Integer brandId;
@@ -145,6 +142,10 @@
     private String  content;
 
 
+    @ApiModelProperty(value = "棰滆壊鑹插��")
+    @TableField(exist = false)
+    private String param;
+
     @ApiModelProperty(value = "鍙戝竷鐢ㄦ埛濮撳悕")
     @TableField(exist = false)
     private String realName;
@@ -156,6 +157,7 @@
     @ApiModelProperty(value = "璧勮鍒嗙被鍚嶇О")
     @TableField(exist = false)
     private String lablesName;
+
     @ApiModelProperty(value = "鎵�灞炲搧鐗屽悕绉�")
     @TableField(exist = false)
     private String brandName;
@@ -163,6 +165,16 @@
     @ApiModelProperty(value = "鐐硅禐鏁伴噺")
     @TableField(exist = false)
     private Integer zanCount;
+
+
+    @ApiModelProperty(value = "鏄惁鐐硅禐锛�0=鍚︼紱1=鏄�")
+    @TableField(exist = false)
+    private Integer zanStatus;
+
+    @ApiModelProperty(value = "鏄惁鏀惰棌锛�0=鍚︼紱1=鏄�")
+    @TableField(exist = false)
+    private Integer collectStatus;
+
 
     @ApiModelProperty(value = "鏀惰棌鏁伴噺")
     @TableField(exist = false)
@@ -222,5 +234,8 @@
     @TableField(exist = false)
     private String shopAddr;
 
+    @ApiModelProperty(value = "绠�瑕佽鏄�")
+    @TableField(exist = false)
+    private String contentInfo;
 
 }
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 94b14dd..655c222 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
@@ -62,8 +62,8 @@
     @ExcelColumn(name="瀵硅薄缂栫爜")
     private Integer objId;
 
-    @ApiModelProperty(value = "瀵硅薄绫诲瀷 0娲诲姩鎺㈠簵鍜ㄨ 1鍟嗗搧", example = "1")
-    @ExcelColumn(name="瀵硅薄绫诲瀷 0娲诲姩鎺㈠簵鍜ㄨ")
+    @ApiModelProperty(value = "瀵硅薄绫诲瀷 0绀惧尯 1鍟嗗搧", example = "1")
+    @ExcelColumn(name="瀵硅薄绫诲瀷 0绀惧尯 1鍟嗗搧")
     private Integer objType;
 
     @ApiModelProperty(value = "鍒楄〃鍥�")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Comment.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Comment.java
index 5cda36b..c0d632e 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Comment.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Comment.java
@@ -11,6 +11,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
 import java.math.BigDecimal;
+import java.util.List;
 
 /**
  * 鍙戠幇妯″潡璇勮绠$悊淇℃伅琛紙璧勮銆佹帰搴楋級
@@ -115,10 +116,28 @@
     @TableField(exist = false)
     private String nikeName;
 
+    @ApiModelProperty(value = "鐢ㄦ埛澶村儚" )
+    @TableField(exist = false)
+    private String memberImgUrl;
+
+    @ApiModelProperty(value = "鐐硅禐鏁�" )
+    @TableField(exist = false)
+    private Integer zanCount;
+
+    @ApiModelProperty(value = "鏄惁鐐硅禐锛�0=鍚︼紱1=鏄紱" )
+    @TableField(exist = false)
+    private Integer zanStatus;
+
+
     @ApiModelProperty(value = "鎵�灞炲唴瀹�" )
     @TableField(exist = false)
     private String activityName;
     @ApiModelProperty(value = "鍐呭绫诲瀷0鍟嗗娲诲姩 1骞冲彴娲诲姩 2鎺㈠簵 3璧勮" )
     @TableField(exist = false)
     private String activityType;
+
+    @ApiModelProperty(value = "鍥剧墖淇℃伅", example = "1")
+    @TableField(exist = false)
+    private List<Multifile> multifileList;
+
 }
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 df488df..13a8ba5 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
@@ -218,6 +218,9 @@
     @ApiModelProperty(value = "閫�娆炬搷浣滀汉", example = "1")
     private Integer refundUserId;
 
+    @ApiModelProperty(value = "閫�娆惧娉�", example = "1")
+    private Integer refundInfo;
+
     @ApiModelProperty(value = "鏂囦欢鍦板潃")
     @TableField(exist = false)
     private String resourcePath;
@@ -255,6 +258,11 @@
     @TableField(exist = false)
     private String imgurl;
 
+
+    @ApiModelProperty(value = "缁忛攢鍟嗙數璇�")
+    @TableField(exist = false)
+    private String shopPhone;
+
     @ApiModelProperty(value = "鏀惰揣鍦板潃")
     @TableField(exist = false)
     private String addr;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/SearchHistory.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/SearchHistory.java
index a83d551..c7a4308 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/SearchHistory.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/SearchHistory.java
@@ -59,8 +59,8 @@
     @ExcelColumn(name="鎼滅储璇�")
     private String content;
 
-    @ApiModelProperty(value = "绫诲瀷 0鍙戠幇 1鐧剧 2闂ㄥ簵", example = "1")
-    @ExcelColumn(name="绫诲瀷 0鍙戠幇 1鐧剧 2闂ㄥ簵")
+    @ApiModelProperty(value = "绫诲瀷 0鍟嗗搧", example = "1")
+    @ExcelColumn(name="绫诲瀷 0鍟嗗搧")
     private Integer type;
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
index 3b14490..d816a71 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Shop.java
@@ -189,6 +189,14 @@
     @ApiModelProperty(value = "钀ヤ笟缁撴潫鏃堕棿")
     private String brandStory;
 
+    @ApiModelProperty(value = "灏忕▼搴忕爜鍦板潃")
+    private String programCode;
+
+
+    @ApiModelProperty(value = "涓撳睘娴锋姤鐮�")
+    private String posterImgCode;
+
+
     @ApiModelProperty(value = "澶村儚")
     @TableField(exist = false)
     private String memberImgurl;
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Zan.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Zan.java
index eb5533e..c2b52d2 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Zan.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/Zan.java
@@ -58,8 +58,8 @@
     @ExcelColumn(name="瀵硅薄缂栫爜")
     private Integer objId;
 
-    @ApiModelProperty(value = "瀵硅薄绫诲瀷 0娲诲姩鎺㈠簵璧勮 1鍙戠幇璇勮", example = "1")
-    @ExcelColumn(name="瀵硅薄绫诲瀷 0娲诲姩鎺㈠簵璧勮 1鍙戠幇璇勮")
+    @ApiModelProperty(value = "瀵硅薄绫诲瀷 0绀惧尯 1璇勮", example = "1")
+    @ExcelColumn(name="瀵硅薄绫诲瀷 0绀惧尯 1璇勮")
     private Integer objType;
 
     @ApiModelProperty(value = "鍒楄〃鍥�")
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java
index bdc012c..7785b68 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/IntegralRecordDTO.java
@@ -15,10 +15,11 @@
     @ApiModelProperty(value = "鏀舵敮绫诲瀷 0鏀跺叆 1鏀嚭")
     private Integer type;
 
+    //鏁版嵁绫诲瀷锛�0=娑堣垂鑰呯Н鍒嗭紱1=缁忛攢鍟嗙Н鍒嗭紱2=缁忛攢鍟嗙粨绠楅噾棰濓紱
     @ApiModelProperty(value = "鏁版嵁绫诲瀷锛�0=娑堣垂鑰呯Н鍒嗭紱1=缁忛攢鍟嗙Н鍒嗭紱2=缁忛攢鍟嗙粨绠楅噾棰濓紱")
     private Integer userType;
 
-    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭鎴栧晢鎴蜂富閿�")
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭鎴栧晢鎴蜂富閿�",hidden = true)
     private Integer memberId;
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java
index 8a4e3bc..2a3cf1a 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/dto/ShopLoginDTO.java
@@ -8,8 +8,8 @@
 @ApiModel("缁忛攢鍟嗙櫥褰曡姹傚璞�")
 public class ShopLoginDTO {
 
-    @ApiModelProperty(value = "鍏宠仈鐢ㄦ埛涓婚敭")
-    private Integer memberId;
+//    @ApiModelProperty(value = "鍏宠仈鐢ㄦ埛涓婚敭")
+//    private Integer memberId;
 
     @ApiModelProperty(value = "openid")
     private String openid;
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 e0e54cb..3b7fbfa 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,8 +1,13 @@
 package com.doumee.dao.web.dto.activity;
 
+import com.doumee.dao.business.model.Multifile;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
 
 @Data
 @ApiModel("鍜ㄨ锛屾帰搴楄瘎璁�")
@@ -10,6 +15,10 @@
 
     @ApiModelProperty(value = "涓婚敭", example = "1")
     private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿", example = "1")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate;
 
     @ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級", example = "1")
     private Integer memberId;
@@ -50,9 +59,14 @@
     @ApiModelProperty(value = "鐢ㄦ埛鏄电О" )
     private String nikeName;
 
-    @ApiModelProperty(value = "鐢ㄦ埛鏄电О" )
+    @ApiModelProperty(value = "鐢ㄦ埛澶村儚" )
     private String memberImgUrl;
 
+    @ApiModelProperty(value = "鐐硅禐鏁�" )
+    private Integer zanCount;
+
+    @ApiModelProperty(value = "鏄惁鐐硅禐:0=鍚︼紱1=鏄紱" )
+    private Integer zanStatus;
 
     @ApiModelProperty(value = "鍐呭绫诲瀷0鍟嗗娲诲姩 1骞冲彴娲诲姩 2鎺㈠簵 3璧勮" )
     private String activityType;
@@ -66,6 +80,7 @@
     @ApiModelProperty(value = "鍥炲鏁伴噺" )
     private Integer replyCount;
 
-    @ApiModelProperty(value = "鐐硅禐鏁�" )
-    private Integer zanCount;
+    @ApiModelProperty(value = "闄勪欢淇℃伅" )
+    private List<Multifile> multifileList;
+    
 }
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 7227077..74ba9a5 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
@@ -1,12 +1,14 @@
 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;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 @Data
 @ApiModel("鍜ㄨ锛屾帰搴楄瘎璁哄洖澶�")
@@ -14,6 +16,7 @@
 
     @ApiModelProperty(value = "涓婚敭", example = "1")
     private Integer id;
+
 
     @ApiModelProperty(value = "鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛級", example = "1")
     private Integer memberId;
@@ -58,7 +61,8 @@
     @ApiModelProperty(value = "鎿嶄綔浜虹紪鐮侊紙鍏宠仈system_user琛級", example = "1")
     private Integer statusUser;
 
-
+    @ApiModelProperty(value = "鏄惁鐐硅禐:0=鍚︼紱1=鏄紱" )
+    private Integer zanStatus;
 
     @ApiModelProperty(value = "鍐呭绫诲瀷0鍟嗗娲诲姩 1骞冲彴娲诲姩 2鎺㈠簵 3璧勮" )
     private String activityType;
@@ -74,4 +78,9 @@
 
     @ApiModelProperty(value = "鐐硅禐鏁�" )
     private Integer zanCount;
+
+
+    @ApiModelProperty(value = "闄勪欢淇℃伅" )
+    private List<Multifile> multifileList;
+
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/CommentApplyRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/CommentApplyRequest.java
new file mode 100644
index 0000000..4d172cb
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/CommentApplyRequest.java
@@ -0,0 +1,43 @@
+package com.doumee.dao.web.request;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.dao.business.model.Multifile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.xpath.operations.Mult;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("璇勮鍙戝竷璇锋眰绫�")
+public class CommentApplyRequest {
+
+    @ApiModelProperty(value = "瀵硅薄缂栫爜锛堝叧鑱攁ctivity琛級", example = "1")
+    private Integer activityId;
+
+    @ApiModelProperty(value = "鍐呭")
+    private String content;
+
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍥炲璁板綍缂栫爜锛堝叧鑱攃omment琛級", example = "1")
+    private Integer replyId;
+
+    @ApiModelProperty(value = "涓�绾ц瘎璁虹紪鐮侊紙鍏宠仈comment琛級", example = "1")
+    private Integer commentId;
+
+    @ApiModelProperty(value = "鍥炲瀵硅薄鐢ㄦ埛缂栫爜锛堝叧鑱攎ember琛�", example = "1")
+    private Integer replyMemberId;
+
+    @ApiModelProperty(value = "鍥剧墖淇℃伅", example = "1")
+    private List<Multifile> multifileList;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java
index 1ab8f33..5a60ab6 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/MyCustomerRequest.java
@@ -16,7 +16,7 @@
 
 
     @ApiModelProperty(value = "鐢ㄦ埛鏄电О銆佹墜鏈哄彿")
-    private String memberIfo;
+    private String memberInfo;
 
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java
index 71799a0..ef1bb33 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/SaleReportRequest.java
@@ -23,6 +23,4 @@
     @ApiModelProperty(value = "缁撴潫鏃ユ湡 yyyy-MM-dd dateType =  4浣跨敤")
     private String endDate;
 
-    @ApiModelProperty(value = "鏄惁鏌ヨ璇︽儏锛�0=鍚︼紱1=鏄紱")
-    private Integer queryType;
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java
index 15e7229..9d3401f 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/ShopOrderRequest.java
@@ -11,14 +11,20 @@
  * @create 2023/3/23 9:50
  */
 @Data
-@ApiModel("鎴戠殑閿�鍞姤琛ㄨ姹傜被")
+@ApiModel("缁忛攢鍟嗚鍗曟煡璇�")
 public class ShopOrderRequest {
 
     @ApiModelProperty(value = "璁㈠崟鐘舵�侊細鐘舵�� 0寰呮敮浠� 1寰呭彂璐� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣")
     private Integer status;
 
-    @ApiModelProperty(value = "缁忛攢鍟嗕富閿�")
+    @ApiModelProperty(value = "鏀惰揣绫诲瀷锛�0=蹇�掗厤閫侊紱1=闂ㄥ簵鑷彁锛�")
+    private Integer receiveType;
+
+    @ApiModelProperty(value = "缁忛攢鍟嗕富閿�",hidden = true)
     private Integer shopId;
 
+    @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷锛�0=鐢ㄦ埛绔紱1=缁忛攢鍟嗙")
+    private Integer userType;
+
 
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/request/goods/ArticleRequest.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/goods/ArticleRequest.java
new file mode 100644
index 0000000..e7ea740
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/request/goods/ArticleRequest.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.web.request.goods;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/28 11:07
+ */
+@Data
+@ApiModel("绀惧尯鏌ヨ绫�")
+public class ArticleRequest {
+
+    @ApiModelProperty(value = "鏌ヨ鍐呭", example = "1")
+    private String info;
+
+    @ApiModelProperty(value = "鍒嗙被涓婚敭", example = "1")
+    private Integer labelId;
+
+    @ApiModelProperty(value = "鍝佺墝涓婚敭", example = "1")
+    private Integer brandId;
+
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java
index eb44069..282de43 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/AccountResponse.java
@@ -20,13 +20,15 @@
     @ApiModelProperty(value = "鐢ㄦ埛token")
     private String token;
 
-    @ApiModelProperty(value = "寰俊sessionKey")
-    private String sessionKey;
-
     @ApiModelProperty(value = "鐢ㄦ埛淇℃伅")
     private Member member;
 
     @ApiModelProperty(value = "鐢ㄦ埛openid")
     private String openid;
 
+    @ApiModelProperty(value = "缁忛攢鍟嗕俊鎭�")
+    private ShopInfoResponse shop;
+
+
+
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java
index 9e554f5..c74cd2d 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/SaleReportResponse.java
@@ -29,7 +29,4 @@
     private BigDecimal profitTotal;
 
 
-    @ApiModelProperty(value ="璁㈠崟鍒楄〃")
-    private List<SaleReportOrderResponse> saleReportOrderResponseList;
-
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java
index d0f65ae..dfa7614 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/ShopInfoResponse.java
@@ -68,4 +68,13 @@
     @ApiModelProperty(value = "娉曚汉鐢佃瘽")
     private String legalPersonPhone;
 
+    @ApiModelProperty(value = "涓撳睘娴锋姤鐮�")
+    private String posterImgCode;
+
+    @ApiModelProperty(value = "灏忕▼搴忕爜")
+    private String programCode;
+
+    @ApiModelProperty(value = "鐪佸競鍖�")
+    private Areas areas;
+
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
index d84ed79..fe9aef2 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/web/response/goods/MemberOrderResponse.java
@@ -1,8 +1,11 @@
 package com.doumee.dao.web.response.goods;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.dao.business.model.GoodsorderDetail;
 import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.MemberCoupon;
 import com.doumee.dao.business.model.Shop;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -48,6 +51,10 @@
     @ApiModelProperty(value = "缁忛攢鍟嗗悕绉�", example = "1")
     private String shopName;
 
+    @ApiModelProperty(value = "缁忛攢鍟嗙數璇�", example = "1")
+    private String shopPhone;
+
+
     @ApiModelProperty(value = "鐘舵�� 0寰呮敮浠� 1寰呭彂璐�/寰呰嚜鎻� 2寰呮敹璐� 3浜ゆ槗瀹屾垚 4宸插叧闂� 5閮ㄥ垎鍙戣揣", example = "1")
     private Integer orderStatus;
 
@@ -56,6 +63,9 @@
 
     @ApiModelProperty(value = "鏀粯鐘舵�� 0鏈敮浠� 1宸叉敮浠�", example = "1")
     private Integer payStatus;
+
+    @ApiModelProperty(value = "鎬婚噾棰�", example = "1")
+    private BigDecimal totalPrice;
 
     @ApiModelProperty(value = "瀹炰粯閲戦", example = "1")
     private BigDecimal price;
@@ -73,7 +83,7 @@
     private String linkAddress;
 
     @ApiModelProperty(value = "璁㈠崟澶囨敞", example = "1")
-    private String remark;
+    private String memberInfo;
 
     @ApiModelProperty(value = "璁㈠崟鍙�", example = "1")
     private String code;
@@ -93,15 +103,31 @@
     @ApiModelProperty(value = "绉垎鎶垫墸閲戦", example = "1")
     private BigDecimal integral;
 
+    @ApiModelProperty(value = "閭垂閲戦", example = "1")
+    private BigDecimal mailPrice;
+
+    @ApiModelProperty(value = "閫�娆鹃噾棰�", example = "1")
+    private BigDecimal refundMoney;
+
+    @ApiModelProperty(value = "閫�娆炬椂闂�", example = "1")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date refundTime;
+
+    @ApiModelProperty(value = "閫�娆惧娉�", example = "1")
+    private Integer refundInfo;
+
     @ApiModelProperty(value = "蹇�掑悕绉�", example = "1")
     private String kdName;
 
+    @ApiModelProperty(value = "鏀粯鍗曞彿", example = "1")
+    private String payOrderId;
 
     @ApiModelProperty(value = "蹇�掑崟鍙�", example = "1")
     private String kdCode;
 
-    @ApiModelProperty(value = "璁㈠崟鏄庣粏淇℃伅", example = "1")
-    private List<MemberOrderDetailResponse> memberOrderDetailResponseList;
+
+    @ApiModelProperty(value = "鍟嗗搧闆嗗悎")
+    private   List<GoodsorderDetail> goodsorderDetailList;
 
 
     @ApiModelProperty(value = "缁忛攢鍟嗕俊鎭�", example = "1")
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 d1bc172..00b403b 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
@@ -5,6 +5,7 @@
 import com.doumee.dao.business.model.Activity;
 import com.doumee.dao.web.dto.activity.*;
 import com.doumee.dao.web.request.ActivityPageListRequest;
+import com.doumee.dao.web.request.goods.ArticleRequest;
 
 import java.util.List;
 
@@ -184,4 +185,11 @@
     PageData<ActivityCardDTO> getUserFollowActivityCard(PageWrap pageWrap,Integer memberId);
 
     void updateLooknum(Activity model);
+
+
+    PageData<Activity> getArticlePage(PageWrap<ArticleRequest> pageWrap);
+
+    Activity getArticleInfo(Integer id, Integer memberId);
+
+
 }
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 62c876a..f7c4102 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
@@ -6,6 +6,7 @@
 import com.doumee.dao.web.dto.CommentDTO;
 import com.doumee.dao.web.dto.activity.ActivityCommentDTO;
 import com.doumee.dao.web.dto.activity.ActivityReplyCommentDTO;
+import com.doumee.dao.web.request.CommentApplyRequest;
 
 import java.util.Date;
 import java.util.List;
@@ -23,7 +24,7 @@
      * @param comment 瀹炰綋瀵硅薄
      * @return Integer
      */
-    Integer create(Comment comment,Integer memberId );
+    Comment apply(CommentApplyRequest comment, 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 cc724e8..a37c8c9 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
@@ -182,7 +182,9 @@
      */
     void affirmOrder(Integer orderId,Integer memberId);
 
-    void orderWriteOff(String exchangeCode,Integer memberId);
+    void orderWriteOff(Integer orderId,Integer memberId);
+
+    MemberOrderResponse getGoodsOrderDetailByCode(String exchangeCode);
 
     /**
      * 璁㈠崟鍒犻櫎
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 2d82218..b3c642a 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
@@ -16,9 +16,9 @@
 
     InviteInfoResponse getInviteInfo(Integer memberId);
 
-    String createShareImg(Integer memberId) throws Exception;
+    String createShareImg(Integer userType,Integer memberId) throws Exception;
 
-
+    String createShopMiniProgramCode(Integer shopId) 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 49d34da..a1447ef 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -130,7 +130,7 @@
     AccountResponse wxLogin(String code);
 
 
-    AccountResponse wxLoginTest( Integer recId);
+//    AccountResponse wxLoginTest( Integer recId);
 
 
     /**
@@ -144,7 +144,7 @@
      * 鏇存柊寰俊鐢ㄦ埛淇℃伅
      * @param updateMemberRequest
      */
-    Member updateMember(UpdateMemberRequest updateMemberRequest);
+    void updateMember(UpdateMemberRequest updateMemberRequest);
 
     /**
      * 楠岃瘉鎵嬫満鍙�
@@ -197,4 +197,7 @@
 
     void updateShop(Member member);
 
+    void logOut(String token,Integer memberId);
+
+    void logOff(String token,Integer memberId);
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/NoticeService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/NoticeService.java
index cd3777c..0c77eac 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/NoticeService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/NoticeService.java
@@ -119,7 +119,7 @@
     void saveMemberIntegralNotice(Constants.IntegralObjType integralObjType, Integer type,
                                   Integer memberId,
                                   BigDecimal integral,
-                                  Integer objId, String param1);
+                                  Integer objId, String info);
 
 
     /**
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/SearchHistoryService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/SearchHistoryService.java
index 506b2c1..ec99d55 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/SearchHistoryService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/SearchHistoryService.java
@@ -94,4 +94,8 @@
      * @return long
      */
     long count(SearchHistory searchHistory);
+
+    List<SearchHistory> findListByType(Integer type,Integer memberId);
+
+    void cleanHistory(Integer type,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 363448d..e51fe67 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
@@ -32,7 +32,7 @@
      * @param shop 瀹炰綋瀵硅薄
      * @return Integer
      */
-    Integer create(Shop shop);
+    Integer create(Shop shop) throws Exception;
 
     /**
      * 涓婚敭鍒犻櫎
@@ -198,11 +198,10 @@
 
     /**
      * 鎴戠殑瀹㈡埛淇℃伅
-     * @param request
      * @param shopId
      * @return
      */
-    List<MyCustomerResponse> myCustomer(MyCustomerRequest request, Integer shopId);
+    PageData<Member> myCustomer(PageWrap<MyCustomerRequest> pageWrap, Integer shopId);
 
     /**
      * 閿�鍞槑缁�
@@ -216,4 +215,7 @@
     String setGoodsPrice(Shop shop);
 
     PageData<ShopMoneyVO>  findPageMoney(PageWrap<Shop> pageWrap);
+
+
+    void logOut(String token,Integer shopId);
 }
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/ZanService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/ZanService.java
index 756cf4b..d888459 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/ZanService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/ZanService.java
@@ -26,9 +26,9 @@
     /**
      * 涓婚敭鍒犻櫎
      *
-     * @param id 涓婚敭
+     * @param zan
      */
-    void deleteById(Integer id);
+    void deleteById(Zan zan, Integer memberId);
 
     /**
      * 鍒犻櫎
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java
index 42bd9de..8e45930 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ActivityServiceImpl.java
@@ -14,7 +14,6 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
-import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
@@ -27,11 +26,16 @@
 import com.doumee.dao.web.dto.shop.ShopSimpleDTO;
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.dao.web.request.ActivityPageListRequest;
+import com.doumee.dao.web.request.goods.ArticleRequest;
 import com.doumee.service.business.*;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
@@ -105,6 +109,10 @@
 
     @Resource
     private ApplicationEventPublisher applicationEventPublisher;
+    @Autowired
+    private ZanMapper zanMapper;
+    @Autowired
+    private CollectMapper collectMapper;
 
 
     @Override
@@ -673,6 +681,11 @@
     }
 
 
+
+
+
+
+
     @Override
     public ActivityProbeShopDTO getActivityProbeShopDTO(Integer activityId, Integer memberId) {
 
@@ -1086,4 +1099,95 @@
         }*/
 
     }
+
+
+    @Override
+    public PageData<Activity> getArticlePage(PageWrap<ArticleRequest> pageWrap) {
+        String basePath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();
+        String activityPath = basePath + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
+        ArticleRequest model = pageWrap.getModel();
+        IPage<Activity> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        MPJLambdaWrapper<Activity> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Activity.class)
+                .selectAs(Labels::getName,Activity::getLablesName)
+                .selectAs(Labels::getParam,Activity::getParam)
+                .leftJoin(Labels.class,Labels::getId,Activity::getLabelId)
+                .eq(Activity::getIsdeleted,Constants.ZERO)
+                .eq(Objects.nonNull(model.getLabelId()),Activity::getLabelId,model.getLabelId())
+                .eq(Objects.nonNull(model.getBrandId()),Activity::getBrandId,model.getBrandId())
+                .like(StringUtils.isNotBlank(model.getInfo()),Activity::getContent,model.getInfo())
+                .orderByDesc(Labels::getId)
+        ;
+        queryWrapper.orderByDesc(Activity::getCreateDate);
+        IPage<Activity> activityIPage = activityJoinMapper.selectJoinPage(page, Activity.class, queryWrapper);
+        for (Activity activity:activityIPage.getRecords()) {
+            if(StringUtils.isNotBlank(activity.getImgurl())){
+                activity.setImgurlfull(activityPath + activity.getImgurl());
+            }
+            //瀵屾枃鏈唴瀹� 璇诲彇瀵屾枃鏈�
+            if(Constants.equalsInteger(activity.getContentType(),Constants.ZERO)){
+                activity.setContentInfo(
+                        this.getContentInfo(activity.getContent())
+                );
+            }
+        }
+        return PageData.from(activityIPage);
+    }
+
+
+    public String getContentInfo(String html){
+        Document doc = Jsoup.parse(html);
+        Elements paragraphs = doc.select("p"); // 鑾峰彇鎵�鏈�<p>鏍囩
+        String content = "";
+        for (Element paragraph : paragraphs) {
+            content = content + paragraph.text();
+        }
+        return content;
+    }
+
+
+    @Override
+    public Activity getArticleInfo(Integer id,Integer memberId) {
+        Activity activity = activityJoinMapper.selectJoinOne(Activity.class,
+                new MPJLambdaWrapper<Activity>().selectAll(Activity.class)
+                        .selectAs(Labels::getName,Activity::getLablesName)
+                        .selectAs(Labels::getParam,Activity::getParam)
+                        .leftJoin(Labels.class,Labels::getId,Activity::getLabelId)
+                        .eq(Activity::getIsdeleted,Constants.ZERO)
+                        .eq(Activity::getId,id)
+                        .orderByDesc(Labels::getId)
+                        .last(" limit 1 ")
+        );
+        if (Objects.isNull(activity)) {
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(StringUtils.isNotBlank(activity.getImgurl())){
+            String basePath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();
+            String activityPath = basePath + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
+            activity.setImgurlfull(basePath + activityPath + activity.getImgurl());
+        }
+        activityMapper.update(new UpdateWrapper<Activity>().lambda()
+                .setSql(" LOOKNUM = ifnull(LOOKNUM,0) + 1  ")
+                .eq(Activity::getId,id)
+        );
+        if(Objects.nonNull(memberId)){
+
+            activity.setCollectStatus(collectMapper.selectCount(new QueryWrapper<Collect>().lambda()
+                    .eq(Collect::getMemberId,memberId)
+                    .eq(Collect::getObjId,id)
+                    .eq(Collect::getObjType,Constants.ZERO)
+            )>Constants.ZERO?Constants.ONE:Constants.ZERO);
+
+            activity.setZanStatus(zanMapper.selectCount(new QueryWrapper<Zan>().lambda()
+                    .eq(Zan::getMemberId,memberId)
+                    .eq(Zan::getObjId,id)
+                    .eq(Zan::getObjType,Constants.ZERO)
+            )>Constants.ZERO?Constants.ONE:Constants.ZERO);
+
+        }
+        return activity;
+    }
+
+
+
 }
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 466c82a..6ad1401 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
@@ -1166,6 +1166,10 @@
 
         goodsorderMapper.update(null,new UpdateWrapper<Goodsorder>().lambda()
                 .set(Goodsorder::getStatus, Constants.OrderStatus.REFUND.getKey())
+                .set(Goodsorder::getRefundTime, DateUtil.getCurrDateTime())
+                .set(Goodsorder::getRefundMoney, afterSaleApplyRequest.getMoney())
+                .set(Goodsorder::getRefundUserId, loginUserInfo.getId())
+                .set(Goodsorder::getRefundInfo, afterSaleApplyRequest.getRemark())
                 .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 ff3368d..de0403d 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
@@ -1,6 +1,8 @@
 package com.doumee.service.business.impl;
 
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -27,10 +29,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -201,6 +200,10 @@
 
     @Override
     public void saveCollect(CollectSaveRequest request, Integer memberId){
+        if(Objects.isNull(request)|| Objects.isNull(request.getObjId())
+        || Objects.isNull(request.getType())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         if(collectMapper.selectCount(new QueryWrapper<Collect>().lambda()
                 .eq(Collect::getMemberId,memberId)
                 .eq(Collect::getObjType,request.getType())
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 64c0413..899ea8b 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,6 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.config.listener.event.IntegralEvent;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -10,13 +11,17 @@
 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.dao.web.dto.CommentDTO;
 import com.doumee.dao.web.dto.ZanDTO;
 import com.doumee.dao.web.dto.activity.ActivityCommentDTO;
 import com.doumee.dao.web.dto.activity.ActivityReplyCommentDTO;
+import com.doumee.dao.web.request.CommentApplyRequest;
 import com.doumee.service.business.CommentService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -51,32 +56,39 @@
     private CommentJoinMapper commentJoinMapper;
 
     @Autowired
-    private MemberService memberService;
+    private MemberMapper memberMapper;
 
     @Autowired
     private ZanService zanService;
 
     @Autowired
     private ApplicationEventPublisher applicationEventPublisher;
+
+    @Autowired
+    private MultifileMapper multifileMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
     @Override
-    public Integer create(Comment comment,Integer memberId) {
-        LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+    public Comment apply(CommentApplyRequest comment, Integer memberId) {
         Comment target = new Comment();
-        target.setCreator(loginUserInfo.getId());
         target.setCreateDate(new Date());
-        target.setEditor(loginUserInfo.getId());
         target.setEditDate(new Date());
         target.setRemark(comment.getRemark());
-        target.setMemberId(loginUserInfo.getMemberId());
+        target.setMemberId(memberId);
         target.setActivityId(comment.getActivityId());
         target.setContent(comment.getContent());
-        target.setAnonymous(comment.getAnonymous());
+        target.setAnonymous(Constants.ONE);
+        target.setStatus(Constants.ZERO);
+        target.setType(Constants.ZERO);
 
         if (comment.getReplyId() != null){
             Comment reply = commentMapper.selectById(comment.getReplyId());
             reply = Optional.ofNullable(reply).orElseThrow(() -> new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍥炲鐩爣涓嶅瓨鍦�"));
             target.setReplyId(reply.getId());
             target.setReplyMemberId(reply.getMemberId());
+            target.setCommentId(reply.getId());
             target.setType(Constants.ONE);
         }
 
@@ -89,11 +101,38 @@
         target.setRecIntegral(new BigDecimal("0"));
         commentMapper.insert(target);
 
+        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() ;
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(comment.getMultifileList())){
+             String commentFile = path +        systemDictDataBiz.queryByCode(Constants.OSS, Constants.COMMENT_FILE).getCode();
+            for (Multifile multifile:comment.getMultifileList()) {
+                multifile.setCreateDate(new Date());
+                multifile.setEditDate(new Date());
+                multifile.setObjId(target.getId());
+                multifile.setObjType(Constants.MultiFile.COMMENT_FILE.getKey());
+                multifile.setFileFullUrl(commentFile + multifile.getFileurl());
+            }
+            multifileMapper.insert(comment.getMultifileList());
+            target.setMultifileList(comment.getMultifileList());
+        }
+
+        Member member = memberMapper.selectById(memberId);
+        if(Objects.nonNull(member)){
+            target.setNikeName(member.getNickname());
+            if(StringUtils.isNotBlank(member.getImgurl())){
+                String memberFile = path + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
+                target.setMemberImgUrl(memberFile + member.getImgurl());
+            }
+        }
         IntegralEvent<Comment> integralEvent = new IntegralEvent(this,target, Constants.CoffeeBeanTask.POST_COMMENTS,memberId);
         applicationEventPublisher.publishEvent(integralEvent);
-
-        return comment.getId();
+        target.setZanCount(Constants.ZERO);
+        target.setZanStatus(Constants.ZERO);
+        return target;
     }
+
+
+
+
 
     @Override
     public void deleteById(Integer id) {
@@ -193,13 +232,19 @@
         MPJLambdaWrapper<Comment> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.selectAll(Comment.class);
+        if(Objects.isNull(pageWrap.getModel().getMemberId())){
+            queryWrapper.select(" 0 ",ActivityCommentDTO::getZanStatus);
+        }else{
+            queryWrapper.select(" (select count(1) from zan z where z.OBJ_ID = t.id and z.MEMBER_ID = "+pageWrap.getModel().getMemberId()+" and z.ISDELETED = 0 and z.OBJ_TYPE = 1) ",ActivityCommentDTO::getZanStatus);
+        }
+        queryWrapper.select(" (select count(1) from zan z where z.OBJ_ID = t.id and z.ISDELETED = 0 and z.OBJ_TYPE = 0)  ",ActivityCommentDTO::getZanCount);
         queryWrapper.selectAs(Member::getNickname,ActivityCommentDTO::getNikeName);
-        queryWrapper.selectAs(Member::getImgurl,ActivityCommentDTO::getMemberImgUrl);
         queryWrapper.selectAs(Member::getImgurl,ActivityCommentDTO::getMemberImgUrl);
         queryWrapper.leftJoin(Member.class,Member::getId,Comment::getMemberId);
         queryWrapper.eq(Comment::getType, Constants.ZERO);
         queryWrapper.eq(Comment::getStatus, Constants.ZERO);
         queryWrapper.eq(Comment::getActivityId,pageWrap.getModel().getActivityId());
+        queryWrapper.orderByDesc(Comment::getId);
         IPage<ActivityCommentDTO> result = commentJoinMapper.selectJoinPage(page, ActivityCommentDTO.class, queryWrapper);
 
         if (CollectionUtils.isEmpty(result.getRecords())){
@@ -207,10 +252,15 @@
         }
         // 鏌ヨ鍚勪釜璇勮 鐨勯鏉″洖澶� 鍜屽洖澶嶆�绘潯鏁�
         List<Integer> commentIds = result.getRecords().stream().map(s -> s.getId()).collect(Collectors.toList());
-
         MPJLambdaWrapper<Comment> replyWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         replyWrapper.selectAs(Comment::getId,ActivityReplyCommentDTO::getId);
+        if(Objects.isNull(pageWrap.getModel().getMemberId())){
+            replyWrapper.select(" 0 ",ActivityReplyCommentDTO::getZanStatus);
+        }else{
+            replyWrapper.select(" (select count(1) from zan z where z.OBJ_ID = t.id and z.MEMBER_ID = "+pageWrap.getModel().getMemberId()+" and z.ISDELETED = 0 and z.OBJ_TYPE = 1) ",ActivityReplyCommentDTO::getZanStatus);
+        }
+        replyWrapper.select(" (select count(1) from zan z where z.OBJ_ID = t.id and z.ISDELETED = 0 and z.OBJ_TYPE = 0)  ",ActivityReplyCommentDTO::getZanCount);
         replyWrapper.selectAs(Comment::getCommentId,ActivityReplyCommentDTO::getCommentId);
         replyWrapper.selectAs(Comment::getMemberId,ActivityReplyCommentDTO::getMemberId);
         replyWrapper.selectAs(Comment::getContent,ActivityReplyCommentDTO::getContent);
@@ -224,26 +274,47 @@
         replyWrapper.in(Comment::getCommentId,commentIds);
         replyWrapper.groupBy(Comment::getCommentId);
 
-        List<ActivityReplyCommentDTO> activityCommentDTOS = commentJoinMapper.selectJoinList(ActivityReplyCommentDTO.class, queryWrapper);
-
+        List<ActivityReplyCommentDTO> activityCommentDTOS = commentJoinMapper.selectJoinList(ActivityReplyCommentDTO.class, replyWrapper);
         List<Integer> integerStream = activityCommentDTOS.stream().map(s -> s.getId()).collect(Collectors.toList());
         commentIds.addAll(integerStream);
-
         Map<Integer, ZanDTO> count = zanService.count(commentIds);
-
         Map<Integer, ActivityReplyCommentDTO> collect = activityCommentDTOS.stream().collect(Collectors.toMap(s -> s.getCommentId(), s -> s));
+        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();
+        String memberFile = path + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
+        String commentFile = path + systemDictDataBiz.queryByCode(Constants.OSS, Constants.COMMENT_FILE).getCode();
+
+        List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>()
+                .lambda()
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .in(Multifile::getObjId,commentIds)
+                .eq(Multifile::getObjType,Constants.MultiFile.COMMENT_FILE.getKey())
+                .orderByDesc(Multifile::getId)
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+            for (Multifile multifile:multifileList) {
+                multifile.setFileFullUrl(commentFile + multifile.getFileurl());
+            }
+        }
         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()));
+            }
             ZanDTO object = MapUtils.getObject(count, s.getId());
-
             ActivityReplyCommentDTO replyCommentDTO = collect.get(s.getId());
-            ZanDTO replyZan = MapUtils.getObject(count, replyCommentDTO.getId());
-            replyCommentDTO.setZanCount(replyZan != null ? replyZan.getCount() : 0);
-            s.setActivityReplyCommentDTO(replyCommentDTO);
-            s.setReplyCount(replyCommentDTO.getReplyCount());
+            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()));
+                }
+                replyCommentDTO.setMemberImgUrl(StringUtils.isNotBlank(replyCommentDTO.getMemberImgUrl())?memberFile+replyCommentDTO.getMemberImgUrl():null);
+                s.setActivityReplyCommentDTO(replyCommentDTO);
+                s.setReplyCount(replyCommentDTO.getReplyCount());
+            }
             s.setZanCount(object != null ? object.getCount() : 0);
-        });
 
+        });
         return PageData.from(result);
     }
 
@@ -255,6 +326,12 @@
         queryWrapper.selectAll(Comment.class);
         queryWrapper.selectAs(Member::getNickname,ActivityReplyCommentDTO::getMemberNikeName);
         queryWrapper.selectAs(Member::getImgurl,ActivityReplyCommentDTO::getMemberImgUrl);
+        if(Objects.isNull(pageWrap.getModel().getMemberId())){
+            queryWrapper.select(" 0 ",ActivityReplyCommentDTO::getZanStatus);
+        }else{
+            queryWrapper.select(" (select count(1) from zan z where z.OBJ_ID = t.id and z.MEMBER_ID = "+pageWrap.getModel().getMemberId()+" and z.ISDELETED = 0 and z.OBJ_TYPE = 1) ",ActivityReplyCommentDTO::getZanStatus);
+        }
+        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");
@@ -265,11 +342,29 @@
         if (CollectionUtils.isEmpty(result.getRecords())){
             return PageData.from(result);
         }
-
+        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();
+        String memberFile = path + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
+        String commentFile = path + systemDictDataBiz.queryByCode(Constants.OSS, Constants.COMMENT_FILE).getCode();
+        List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>()
+                .lambda()
+                .eq(Multifile::getIsdeleted,Constants.ZERO)
+                .eq(Multifile::getObjId,pageWrap.getModel().getCommentId())
+                .eq(Multifile::getObjType,Constants.MultiFile.COMMENT_FILE.getKey())
+                .orderByDesc(Multifile::getId)
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+            for (Multifile multifile:multifileList) {
+                multifile.setFileFullUrl(commentFile + multifile.getFileurl());
+            }
+        }
         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()));
+            }
             ZanDTO replyZan = MapUtils.getObject(count, s.getId());
             s.setZanCount(replyZan != null ? replyZan.getCount() : 0);
             if (pageWrap.getModel().getCommentId().equals(s.getReplyId())){
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 ec2bf51..efb5c1f 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
@@ -60,6 +60,9 @@
     @Autowired
     private ShopGoodsRelationMapper shopGoodsRelationMapper;
 
+    @Autowired
+    private SearchHistoryMapper searchHistoryMapper;
+
 
 
     @Autowired
@@ -922,7 +925,6 @@
     @Override
     public IPage<GoodsInfoResponse> getGoodsPage(PageWrap<GoodsRequest> pageWrap) {
        GoodsRequest model = pageWrap.getModel();
-
        QueryWrapper<GoodsRequest> wrapper = new QueryWrapper<GoodsRequest>()
                 .eq("g.ISDELETED",Constants.ZERO)
                 .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
@@ -956,7 +958,20 @@
                 goodsMapper.goodsPageForShop(pageWrap.toPage(),wrapper,model.getShopId()) ;
         if (!CollectionUtils.isEmpty(page.getRecords())){
             String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.GOODS_FILE);
-            page.getRecords().forEach(s->s.setImgurl(preFixPath+s.getImgurl()));
+            for (GoodsInfoResponse goodsInfoResponse:page.getRecords()
+                 ) {
+                goodsInfoResponse.setImgurl(StringUtils.isNotBlank(goodsInfoResponse.getImgurl())?(preFixPath+goodsInfoResponse.getImgurl()):null);
+                //sku鍩虹淇℃伅
+                this.getSkuInfo(goodsInfoResponse);
+            }
+        }
+        if(StringUtils.isNotBlank(model.getGoodsName())&&Objects.nonNull(model.getMemberId())){
+            SearchHistory searchHistory = new SearchHistory();
+            searchHistory.setIsdeleted(Constants.ZERO);
+            searchHistory.setContent(model.getGoodsName());
+            searchHistory.setMemberId(model.getMemberId());
+            searchHistory.setType(Constants.ZERO);
+            searchHistoryMapper.insert(searchHistory);
         }
         return page;
     }
@@ -971,41 +986,42 @@
 
         List<GoodsSkuResponse>  goodsSkuResponseList = goodsSkuMapper.getSkuResponseList(goodsResponse.getId());
 
-        String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
+//        String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+//                systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
         Integer sumStock = Constants.ZERO;
         for (GoodsSkuResponse goodsSkuResponse:goodsSkuResponseList) {
-            if(StringUtils.isBlank(goodsSkuResponse.getImgurl())){
-                goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getGoodsImgUrl());
-            }else{
-                goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getImgurl());
-            }
-            //澶勭悊鏁版嵁涓嬫爣
-            String goodsSkuName = goodsSkuResponse.getName();
-            List<String> strList = Arrays.asList(goodsSkuName.split(";"));
-            StringBuffer indexData = new StringBuffer();
-            for (int i = 0; i < strList.size(); i++) {
-                //鏌ヨsku淇℃伅
-                Sku sku =  skuMapper.selectOne(new QueryWrapper<Sku>()
-                        .eq("GOODS_ID",goodsResponse.getId())
-                        .eq("SORTNUM",i+1)
-                        .last(" limit 1 ")
-                );
-                if(Objects.isNull(sku)){
-                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
-                }
-                //鏌ヨSKU_ATTR
-                SkuAttr skuAttr = skuAttrMapper.selectOne(new QueryWrapper<SkuAttr>()
-                        .eq("SKU_ID",sku.getId())
-                        .eq("NAME",strList.get(i))
-                        .last(" limit 1 ")
-                );
-                if(Objects.isNull(skuAttr)){
-                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
-                }
-                indexData.append("," + ( skuAttr.getSortnum()-1));
-            }
-            goodsSkuResponse.setIndexData(indexData.toString().substring(1));
+            goodsSkuResponse.setStock(Objects.isNull(goodsSkuResponse.getStock())?Constants.ZERO:goodsSkuResponse.getStock());
+//            if(StringUtils.isBlank(goodsSkuResponse.getImgurl())){
+//                goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getGoodsImgUrl());
+//            }else{
+//                goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getImgurl());
+//            }
+//            //澶勭悊鏁版嵁涓嬫爣
+//            String goodsSkuName = goodsSkuResponse.getName();
+//            List<String> strList = Arrays.asList(goodsSkuName.split(";"));
+//            StringBuffer indexData = new StringBuffer();
+//            for (int i = 0; i < strList.size(); i++) {
+//                //鏌ヨsku淇℃伅
+//                Sku sku =  skuMapper.selectOne(new QueryWrapper<Sku>()
+//                        .eq("GOODS_ID",goodsResponse.getId())
+//                        .eq("SORTNUM",i)
+//                        .last(" limit 1 ")
+//                );
+//                if(Objects.isNull(sku)){
+//                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
+//                }
+//                //鏌ヨSKU_ATTR
+//                SkuAttr skuAttr = skuAttrMapper.selectOne(new QueryWrapper<SkuAttr>()
+//                        .eq("SKU_ID",sku.getId())
+//                        .eq("NAME",strList.get(i))
+//                        .last(" limit 1 ")
+//                );
+//                if(Objects.isNull(skuAttr)){
+//                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
+//                }
+//                indexData.append("," + ( skuAttr.getSortnum()-1));
+//            }
+//            goodsSkuResponse.setIndexData(indexData.toString().substring(1));
             sumStock = sumStock + goodsSkuResponse.getStock();
         }
         //鐪熷疄閿�閲� = realSaleNum  - saleNum;
@@ -1023,7 +1039,6 @@
         }
         goodsResponse.setSkuResponsesList(skuResponseList);
     }
-
 
     @Override
     public GoodsInfoResponse getGoodsInfo(Integer goodsId,Integer memberId) {
@@ -1056,7 +1071,6 @@
                     .eq(Collect::getObjType,Constants.ONE)
             )>Constants.ZERO?Constants.ONE:Constants.ZERO);
         }
-
         return goodsResponse;
     }
 
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 277edae..5068fc0 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
@@ -1027,14 +1027,31 @@
         String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
         page.getRecords().forEach(i->{
-            List<MemberOrderDetailResponse> memberOrderDetailResponseList = goodsorderDetailMapper.getDetailList(i.getOrderId());
-            memberOrderDetailResponseList.forEach(j->{
-                j.setImgUrl(fullUrl + j.getImgUrl());
+            List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
+                    .eq(GoodsorderDetail::getOrderId,i.getOrderId()));
+            goodsorderDetailList.stream().forEach(s ->{
+                if(StringUtils.isNotBlank(s.getImgurl())){
+                    s.setImgurl(fullUrl + s.getImgurl());
+                }
             });
-            i.setMemberOrderDetailResponseList(memberOrderDetailResponseList);
+            i.setGoodsorderDetailList(goodsorderDetailList);
         });
         return page;
     }
+
+
+
+    @Override
+    public MemberOrderResponse getGoodsOrderDetailByCode(String exchangeCode){
+        Goodsorder goodsorder = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getExchangeCode,exchangeCode)
+                .last(" limit 1")
+        );
+        if(Objects.isNull(goodsorder)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌璁㈠崟淇℃伅");
+        }
+        return this.getGoodsOrderDetail(goodsorder.getId());
+    }
+
 
 
     /**
@@ -1049,23 +1066,34 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌璁㈠崟淇℃伅");
         }
         if(memberOrderResponse.getOrderStatus().equals(Constants.OrderStatus.WAIT_PAY.getKey())){
-            memberOrderResponse.setCountdown(memberOrderResponse.getCancelDate().getTime()-System.currentTimeMillis());
+            memberOrderResponse.setCountdown(memberOrderResponse.getCancelDate().getTime()>System.currentTimeMillis()?memberOrderResponse.getCancelDate().getTime()-System.currentTimeMillis():Constants.ZERO);
         }
-        List<MemberOrderDetailResponse> memberOrderDetailResponseList = goodsorderDetailMapper.getDetailList(memberOrderResponse.getOrderId());
         String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
-        memberOrderDetailResponseList.forEach(j->{
-            j.setImgUrl(fullUrl + j.getImgUrl());
+
+
+        List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
+                .eq(GoodsorderDetail::getOrderId,memberOrderResponse.getOrderId()));
+        goodsorderDetailList.stream().forEach(s ->{
+            if(StringUtils.isNotBlank(s.getImgurl())){
+                s.setImgurl(fullUrl + s.getImgurl());
+            }
         });
-        memberOrderResponse.setMemberOrderDetailResponseList(memberOrderDetailResponseList);
-        if(Constants.equalsInteger(memberOrderResponse.getReceiveType(),Constants.ONE)){
-            memberOrderResponse.setShopInfo(shopMapper.selectById(memberOrderResponse.getShopId()));
+        memberOrderResponse.setGoodsorderDetailList(goodsorderDetailList);
+        Shop shop = shopMapper.selectById(memberOrderResponse.getShopId());
+        if(Objects.nonNull(shop)){
+            shop.setPassword(null);
+            shop.setUsername(null);
+            shop.setAreas(AreasServiceImpl.getAddressByAreaId(shop.getAreaId()));
+            memberOrderResponse.setShopInfo(shop);
         }
         Member member = memberMapper.selectById(memberOrderResponse.getMemberId());
         if(Objects.nonNull(member)){
             String memberfullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                     systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode();
-            member.setImgFullUrl(memberfullUrl + member.getImgurl());
+            if(StringUtils.isNotBlank(member.getImgurl())){
+                member.setImgFullUrl(memberfullUrl + member.getImgurl());
+            }
             memberOrderResponse.setMember(member);
         }
         return memberOrderResponse;
@@ -1171,9 +1199,7 @@
                 }
             }
         }
-
         SendWxMessage.orderCancel(goodsorder,memberMapper.selectById(goodsorder.getMemberId()),goodsName);
-
         //鏌ヨ浼樻儬鍒镐俊鎭褰�
         if(!Objects.isNull(goodsorder.getCouponId())){
             MemberCoupon memberCoupon = memberCouponMapper.selectById(goodsorder.getCouponId());
@@ -1578,6 +1604,7 @@
      * @param memberId
      */
     @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public void affirmOrder(Integer orderId,Integer memberId){
         Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
         if(!goodsorder.getMemberId().equals(memberId)){
@@ -1687,10 +1714,12 @@
      * @param memberId
      */
     @Override
-    public void orderWriteOff(String exchangeCode,Integer memberId){
-        Goodsorder goodsorder = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda()
-                .eq(Goodsorder::getExchangeCode,exchangeCode)
-                .eq(Goodsorder::getIsdeleted,Constants.ZERO).last("limit 1 "));
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+    public void orderWriteOff(Integer orderId,Integer memberId){
+        if(Objects.isNull(orderId)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        Goodsorder goodsorder = goodsorderMapper.selectById(orderId);
         if(Objects.isNull(goodsorder)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
@@ -1704,9 +1733,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.getMemberId(),memberId)){
+//            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"["+shop.getName()+"]闈炴偍缁戝畾鐨勭粡閿�鍟嗭紝鏃犳硶杩涜璇ユ搷浣滐紒");
+//        }
         goodsorder.setStatus(Constants.OrderStatus.DONE.getKey());
         goodsorder.setDoneDate(new Date());
         goodsorderMapper.updateById(goodsorder);
@@ -1733,7 +1762,7 @@
             return;
         }
         BigDecimal backIntegral = getBackIntegral(goodsorder.getPrice(),Constants.ONE);
-        if (backIntegral.compareTo(BigDecimal.ZERO) >= 0) {
+        if (backIntegral.compareTo(BigDecimal.ZERO) > 0) {
             //鏇存柊浣欓淇℃伅 娣诲姞绉垎鍙樺姩璁板綍
             DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
             dealIntegralRequest.setIntegralNum(backIntegral);
@@ -1782,12 +1811,12 @@
             return;
         }
         BigDecimal backIntegral = getBackIntegral(goodsorder.getPrice(),Constants.ZERO);
-        if (backIntegral.compareTo(BigDecimal.ZERO) >= 0) {
+        if (backIntegral.compareTo(BigDecimal.ZERO) > 0) {
             //鏇存柊浣欓淇℃伅 娣诲姞绉垎鍙樺姩璁板綍
             DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
             dealIntegralRequest.setIntegralNum(backIntegral);
             dealIntegralRequest.setDealType(Constants.ZERO);
-            dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
+            dealIntegralRequest.setMemberId(goodsorder.getMemberId());
             dealIntegralRequest.setObjId(goodsorder.getId());
             dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
             dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.ORDER_DONATE);
@@ -2102,12 +2131,13 @@
         Utils.MP.blankToNull(pageWrap.getModel());
         ShopOrderRequest model = pageWrap.getModel();
         queryWrapper.selectAll(Goodsorder.class);
-//        queryWrapper.selectAs(Member::getNickname,Goodsorder::getNickName);
-//        queryWrapper.selectAs(Member::getPhone,Goodsorder::getPhone);
-//        queryWrapper.selectAs(Member::getImgurl,Goodsorder::getImgurl);
+        queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
+        queryWrapper.selectAs(Shop::getPhone,Goodsorder::getShopPhone);
+        queryWrapper.leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId);
         queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO);
         queryWrapper.eq(Objects.nonNull(model.getStatus()),Goodsorder::getStatus,model.getStatus());
-        queryWrapper.eq(Objects.nonNull(model.getShopId()),Goodsorder::getDistributionShopId,model.getShopId());
+        queryWrapper.eq(Objects.nonNull(model.getShopId())&&Constants.equalsInteger(model.getUserType(),Constants.ONE),Goodsorder::getDistributionShopId,model.getShopId());
+        queryWrapper.eq(Objects.nonNull(model.getShopId())&&Constants.equalsInteger(model.getUserType(),Constants.ZERO),Goodsorder::getMemberId,model.getShopId());
         queryWrapper.orderByDesc(Goodsorder::getCreateDate);
 
         IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper);
@@ -2120,8 +2150,8 @@
             List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda()
                     .eq(GoodsorderDetail::getOrderId,goodsorder.getId()));
             goodsorderDetailList.stream().forEach(s ->{
-                if(StringUtils.isBlank(s.getImgurl())){
-                    s.setImgurl(path + s.getGoodsImgurl());
+                if(StringUtils.isNotBlank(s.getImgurl())){
+                    s.setImgurl(path + s.getImgurl());
                 }
             });
             goodsorder.setGoodsorderDetailList(goodsorderDetailList);
@@ -2131,4 +2161,27 @@
 
 
 
+//    public IPage<Shop> getGoodsorderPageForShop(PageWrap pageWrap,String shopId) {
+//        IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+//
+//        IPage<Goodsorder> goodsorderPage = goodsorderJoinMapper.selectJoinPage(page,Goodsorder.class,
+//                new MPJLambdaWrapper<Goodsorder>()
+//                        .selectAll(Goodsorder.class)
+//                        .selectAs(Member::getPhone,Goodsorder::getPhone)
+//                        .selectAs(Member::getNickname,Goodsorder::getNickName)
+//                        .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId)
+//                        .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+//                        .eq(Goodsorder::getDistributionShopId,shopId)
+//                        .eq(Goodsorder::getStatus,Constants.OrderStatus.PAY_DONE.getKey())
+//                        .eq(Goodsorder::getReceiveType,Constants.ONE)
+//                        .orderByDesc(Goodsorder::getId)
+//        );
+//
+//
+//
+//    }
+
+
+
+
 }
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 a0c6493..5cf3eb0 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
@@ -155,7 +155,12 @@
         integral.setCreator(member.getId());
         integral.setIsdeleted(Constants.ZERO);
         integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
-        integral.setContent(dealIntegralRequest.getIntegralObjType().getNoteinfo());
+        String info = dealIntegralRequest.getIntegralObjType().getNoteinfo();
+        info = info.replace("${param}",dealIntegralRequest.getIntegralNum().toString());
+        if(StringUtils.isNotBlank(dealIntegralRequest.getParam1())){
+            info = info .replace("${param1}",dealIntegralRequest.getParam1());
+        }
+        integral.setContent(info);
         integral.setObjId(dealIntegralRequest.getObjId());
         integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
         integral.setType(dealIntegralRequest.getDealType());
@@ -174,7 +179,7 @@
         //绔欏唴淇�
         noticeService.saveMemberIntegralNotice(
                 dealIntegralRequest.getIntegralObjType(),Constants.ZERO,member.getId(),dealIntegralRequest.getIntegralNum(),
-                integral.getId(), dealIntegralRequest.getParam1()
+                integral.getId(), info
         );
 
 
@@ -193,7 +198,12 @@
         integral.setCreateDate(new Date());
         integral.setIsdeleted(Constants.ZERO);
         integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
-        integral.setContent(dealIntegralRequest.getIntegralObjType().getNoteinfo());
+        String info = dealIntegralRequest.getIntegralObjType().getNoteinfo();
+        info = info.replace("${param}",dealIntegralRequest.getIntegralNum().toString());
+        if(StringUtils.isNotBlank(dealIntegralRequest.getParam1())){
+            info = info .replace("${param1}",dealIntegralRequest.getParam1());
+        }
+        integral.setContent(info);
         integral.setObjId(dealIntegralRequest.getObjId());
         integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
         integral.setType(dealIntegralRequest.getDealType());
@@ -203,16 +213,18 @@
         integral.setUserType(Constants.ONE);
         integralMapper.insert(integral);
         if(dealIntegralRequest.getDealType().equals(Constants.ZERO)){
+
             shopMapper.addIntegral(shop.getId(),dealIntegralRequest.getIntegralNum(),
                     dealIntegralRequest.getIntegralObjType().getAddTitle()==Constants.ZERO?dealIntegralRequest.getIntegralNum():BigDecimal.ZERO);
         }else{
+
             shopMapper.subtractIntegral(shop.getId(),dealIntegralRequest.getIntegralNum());
         }
 
         //绔欏唴淇�
         noticeService.saveMemberIntegralNotice(
                 dealIntegralRequest.getIntegralObjType(),Constants.ZERO,shop.getId(),dealIntegralRequest.getIntegralNum(),
-                integral.getId(), dealIntegralRequest.getParam1()
+                integral.getId(), info
         );
         return integral.getId();
     }
@@ -230,11 +242,16 @@
         integral.setCreateDate(new Date());
         integral.setIsdeleted(Constants.ZERO);
         integral.setTitle(dealIntegralRequest.getIntegralObjType().getName());
-        integral.setContent(dealIntegralRequest.getIntegralObjType().getNoteinfo());
+        integral.setNum(dealIntegralRequest.getIntegralNum());
+        String info = dealIntegralRequest.getIntegralObjType().getNoteinfo();
+        info = info.replace("${param}",integral.getNum().toString());
+        if(StringUtils.isNotBlank(dealIntegralRequest.getParam1())){
+            info = info .replace("${param1}",dealIntegralRequest.getParam1());
+        }
+        integral.setContent(info);
         integral.setObjId(dealIntegralRequest.getObjId());
         integral.setObjType(dealIntegralRequest.getIntegralObjType().getKey());
         integral.setType(dealIntegralRequest.getDealType());
-        integral.setNum(dealIntegralRequest.getIntegralNum());
         integral.setTotalNum(dealIntegralRequest.getDealType().equals(Constants.ZERO)? shop.getAmount().add(integral.getNum()):shop.getAmount().subtract(integral.getNum()));
         integral.setOrderCode(dealIntegralRequest.getOrderCode());
         integral.setUserType(Constants.TWO);
@@ -544,12 +561,17 @@
     }
     @Override
     public IntegralDataResponse getIntegralData(IntegralRecordDTO model){
+        if(Objects.isNull(model)
+            || Objects.isNull(model.getUserType())
+            || Objects.isNull(model.getMemberId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         IntegralDataResponse integralDataResponse = new IntegralDataResponse();
         integralDataResponse.setSurplusIntegral(BigDecimal.ZERO);
         integralDataResponse.setExpiredIntegral(BigDecimal.ZERO);
         List<Integral> list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
                 .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
-                .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
+//                .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
                 .eq(Integral::getMemberId,model.getMemberId())
                 .orderByDesc(Integral::getCreateDate));
 
@@ -562,7 +584,7 @@
             //绉垎澶辨晥鏂瑰紡 0闀挎湡鏈夋晥 1鎸夌Н鍒嗕骇鐢熸椂闂村け鏁�
             Integer type  = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
             //娑堣垂鑰呯Н鍒� 闇�瑕佹煡璇㈠嵆灏嗚繃鏈熺Н鍒�
-            if(Constants.equalsInteger(type,Constants.ZERO)){
+            if(Constants.equalsInteger(type,Constants.ONE)){
                 Integer validYear  = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
                 if(validYear.compareTo(Constants.ZERO)>Constants.ZERO){
                      list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
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 83a47a4..fe76610 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
@@ -64,6 +64,9 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+    @Autowired
+    private ShopMapper shopMapper;
+
     @Override
     public InviteInfoResponse getInviteInfo(Integer memberId){
         InviteInfoResponse inviteInfoResponse = new InviteInfoResponse();
@@ -101,15 +104,33 @@
     }
 
 
+    /**
+     * 鐢熸垚娴锋姤鍥�
+     * @param userType
+     * @param memberId
+     * @return
+     * @throws Exception
+     */
     @Override
-    public String createShareImg(Integer memberId) throws Exception {
+    public String createShareImg(Integer userType,Integer memberId) throws Exception {
         String imgUrl = systemDictDataBiz.queryByCode(Constants.ORDER_SET,Constants.INVITE_IMG_URL).getCode();
+        String suffix = "m_" + memberId;
+        if(Constants.equalsInteger(Constants.ONE,userType)){
+            Shop shop = shopMapper.selectById(memberId);
+            if(Objects.nonNull(shop)
+                    && StringUtils.isNotBlank(shop.getPosterImg())){
+                String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                        + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
+                imgUrl = path + shop.getPosterImg();
+            }
+            suffix = "s_"+memberId;
+        }
         BufferedImage img1  = GeneratePicUtil.transfromToImage(imgUrl,imgUrl.substring(imgUrl.lastIndexOf(".") + 1));
         if (img1 == null) {
             return imgUrl;
         }
         String url = null;
-        String scene = "m_" + memberId;
+        String scene = "trial";
         //鍐呭鍒嗕韩娴锋姤鍥剧墖
         InputStream mpCode = Constants.generateWxMiniImgStream(
                 scene,
@@ -121,17 +142,42 @@
         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.RESOURCE_PATH, Constants.SHARES_FILE).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(), key,null)) {
+        if (obs.uploadOnlineObject(inputStream,systemDictDataBiz.queryByCode(Constants.OSS, Constants.BUCKETNAME).getCode(), fileName,null)) {
             url = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() + fileName;
         }
         return url;
-
-
     }
 
+
+    @Override
+    public String createShopMiniProgramCode(Integer shopId) throws Exception {
+        //鍐呭鍒嗕韩娴锋姤鍥剧墖
+        InputStream inputStream = Constants.generateWxMiniImgStream(
+                "trial",
+                "/page/index/?shopId="+shopId,
+                true);//灏忕▼搴�
+        String url = null;
+        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)) {
+            url = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() + fileName;
+        }
+        return url;
+    }
+
+
+
+
+
     @Override
     public Integer create(InviteRecord inviteRecord) {
         inviteRecordMapper.insert(inviteRecord);
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 9e01ef6..fce1c9a 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
@@ -57,6 +57,7 @@
 import org.apache.shiro.SecurityUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -120,6 +121,9 @@
 
     @Autowired
     private IntegralService integralService;
+
+    @Autowired
+    private RedisTemplate<String,Object> redisTemplate;
 
     @Override
     public Integer create(Member member) {
@@ -316,9 +320,11 @@
                 member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                         systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+member.getImgurl());
                 //鍒涘缓token
-                JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
-                String token = JwtTokenUtil.generateToken(payLoad);
+//                JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
+//                String token = JwtTokenUtil.generateToken(payLoad);
+                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);
@@ -331,15 +337,16 @@
     }
 
 
-    @Override
-    public AccountResponse wxLoginTest( Integer memberId){
-        //鍒涘缓token
-        JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
-        String token = JwtTokenUtil.generateToken(payLoad);
-        AccountResponse accountResponse = new AccountResponse();
-        accountResponse.setToken(token);
-        return accountResponse;
-    }
+//    @Override
+//    public AccountResponse wxLoginTest( Integer memberId){
+//        //鍒涘缓token
+////        JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+memberId);
+////        String token = JwtTokenUtil.generateToken(payLoad);
+//        String token = JwtTokenUtil.generateTokenForRedis(memberId, Constants.ZERO, JSONObject.toJSONString(null), redisTemplate);
+//        AccountResponse accountResponse = new AccountResponse();
+//        accountResponse.setToken(token);
+//        return accountResponse;
+//    }
 
     @Override
     public AccountResponse wxPhone(WxPhoneRequest wxPhoneRequest){
@@ -385,8 +392,9 @@
                 }
                 memberMapper.updateById(member);
             }
-            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
-            String token = JwtTokenUtil.generateToken(payLoad);
+//            JwtPayLoad payLoad = new JwtPayLoad(Constants.MEMBER_PREFIX+member.getId());
+//            String token = JwtTokenUtil.generateToken(payLoad);
+            String token = JwtTokenUtil.generateTokenForRedis(member.getId(), Constants.ZERO, JSONObject.toJSONString(member), redisTemplate);
             AccountResponse accountResponse = new AccountResponse();
             accountResponse.setToken(token);
             accountResponse.setMember(member);
@@ -526,23 +534,20 @@
 
 
     @Override
-    public Member updateMember(UpdateMemberRequest updateMemberRequest){
+    public void updateMember(UpdateMemberRequest updateMemberRequest){
         if(StringUtils.isBlank(updateMemberRequest.getImgurl())
                 && StringUtils.isBlank(updateMemberRequest.getNickname())
                 && StringUtils.isBlank(updateMemberRequest.getName())
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        Member member  = new Member();
-        BeanUtils.copyProperties(updateMemberRequest,member);
-        member.setId(updateMemberRequest.getMemberId());
-        member.setEditor(updateMemberRequest.getMemberId());
-        member.setEditDate(new Date());
-        memberMapper.updateById(member);
-        Member dbMember = memberMapper.selectById(updateMemberRequest.getMemberId());
-        dbMember.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()+dbMember.getImgurl());
-        return dbMember;
+        memberMapper.update(new UpdateWrapper<Member>().lambda()
+                .set(StringUtils.isNotBlank(updateMemberRequest.getImgurl()),Member::getImgurl,updateMemberRequest.getImgurl())
+                .set(StringUtils.isNotBlank(updateMemberRequest.getNickname()),Member::getNickname,updateMemberRequest.getNickname())
+                .set(StringUtils.isNotBlank(updateMemberRequest.getName()),Member::getName,updateMemberRequest.getName())
+                .set(Member::getEditDate,DateUtil.getCurrDateTime())
+                .eq(Member::getId,updateMemberRequest.getMemberId())
+        );
     }
 
 
@@ -626,15 +631,15 @@
         if(StringUtils.isNotBlank(member.getPhone())&&!member.getPhone().equals(request.getPhone())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎵嬫満鍙烽敊璇�");
         }
-        this.verifyPhoneCode(request.getCode(),request.getMemberId());
+        this.verifyPhoneCode(request.getCode(),request.getPhone());
     }
 
-    public void verifyPhoneCode(String code,Integer memberId){
+    public void verifyPhoneCode(String code,String phone){
         //楠岃瘉鐮�
         Smsrecord smsrecord = smsrecordMapper.selectOne(new QueryWrapper<Smsrecord>().lambda()
                 .eq(Smsrecord::getIsdeleted,Constants.ZERO)
                 .eq(Smsrecord::getCode,code)
-                .eq(Smsrecord::getMemberId,memberId)
+                .eq(Smsrecord::getPhone,phone)
                 .last(" limit 1")
         );
         if(Objects.isNull(smsrecord)){
@@ -662,11 +667,15 @@
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        //鍒ゆ柇鏂版墜鏈哄彿鏄惁宸茶浣跨敤
+        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getPhone,request.getPhone()))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,鏂版墜鏈哄彿宸茶缁戝畾,鏃犳硶杩涜鎹㈢粦锛�");
+        }
         Member member = memberMapper.selectById(request.getMemberId());
         if(StringUtils.isNotBlank(member.getPhone())&&member.getPhone().equals(request.getPhone())){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犳硶鏇存崲鐩稿悓鎵嬫満鍙�");
         }
-        this.verifyPhoneCode(request.getCode(),request.getMemberId());
+        this.verifyPhoneCode(request.getCode(),request.getPhone());
         memberMapper.update(new UpdateWrapper<Member>().lambda()
                 .eq(Member::getPhone,request.getPhone())
                 .eq(Member::getId,request.getMemberId())
@@ -766,9 +775,31 @@
     }
 
 
+    @Override
+    public void logOut(String token,Integer memberId){
+        Member  member = memberMapper.selectById(memberId);
+        if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
+            memberMapper.update(new UpdateWrapper<Member>().lambda()
+                    .set(Member::getOpenId,null)
+                    .eq(Member::getId,member.getId())
+            );
+        }
+        redisTemplate.delete(token);
+    }
 
 
-
+    @Override
+    public void logOff(String token,Integer memberId){
+        Member  member = memberMapper.selectById(memberId);
+        if(Objects.nonNull(member)&&StringUtils.isNotBlank(member.getOpenId())){
+            memberMapper.update(new UpdateWrapper<Member>().lambda()
+                    .set(Member::getOpenId,null)
+                    .set(Member::getPhone,null)
+                    .eq(Member::getId,member.getId())
+            );
+        }
+        redisTemplate.delete(token);
+    }
 
 
 
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 a2b0f65..2a6d37b 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
@@ -279,19 +279,13 @@
      * @param memberId 鐢ㄦ埛涓婚敭/鍟嗘埛涓婚敭
      * @param integral 鍙樺姩绉垎/鐜伴噾鍊�
      * @param objId 鍏宠仈瀵硅薄涓婚敭 - 绉垎娴佹按鍙樺姩璁板綍涓婚敭
-     * @param param1 param2
      */
     @Override
     public void saveMemberIntegralNotice(Constants.IntegralObjType integralObjType,Integer type,
                                          Integer memberId,
                                          BigDecimal integral,
-                                         Integer objId,String param1){
+                                         Integer objId,String info){
         String title = integralObjType.getName();
-        String info = integralObjType.getNoteinfo();
-        info = info.replace("${param}",integral.toString());
-        if(StringUtils.isNotBlank(param1)){
-            info = info .replace("${param1}",param1);
-        }
         this.saveNoticeInfo(
                 type,
                 Constants.ONE,
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/SearchHistoryServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/SearchHistoryServiceImpl.java
index db62ebc..6150121 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/SearchHistoryServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/SearchHistoryServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.SearchHistoryMapper;
 import com.doumee.dao.business.model.SearchHistory;
@@ -13,6 +14,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.yaml.snakeyaml.scanner.Constant;
 
 import java.util.List;
 
@@ -136,4 +138,27 @@
         QueryWrapper<SearchHistory> wrapper = new QueryWrapper<>(searchHistory);
         return searchHistoryMapper.selectCount(wrapper);
     }
+
+
+    @Override
+    public List<SearchHistory> findListByType(Integer type,Integer memberId) {
+        return searchHistoryMapper.selectList(new QueryWrapper<SearchHistory>().lambda()
+                .eq(SearchHistory::getIsdeleted, Constants.ZERO)
+                .eq(SearchHistory::getMemberId,memberId)
+                .eq(SearchHistory::getType,type)
+                .last("limit 10")
+                .orderByDesc(SearchHistory::getId)
+        );
+    }
+
+
+    @Override
+    public void cleanHistory(Integer type,Integer memberId) {
+        searchHistoryMapper.update(new UpdateWrapper<SearchHistory>().lambda()
+                .set(SearchHistory::getIsdeleted, Constants.ONE)
+                .eq(SearchHistory::getMemberId,memberId)
+                .eq(SearchHistory::getType,type)
+        );
+    }
+
 }
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 0a5ea0a..c31ca94 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
@@ -43,6 +43,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -116,6 +117,9 @@
     private MemberCouponService memberCouponService;
 
     @Autowired
+    private InviteRecordService inviteRecordService;
+
+    @Autowired
     private ShopNewsService shopNewsService;
     @Autowired
     private LabelsMapper labelsMapper;
@@ -126,9 +130,12 @@
     @Autowired
     private IntegralMapper integralMapper;
 
+    @Autowired
+    private RedisTemplate<String,Object> redisTemplate;
+
 
     @Override
-    public Integer create(Shop shop) {
+    public Integer create(Shop shop) throws Exception {
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         isCreateParamValid(shop,user);
         shop.setCreator(user.getId());
@@ -147,6 +154,12 @@
         shop.setPassword(Utils.Secure.encryptPassword(shop.getPassword(), salt));
         shop.setSalt(salt);
         shopMapper.insert(shop);
+        String url = inviteRecordService.createShopMiniProgramCode(shop.getId());
+        if(StringUtils.isNotBlank(url)){
+            shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+                            .set(Shop::getProgramCode,url)
+                    .eq(Shop::getId,shop.getId()));
+        }
         return shop.getId();
     }
 
@@ -694,6 +707,11 @@
      */
     @Override
     public AccountResponse shopOpenidLogin(ShopLoginDTO dto){
+        if(Objects.isNull(dto)
+                || StringUtils.isBlank(dto.getOpenid())
+        ){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈欓粯鐧诲綍澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
         Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getOpenId, dto.getOpenid())
                 .eq(Shop::getIsdeleted,Constants.ZERO)
                 .last("limit 1")
@@ -701,17 +719,9 @@
         AccountResponse accountResponse = new AccountResponse();
         accountResponse.setOpenid(dto.getOpenid());
         if(Objects.nonNull(shop)){
-            if(Objects.isNull(dto.getMemberId())
-                    && ( Objects.isNull(shop.getMemberId())
-                    || !Constants.equalsInteger(shop.getMemberId(),dto.getMemberId()))){
-                shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
-                        .set(Shop::getMemberId,dto.getMemberId())
-                        .eq(Shop::getId,shop.getId())
-                );
-            }
-            JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
-            String token = JwtTokenUtil.generateToken(payLoad);
+            String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.ONE, JSONObject.toJSONString(shop), redisTemplate);
             accountResponse.setToken(token);
+            accountResponse.setShop(this.getShopResponseInfo(shop));
         }
         return accountResponse;
     }
@@ -726,7 +736,6 @@
     public AccountResponse shopPasswordLogin(ShopLoginDTO dto){
         if(StringUtils.isBlank(dto.getUserName())
                 || StringUtils.isBlank(dto.getPassword())
-                || StringUtils.isBlank(dto.getOpenid())
         ){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶈兘涓虹┖");
         }
@@ -743,20 +752,24 @@
             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
         }
         //鍒涘缓token
-        JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
-        String token = JwtTokenUtil.generateToken(payLoad);
+//        JwtPayLoad payLoad = new JwtPayLoad(Constants.SHOP_PREFIX+shop.getId());
+//        String token = JwtTokenUtil.generateToken(payLoad);
+        String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.ONE, JSONObject.toJSONString(shop), redisTemplate);
         AccountResponse accountResponse = new AccountResponse();
         accountResponse.setToken(token);
-        shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
-                .set(Shop::getOpenId,dto.getOpenid())
-                .set(Shop::getMemberId,dto.getMemberId())
-                .eq(Shop::getId,shop.getId())
-        );
-        shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
-                .set(Shop::getOpenId,null)
-                .eq(Shop::getOpenId,dto.getOpenid())
-                .ne(Shop::getId,shop.getId())
-        );
+        accountResponse.setShop(this.getShopResponseInfo(shop));
+
+        if(StringUtils.isNotBlank(dto.getOpenid())){
+            shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+                    .set(Shop::getOpenId,dto.getOpenid())
+                    .eq(Shop::getId,shop.getId())
+            );
+            shopMapper.update(null,new UpdateWrapper<Shop>().lambda()
+                    .set(Shop::getOpenId,null)
+                    .eq(Shop::getOpenId,dto.getOpenid())
+                    .ne(Shop::getId,shop.getId())
+            );
+        }
         return accountResponse;
     }
 
@@ -765,49 +778,62 @@
 
     @Override
     public ShopInfoResponse getShopInfo(Integer shopId){
-        ShopInfoResponse response = new ShopInfoResponse();
+
         Shop shop = shopMapper.selectById(shopId);
         if(Objects.isNull(shop)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
-                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
-        BeanUtils.copyProperties(shop,response);
-        response.setImgurl(path + shop.getImgurl());
-        response.setIdcardImg(path + shop.getIdcardImg());
-        response.setIdcardImgBack(path + shop.getIdcardImgBack());
-        response.setBusinessImg(path + shop.getBusinessImg());
+        return this.getShopResponseInfo(shop)   ;
+    }
 
+
+    public ShopInfoResponse getShopResponseInfo(Shop shop){
+        ShopInfoResponse response = new ShopInfoResponse();
+        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() ;
+        String shopFile = systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
+        BeanUtils.copyProperties(shop,response);
+        response.setImgurl(StringUtils.isNotBlank(shop.getImgurl())?(path + shopFile + shop.getImgurl()):"");
+        response.setIdcardImg(StringUtils.isNotBlank(shop.getIdcardImg())?(path + shopFile + shop.getIdcardImg()):"");
+        response.setIdcardImgBack(StringUtils.isNotBlank(shop.getIdcardImgBack())?(path + shopFile + shop.getIdcardImgBack()):"");
+        response.setBusinessImg(StringUtils.isNotBlank(shop.getBusinessImg())?(path + shopFile + shop.getBusinessImg()):"");
+        response.setAreas(AreasServiceImpl.getAddressByAreaId(shop.getAreaId()));
+        if(StringUtils.isNotBlank(shop.getProgramCode())){
+            String sharesFile = systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHARES_FILE).getCode();
+            response.setProgramCode(path + sharesFile + shop.getProgramCode());
+        }
+        if(StringUtils.isNotBlank(shop.getPosterImgCode())){
+            String sharesFile = systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHARES_FILE).getCode();
+            response.setPosterImgCode(path + sharesFile + shop.getPosterImgCode());
+        }
         return response;
     }
 
 
+
+
     @Override
-    public List<MyCustomerResponse> myCustomer(MyCustomerRequest request, Integer shopId){
-        List<Member>  memberList = memberJoinMapper.selectJoinList(Member.class,
-                new MPJLambdaWrapper<Member>()
-                        .selectAll(Member.class)
-                        .eq(Member::getIsdeleted,Constants.ZERO)
-                        .eq(Member::getBindShopId,shopId)
-                        .and(StringUtils.isNotBlank(request.getMemberIfo()),i->i.like(Member::getPhone,request.getMemberIfo()).or().like(Member::getNickname,request.getMemberIfo()))
+    public PageData<Member> myCustomer(PageWrap<MyCustomerRequest> pageWrap, Integer shopId){
+        IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        Utils.MP.blankToNull(pageWrap.getModel());
+        MyCustomerRequest model = pageWrap.getModel();
+
+        IPage<Member> result = memberJoinMapper.selectJoinPage(page,Member.class, new MPJLambdaWrapper<Member>()
+                .selectAll(Member.class)
+                .eq(Member::getIsdeleted,Constants.ZERO)
+                .eq(Member::getBindShopId,shopId)
+                .and(StringUtils.isNotBlank(model.getMemberInfo()),i->i.like(Member::getPhone,model.getMemberInfo()).or().like(Member::getNickname,model.getMemberInfo()))
         );
-        List<MyCustomerResponse> responseList = new ArrayList<>();
-        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){
+
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(result.getRecords())){
             String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                     + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
-            memberList.forEach(member -> {
-                MyCustomerResponse response = new MyCustomerResponse();
-                response.setNickName(member.getNickname());
-                response.setPhone(member.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"));
-                response.setBindShopDate(member.getBindShopDate());
-                response.setImgFullUrl(StringUtils.isNotBlank(member.getImgurl())?path + member.getImgurl():"");
-                responseList.add(response);
+            result.getRecords().forEach(member -> {
+                member.setPhone(member.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"));
+                member.setImgFullUrl(StringUtils.isNotBlank(member.getImgurl())?path + member.getImgurl():"");
             });
         }
-        return responseList;
+        return PageData.from(result);
     }
-
-
 
     @Override
     public SaleReportResponse saleReport(SaleReportRequest request,Integer shopId){
@@ -825,39 +851,23 @@
                         .eq(Goodsorder::getIsdeleted,Constants.ZERO)
                         .eq(Goodsorder::getDistributionShopId,shopId)
                         //浠婃棩
-                        .apply(Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(t.CREATE_DATE) = DATE(NOW())  ")
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.ZERO), " DATE(t.CREATE_DATE) = DATE(NOW())  ")
                         //褰撴湀
-                        .apply(Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.ONE), " DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m')")
                         //涓婃湀
-                        .apply(Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m') ")
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.TWO), "  DATE_FORMAT(t.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(t.CREATE_DATE, '%Y-%m') = DATE_FORMAT(DATE_SUB('"+request.getStartDate()+"', INTERVAL 1 MONTH), '%Y-%m') ")
+                        .apply(Objects.nonNull(request.getDateType())&&Constants.equalsInteger(request.getDateType(),Constants.THREE)&&StringUtils.isNotBlank(request.getStartDate()), " DATE_FORMAT(t.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()), "  t.CREATE_DATE >= '"+request.getStartDate()+" 00:00:00'")
-                        .apply(Constants.equalsInteger(request.getDateType(),Constants.FOUR)&&StringUtils.isNotBlank(request.getEndDate()), "  t.CREATE_DATE <= '"+request.getEndDate()+" 23:59:59'")
+                        .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())
                         .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.setOrderNum(goodsorderList.size());
-            if(Constants.equalsInteger(request.getQueryType(),Constants.ONE)){
-                List<SaleReportOrderResponse> list = new ArrayList<>();
-                goodsorderList.stream().forEach(goodsorder -> {
-                    SaleReportOrderResponse response = new SaleReportOrderResponse();
-                    response.setId(goodsorder.getId());
-                    response.setCode(goodsorder.getCode());
-                    response.setPrice(goodsorder.getPrice());
-                    response.setMailPrice(goodsorder.getMailPrice());
-                    response.setCreateDate(goodsorder.getCreateDate());
-                    response.setNickName(goodsorder.getNickName());
-                    response.setPhone(goodsorder.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
-                    response.setShopSettlement(goodsorder.getShopSettlement());
-                    list.add(response);
-                });
-
-                saleReportResponse.setSaleReportOrderResponseList(list);
-            }
         }
         List<Integral> integralList = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
                 .eq(Integral::getIsdeleted,Constants.ZERO)
@@ -923,4 +933,22 @@
         shopGoodsRelationMapper.insert(add);
         return "鎿嶄綔鎴愬姛";
     }
+
+
+    @Override
+    public void logOut(String token,Integer shopId){
+        Shop shop = shopMapper.selectById(shopId);
+        if(Objects.nonNull(shop)&&StringUtils.isNotBlank(shop.getOpenId())){
+            shopMapper.update(new UpdateWrapper<Shop>().lambda()
+                    .set(Shop::getOpenId,null)
+                    .eq(Shop::getId,shop.getId())
+            );
+        }
+        redisTemplate.delete(token);
+    }
+
+
+
+
+
 }
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 e74246b..ff78a33 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
@@ -265,8 +265,8 @@
     public UserCenterVO getPlatformAboutUs(){
         UserCenterVO userCenterVO = new UserCenterVO();
         userCenterVO.setAboutUs(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ABOUT_US).getCode()));
-        userCenterVO.setIntegralRule(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INTERALSET_INTEGRALRULEINFO).getCode()));
-        userCenterVO.setInvitelRule(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INVITE_RULE).getCode()));
+        userCenterVO.setIntegralRule(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET,Constants.INTERALSET_INTEGRALRULEINFO).getCode()));
+        userCenterVO.setInvitelRule(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.ORDER_SET,Constants.INVITE_RULE).getCode()));
         userCenterVO.setServerIntroduce(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_INTRODUCE).getCode()));
         userCenterVO.setServerPhone(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SERVER_PHONE).getCode()));
         userCenterVO.setUserAgreement(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.USER_AGREEMENT).getCode()));
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ZanServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ZanServiceImpl.java
index 381f7a4..18b8723 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ZanServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/ZanServiceImpl.java
@@ -1,5 +1,7 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Utils;
@@ -19,6 +21,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -34,25 +37,33 @@
 
     @Override
     public Integer create(Zan zan,Integer memberId) {
-//        LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(Objects.isNull(zan)
+            || Objects.isNull(zan.getObjId())
+            || Objects.isNull(zan.getObjType())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
         Zan target = new Zan();
-//        target.setCreator(userInfo.getId());
         target.setCreateDate(new Date());
-//        target.setEditor(userInfo.getId());
         target.setEditDate(new Date());
         target.setMemberId(memberId);
         target.setObjId(zan.getObjId());
         target.setObjType(zan.getObjType());
-        target.setImgurl(zan.getImgurl());
-        target.setTitle(zan.getTitle());
-        target.setObjMemberId(zan.getObjMemberId());
         zanMapper.insert(target);
         return zan.getId();
     }
 
     @Override
-    public void deleteById(Integer id) {
-        zanMapper.deleteById(id);
+    public void deleteById(Zan zan, Integer memberId) {
+        if(Objects.isNull(zan)
+                || Objects.isNull(zan.getObjId())
+                || Objects.isNull(zan.getObjType())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        zanMapper.delete(new QueryWrapper<Zan>().lambda()
+                .eq(Zan::getObjId,zan.getObjId())
+                .eq(Zan::getObjType,zan.getObjType())
+                .eq(Zan::getMemberId,memberId)
+        );
     }
 
     @Override
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 1dfca5d..4e8554f 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
@@ -1,6 +1,8 @@
 package com.doumee.api.web;
 
+import com.doumee.config.Jwt.JwtTokenUtil;
 import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.annotation.LoginShopRequired;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.utils.Constants;
@@ -15,9 +17,12 @@
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.java.Log;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.util.HashMap;
 import java.util.Map;
@@ -53,14 +58,14 @@
         return  ApiResponse.success(memberService.wxPhone(wxPhoneRequest));
     }
 
-    @ApiOperation(value = "娴嬭瘯鐧婚檰鎺ュ彛", notes = "灏忕▼搴忕")
-    @GetMapping("/testLogin")
-    @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "memberId", value = "鐢ㄦ埛缂栫爜", required = false)
-    })
-    public ApiResponse testLogin(@RequestParam   Integer memberId) {
-        return  ApiResponse.success(memberService.wxLoginTest(memberId));
-    }
+//    @ApiOperation(value = "娴嬭瘯鐧婚檰鎺ュ彛", notes = "灏忕▼搴忕")
+//    @GetMapping("/testLogin")
+//    @ApiImplicitParams({
+//            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "memberId", value = "鐢ㄦ埛缂栫爜", required = false)
+//    })
+//    public ApiResponse testLogin(@RequestParam   Integer memberId) {
+//        return  ApiResponse.success(memberService.wxLoginTest(memberId));
+//    }
 
     @ApiOperation(value = "鑾峰彇绯荤粺閰嶇疆", notes = "灏忕▼搴忕")
     @GetMapping("/getPlatformAboutUs")
@@ -74,10 +79,12 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
     })
-    public ApiResponse<Member> updateMember(@RequestBody UpdateMemberRequest UpdateMemberRequest) {
+    public ApiResponse updateMember(@RequestBody UpdateMemberRequest UpdateMemberRequest) {
         UpdateMemberRequest.setMemberId(getMemberId());
-        return  ApiResponse.success("鎿嶄綔鎴愬姛",memberService.updateMember(UpdateMemberRequest));
+        memberService.updateMember(UpdateMemberRequest);
+        return  ApiResponse.success("鎿嶄綔鎴愬姛");
     }
+
 
     @LoginRequired
     @ApiOperation(value = "鑾峰彇鐢ㄦ埛淇℃伅", notes = "灏忕▼搴忕")
@@ -87,9 +94,11 @@
     })
     public ApiResponse<Member> getUserInfo() {
         Member member = memberService.findById(getMemberId());
-        member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()
-                +member.getImgurl());
+        if(StringUtils.isNotBlank(member.getImgurl())){
+            member.setImgFullUrl(systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode()
+                    +member.getImgurl());
+        }
         Areas areas = areasService.findById(member.getCityId(), Constants.ONE);
         member.setCityName(Optional.ofNullable(areas).map(s->s.getName()).orElse(""));
         return  ApiResponse.success("鑾峰彇鎴愬姛",member);
@@ -120,4 +129,28 @@
         return  ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
+
+    @LoginRequired
+    @ApiOperation("娑堣垂鑰� - 閫�鍑虹櫥褰�")
+    @GetMapping("/logOut")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse logOut(HttpServletRequest request) {
+        memberService.logOut(request.getHeader(JwtTokenUtil.HEADER_KEY),getMemberId());
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+    @LoginRequired
+    @ApiOperation("鐢ㄦ埛娉ㄩ攢")
+    @GetMapping("/logOff")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse logOff(HttpServletRequest request) {
+        memberService.logOff(request.getHeader(JwtTokenUtil.HEADER_KEY),getMemberId());
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
 }
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/ActivityApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/ActivityApi.java
index 00556aa..73a8a4e 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/ActivityApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/ActivityApi.java
@@ -30,17 +30,17 @@
 @Slf4j
 public class ActivityApi extends ApiController{
 
-    @LoginRequired
-    @ApiOperation(value = "娲诲姩鎶ュ悕", notes = "灏忕▼搴忕")
-    @PostMapping("/activitySign")
-    @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
-    })
-    @Transactional(rollbackFor = Exception.class)
-    public ApiResponse<ActivitySignResponse> activitySign(@RequestBody ActivitySignRequest activitySignRequest) {
-        activitySignRequest.setMemberId(getMemberId());
-        return  ApiResponse.success("鎿嶄綔鎴愬姛",activitySignService.signActivity(activitySignRequest));
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "娲诲姩鎶ュ悕", notes = "灏忕▼搴忕")
+//    @PostMapping("/activitySign")
+//    @ApiImplicitParams({
+//            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+//    })
+//    @Transactional(rollbackFor = Exception.class)
+//    public ApiResponse<ActivitySignResponse> activitySign(@RequestBody ActivitySignRequest activitySignRequest) {
+//        activitySignRequest.setMemberId(getMemberId());
+//        return  ApiResponse.success("鎿嶄綔鎴愬姛",activitySignService.signActivity(activitySignRequest));
+//    }
 
 
     /**
@@ -48,7 +48,7 @@
      * @param pageWrap
      * @return
      */
-    @LoginRequired
+//    @LoginRequired
     @ApiOperation(value = "鍒嗛〉鑾峰彇 璧勮/鎺㈠簵/娲诲姩鍒楄〃", notes = "灏忕▼搴忕")
     @PostMapping("/getActivityCard")
     public ApiResponse<PageData<ActivityCardDTO>> getActivityCard(@RequestBody PageWrap<ActivityPageListRequest> pageWrap){
@@ -67,53 +67,53 @@
         return ApiResponse.success(activityService.getActivity(activityId,getMemberId()));
     }
 
-    /**
-     * 鑾峰彇娲诲姩id
-     * @param activityId 娲诲姩ID
-     * @return
-     */
-    @LoginRequired
-    @ApiOperation(value = "鍟嗘埛涓績-鑾峰彇娲诲姩璇︽儏淇℃伅", notes = "灏忕▼搴忕")
-    @GetMapping("/getShopOrgActivity")
-    public ApiResponse<BaseActivity> getShopOrgActivity(Integer activityId){
-        return ApiResponse.success(activityService.getActivity(activityId));
-    }
+//    /**
+//     * 鑾峰彇娲诲姩id
+//     * @param activityId 娲诲姩ID
+//     * @return
+//     */
+//    @LoginRequired
+//    @ApiOperation(value = "鍟嗘埛涓績-鑾峰彇娲诲姩璇︽儏淇℃伅", notes = "灏忕▼搴忕")
+//    @GetMapping("/getShopOrgActivity")
+//    public ApiResponse<BaseActivity> getShopOrgActivity(Integer activityId){
+//        return ApiResponse.success(activityService.getActivity(activityId));
+//    }
 
     /**
      * 鍜ㄨ銆佹帰搴楄缁嗕俊鎭�
      * @param activityId
      * @return
      */
-    @LoginRequired
-    @ApiOperation(value = "鍜ㄨ銆佹帰搴楄缁嗕俊鎭�", notes = "灏忕▼搴忕")
-    @GetMapping("/getActivityProbeShopDTO")
-    public ApiResponse<ActivityProbeShopDTO> getActivityProbeShopDTO(Integer activityId){
-        return ApiResponse.success(activityService.getActivityProbeShopDTO(activityId,getMemberId()));
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "鍜ㄨ銆佹帰搴楄缁嗕俊鎭�", notes = "灏忕▼搴忕")
+//    @GetMapping("/getActivityProbeShopDTO")
+//    public ApiResponse<ActivityProbeShopDTO> getActivityProbeShopDTO(Integer activityId){
+//        return ApiResponse.success(activityService.getActivityProbeShopDTO(activityId,getMemberId()));
+//    }
 
     /**
      * 鑾峰彇璇ュ煄甯備笅鐨勬渶鐑帰搴楄棰�
      * @param pageWrap
      * @return
      */
-    @LoginRequired
-    @ApiOperation(value = "鑾峰彇璇ュ煄甯備笅鐨勬渶鐑帰搴楄棰戝垪琛�", notes = "灏忕▼搴忕")
-    @PostMapping("/getActivityVideoDTO")
-    public ApiResponse<PageData<ActivityVideoDTO>> getActivityVideoDTO(PageWrap<Integer> pageWrap){
-        return ApiResponse.success(activityService.getActivityVideoDTO(pageWrap));
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "鑾峰彇璇ュ煄甯備笅鐨勬渶鐑帰搴楄棰戝垪琛�", notes = "灏忕▼搴忕")
+//    @PostMapping("/getActivityVideoDTO")
+//    public ApiResponse<PageData<ActivityVideoDTO>> getActivityVideoDTO(PageWrap<Integer> pageWrap){
+//        return ApiResponse.success(activityService.getActivityVideoDTO(pageWrap));
+//    }
 
     /**
      *鑾峰彇鏀惰棌鐨� 璧勮/鎺㈠簵/娲诲姩鍒嗛〉鍒楄〃
      * @param pageWrap
      * @return
      */
-    @LoginRequired
-    @ApiOperation(value = "鑾峰彇鏀惰棌鐨� 璧勮/鎺㈠簵/娲诲姩 鍒嗛〉鍒楄〃", notes = "灏忕▼搴忕")
-    @PostMapping("/getUserCollectActivityCard")
-    public ApiResponse<PageData<ActivityCardDTO>> getUserCollectActivityCard(@RequestBody  PageWrap pageWrap){
-        return ApiResponse.success(activityService.getUserCollectActivityCard(pageWrap,getMemberId()));
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "鑾峰彇鏀惰棌鐨� 璧勮/鎺㈠簵/娲诲姩 鍒嗛〉鍒楄〃", notes = "灏忕▼搴忕")
+//    @PostMapping("/getUserCollectActivityCard")
+//    public ApiResponse<PageData<ActivityCardDTO>> getUserCollectActivityCard(@RequestBody  PageWrap pageWrap){
+//        return ApiResponse.success(activityService.getUserCollectActivityCard(pageWrap,getMemberId()));
+//    }
 
 
     /**
@@ -121,12 +121,12 @@
      * @param pageWrap
      * @return
      */
-    @LoginRequired
-    @ApiOperation(value = "鑾峰彇鎴戝弬涓庢椿鍔ㄥ垪琛� not_start  having  over", notes = "灏忕▼搴忕")
-    @PostMapping("/getUserActivitySignCard")
-    public ApiResponse<PageData<MemberActivitySignDTO>> getUserActivitySignCard(@RequestBody PageWrap<String> pageWrap){
-        return ApiResponse.success(activityService.getUserActivitySignCard(pageWrap,getMemberId()));
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "鑾峰彇鎴戝弬涓庢椿鍔ㄥ垪琛� not_start  having  over", notes = "灏忕▼搴忕")
+//    @PostMapping("/getUserActivitySignCard")
+//    public ApiResponse<PageData<MemberActivitySignDTO>> getUserActivitySignCard(@RequestBody PageWrap<String> pageWrap){
+//        return ApiResponse.success(activityService.getUserActivitySignCard(pageWrap,getMemberId()));
+//    }
 
 
     /**
@@ -134,24 +134,24 @@
      * @param pageWrap
      * @return
      */
-    @LoginRequired
-    @ApiOperation(value = "鑾峰彇鍟嗗娲诲姩鍒楄〃", notes = "灏忕▼搴忕")
-    @PostMapping("/getShopActivitySignCard")
-    public ApiResponse<PageData<ShopActivitySignDTO>> getShopActivitySignCard(@RequestBody PageWrap<ShopActivitySignDTO> pageWrap){
-        return ApiResponse.success(activityService.getShopActivitySignCard(pageWrap));
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "鑾峰彇鍟嗗娲诲姩鍒楄〃", notes = "灏忕▼搴忕")
+//    @PostMapping("/getShopActivitySignCard")
+//    public ApiResponse<PageData<ShopActivitySignDTO>> getShopActivitySignCard(@RequestBody PageWrap<ShopActivitySignDTO> pageWrap){
+//        return ApiResponse.success(activityService.getShopActivitySignCard(pageWrap));
+//    }
 
     /**
      *鑾峰彇娲诲姩鍙傚姞鐢ㄦ埛
      * @param pageWrap
      * @return
      */
-    @LoginRequired
-    @ApiOperation(value = "鑾峰彇娲诲姩鍙傚姞鐢ㄦ埛", notes = "灏忕▼搴忕")
-    @PostMapping("/getActivitySignUserDTO")
-    public ApiResponse<PageData<ActivitySignUserDTO>> getActivitySignUserDTO(@RequestBody PageWrap<Integer> pageWrap){
-        return ApiResponse.success(activityService.getActivitySignUserDTO(pageWrap));
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "鑾峰彇娲诲姩鍙傚姞鐢ㄦ埛", notes = "灏忕▼搴忕")
+//    @PostMapping("/getActivitySignUserDTO")
+//    public ApiResponse<PageData<ActivitySignUserDTO>> getActivitySignUserDTO(@RequestBody PageWrap<Integer> pageWrap){
+//        return ApiResponse.success(activityService.getActivitySignUserDTO(pageWrap));
+//    }
 
 
     /**
@@ -159,14 +159,14 @@
      *鍟嗗 鏂板/缂栬緫娲诲姩
      * @param baseActivity
      */
-    @LoginRequired
-    @ApiOperation(value = "鑾峰彇鎴戝弬涓庢椿鍔ㄥ垪琛� not_start  having  over", notes = "灏忕▼搴忕")
-    @PostMapping("/creatOrUpdateShopOrgActivity")
-    public ApiResponse creatOrUpdateShopOrgActivity(@RequestBody BaseActivity baseActivity){
-
-        activityService.creatOrUpdateShopOrgActivity(baseActivity,getMemberId());
-        return ApiResponse.success(null);
-    }
+//    @LoginRequired
+//    @ApiOperation(value = "鑾峰彇鎴戝弬涓庢椿鍔ㄥ垪琛� not_start  having  over", notes = "灏忕▼搴忕")
+//    @PostMapping("/creatOrUpdateShopOrgActivity")
+//    public ApiResponse creatOrUpdateShopOrgActivity(@RequestBody BaseActivity baseActivity){
+//
+//        activityService.creatOrUpdateShopOrgActivity(baseActivity,getMemberId());
+//        return ApiResponse.success(null);
+//    }
 
 
 
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java b/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java
index 8ab6bf6..9dcb8c5 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/ApiController.java
@@ -57,6 +57,9 @@
     public GoodsorderService goodsorderService;
 
     @Autowired
+    public SearchHistoryService searchHistoryService;
+
+    @Autowired
     public ShopService shopService;
 
     @Autowired
@@ -158,6 +161,14 @@
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
         return request;
     }
+
+    protected String getToken() {
+        Object obj = this.getRequest().getAttribute(JwtTokenUtil.HEADER_KEY);
+        return obj != null ? (String) obj : null;
+    }
+
+
+
     /**
      * 鑾峰彇鐢ㄦ埛ID
      *
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 a4011d2..344c970 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
@@ -1,5 +1,6 @@
 package com.doumee.api.web;
 
+import com.doumee.config.annotation.LoginRequired;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageData;
@@ -8,6 +9,7 @@
 import com.doumee.dao.web.dto.CommentDTO;
 import com.doumee.dao.web.dto.activity.ActivityCommentDTO;
 import com.doumee.dao.web.dto.activity.ActivityReplyCommentDTO;
+import com.doumee.dao.web.request.CommentApplyRequest;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -26,12 +28,11 @@
 public class CommentApi extends ApiController{
 
 
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:comment:create")
-    public ApiResponse create(@RequestBody Comment comment) {
-        return ApiResponse.success(commentService.create(comment,getMemberId()));
+    @LoginRequired
+    @ApiOperation("鍙戝竷璇勮")
+    @PostMapping("/apply")
+    public ApiResponse<Comment> apply(@RequestBody CommentApplyRequest comment) {
+        return ApiResponse.success(commentService.apply(comment,getMemberId()));
     }
 
 
@@ -41,7 +42,6 @@
      * @param pageWrap 鍒嗛〉瀵硅薄
      * @return PageData<Comment>
      */
-    @PreventRepeat
     @ApiOperation("鍒嗛〉娲诲姩鎺㈠簵璇勮鏌ヨ")
     @PostMapping("/findActivityCommentDTOPage")
     public ApiResponse<PageData<ActivityCommentDTO>> findActivityCommentDTOPage(@RequestBody PageWrap<CommentDTO> pageWrap){
@@ -54,7 +54,7 @@
      * @param pageWrap 鍒嗛〉瀵硅薄
      * @return PageData<Comment>
      */
-    @PreventRepeat
+    @LoginRequired
     @ApiOperation("鍒嗛〉娲诲姩鎺㈠簵璇勮鍥炲鏌ヨ")
     @PostMapping("/findActivityReplyCommentDTOPage")
     public ApiResponse<PageData<ActivityReplyCommentDTO>> findActivityReplyCommentDTOPage(@RequestBody PageWrap<CommentDTO> pageWrap){
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 2613066..02888f1 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
@@ -1,8 +1,10 @@
 package com.doumee.api.web;
 
 import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.annotation.LoginShopRequired;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.model.Shares;
 import com.doumee.dao.web.request.WxPhoneRequest;
 import com.doumee.dao.web.response.AccountResponse;
@@ -49,13 +51,22 @@
 
     @LoginRequired
     @ApiOperation(value = "鐢熸垚閭�璇锋捣鎶�", notes = "灏忕▼搴忕")
+    @GetMapping("/getMemberShareImg")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse<String> getMemberShareImg()  throws Exception{
+        return  ApiResponse.success(inviteRecordService.createShareImg(Constants.ZERO,getMemberId()));
+    }
+
+
+    @LoginShopRequired
+    @ApiOperation(value = "鍟嗘埛鐢熸垚閭�璇锋捣鎶�", notes = "灏忕▼搴忕")
     @GetMapping("/getShareImg")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
     })
     public ApiResponse<String> getShareImg()  throws Exception{
-        return  ApiResponse.success(inviteRecordService.createShareImg(getMemberId()));
+        return  ApiResponse.success(inviteRecordService.createShareImg(Constants.ONE,getShopId()));
     }
-
-
 }
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 a4c3ce0..bb24587 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
@@ -1,13 +1,18 @@
 package com.doumee.api.web;
 
+import com.doumee.config.Jwt.JwtTokenUtil;
 import com.doumee.config.annotation.LoginRequired;
 import com.doumee.config.annotation.LoginShopRequired;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.model.Integral;
+import com.doumee.dao.business.model.Member;
 import com.doumee.dao.business.model.Shop;
 import com.doumee.dao.business.model.WithdrawRecord;
+import com.doumee.dao.web.dto.IntegralRecordDTO;
 import com.doumee.dao.web.dto.ShopLoginDTO;
 import com.doumee.dao.web.dto.shop.*;
 import com.doumee.dao.web.request.MyCustomerRequest;
@@ -25,6 +30,7 @@
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -46,11 +52,11 @@
      * @param shopId
      * @return
      */
-    @ApiOperation(value = "鑾峰彇搴楅摵闂ㄩ潰淇℃伅", notes = "灏忕▼搴忕")
-    @GetMapping("/shopFaceDetailDTO")
-    public ApiResponse<ShopFaceDetailDTO> getShopFaceDetailDTO(@RequestParam Integer shopId){
-        return ApiResponse.success(shopService.getShopFaceDetailDTO(shopId,getMemberId()));
-    }
+//    @ApiOperation(value = "鑾峰彇搴楅摵闂ㄩ潰淇℃伅", notes = "灏忕▼搴忕")
+//    @GetMapping("/shopFaceDetailDTO")
+//    public ApiResponse<ShopFaceDetailDTO> getShopFaceDetailDTO(@RequestParam Integer shopId){
+//        return ApiResponse.success(shopService.getShopFaceDetailDTO(shopId,getMemberId()));
+//    }
 
     /**
      * 鎺ㄨ崘鍟嗛摵鍒楄〃
@@ -127,18 +133,12 @@
 
     @ApiOperation("缁忛攢鍟� - 璐﹀彿瀵嗙爜鐧诲綍")
     @PostMapping("/shopPasswordLogin")
-    @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
-    })
     public ApiResponse<AccountResponse> shopPasswordLogin(@RequestBody ShopLoginDTO dto) {
         return ApiResponse.success(shopService.shopPasswordLogin(dto));
     }
 
     @ApiOperation("缁忛攢鍟� - 闈欓粯鐧诲綍")
     @PostMapping("/shopOpenidLogin")
-    @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
-    })
     public ApiResponse<AccountResponse> shopOpenidLogin(@RequestBody ShopLoginDTO dto) {
         return ApiResponse.success(shopService.shopOpenidLogin(dto));
     }
@@ -156,24 +156,34 @@
 
     @LoginShopRequired
     @ApiOperation("缁忛攢鍟� - 鎴戠殑瀹㈡埛淇℃伅")
-    @GetMapping("/myCustomer")
+    @PostMapping("/myCustomer")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
-    public ApiResponse<List<MyCustomerResponse>> myCustomer(MyCustomerRequest request) {
+    public ApiResponse<PageData<Member>> myCustomer(@RequestBody PageWrap<MyCustomerRequest> request) {
         return ApiResponse.success(shopService.myCustomer(request,getShopId()));
     }
 
     @LoginShopRequired
     @ApiOperation("缁忛攢鍟� - 閿�鍞槑缁�")
-    @GetMapping("/saleReport")
+    @PostMapping("/saleReport")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
-    public ApiResponse<SaleReportResponse> saleReport(SaleReportRequest request) {
+    public ApiResponse<SaleReportResponse> saleReport(@RequestBody SaleReportRequest request) {
         return ApiResponse.success(shopService.saleReport(request,getShopId()));
     }
 
+    @LoginShopRequired
+    @ApiOperation("缁忛攢鍟� - 閫�鍑虹櫥褰�")
+    @GetMapping("/logOut")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse logOut(HttpServletRequest request) {
+        shopService.logOut(request.getHeader(JwtTokenUtil.HEADER_KEY),getShopId());
+        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 d780449..a90cf57 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
@@ -56,9 +56,8 @@
         return  ApiResponse.success("鏌ヨ鎴愬姛",areasService.getCityList(areas));
     }
 
-    @ApiOperation("鍏ㄩ儴鏍戝舰鏌ヨ")
+    @ApiOperation("鍏ㄩ儴鍖哄垝鏍戝舰鏌ヨ")
     @PostMapping("/treeList")
-//    @RequiresPermissions("business:areas:query")
     public ApiResponse<List<Areas>> treeList (@RequestBody AreasDto pageWrap) {
         Areas a = new Areas();
         BeanUtils.copyProperties(pageWrap,a);
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/ZanApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/ZanApi.java
index 619c970..456f705 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/ZanApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/ZanApi.java
@@ -1,34 +1,45 @@
 package com.doumee.api.web;
 
+import com.doumee.config.annotation.LoginRequired;
 import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.dao.business.model.Zan;
 import com.doumee.service.business.ZanService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
-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 姹熻箘韫�
  * @date 2023/03/21 15:48
  */
+
+
 @Api(tags = "鐢ㄦ埛鐐硅禐淇℃伅琛�")
-//@RestController
+@Trace(exclude = true)
+@RestController
 @RequestMapping("/web/zan")
+@Slf4j
 public class ZanApi extends ApiController{
 
-
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
+    @LoginRequired
+    @ApiOperation("鐐硅禐")
     @PostMapping("/create")
-    @RequiresPermissions("business:zan:create")
     public ApiResponse create(@RequestBody Zan zan) {
         return ApiResponse.success(zanService.create(zan,getMemberId()));
     }
+
+    @LoginRequired
+    @ApiOperation("鍙栨秷鐐硅禐")
+    @PostMapping("/cancel")
+    public ApiResponse cancel(@RequestBody Zan zan) {
+        zanService.deleteById(zan,getMemberId());
+        return ApiResponse.success(null);
+    }
+
+
 }
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/ArticleApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/ArticleApi.java
new file mode 100644
index 0000000..90c7543
--- /dev/null
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/ArticleApi.java
@@ -0,0 +1,48 @@
+package com.doumee.api.web.mall;
+
+import com.doumee.api.web.ApiController;
+import com.doumee.config.annotation.LoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Activity;
+import com.doumee.dao.web.dto.activity.ActivityCardDTO;
+import com.doumee.dao.web.request.ActivityPageListRequest;
+import com.doumee.dao.web.request.goods.ArticleRequest;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2026/2/11 14:13
+ */
+
+@Api(tags = "绀惧尯璧勮")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/article")
+@Slf4j
+public class ArticleApi extends ApiController {
+
+
+    @ApiOperation(value = "绀惧尯璧勮", notes = "灏忕▼搴忕")
+    @PostMapping("/getArticlePage")
+    public ApiResponse<PageData<Activity>> getArticlePage(@RequestBody PageWrap<ArticleRequest> pageWrap){
+        return  ApiResponse.success(activityService.getArticlePage(pageWrap));
+    }
+
+    @ApiOperation(value = "绀惧尯璇︽儏", notes = "灏忕▼搴忕")
+    @GetMapping("/getArticleDetail")
+    public ApiResponse<Activity> getArticleInfo(@RequestParam Integer id,Integer memberId){
+        return  ApiResponse.success(activityService.getArticleInfo(id,memberId));
+    }
+
+
+
+
+}
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java
index 151d927..a98e452 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/GoodsApi.java
@@ -6,6 +6,8 @@
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.model.SearchHistory;
 import com.doumee.dao.web.request.goods.GoodsRequest;
 import com.doumee.dao.web.response.goods.GoodsInfoResponse;
 import io.swagger.annotations.Api;
@@ -14,6 +16,8 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * Created by IntelliJ IDEA.
@@ -42,7 +46,6 @@
     @ApiOperation("鍟嗗搧璇︽儏")
     @GetMapping("/goodsInfo")
     @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
             @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "goodsId", value = "鍟嗗搧涓婚敭", required = true),
             @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "memberId", value = "鐢ㄦ埛涓婚敭", required = true),
     })
@@ -63,4 +66,28 @@
         return ApiResponse.success("鐢熸垚鎴愬姛",path);
     }
 
+    @LoginRequired
+    @ApiOperation("鍟嗗搧鎼滅储鍘嗗彶")
+    @GetMapping("/searchHistoryList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<List<SearchHistory>> searchHistoryList(@RequestParam Integer type) {
+        return ApiResponse.success(searchHistoryService.findListByType(Constants.ZERO,getMemberId()));
+    }
+
+
+    @LoginRequired
+    @ApiOperation("娓呯┖鎼滅储鍘嗗彶")
+    @GetMapping("/cleanSearchHistory")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse cleanSearchHistory(@RequestParam Integer type) {
+        searchHistoryService.cleanHistory(Constants.ZERO,getMemberId());
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+
 }
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/HomeApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/HomeApi.java
index 48d3bad..5b8fcfa 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/HomeApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/HomeApi.java
@@ -50,6 +50,7 @@
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
     public ApiResponse verifyUserPhone(@RequestBody UpdMobileRequest request) {
+        request.setMemberId(getMemberId());
         memberService.verifyUserPhone(request);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
@@ -62,6 +63,7 @@
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
     public ApiResponse updateUserPhone(@RequestBody UpdMobileRequest request) {
+        request.setMemberId(getMemberId());
         memberService.updateUserPhone(request);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
index f1f1e2a..03451f5 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/IntegralApi.java
@@ -2,10 +2,12 @@
 
 import com.doumee.api.web.ApiController;
 import com.doumee.config.annotation.LoginRequired;
+import com.doumee.config.annotation.LoginShopRequired;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.model.Integral;
 import com.doumee.dao.web.dto.IntegralRecordDTO;
 import com.doumee.dao.web.response.IntegralDataResponse;
@@ -15,10 +17,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 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.*;
 
 /**
  * Created by IntelliJ IDEA.
@@ -35,27 +34,63 @@
 
     @LoginRequired
     @ApiOperation("鑾峰彇鐢ㄦ埛鐨勭Н鍒嗚褰�")
+    @PostMapping("/findUserIntegralRecordPage")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<PageData<Integral>> findUserIntegralRecordPage (@RequestBody PageWrap<IntegralRecordDTO> pageWrap) {
+        pageWrap.getModel().setMemberId(getMemberId());
+        pageWrap.getModel().setUserType(Constants.ZERO);
+        return ApiResponse.success(integralService.findIntegralRecordPage(pageWrap));
+    }
+
+    @LoginShopRequired
+    @ApiOperation("鑾峰彇缁忛攢鍟嗙殑绉垎璁板綍")
     @PostMapping("/findIntegralRecordPage")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
     public ApiResponse<PageData<Integral>> findIntegralRecordPage (@RequestBody PageWrap<IntegralRecordDTO> pageWrap) {
+        pageWrap.getModel().setMemberId(getShopId());
         return ApiResponse.success(integralService.findIntegralRecordPage(pageWrap));
     }
 
 
+
+
     @LoginRequired
-    @ApiOperation("鑾峰彇鐢ㄦ埛鍓╀綑绉垎涓庡緟娓呯┖绉垎淇℃伅")
-    @PostMapping("/getIntegralData")
+    @ApiOperation("鐢ㄦ埛绉垎鎯呭喌")
+    @GetMapping("/getUserIntegralData")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
-    public ApiResponse<IntegralDataResponse> getIntegralData (@RequestBody IntegralRecordDTO dto) {
+    public ApiResponse<IntegralDataResponse> getUserIntegralData () {
+        IntegralRecordDTO dto = new IntegralRecordDTO();
+        dto.setMemberId(getMemberId());
+        dto.setUserType(Constants.ZERO);
         return ApiResponse.success(integralService.getIntegralData(dto));
     }
 
 
 
+    @LoginShopRequired
+    @ApiOperation("缁忛攢鍟嗙Н鍒嗕笌缁撶畻閲戦鎯呭喌")
+    @GetMapping("/getIntegralData")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "integer", name = "userType", value = "鏌ヨ绫诲瀷锛�1=缁忛攢鍟嗙Н鍒嗭紱2=缁忛攢鍟嗙粨绠楅噾棰濓紱", required = true),
+    })
+    public ApiResponse<IntegralDataResponse> getIntegralData (@RequestParam Integer userType) {
+        IntegralRecordDTO dto = new IntegralRecordDTO();
+        dto.setMemberId(getShopId());
+        dto.setUserType(userType);
+//        try {
+//            System.out.println(inviteRecordService.createShopMiniProgramCode(getShopId()));
+//        }catch (Exception e){
+//            e.printStackTrace();
+//        }
+        return ApiResponse.success(integralService.getIntegralData(dto));
+    }
 
 
 
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
index 56be23e..81c55c8 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/OrderApi.java
@@ -8,6 +8,7 @@
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.kuaidi100.DeliveryDTO;
 import com.doumee.core.utils.kuaidi100.ExpressUtils;
 import com.doumee.core.wx.SendWxMessage;
@@ -177,17 +178,19 @@
         return ApiResponse.success("鏌ヨ鎴愬姛", goodsorderService.getGoodsOrderDetail(orderId));
     }
 
-    @LoginRequired
-    @ApiOperation("璁㈠崟鍒楄〃")
-    @PostMapping("/orderPage")
-    @ApiImplicitParams({
-            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
-    })
-    public ApiResponse<IPage<MemberOrderResponse>> orderPage(@RequestBody PageWrap<MemberOrderRequest> pageWrap) {
-        pageWrap.getModel().setMemberId(getMemberId());
-        IPage<MemberOrderResponse> page = goodsorderService.getGoodsOrderPage(pageWrap);
-        return ApiResponse.success("鏌ヨ鎴愬姛",page);
-    }
+//    @LoginRequired
+//    @ApiOperation("璁㈠崟鍒楄〃")
+//    @PostMapping("/orderPage")
+//    @ApiImplicitParams({
+//            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+//    })
+//    public ApiResponse<IPage<MemberOrderResponse>> orderPage(@RequestBody PageWrap<MemberOrderRequest> pageWrap) {
+//        pageWrap.getModel().setMemberId(getMemberId());
+//        IPage<MemberOrderResponse> page = goodsorderService.getGoodsOrderPage(pageWrap);
+//        return ApiResponse.success("鏌ヨ鎴愬姛",page);
+//    }
+
+
 
     @LoginRequired
     @ApiOperation("淇敼璁㈠崟鏀惰揣鍦板潃")
@@ -235,16 +238,29 @@
     }
 
 
-    @LoginRequired
+    @LoginShopRequired
     @ApiOperation("璁㈠崟鏍搁攢")
     @PostMapping("/writeOffOrder")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
     })
     public ApiResponse writeOffOrder(@RequestBody DealOrderRequest dealOrderRequest) {
-        goodsorderService.orderWriteOff(dealOrderRequest.getExchangeCode(),getMemberId());
+        goodsorderService.orderWriteOff(dealOrderRequest.getOrderId(),getShopId());
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
+
+
+    @LoginShopRequired
+    @ApiOperation("鏍规嵁鏍搁攢鐮佽幏鍙栬鍗曡鎯�")
+    @PostMapping("/getOrderDetailByCode")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<MemberOrderResponse> getOrderDetailByCode(@RequestBody DealOrderRequest dealOrderRequest) {
+        return ApiResponse.success("鎿嶄綔鎴愬姛",goodsorderService.getGoodsOrderDetailByCode(dealOrderRequest.getExchangeCode()));
+    }
+
+
 
     @LoginRequired
     @ApiOperation("璁㈠崟鍒犻櫎")
@@ -305,11 +321,25 @@
     })
     public ApiResponse<PageData<Goodsorder>> shopOrderPage(@RequestBody PageWrap<ShopOrderRequest> pageWrap) {
         pageWrap.getModel().setShopId(getShopId());
+        pageWrap.getModel().setUserType(Constants.ONE);
         PageData<Goodsorder> page = goodsorderService.shopOrderPage(pageWrap);
         return ApiResponse.success("鏌ヨ鎴愬姛",page);
     }
 
 
+    @LoginRequired
+    @ApiOperation("璁㈠崟鍒楄〃")
+    @PostMapping("/orderPage")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<PageData<Goodsorder>> orderPage(@RequestBody PageWrap<ShopOrderRequest> pageWrap) {
+        pageWrap.getModel().setShopId(getMemberId());
+        pageWrap.getModel().setUserType(Constants.ZERO);
+        PageData<Goodsorder> page = goodsorderService.shopOrderPage(pageWrap);
+        return ApiResponse.success("鏌ヨ鎴愬姛",page);
+    }
+
     @LoginShopRequired
     @ApiOperation("璁㈠崟璇︽儏 - 缁忛攢鍟�")
     @GetMapping("/shopOrderDetail")
diff --git a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/ShopCartApi.java b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/ShopCartApi.java
index 77427bd..407aa68 100644
--- a/server/dmmall_web/src/main/java/com/doumee/api/web/mall/ShopCartApi.java
+++ b/server/dmmall_web/src/main/java/com/doumee/api/web/mall/ShopCartApi.java
@@ -48,7 +48,7 @@
     }
 
     @LoginRequired
-    @ApiOperation("璐墿杞﹀垪琛�")
+    @ApiOperation("璐墿杞︽暟閲�")
     @GetMapping("/cartGoodsTypeNum")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
diff --git a/server/pom.xml b/server/pom.xml
index 98782a5..8bb36a6 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -284,6 +284,7 @@
       <version>1.15.3</version>
     </dependency>
 
+
     <!--<dependency>
       <groupId>com.aliyun.openservices</groupId>
       <artifactId>ons-client</artifactId>

--
Gitblit v1.9.3