From cbc564a7088503ad8cc7af4e1d2ba417d061e615 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 30 六月 2023 11:35:05 +0800
Subject: [PATCH] 联调bug和统计完善

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java                       |   12 
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                                         |   23 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java              |   14 
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml                                 |    9 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java          |    7 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java                       |    4 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java                    |   13 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveFieldsService.java          |   15 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java                     |   13 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java                        |   12 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopTotal.java                             |    4 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java                 |   91 ++
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java                  |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java                     |    4 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java                      |   28 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java                      |   27 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveFieldsServiceImpl.java |   19 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java                        |   10 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java                    |   12 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveMapper.java                  |   13 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java            |    7 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java                |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java                 |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java              |   14 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java                      |   26 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java              |  525 ++++++++-----
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java               |   13 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java          |    7 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java                |   12 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java                   |   13 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java                   |   24 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberTotalService.java                  |    9 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java                    |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java        |   37 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java                         |   12 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtArchiveFieldsListVo.java                   |   38 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveService.java                |   13 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ActivenessServiceImpl.java          |   31 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java                           |   16 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java                           |   11 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/business/MerConfigController.java            |    3 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml                                      |   43 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/ActivenessService.java                   |   18 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapStrTotalVo.java                     |    9 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveFieldsMapper.java            |   11 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapIntTotalVo.java                     |    2 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java             |   11 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java                             |   55 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java                    |   10 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MemberTaskSimpleVo.java                   |   25 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml                                            |   14 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveMapper.xml                               |   12 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveFieldsMapper.xml                         |   13 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponTotalService.java                  |    5 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java                     |   19 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java                          |    7 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java                                 |   22 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml                                      |    9 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java              |   14 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java          |  212 ++++-
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java                  |  417 ++++++----
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveServiceImpl.java       |   14 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java            |    7 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml                                      |    5 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyCouponDto.java                        |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java                  |    6 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java            |   22 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberConsumerGoodsTotalVo.java              |   28 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java                         |   22 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java                 |   10 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java                |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java                         |   11 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberTotalServiceImpl.java         |   63 -
 73 files changed, 1,621 insertions(+), 656 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java
index 53de4eb..e7d96c4 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java
@@ -17,8 +17,8 @@
 public class MemberTotalChangeDto {
 
 
-    @ApiModelProperty(value = "会员id")
-    private String memberId;
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
 
     @ApiModelProperty(value = "积分变化")
     private Integer changeIntegral;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MemberTaskSimpleVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MemberTaskSimpleVo.java
new file mode 100644
index 0000000..442b929
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MemberTaskSimpleVo.java
@@ -0,0 +1,25 @@
+package com.ruoyi.system.api.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @ClassName MemberTaskSimpleVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/29 18:22
+ * @Version 1.0
+ */
+@Data
+public class MemberTaskSimpleVo {
+
+    @ApiModelProperty(value = "任务时间")
+    private Date taskDate;
+
+    @ApiModelProperty("任务内容")
+    private String taskContent;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapIntTotalVo.java
similarity index 91%
rename from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java
rename to ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapIntTotalVo.java
index 02698a8..42409db 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapIntTotalVo.java
@@ -11,7 +11,7 @@
  * @Version 1.0
  */
 @Data
-public class MgtMapTotalVo {
+public class MgtMapIntTotalVo {
 
     @ApiModelProperty(value = "mapKey")
     private String mapKey;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapStrTotalVo.java
similarity index 71%
copy from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java
copy to ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapStrTotalVo.java
index 02698a8..b6f09a6 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapTotalVo.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtMapStrTotalVo.java
@@ -4,19 +4,18 @@
 import lombok.Data;
 
 /**
- * @ClassName MgtNurseTotalVo
+ * @ClassName MgtMapStrTotalVo
  * @Description TODO
  * @Author jqs
- * @Date 2023/6/19 18:06
+ * @Date 2023/6/30 11:10
  * @Version 1.0
  */
 @Data
-public class MgtMapTotalVo {
+public class MgtMapStrTotalVo {
 
     @ApiModelProperty(value = "mapKey")
     private String mapKey;
 
     @ApiModelProperty(value = "mapValue")
-    private Integer mapValue;
-
+    private String mapValue;
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
index 3d09306..c8df9fc 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MgtPlTotalMemberTotalVo.java
@@ -37,25 +37,25 @@
     private Integer[] ageValue;
 
     @ApiModelProperty(value = "会员调理")
-    private List<MgtMapTotalVo> nurseTotalVos;
+    private List<MgtMapIntTotalVo> nurseTotalVos;
 
     @ApiModelProperty(value = "商品类型")
-    private List<MgtMapTotalVo> goodsTypeTotalVos;
+    private List<MgtMapIntTotalVo> goodsTypeTotalVos;
 
     @ApiModelProperty(value = "活跃度")
-    private List<MgtMapTotalVo> activenessList;
+    private List<MgtMapIntTotalVo> activenessList;
 
     @ApiModelProperty(value = "来源渠道")
-    private List<MgtMapTotalVo> customerSourceList;
+    private List<MgtMapIntTotalVo> customerSourceList;
 
     @ApiModelProperty(value = "消费排行")
-    private List<MgtMapTotalVo> memberPayList;
+    private List<MgtMapIntTotalVo> memberPayList;
 
     @ApiModelProperty(value = "商品排行")
-    private List<MgtMapTotalVo> memberGoodsRankList;
+    private List<MgtMapIntTotalVo> memberGoodsRankList;
 
     @ApiModelProperty(value = "店铺会员")
-    private List<MgtMapTotalVo> shopMemberRankList;
+    private List<MgtMapIntTotalVo> shopMemberRankList;
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
index 9936a80..0212e71 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java
@@ -48,13 +48,18 @@
             }
 
             @Override
+            public R<Activeness> getActivenessByName(String name) {
+                return R.fail("获取活跃度失败:" + throwable.getMessage());
+            }
+
+            @Override
             public R<List<SysTag>> listSysTag(Integer tagType) {
                 return R.fail("获取标签失败:" + throwable.getMessage());
             }
 
             @Override
             public R<List<Activeness>> listActiveness() {
-                return R.fail("获取活跃度失败:" + throwable.getMessage());
+                return R.fail("获取活跃度列表失败:" + throwable.getMessage());
             }
 
             @Override
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
index 8d338c7..592921f 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -106,6 +106,13 @@
             public R<MgtShopTotalMemberVo> getUserTotalByShopId(List<Long> shopIdlist) {
                 return R.fail("通过shopId获取user统计失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto) {
+                return R.fail("更新会员统计失败:" + throwable.getMessage());
+            }
+
+
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
index 1d223db..aab7869 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteOrderFallbackFactory.java
@@ -1,9 +1,10 @@
 package com.ruoyi.system.api.factory;
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.domain.dto.MerBaseDto;
 import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import com.ruoyi.system.api.service.RemoteOrderService;
 import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
 import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
@@ -12,6 +13,7 @@
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -47,9 +49,14 @@
             }
 
             @Override
-            public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) {
+            public R<List<MgtMapIntTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) {
                 return R.fail("获取商户端统计失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<BigDecimal> getMemberUnpaidOrder(MerBaseDto merBaseDto) {
+                return R.fail("获取用户未结清金额失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
index 678479c..1139eed 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
@@ -4,14 +4,12 @@
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
 import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
-import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo;
-import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
+import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
+import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.model.QwH5LoginVo;
 import com.ruoyi.system.api.model.QwUserDetailDto;
 import com.ruoyi.system.api.service.RemoteShopService;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
-import com.ruoyi.system.api.domain.vo.ShopRelUserVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -80,7 +78,15 @@
                 return R.fail("获取商户列表失败:" + throwable.getMessage());
             }
 
+            @Override
+            public R changeShopTotal(ShopTotalChangeDto shopTotalChangeDto) {
+                return R.fail("更新商户统计失败:" + throwable.getMessage());
+            }
 
+            @Override
+            public R<MemberTaskSimpleVo> getLastMemberTask(Long userId) {
+                return R.fail("获取最近会员任务失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
index ca53c50..822302a 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java
@@ -79,4 +79,14 @@
      */
     @PostMapping("/config/listSimpleUserVo")
     public R<List<MgtSysSimpleUserVo>> listSimpleUserVo(@RequestBody MgtBaseBathDto mgtBaseBathDto);
+
+    /**
+     * @description  通过名称获取活跃度
+     * @author  jqs
+     * @date    2023/6/29 17:20
+     * @param name
+     * @return  R<Activeness>
+     */
+    @PostMapping("/getActivenessByName")
+    public R<Activeness> getActivenessByName(@RequestBody String name);
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
index d255a81..1792555 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -150,4 +150,17 @@
      */
     @PostMapping("/member/getUserTotalByShopId")
     public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist);
+
+    /**
+     * @description  更新会员统计
+     * @author  jqs
+     * @date    2023/6/28 17:52
+     * @param memberTotalChangeDto
+     * @return  R
+     */
+    @PostMapping("/member/changeMemberTotal")
+    public R changeMemberTotal(@RequestBody MemberTotalChangeDto memberTotalChangeDto);
+
+
+
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
index 8fca6f3..f46ebec 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteOrderService.java
@@ -2,16 +2,18 @@
 
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.domain.dto.MerBaseDto;
 import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
 import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import com.ruoyi.system.api.factory.RemoteOrderFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @FeignClient(contextId = "remoteOrderService", value = ServiceNameConstants.ORDER_SERVICE, fallbackFactory = RemoteOrderFallbackFactory.class)
@@ -38,8 +40,19 @@
      * @author  jqs
      * @date    2023/6/21 15:27
      * @param mgtBasePlatformDto
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
     @PostMapping("/order/listMemberGoodsRank")
-    public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto);
+    public R<List<MgtMapIntTotalVo>> listMemberGoodsRank(@RequestBody MgtBasePlatformDto mgtBasePlatformDto);
+
+
+    /**
+     * @description  获取用户未支付金额
+     * @author  jqs
+     * @date    2023/6/29 18:00
+     * @param merBaseDto
+     * @return  R<BigDecimal>
+     */
+    @PostMapping("/order/getMemberUnpaidOrder")
+    public R<BigDecimal> getMemberUnpaidOrder(@RequestBody MerBaseDto merBaseDto);
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
index c132b46..eba5c59 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
@@ -5,11 +5,9 @@
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
 import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
+import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
-import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo;
-import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
-import com.ruoyi.system.api.domain.vo.ShopRelUserVo;
+import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.factory.RemoteShopFallbackFactory;
 import com.ruoyi.system.api.model.QwH5LoginVo;
 import com.ruoyi.system.api.model.QwUserDetailDto;
@@ -90,4 +88,25 @@
      */
     @PostMapping("/shop/listShopIdByPlTotal")
     public R<List<Long>> listShopIdByPlTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto);
+
+
+    /**
+     * @description  更新商户统计
+     * @author  jqs
+     * @date    2023/6/28 17:52
+     * @param shopTotalChangeDto
+     * @return  R
+     */
+    @PostMapping("/changeShopTotal")
+    public R changeShopTotal(@RequestBody ShopTotalChangeDto shopTotalChangeDto);
+
+    /**
+     * @description  获取最近任务
+     * @author  jqs
+     * @date    2023/6/29 18:25
+     * @param userId
+     * @return  R<MemberTaskSimpleVo>
+     */
+    @PostMapping("/member/getLastMemberTask")
+    public R<MemberTaskSimpleVo> getLastMemberTask(@RequestBody Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
index 748c236..396bcf7 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java
@@ -5,6 +5,7 @@
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.member.domain.dto.*;
 import com.ruoyi.member.domain.vo.*;
+import com.ruoyi.member.service.member.MemberArchiveFieldsService;
 import com.ruoyi.member.service.member.MemberService;
 import com.ruoyi.system.api.domain.dto.MerBaseGetDto;
 import io.swagger.annotations.Api;
@@ -32,7 +33,8 @@
     @Resource
     private MemberService memberService;
 
-
+    @Resource
+    private MemberArchiveFieldsService memberArchiveFieldsService;
 
     @RequestMapping(value = "/pageMerCashMember", method = RequestMethod.POST)
     @ApiOperation(value = "分页获取收银搜索会员列表")
@@ -59,14 +61,17 @@
 
 
     /**
-     * 未完成
-     * @return
+     * @description  获取会员信息
+     * @author  jqs
+     * @date    2023/6/29 18:10
+     * @param merBaseGetDto
+     * @return  R<MerMemberInfoVo>
      */
     @RequestMapping(value = "/getMerMemberInfo", method = RequestMethod.POST)
     @ApiOperation(value = "获取会员信息")
     public R<MerMemberInfoVo> getMerMemberInfo(@RequestBody MerBaseGetDto merBaseGetDto) {
         Long userId = SecurityUtils.getUserId();
-        MerMemberInfoVo merMemberInfo = memberService.getMerMemberInfo(Long.valueOf(merBaseGetDto.getId()));
+        MerMemberInfoVo merMemberInfo = memberService.getMerMemberInfo(merBaseGetDto);
         return R.ok(merMemberInfo);
     }
 
@@ -77,6 +82,13 @@
         Long userId = SecurityUtils.getUserId();
         MerMemberBasicFileVo merMemberBasicFileVo = memberService.getMerMemberBasicFile(Long.valueOf(merBaseGetDto.getId()));
         return R.ok(merMemberBasicFileVo);
+    }
+
+    @RequestMapping(value = "/listMerArchiveFields", method = RequestMethod.POST)
+    @ApiOperation(value = "商户获取档案字段")
+    public R<List<MgtArchiveFieldsListVo>> listMerArchiveFields() {
+        List<MgtArchiveFieldsListVo> archiveFieldsListVoList = memberArchiveFieldsService.listMgtArchiveFields();
+        return R.ok(archiveFieldsListVoList);
     }
 
     @RequestMapping(value = "/getMerMemberTags", method = RequestMethod.POST)
@@ -112,4 +124,6 @@
         memberService.editMerMember(merMemberAddDto);
         return R.ok();
     }
+
+
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
index 7f1a051..57653aa 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -247,7 +247,7 @@
     @PostMapping("/changeMemberTotal")
     public R changeMemberTotal(@RequestBody MemberTotalChangeDto memberTotalChangeDto)
     {
-        memberTotalService.changeMemberTotal(memberTotalChangeDto);
+        memberService.changeMemberTotal(memberTotalChangeDto);
         return R.ok();
     }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
index e10259b..1e222f7 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
@@ -110,7 +110,12 @@
         return R.ok(mgtMemberGetVo);
     }
 
-
+    @RequestMapping(value = "/listMgtArchiveFields", method = RequestMethod.POST)
+    @ApiOperation(value = "平台获取档案字段")
+    public R<List<MgtArchiveFieldsListVo>> listMgtArchiveFields() {
+        List<MgtArchiveFieldsListVo> archiveFieldsListVoList = memberArchiveFieldsService.listMgtArchiveFields();
+        return R.ok(archiveFieldsListVoList);
+    }
 
     @RequestMapping(value = "/pageMgtMemberIntegral", method = RequestMethod.POST)
     @ApiOperation(value = "平台获取用户积分列表")
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java
index d2c9559..f5abee2 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java
@@ -4,8 +4,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
-
 /**
  * @author jqs34
  * @ClassName MerMemberPageDto
@@ -52,7 +50,13 @@
     @ApiModelProperty(value = "会员性别0男1女")
     private Integer memberGender;
 
-    @ApiModelProperty(value = "会员活跃度1.活跃2.中度活跃3.轻度活跃")
-    private Integer memberActivity;
+    @ApiModelProperty(value = "会员活跃度")
+    private String memberActiveness;
+
+    @ApiModelProperty(value = "活跃度开始时间",hidden = true)
+    private String actStartDate;
+
+    @ApiModelProperty(value = "活跃度结束时间",hidden = true)
+    private String actEndDate;
 
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java
index 170cf09..b836692 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberShopTotal.java
@@ -121,8 +121,8 @@
     /**
      * 总体验订单数
      */
-    @TableField("tolta_experience_order")
-    private Integer toltaExperienceOrder;
+    @TableField("total_experience_order")
+    private Integer totalExperienceOrder;
     /**
      * 总服务订单数
      */
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java
index 056e380..3816368 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java
@@ -4,7 +4,6 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -48,4 +47,7 @@
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
+
+    @ApiModelProperty(value = "用户档案")
+    private List<MemberArchiveVo> achiveList;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java
index 4eefe03..d86fa6f 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java
@@ -32,6 +32,9 @@
     @ApiModelProperty("用户生日")
     private String birthday;
 
+    @ApiModelProperty(value = "用户类型")
+    private String memberType;
+
     @ApiModelProperty(value = "用户标签")
     private String userTags;
 
@@ -57,4 +60,8 @@
     @ApiModelProperty(value = "下次跟进任务时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date nextTaskTime;
+
+    @ApiModelProperty(value = "最近消费时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date lastPayTime;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtArchiveFieldsListVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtArchiveFieldsListVo.java
new file mode 100644
index 0000000..12e129a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtArchiveFieldsListVo.java
@@ -0,0 +1,38 @@
+package com.ruoyi.member.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MgtArchiveFieldsListVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/30 9:37
+ * @Version 1.0
+ */
+@Data
+public class MgtArchiveFieldsListVo {
+
+    @ApiModelProperty(value = "档案id")
+    private Long afId;
+
+    @ApiModelProperty(value = "字段名称")
+    private String fieldName;
+
+    @ApiModelProperty(value = "是否必填0否1是")
+    private Integer requiredFlag;
+
+    @ApiModelProperty(value = "字段排序")
+    private Integer fieldSort;
+
+    @ApiModelProperty(value = "字段类型1文字输入2数字输入3字母输入4无限制输入6年月日选择7选项")
+    private Integer fieldType;
+
+    @ApiModelProperty(value = "字段输入提示")
+    private String inputTip;
+
+    @ApiModelProperty(value = "选项值 多个,隔开")
+    private String optionValues;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
index 8507f0c..59f105f 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -1,6 +1,6 @@
 package com.ruoyi.member.domain.vo;
 
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -50,17 +50,17 @@
     private Integer[] ageValue;
 
     @ApiModelProperty(value = "会员调理")
-    private List<MgtMapTotalVo> nurseTotalVos;
+    private List<MgtMapIntTotalVo> nurseTotalVos;
 
     @ApiModelProperty(value = "商品类型")
-    private List<MgtMapTotalVo> goodsTypeTotalVos;
+    private List<MgtMapIntTotalVo> goodsTypeTotalVos;
 
     @ApiModelProperty(value = "活跃度")
-    private List<MgtMapTotalVo> activenessList;
+    private List<MgtMapIntTotalVo> activenessList;
 
     @ApiModelProperty(value = "来源渠道")
-    private List<MgtMapTotalVo> customerSourceList;
+    private List<MgtMapIntTotalVo> customerSourceList;
 
     @ApiModelProperty(value = "消费排行")
-    private List<MgtMapTotalVo> memberPayList;
+    private List<MgtMapIntTotalVo> memberPayList;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
index 5e1afe9..751831b 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
@@ -51,4 +51,15 @@
      * @return  List<MgtCouponAuditPageVo>
      */
     List<MgtCouponAuditPageVo> pageMgtAuditCoupon(Page page, @Param("param")MgtCouponAuditPageDto mgtCouponAuditPageDto);
+
+    /**
+     * @description  更新优惠券统计
+     * @author  jqs
+     * @date    2023/6/29 11:56
+     * @param couponId
+     * @param sendTotal
+     * @param sendPerson
+     * @return  void
+     */
+    void updateCouponTotal( @Param("couponId")String couponId, @Param("sendTotal")Integer sendTotal, @Param("sendPerson")Integer sendPerson);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveFieldsMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveFieldsMapper.java
index d52cefc..bc9b6f8 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveFieldsMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveFieldsMapper.java
@@ -2,6 +2,9 @@
 
 import com.ruoyi.member.domain.pojo.member.MemberArchiveFields;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,12 @@
  */
 public interface MemberArchiveFieldsMapper extends BaseMapper<MemberArchiveFields> {
 
+    /**
+     * @description  平台获取档案字段
+     * @author  jqs
+     * @date    2023/6/30 9:39
+     * @param
+     * @return  List<MgtArchiveFieldsListVo>
+     */
+    List<MgtArchiveFieldsListVo> listMgtArchiveFields();
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveMapper.java
index 0a5aca7..58ef355 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberArchiveMapper.java
@@ -18,9 +18,18 @@
 public interface MemberArchiveMapper extends BaseMapper<MemberArchive> {
 
     /**
-     * 获取用户档案
+     * 获取用户档案去除空信息
      * @param userId
      * @return
      */
-    List<MemberArchiveVo> listVoByUserId(@Param("userId") Long userId);
+    List<MemberArchiveVo> listMgtVoByUserId(@Param("userId") Long userId);
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/30 11:18
+     * @param userId
+     * @return  List<MemberArchiveVo>
+     */
+    List<MemberArchiveVo> listMerVoByUserId(@Param("userId")Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
index f109c1c..56b649e 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
@@ -11,7 +11,7 @@
 import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
 import com.ruoyi.system.api.domain.dto.MgtUserIdByKeywordDto;
 import com.ruoyi.system.api.domain.poji.member.Member;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtPlTotalMemberTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo;
 import org.apache.ibatis.annotations.Param;
@@ -160,7 +160,7 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getTotalMemberTotalNurse(@Param("param") MgtBaseShopDto mgtBaseShopDto);
+    List<MgtMapIntTotalVo> getTotalMemberTotalNurse(@Param("param") MgtBaseShopDto mgtBaseShopDto);
 
 
     /**
@@ -170,7 +170,7 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getTotalMemberTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto);
+    List<MgtMapIntTotalVo> getTotalMemberTotalGoodsType(@Param("param") MgtBaseShopDto mgtBaseShopDto);
 
     /**
     * @description getTotalMemberTotalActiveness
@@ -190,7 +190,7 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getTotalMemberRankPay(@Param("param") MgtBaseShopDto mgtBaseShopDto);
+    List<MgtMapIntTotalVo> getTotalMemberRankPay(@Param("param") MgtBaseShopDto mgtBaseShopDto);
 
 
     /**
@@ -200,7 +200,7 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getTotalMemberRankCustomerSource(@Param("param") MgtBaseShopDto mgtBaseShopDto);
+    List<MgtMapIntTotalVo> getTotalMemberRankCustomerSource(@Param("param") MgtBaseShopDto mgtBaseShopDto);
 
     /**
      * @description
@@ -237,7 +237,7 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getPlTotalMemberTotalNurse(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> getPlTotalMemberTotalNurse(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  会员人数统计
@@ -246,7 +246,7 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getPlTotalMemberTotalGoodsType(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> getPlTotalMemberTotalGoodsType(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description getTotalMemberTotalActiveness
@@ -266,7 +266,7 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getPlTotalMemberRankPay(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> getPlTotalMemberRankPay(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  会员人数统计
@@ -275,16 +275,16 @@
      * @param
      * @return  MgtTotalMemberTotalVo
      */
-    List<MgtMapTotalVo> getPlTotalMemberRankCustomerSource(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> getPlTotalMemberRankCustomerSource(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  
      * @author  jqs
      * @date    2023/6/21 14:35
      * @param mgtBasePlatformDto
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> getPlTotalMemberRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> getPlTotalMemberRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  通过shopId获取userId
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponTotalService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponTotalService.java
index 5710c43..5b82012 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponTotalService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponTotalService.java
@@ -1,7 +1,7 @@
 package com.ruoyi.member.service.coupon;
 
-import com.ruoyi.member.domain.pojo.coupon.CouponTotal;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.member.domain.pojo.coupon.CouponTotal;
 
 /**
  * <p>
@@ -13,4 +13,7 @@
  */
 public interface CouponTotalService extends IService<CouponTotal> {
 
+
+
+
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
index 2415ea1..4f8b57c 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -320,7 +320,9 @@
             List<MemberCoupon> memberCouponList = new ArrayList<>();
             MemberCoupon memberCoupon;
             Integer sendTotal = 0;
+            Integer sendPerson = 0;
             String memberCouponId;
+            Integer sendUserTotal;
             for(Long userId : userIdList){
                 memberCouponId = IdUtils.simpleUUID();
                 memberCoupon = new MemberCoupon();
@@ -353,14 +355,18 @@
                 }
                 memberCouponList.add(memberCoupon);
                 sendTotal = sendTotal + 1;
+                if(coupon.getSendType()==1){
+                   sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId());
+                   if(sendUserTotal!=null&&sendUserTotal>0){
+                   }else{
+                       sendPerson = sendPerson + 1;
+                   }
+                }
             }
             memberCouponService.saveBatch(memberCouponList);
             //处理优惠券统计
             if(sendTotal>0){
-                CouponTotal couponTotal = couponTotalService.getById(coupon.getCouponId());
-                couponTotal.setSendCount(couponTotal.getSendCount()+sendTotal);
-                couponTotal.setSendUserCount(couponTotal.getSendUserCount()+sendTotal);
-                couponTotalService.saveOrUpdate(couponTotal);
+                couponMapper.updateCouponTotal(coupon.getCouponId(),sendTotal,sendPerson);
             }
         }
     }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveFieldsServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveFieldsServiceImpl.java
index eed0c1f..ad60289 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveFieldsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveFieldsServiceImpl.java
@@ -2,10 +2,14 @@
 
 import com.ruoyi.member.domain.dto.MgtArchiveFieldsEditDto;
 import com.ruoyi.member.domain.pojo.member.MemberArchiveFields;
+import com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo;
 import com.ruoyi.member.mapper.member.MemberArchiveFieldsMapper;
 import com.ruoyi.member.service.member.MemberArchiveFieldsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * <p>
@@ -18,6 +22,9 @@
 @Service
 public class MemberArchiveFieldsServiceImpl extends ServiceImpl<MemberArchiveFieldsMapper, MemberArchiveFields> implements MemberArchiveFieldsService {
 
+
+    @Resource
+    private MemberArchiveFieldsMapper memberArchiveFieldsMapper;
 
     /**
      * @description  编辑会员档案字段
@@ -47,4 +54,16 @@
         // 保存或更新会员档案字段信息
         this.saveOrUpdate(memberArchiveFields);
     }
+
+    /**
+     * @description  平台获取档案字段
+     * @author  jqs
+     * @date    2023/6/30 9:39
+     * @param
+     * @return  List<MgtArchiveFieldsListVo>
+     */
+    @Override
+    public List<MgtArchiveFieldsListVo> listMgtArchiveFields(){
+        return memberArchiveFieldsMapper.listMgtArchiveFields();
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveServiceImpl.java
index 3fa2495..6ed1ef9 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberArchiveServiceImpl.java
@@ -25,12 +25,22 @@
     private MemberArchiveMapper memberArchiveMapper;
 
     /**
+     * 获取用户档案去除空信息
+     * @param userId
+     * @return
+     */
+    @Override
+    public List<MemberArchiveVo> listMgtVoByUserId(Long userId){
+        return memberArchiveMapper.listMgtVoByUserId(userId);
+    }
+
+    /**
      * 获取用户档案
      * @param userId
      * @return
      */
     @Override
-    public List<MemberArchiveVo> listVoByUserId(Long userId){
-        return memberArchiveMapper.listVoByUserId(userId);
+    public List<MemberArchiveVo> listMerVoByUserId(Long userId){
+        return memberArchiveMapper.listMerVoByUserId(userId);
     }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
index 212b96f..df39976 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -1,10 +1,9 @@
 package com.ruoyi.member.service.impl.member;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.exception.ServiceException;
-import com.ruoyi.member.domain.pojo.coupon.Coupon;
 import com.ruoyi.member.mapper.member.MemberCouponMapper;
-import com.ruoyi.member.service.coupon.CouponService;
 import com.ruoyi.member.service.member.MemberCouponService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
@@ -35,8 +34,6 @@
     @Resource
     private RemoteGoodsService remoteGoodsService;
 
-    @Resource
-    private CouponService couponService;
 
     /**
      * @description: TODO
@@ -86,12 +83,10 @@
             merVerifyCouponGetVo.setGoodsList(goodsList);
         }
         merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
-        Coupon coupon = couponService.getById(memberCoupon.getCouponId());
-        // 设置优惠券来源
-        if (coupon.getCouponFrom() == 1) {
-            merVerifyCouponGetVo.setCouponFrom("平台");
-        } else {
+        if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
             merVerifyCouponGetVo.setCouponFrom("商户");
+        } else {
+            merVerifyCouponGetVo.setCouponFrom("平台");
         }
         return merVerifyCouponGetVo;
     }
@@ -127,11 +122,10 @@
             merVerifyCouponGetVo.setGoodsList(goodsList);
         }
         merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
-        Coupon coupon = couponService.getById(memberCoupon.getCouponId());
-        if (coupon.getCouponFrom()==1) {
-            merVerifyCouponGetVo.setCouponFrom("平台");
-        } else {
+        if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
             merVerifyCouponGetVo.setCouponFrom("商户");
+        } else {
+            merVerifyCouponGetVo.setCouponFrom("平台");
         }
         memberCoupon.setCouponStatus(2);
         memberCoupon.setUseTime(new Date());
@@ -139,4 +133,21 @@
         merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
         return merVerifyCouponGetVo;
     }
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/29 11:42
+     * @param userId
+     * @param couponId
+     * @return  Integer
+     */
+    @Override
+    public Integer totalMemberCouponByUserAndCoupon(Long userId,String couponId){
+        LambdaQueryWrapper<MemberCoupon> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MemberCoupon::getUserId,userId);
+        queryWrapper.eq(MemberCoupon::getCouponId,couponId);
+        Integer total = this.count(queryWrapper);
+        return total;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
index 0c96aef..5324204 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -17,7 +17,6 @@
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.member.domain.dto.*;
 import com.ruoyi.member.domain.pojo.member.IntegralRecord;
-import com.ruoyi.member.domain.pojo.member.MemberNurse;
 import com.ruoyi.member.domain.pojo.member.MemberTotal;
 import com.ruoyi.member.domain.vo.*;
 import com.ruoyi.member.mapper.member.MemberMapper;
@@ -115,18 +114,17 @@
      * @version 1.0
      */
     @Override
-    public Member getByUserId(Long userId){
+    public Member getByUserId(Long userId) {
         Member member = memberMapper.selectMemberByUserId(userId);
         return member;
     }
 
     /**
-     *
      * @param appMiniLoginDto
      * @return
      */
     @Override
-    public AppMiniLoginVo getMemberByCode(AppMiniLoginDto appMiniLoginDto){
+    public AppMiniLoginVo getMemberByCode(AppMiniLoginDto appMiniLoginDto) {
 
         AppMiniLoginVo appMiniLoginVo = new AppMiniLoginVo();
         WxMaJscode2SessionResult session = null;
@@ -140,38 +138,39 @@
             e.printStackTrace();
             return null;
         }
-        if(session!=null&& StringUtils.isNotBlank(session.getOpenid())){
+        if (session != null && StringUtils.isNotBlank(session.getOpenid())) {
             unionid = session.getUnionid();
             openid = session.getOpenid();
             sessionKey = session.getSessionKey();
             //获取用户
             Member member = memberMapper.getOneByMiniOpenid(openid);
             SysUser sysUser = null;
-            if(member!=null){
+            if (member != null) {
                 sysUser = sysUserService.getSysUser(member.getUserId()).getData();
             }
             appMiniLoginVo.setMiniOpenid(openid);
             appMiniLoginVo.setWxUnionid(unionid);
             appMiniLoginVo.setSysUser(sysUser);
             appMiniLoginVo.setSessionKey(sessionKey);
-            redisService.setCacheObject(SecurityConstant.SESSION_KEY+openid,sessionKey,1L,TimeUnit.DAYS);
+            redisService.setCacheObject(SecurityConstant.SESSION_KEY + openid, sessionKey, 1L, TimeUnit.DAYS);
         }
-        log.info("appMiniLoginVo"+appMiniLoginVo.toString());
+        log.info("appMiniLoginVo" + appMiniLoginVo.toString());
         return appMiniLoginVo;
     }
 
     /**
      * 小程序注册
+     *
      * @param appUserRegisterDto
      * @return
      */
     @Override
-    public AppMiniRegisterVo miniRegister(AppMiniRegisterDto appUserRegisterDto){
+    public AppMiniRegisterVo miniRegister(AppMiniRegisterDto appUserRegisterDto) {
         AppMiniRegisterVo appUserRegisterVo = new AppMiniRegisterVo();
         String mobile = null;
         //获取code接口在redis里存放的sessionkey用于解密
-        String sessionkey = redisService.getCacheObject(SecurityConstant.SESSION_KEY+ appUserRegisterDto.getMiniOpenid());
-        if(StringUtils.isBlank(sessionkey)){
+        String sessionkey = redisService.getCacheObject(SecurityConstant.SESSION_KEY + appUserRegisterDto.getMiniOpenid());
+        if (StringUtils.isBlank(sessionkey)) {
             throw new ServiceException(AppErrorConstant.USER_NOT_LOGIN);
         }
         try {
@@ -204,18 +203,18 @@
         } catch (Exception e) {
             e.printStackTrace();
         }
-        if(StringUtils.isBlank(mobile)){
+        if (StringUtils.isBlank(mobile)) {
             return null;
         }
         //判断openid是否被其他手机号占用
         Member checkMember = memberMapper.getOneByMiniOpenid(appUserRegisterDto.getMiniOpenid());
-        if(checkMember!=null&&!checkMember.getMobile().equals(mobile)){
+        if (checkMember != null && !checkMember.getMobile().equals(mobile)) {
             throw new ServiceException("微信号换绑手机需联系客服");
         }
         Member member = memberMapper.selectMemberByMobile(mobile);
         SysUser sysUser;
         //获取用户为空则新建
-        if(member == null){
+        if (member == null) {
             //创建新用户
             String memberId = IdUtils.simpleUUID();
             sysUser = new SysUser();
@@ -240,12 +239,12 @@
             member.setCreateTime(new Date());
             member.setMobile(mobile);
             initMemberTotal(memberId);
-        }else{
+        } else {
             sysUser = sysUserService.getSysUser(member.getUserId()).getData();
         }
         member.setWxUnionid(appUserRegisterDto.getWxUnionid());
         member.setMiniOpenid(appUserRegisterDto.getMiniOpenid());
-        log.info("member-----------------"+member.toString());
+        log.info("member-----------------" + member.toString());
         this.saveOrUpdate(member);
         appUserRegisterVo.setMobile(mobile);
         appUserRegisterVo.setNickName(member.getNickName());
@@ -257,19 +256,19 @@
 
     public static String getAccessTokenByWX() throws Exception {
         String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential";
-        Map<String, String> headers  = new HashMap<>(8);
+        Map<String, String> headers = new HashMap<>(8);
         HttpResponse response = HttpUtils.doGet(host, "", "GET", headers, null);
         return EntityUtils.toString(response.getEntity());
     }
 
-    public static String getMobileByWX(String accessToken,  String code) throws Exception {
+    public static String getMobileByWX(String accessToken, String code) throws Exception {
         String method = "POST";
         Map<String, String> headers = new HashMap<>(16);
         headers.put("Content-Type", "application/json");
         headers.put("Accept", "application/json");
         Map<String, String> querys = new HashMap<>(16);
         Map<String, String> bodys = new HashMap<>(16);
-        querys.put("access_token", accessToken );
+        querys.put("access_token", accessToken);
         bodys.put("code", code);
         String body = JSONObject.toJSONString(bodys);
         String host = "https://api.weixin.qq.com/wxa/business/getuserphonenumber";
@@ -279,11 +278,12 @@
 
     /**
      * 获取用户信息
+     *
      * @param userId
      * @return
      */
     @Override
-    public AppUserInfoVo getAppUserInfo(Long userId){
+    public AppUserInfoVo getAppUserInfo(Long userId) {
         AppUserInfoVo appUserInfoVo = new AppUserInfoVo();
         Member member = this.getByUserId(userId);
         appUserInfoVo.setUserId(userId);
@@ -291,11 +291,11 @@
         appUserInfoVo.setNickName(member.getNickName());
         appUserInfoVo.setRealName(member.getRealName());
         appUserInfoVo.setPhonenumber(member.getMobile());
-        if(member.getRelationShopId()!=null&&member.getBindingFlag()==1){
+        if (member.getRelationShopId() != null && member.getBindingFlag() == 1) {
             appUserInfoVo.setRelationShopId(member.getRelationShopId());
             Shop shop = shopService.getShop(member.getRelationShopId()).getData();
             appUserInfoVo.setShopName(shop.getShopName());
-            appUserInfoVo.setShopAddress(shop.getShopAreaName()+shop.getShopAddress());
+            appUserInfoVo.setShopAddress(shop.getShopAreaName() + shop.getShopAddress());
         }
         appUserInfoVo.setBirthday(member.getBirthday());
         appUserInfoVo.setGender(member.getGender());
@@ -308,15 +308,16 @@
 
     /**
      * 修改用户信息
+     *
      * @param appEditUserDto
      */
     @Override
-    public void editAppUserInfo(AppEditUserDto appEditUserDto){
+    public void editAppUserInfo(AppEditUserDto appEditUserDto) {
         //修改类型1.昵称2.头像3.性别4.生日
         Integer editType = appEditUserDto.getEditType();
         String editValue = appEditUserDto.getEditValue();
         Member member = this.getByUserId(appEditUserDto.getUserId());
-        switch (editType){
+        switch (editType) {
             case 1:
                 member.setNickName(editValue);
                 member.setUpdateTime(new Date());
@@ -345,12 +346,23 @@
 
     /**
      * 分页获取会员信息
+     *
      * @param merMemberPageDto
      * @return
      */
     @Override
-    public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto){
-        List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page,merMemberPageDto);
+    public List<MerMemberPageVo> pageMerMember(Page page, MerMemberPageDto merMemberPageDto) {
+        if (StringUtils.isNotBlank(merMemberPageDto.getMemberActiveness())) {
+            Activeness activeness = remoteConfigService.getActivenessByName(merMemberPageDto.getMemberActiveness()).getData();
+            if (activeness != null) {
+                Date nowDay = DateUtils.getNowDate();
+                String actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
+                String actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
+                merMemberPageDto.setActStartDate(actStartDate);
+                merMemberPageDto.setActEndDate(actEndDate);
+            }
+        }
+        List<MerMemberPageVo> merMemberPageVoList = memberMapper.pageMerMember(page, merMemberPageDto);
         return merMemberPageVoList;
     }
 
@@ -362,41 +374,71 @@
      * @version 1.0
      */
     @Override
-    public MerMemberInfoVo getMerMemberInfo(Long userId){
+    public MerMemberInfoVo getMerMemberInfo(MerBaseGetDto merBaseGetDto) {
+        // 将id转换为Long类型
+        Long userId = Long.valueOf(merBaseGetDto.getId());
+        // 创建MerMemberInfoVo对象
         MerMemberInfoVo merMemberInfoVo = new MerMemberInfoVo();
+        // 根据userId获取Member对象
         Member member = this.getByUserId(userId);
+        // 设置MerMemberInfoVo对象的属性值
         merMemberInfoVo.setUserId(userId);
         merMemberInfoVo.setNickName(member.getNickName());
         merMemberInfoVo.setPhonenumber(member.getMobile());
         merMemberInfoVo.setAvatar(member.getAvatar());
         merMemberInfoVo.setBirthday(member.getBirthday());
         merMemberInfoVo.setUserTags(member.getUserTags());
-        //未完成
-
+        merMemberInfoVo.setMemberType(member.getGoodsType());
+        // 根据memberId获取MemberTotal对象
+        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
+        // 设置MerMemberInfoVo对象的属性值
+        merMemberInfoVo.setSurpNumber(memberTotal.getUseableServiceCount());
+        merMemberInfoVo.setUserNumber(memberTotal.getUsedServiceCount());
+        merMemberInfoVo.setPayMoney(memberTotal.getTotalPayMoney());
+        // 创建MerBaseDto对象
+        MerBaseDto merBaseDto = new MerBaseDto();
+        // 设置MerBaseDto对象的属性值
+        merBaseDto.setShopId(merBaseGetDto.getShopId());
+        merBaseDto.setUserId(userId);
+        // 获取未支付订单金额
+        BigDecimal unpaidMoney = remoteOrderService.getMemberUnpaidOrder(merBaseDto).getData();
+        merMemberInfoVo.setUnpaidMoney(unpaidMoney);
+        // 获取最近的会员任务
+        MemberTaskSimpleVo memberTaskSimpleVo = remoteShopService.getLastMemberTask(userId).getData();
+        if (memberTaskSimpleVo != null) {
+            merMemberInfoVo.setLastTaskContent(memberTaskSimpleVo.getTaskContent());
+            merMemberInfoVo.setLastTaskTime(memberTaskSimpleVo.getTaskDate());
+        }
+        // 设置MerMemberInfoVo对象的属性值
+        merMemberInfoVo.setNextTaskTime(memberTotal.getNextTaskTime());
+        merMemberInfoVo.setLastPayTime(memberTotal.getLastPayTime());
+        // 返回MerMemberInfoVo对象
         return merMemberInfoVo;
     }
 
     /**
      * 分页获取收银用户列表
+     *
      * @param page
      * @param merCashMemberPageDto
      * @return
      */
     @Override
-    public List<MerCashMemberPageVo> pageMerCashMember(Page page, MerCashMemberPageDto merCashMemberPageDto){
+    public List<MerCashMemberPageVo> pageMerCashMember(Page page, MerCashMemberPageDto merCashMemberPageDto) {
 
-        List<MerCashMemberPageVo> merCashMemberPageVos = memberMapper.pageMerCashMember(page,merCashMemberPageDto);
+        List<MerCashMemberPageVo> merCashMemberPageVos = memberMapper.pageMerCashMember(page, merCashMemberPageDto);
         return merCashMemberPageVos;
     }
 
     /**
      * 更新会员绑定商户
+     *
      * @param appMemberBindingDto
      */
     @Override
-    public void updateMemberBinding(AppMemberBindingDto appMemberBindingDto){
+    public void updateMemberBinding(AppMemberBindingDto appMemberBindingDto) {
         Member member = this.getByUserId(appMemberBindingDto.getUserId());
-        if(member.getBindingFlag()==0){
+        if (member.getBindingFlag() == 0) {
             member.setBindingTime(new Date());
         }
         member.setBindingFlag(appMemberBindingDto.getBindingFlag());
@@ -407,48 +449,56 @@
 
     /**
      * 获取会员基础档案
+     *
      * @param userId
      * @return
      */
     @Override
-    public MerMemberBasicFileVo getMerMemberBasicFile(Long userId){
+    public MerMemberBasicFileVo getMerMemberBasicFile(Long userId) {
         MerMemberBasicFileVo merMemberBasicFileVo = new MerMemberBasicFileVo();
         Member member = this.getByUserId(userId);
         BeanUtils.copyProperties(member, merMemberBasicFileVo);
         merMemberBasicFileVo.setNickName(member.getNickName());
         merMemberBasicFileVo.setPhonenumber(member.getMobile());
         merMemberBasicFileVo.setCreateTime(member.getCreateTime());
-        List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId);
-        List<String> valueList = memberNurseList.stream().map(k->k.getNurse()).collect(Collectors.toList());
-        merMemberBasicFileVo.setMemberNurse(valueList);
+        /*List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId);
+        List<String> valueList = memberNurseList.stream().map(k -> k.getNurse()).collect(Collectors.toList());*/
+        String memberNurse = member.getMemberNurse();
+        if(StringUtils.isNotBlank(memberNurse)){
+            List<String> valueList = Arrays.asList(memberNurse.split(","));
+            merMemberBasicFileVo.setMemberNurse(valueList);
+        }
+        List<MemberArchiveVo> achiveList = memberArchiveService.listMerVoByUserId(userId);
+        merMemberBasicFileVo.setAchiveList(achiveList);
         return merMemberBasicFileVo;
     }
 
     /**
      * 获取会员标签
+     *
      * @param userId
      * @return
      */
     @Override
-    public List<MerMemberTagVo> getMerMemberTags(Long userId){
+    public List<MerMemberTagVo> getMerMemberTags(Long userId) {
         Member member = this.getByUserId(userId);
         String userTags = member.getUserTags();
         String[] userTagsArr = null;
-        if(StringUtils.isNotBlank(userTags)){
+        if (StringUtils.isNotBlank(userTags)) {
             userTagsArr = userTags.split(",");
         }
         List<SysTag> sysTagsList = remoteConfigService.listSysTag(1).getData();
         List<MerMemberTagVo> merMemberTagVoList = new ArrayList<>();
         MerMemberTagVo merMemberTagVo;
         String tagName;
-        if(sysTagsList!=null&&!sysTagsList.isEmpty()){
-            for(SysTag sysTag : sysTagsList){
+        if (sysTagsList != null && !sysTagsList.isEmpty()) {
+            for (SysTag sysTag : sysTagsList) {
                 merMemberTagVo = new MerMemberTagVo();
                 tagName = sysTag.getTagName();
                 merMemberTagVo.setTagName(tagName);
-                if(userTagsArr!=null &&  ArrayUtils.contains(userTagsArr, tagName)){
+                if (userTagsArr != null && ArrayUtils.contains(userTagsArr, tagName)) {
                     merMemberTagVo.setSelectFlag(1);
-                }else{
+                } else {
                     merMemberTagVo.setSelectFlag(0);
                 }
                 merMemberTagVoList.add(merMemberTagVo);
@@ -459,15 +509,16 @@
 
     /**
      * 编辑会员标签
+     *
      * @param merMemberTagEditDto
      */
     @Override
-    public void editMerMemberTags(MerMemberTagEditDto merMemberTagEditDto){
+    public void editMerMemberTags(MerMemberTagEditDto merMemberTagEditDto) {
         Member member = this.getByUserId(merMemberTagEditDto.getMemberUserId());
         List<String> userTags = merMemberTagEditDto.getUserTags();
         StringJoiner sj = new StringJoiner(",");
-        if(userTags!=null&&!userTags.isEmpty()){
-            for(String str : userTags){
+        if (userTags != null && !userTags.isEmpty()) {
+            for (String str : userTags) {
                 sj.add(str);
             }
         }
@@ -478,17 +529,21 @@
 
     /**
      * 添加会员
+     *
      * @param merMemberAddDto
      */
     @Override
-    public void addMerMember(MerMemberAddDto merMemberAddDto){
-        String phonenumber = merMemberAddDto.getPhonenumber();
-        Member oldMember = this.getByMobile(phonenumber);
-        if(oldMember!=null){
+    public void addMerMember(MerMemberAddDto merMemberAddDto) {
+        String phoneNumber = merMemberAddDto.getPhonenumber();
+        Member oldMember = this.getByMobile(phoneNumber);
+        // Check if the member already exists
+        if (oldMember != null) {
             throw new ServiceException(AppErrorConstant.MOBILE_USER_DOUBLE);
         }
-        SysUser sysUser = sysUserService.getSysUserByMobile(phonenumber).getData();
-        if(sysUser==null){
+        // Get the sysUser by mobile number
+        SysUser sysUser = sysUserService.getSysUserByMobile(phoneNumber).getData();
+        // If sysUser does not exist, create a new one
+        if (sysUser == null) {
             String memberId = IdUtils.simpleUUID();
             sysUser = new SysUser();
             sysUser.setUserName(memberId);
@@ -497,8 +552,9 @@
             sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
             String password = "hongruitang";
             sysUser.setPassword(SecurityUtils.encryptPassword(password));
-            log.debug("sysUser"+sysUser.toString());
+            log.debug("sysUser" + sysUser.toString());
             sysUser = sysUserService.registerUser(sysUser).getData();
+            // Create a new member
             Member member = new Member();
             String memberNo = createMemberNo();
             member.setMemberNo(memberNo);
@@ -508,7 +564,7 @@
             member.setNickName(merMemberAddDto.getNickName());
             member.setRealName(merMemberAddDto.getNickName());
             member.setGender(merMemberAddDto.getGender());
-            member.setMobile(phonenumber);
+            member.setMobile(phoneNumber);
             member.setReferrer(merMemberAddDto.getReferrer());
             member.setBirthday(merMemberAddDto.getBirthday());
             member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
@@ -517,29 +573,29 @@
             member.setMiniOpenid(null);
             member.setBindingFlag(1);
             member.setBindingTime(new Date());
+            // Get shop information and set it to the member
             Shop shop = remoteShopService.getShop(merMemberAddDto.getShopId()).getData();
             member.setRelationShopName(shop.getShopName());
             member.setCustomerSource("商户添加");
             member.setCreateTime(new Date());
-            log.info("member-----------------"+member.toString());
+            // Save the member and initialize member total
             this.saveOrUpdate(member);
             initMemberTotal(memberId);
         }
-
-
     }
 
     /**
      * 编辑会员
+     *
      * @param merMemberEditDto
      */
     @Override
-    public void editMerMember(MerMemberEditDto merMemberEditDto){
+    public void editMerMember(MerMemberEditDto merMemberEditDto) {
 
         Member member = this.getByUserId(merMemberEditDto.getEditUserId());
-        if(!member.getMobile().equals(merMemberEditDto.getPhonenumber())){
+        if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) {
             Member memberOld = getByMobile(merMemberEditDto.getPhonenumber());
-            if(memberOld!=null){
+            if (memberOld != null) {
                 throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE);
             }
         }
@@ -552,7 +608,7 @@
         member.setBirthday(merMemberEditDto.getBirthday());
         member.setUpdateUserId(merMemberEditDto.getUserId());
         member.setUpdateTime(new Date());
-        log.info("member-----------------"+member.toString());
+        log.info("member-----------------" + member.toString());
         this.saveOrUpdate(member);
         SysUser sysUser = new SysUser();
         sysUser.setUserId(merMemberEditDto.getEditUserId());
@@ -561,12 +617,11 @@
     }
 
     /**
-     *
      * @param mobile
      * @return
      */
     @Override
-    public Member getByMobile(String mobile){
+    public Member getByMobile(String mobile) {
         LambdaQueryWrapper<Member> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(Member::getDelFlag, 0).eq(Member::getMobile, mobile);
         Member member = this.getOne(queryWrapper);
@@ -575,27 +630,28 @@
 
     /**
      * 更新用户商品类型
+     *
      * @param appMemberGoodsTypeDto
      */
     @Override
-    public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto){
+    public void updateMemberGoodsType(AppMemberGoodsTypeDto appMemberGoodsTypeDto) {
         Member member = this.getByUserId(appMemberGoodsTypeDto.getUserId());
         HashSet<String> goodsTypeSet = appMemberGoodsTypeDto.getGoodsTypeSet();
-        if(member!=null){
+        if (member != null) {
             String goodsType = member.getGoodsType();
             Boolean change = false;
-            for(String str : goodsTypeSet){
-                if(goodsType != null){
-                    if(!goodsType.contains(str)){
+            for (String str : goodsTypeSet) {
+                if (goodsType != null) {
+                    if (!goodsType.contains(str)) {
                         goodsType = goodsType + "," + str;
                         change = true;
                     }
-                }else{
+                } else {
                     goodsType = str;
                     change = true;
                 }
             }
-            if(change){
+            if (change) {
                 member.setGoodsType(goodsType);
                 this.saveOrUpdate(member);
             }
@@ -605,10 +661,11 @@
 
     /**
      * 订单创建新用户
+     *
      * @param member
      */
     @Override
-    public void createNewMember(Member member){
+    public void createNewMember(Member member) {
         String memberNo = createMemberNo();
         member.setMemberNo(memberNo);
         member.setDelFlag(0);
@@ -622,10 +679,11 @@
 
     /**
      * 生成会员统计
+     *
      * @param memberId
      * @return
      */
-    private void initMemberTotal(String memberId){
+    private void initMemberTotal(String memberId) {
         MemberTotal memberTotal = new MemberTotal();
         memberTotal.setMemberId(memberId);
         memberTotal.setDelFlag(0);
@@ -648,65 +706,67 @@
 
     /**
      * 生成会员编号
+     *
      * @return
      */
-    private String createMemberNo(){
+    private String createMemberNo() {
         int memberTotal = memberMapper.selectCount(new LambdaQueryWrapper<Member>());
-        String memberNo = CodeFactoryUtil.getMemberNo(Long.valueOf(memberTotal+1));
+        String memberNo = CodeFactoryUtil.getMemberNo(Long.valueOf(memberTotal + 1));
         return memberNo;
     }
 
 
     /**
      * 平台分页获取会员列表
+     *
      * @param page
      * @param merMemberPageDto
      * @return
      */
     @Override
-    public List<MgtMemberPageVo> pageMgtMember(Page page,MgtMemberPageDto merMemberPageDto){
+    public List<MgtMemberPageVo> pageMgtMember(Page page, MgtMemberPageDto merMemberPageDto) {
         List<Activeness> activenessList = remoteConfigService.listActiveness().getData();
         Date nowDay = new Date();
-        if(merMemberPageDto.getActivenessId()!=null){
+        if (merMemberPageDto.getActivenessId() != null) {
             //处理活跃度筛选
             activenessList.stream()
                     .filter(activeness -> activeness.getActivenessId().equals(merMemberPageDto.getActivenessId()))
                     .findFirst()
                     .ifPresent(activeness -> {
-                        merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(nowDay, activeness.getEndDay())));
-                        merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(nowDay, activeness.getStartDay())));
+                        merMemberPageDto.setActStartDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay())));
+                        merMemberPageDto.setActEndDate(DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay())));
                     });
         }
         //处理标签为正则表达
-        if(StringUtils.isNotBlank(merMemberPageDto.getMemberTags())){
-            merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",","|"));
+        if (StringUtils.isNotBlank(merMemberPageDto.getMemberTags())) {
+            merMemberPageDto.setMemberTags(merMemberPageDto.getMemberTags().replace(",", "|"));
         }
         //查询获取结果列表
         List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
         //处理活跃度返回
-        if(memberPageVoList!=null&&!memberPageVoList.isEmpty()){
-            if(activenessList!=null&&!activenessList.isEmpty()){
+        if (memberPageVoList != null && !memberPageVoList.isEmpty()) {
+            if (activenessList != null && !activenessList.isEmpty()) {
                 //生成活跃度时间段列表
                 List<MgtActivenessJudgeVo> mgtActivenessJudgeVoList = new ArrayList<>();
                 MgtActivenessJudgeVo mgtActivenessJudgeVo;
-                for(Activeness activeness : activenessList){
+                for (Activeness activeness : activenessList) {
                     mgtActivenessJudgeVo = new MgtActivenessJudgeVo();
-                    mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(),activeness.getEndDay()));
-                    mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(),activeness.getStartDay()-1));
+                    mgtActivenessJudgeVo.setStartDay(DateUtils.addDays(new Date(), activeness.getEndDay()));
+                    mgtActivenessJudgeVo.setEndDay(DateUtils.addDays(new Date(), activeness.getStartDay() - 1));
                     mgtActivenessJudgeVo.setActivenessName(activeness.getActivenessName());
                 }
                 //活跃度赋值
                 Date lastPayTime;
-                for(MgtMemberPageVo mgtMemberPageVo : memberPageVoList){
+                for (MgtMemberPageVo mgtMemberPageVo : memberPageVoList) {
                     lastPayTime = mgtMemberPageVo.getLastPayTime();
                     StringJoiner sj = new StringJoiner(",");
-                    if(lastPayTime!=null){
-                        for(MgtActivenessJudgeVo entity: mgtActivenessJudgeVoList){
-                            if(lastPayTime.compareTo(entity.getStartDay())>=0&&lastPayTime.compareTo(entity.getEndDay())<=0){
+                    if (lastPayTime != null) {
+                        for (MgtActivenessJudgeVo entity : mgtActivenessJudgeVoList) {
+                            if (lastPayTime.compareTo(entity.getStartDay()) >= 0 && lastPayTime.compareTo(entity.getEndDay()) <= 0) {
                                 sj.add(entity.getActivenessName());
                             }
                         }
-                        if(sj.length()>0){
+                        if (sj.length() > 0) {
                             mgtMemberPageVo.setActiveness(sj.toString());
                         }
                     }
@@ -719,15 +779,16 @@
 
     /**
      * 修改会员关联商户
+     *
      * @param mgtMemberRelEditDto
      */
     @Override
-    public void editMemberRelationShop(MgtMemberRelEditDto mgtMemberRelEditDto){
-        if(StringUtils.isNotBlank(mgtMemberRelEditDto.getMemberUserIds())){
+    public void editMemberRelationShop(MgtMemberRelEditDto mgtMemberRelEditDto) {
+        if (StringUtils.isNotBlank(mgtMemberRelEditDto.getMemberUserIds())) {
             Shop shop = shopService.getShop(mgtMemberRelEditDto.getShopId()).getData();
             String memberUserIds = mgtMemberRelEditDto.getMemberUserIds();
             String[] memberUserIdArr = memberUserIds.split(",");
-            for(String str : memberUserIdArr){
+            for (String str : memberUserIdArr) {
                 Member member = this.getByUserId(Long.valueOf(str));
                 member.setRelationShopId(shop.getShopId());
                 member.setRelationShopName(shop.getShopName());
@@ -743,14 +804,15 @@
 
     /**
      * 删除会员关联商户
+     *
      * @param mgtMemberRelDelDto
      */
     @Override
-    public void deleteMemberRelationShop(MgtMemberRelDelDto mgtMemberRelDelDto){
-        if(StringUtils.isNotBlank(mgtMemberRelDelDto.getMemberUserIds())) {
+    public void deleteMemberRelationShop(MgtMemberRelDelDto mgtMemberRelDelDto) {
+        if (StringUtils.isNotBlank(mgtMemberRelDelDto.getMemberUserIds())) {
             String memberUserIds = mgtMemberRelDelDto.getMemberUserIds();
             String[] memberUserIdArr = memberUserIds.split(",");
-            for(String str : memberUserIdArr) {
+            for (String str : memberUserIdArr) {
                 Member member = this.getByUserId(Long.valueOf(str));
                 member.setBindingFlag(0);
                 member.setUpdateTime(new Date());
@@ -762,15 +824,16 @@
 
     /**
      * 修改会员积分
+     *
      * @param mgtMemberIntEditDto
      */
     @Override
-    public void editMemberIntegral(MgtMemberIntEditDto mgtMemberIntEditDto){
-        if(StringUtils.isNotBlank(mgtMemberIntEditDto.getMemberUserIds())) {
+    public void editMemberIntegral(MgtMemberIntEditDto mgtMemberIntEditDto) {
+        if (StringUtils.isNotBlank(mgtMemberIntEditDto.getMemberUserIds())) {
             String memberUserIds = mgtMemberIntEditDto.getMemberUserIds();
             String[] memberUserIdArr = memberUserIds.split(",");
             MemberIntegralChangeDto memberIntegralChangeDto;
-            for(String str : memberUserIdArr) {
+            for (String str : memberUserIdArr) {
                 memberIntegralChangeDto = new MemberIntegralChangeDto();
                 Member member = this.getByUserId(Long.valueOf(str));
                 memberIntegralChangeDto.setUserId(Long.valueOf(str));
@@ -785,13 +848,13 @@
     }
 
 
-
     /**
      * 会员积分变动
+     *
      * @param memberIntegralChangeDto
      */
     @Override
-    public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto){
+    public void memberIntegralChange(MemberIntegralChangeDto memberIntegralChangeDto) {
         MemberTotal memberTotal = memberTotalService.getById(memberIntegralChangeDto.getMemberId());
         Integer recordType = memberIntegralChangeDto.getRecordType();
         Integer changeType = memberIntegralChangeDto.getChangeType();
@@ -800,15 +863,15 @@
         Integer usedIntegral = memberTotal.getUsedIntegral();
         Integer useableIntegral = memberTotal.getUseableIntegral();
         //变动统计
-        if(changeType==1){
+        if (changeType == 1) {
             totalIntegral = totalIntegral + integer;
             useableIntegral = useableIntegral + integer;
             memberTotal.setTotalIntegral(totalIntegral);
             memberTotal.setUseableIntegral(useableIntegral);
-        }else if(changeType==2){
+        } else if (changeType == 2) {
             usedIntegral = usedIntegral + integer;
             useableIntegral = useableIntegral - integer;
-            if(useableIntegral<0){
+            if (useableIntegral < 0) {
                 throw new ServiceException(AppErrorConstant.INTEGRAL_USE_FAILED);
             }
             memberTotal.setTotalIntegral(totalIntegral);
@@ -821,16 +884,16 @@
         integralRecord.setDelFlag(0);
         integralRecord.setUserId(memberIntegralChangeDto.getUserId());
         integralRecord.setChangeType(recordType);
-        if(changeType==1){
+        if (changeType == 1) {
             integralRecord.setChangeIntegral(integer);
-        }else if(changeType==2){
-            integralRecord.setChangeIntegral( 0-integer);
+        } else if (changeType == 2) {
+            integralRecord.setChangeIntegral(0 - integer);
         }
         integralRecord.setSurpIntegral(useableIntegral);
         integralRecord.setCreateTime(new Date());
         integralRecord.setOrderId(memberIntegralChangeDto.getOrderId());
         integralRecord.setOrderNo(memberIntegralChangeDto.getOrderNo());
-        switch (recordType){
+        switch (recordType) {
             case 1:
                 integralRecord.setChangeReason("购物赠送");
                 break;
@@ -848,16 +911,17 @@
 
     /**
      * 平台获取会员信息
+     *
      * @param userId
      * @return
      */
     @Override
-    public MgtMemberGetVo getMgtMemberInfo(Long userId){
+    public MgtMemberGetVo getMgtMemberInfo(Long userId) {
         MgtMemberGetVo mgtMemberGetVo = new MgtMemberGetVo();
         Member member = this.getByUserId(userId);
         MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
-        List<MemberArchiveVo> memberArchiveVoList = memberArchiveService.listVoByUserId(member.getUserId());
-        if(memberArchiveVoList!=null&&!memberArchiveVoList.isEmpty()){
+        List<MemberArchiveVo> memberArchiveVoList = memberArchiveService.listMgtVoByUserId(member.getUserId());
+        if (memberArchiveVoList != null && !memberArchiveVoList.isEmpty()) {
             //去掉未完善信息
             memberArchiveVoList.removeIf(o -> Objects.isNull(o.getFieldValue()));
         }
@@ -867,7 +931,7 @@
         mgtMemberGetVo.setRealName(member.getRealName());
         mgtMemberGetVo.setNickName(member.getNickName());
         mgtMemberGetVo.setMobile(member.getMobile());
-        mgtMemberGetVo.setGender(member.getGender()==0 ? "男" : member.getGender()==1 ? "女" : null);
+        mgtMemberGetVo.setGender(member.getGender() == 0 ? "男" : member.getGender() == 1 ? "女" : null);
         mgtMemberGetVo.setBirthday(member.getBirthday());
         mgtMemberGetVo.setBelongDistrict(member.getBelongDistrict());
         mgtMemberGetVo.setCreateTime(member.getCreateTime());
@@ -885,54 +949,54 @@
     }
 
     /**
-     * @description  删除标签
-     * @author  jqs
-     * @date    2023/6/8 15:18
      * @param memberTag
-     * @return  void
+     * @return void
+     * @description 删除标签
+     * @author jqs
+     * @date 2023/6/8 15:18
      */
     @Override
-    public void deleteMemberTag(String memberTag){
+    public void deleteMemberTag(String memberTag) {
         memberMapper.deleteMemberTag(memberTag);
     }
 
     /**
-     * @description  通过发送类型获取userId
-     * @author  jqs
-     * @date    2023/6/13 17:53
      * @param sendType
-     * @return  List<Long>
+     * @return List<Long>
+     * @description 通过发送类型获取userId
+     * @author jqs
+     * @date 2023/6/13 17:53
      */
     @Override
-    public List<Long> listIdBySendType(Integer sendType){
+    public List<Long> listIdBySendType(Integer sendType) {
         //1.手动领取2.全部用户3.会员用户4非会员用户5自定义
         return memberMapper.listIdBySendType(sendType);
     }
 
     /**
-     * @description  通过ids获取用户简易返回
-     * @author  jqs
-     * @date    2023/6/16 11:06
      * @param userIds
-     * @return  List<MgtSimpleMemberVo>
+     * @return List<MgtSimpleMemberVo>
+     * @description 通过ids获取用户简易返回
+     * @author jqs
+     * @date 2023/6/16 11:06
      */
     @Override
-    public List<MgtSimpleMemberVo> listSimpleVoByIds(String userIds){
+    public List<MgtSimpleMemberVo> listSimpleVoByIds(String userIds) {
         return memberMapper.listSimpleVoByIds(userIds);
     }
 
     /**
-     * @description
-     * @author  jqs
-     * @date    2023/6/16 12:41
      * @param mgtUserIdByKeywordDto
-     * @return  MgtUserIdByKeywordVo
+     * @return MgtUserIdByKeywordVo
+     * @description
+     * @author jqs
+     * @date 2023/6/16 12:41
      */
     @Override
-    public MgtUserIdByKeywordVo getUserIdByKeyword(MgtUserIdByKeywordDto mgtUserIdByKeywordDto){
+    public MgtUserIdByKeywordVo getUserIdByKeyword(MgtUserIdByKeywordDto mgtUserIdByKeywordDto) {
         MgtUserIdByKeywordVo mgtUserIdByKeywordVo = new MgtUserIdByKeywordVo();
         List<Long> userIdList = memberMapper.getUserIdByKeyword(mgtUserIdByKeywordDto);
-        if(userIdList!=null&&!userIdList.isEmpty()){
+        if (userIdList != null && !userIdList.isEmpty()) {
             String userIdStr = userIdList.stream()
                     .map(Object::toString)
                     .collect(Collectors.joining(","));
@@ -942,14 +1006,14 @@
     }
 
     /**
-     * @description boardMemberTotal
      * @param
      * @return MgtBulletinBoardVo
+     * @description boardMemberTotal
      * @author jqs34
      * @date 2023/6/18 16:45
      */
     @Override
-    public MgtBulletinBoardVo boardMemberTotal(){
+    public MgtBulletinBoardVo boardMemberTotal() {
         MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo();
         mgtBulletinBoardVo.setMemberTotal(memberMapper.memberTotal());
         mgtBulletinBoardVo.setMemberToday(memberMapper.memberToday());
@@ -957,14 +1021,14 @@
     }
 
     /**
-     * @description  会员人数统计
-     * @author  jqs
-     * @date    2023/6/19 15:26
      * @param
-     * @return  MgtTotalMemberTotalVo
+     * @return MgtTotalMemberTotalVo
+     * @description 会员人数统计
+     * @author jqs
+     * @date 2023/6/19 15:26
      */
     @Override
-    public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto){
+    public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto) {
         Date nowDay = DateUtils.getNowDate();
         // 获取店铺ID
         Long shopId = mgtBaseShopDto.getShopId();
@@ -979,13 +1043,13 @@
         mgtTotalMemberTotalVo.setAgeKey(ageKey);
         mgtTotalMemberTotalVo.setAgeValue(ageValue);
         // 获取不同护理类型的会员数
-        List<MgtMapTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto);
+        List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto);
         if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
             nurseTotalVos = listRemoveNull(nurseTotalVos);
             mgtTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
         }
         // 获取不同商品类型的会员数
-        List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto);
+        List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getTotalMemberTotalGoodsType(mgtBaseShopDto);
         if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
             goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
             mgtTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
@@ -997,29 +1061,29 @@
             String actStartDate;
             String actEndDate;
             Integer count;
-            List<MgtMapTotalVo> mgtMapTotalVoList = new ArrayList<>();
-            MgtMapTotalVo mgtMapTotalVo;
+            List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>();
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
             for (int i = 0; i < activenessList.size(); i++) {
                 activeness = activenessList.get(i);
                 actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                 actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                 count = memberMapper.getTotalMemberTotalActiveness(shopId, actStartDate, actEndDate);
-                mgtMapTotalVo = new MgtMapTotalVo();
-                mgtMapTotalVo.setMapKey(activeness.getActivenessName());
-                mgtMapTotalVo.setMapValue(count);
-                mgtMapTotalVoList.add(mgtMapTotalVo);
+                MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
+                MgtMapIntTotalVo.setMapValue(count);
+                MgtMapIntTotalVoList.add(MgtMapIntTotalVo);
             }
-            mgtTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList);
+            mgtTotalMemberTotalVo.setActivenessList(MgtMapIntTotalVoList);
         }
         //获取会员消费排名
-        List<MgtMapTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
+        List<MgtMapIntTotalVo> memberPayList = memberMapper.getTotalMemberRankPay(mgtBaseShopDto);
         if (memberPayList != null && memberPayList.size() > 0) {
             memberPayList = listRemoveNull(memberPayList);
             mgtTotalMemberTotalVo.setMemberPayList(memberPayList);
         }
         //获取来源渠道排名
-        List<MgtMapTotalVo> customerSourceList = memberMapper.getTotalMemberRankCustomerSource(mgtBaseShopDto);
+        List<MgtMapIntTotalVo> customerSourceList = memberMapper.getTotalMemberRankCustomerSource(mgtBaseShopDto);
         if (customerSourceList != null && customerSourceList.size() > 0) {
             customerSourceList = listRemoveNull(customerSourceList);
             mgtTotalMemberTotalVo.setCustomerSourceList(customerSourceList);
@@ -1030,36 +1094,36 @@
 
 
     /**
-     * @description
-     * @author  jqs
-     * @date    2023/6/20 11:42
      * @param mgtActivityAgeDto
-     * @return  List<Long>
+     * @return List<Long>
+     * @description
+     * @author jqs
+     * @date 2023/6/20 11:42
      */
     @Override
-    public List<Long> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto){
+    public List<Long> listUserIdByAge(MgtActivityAgeDto mgtActivityAgeDto) {
         List<Long> userIdList = memberMapper.listUserIdByAge(mgtActivityAgeDto);
         return userIdList;
     }
 
     /**
-     * @description  会员人数统计
-     * @author  jqs
-     * @date    2023/6/21 10:59
      * @param mgtBasePlatformDto
-     * @return  MgtPlTotalMemberTotalVo
+     * @return MgtPlTotalMemberTotalVo
+     * @description 会员人数统计
+     * @author jqs
+     * @date 2023/6/21 10:59
      */
     @Override
-    public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto){
+    public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
         Date nowDay = DateUtils.getNowDate();
         //如果区域代码不为null获取对应的商户id
-        if(StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode())||StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())){
+        if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
             MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
             mgtShopIdByCodeDto.setShopProvinceCode(mgtBasePlatformDto.getShopProvinceCode());
             mgtShopIdByCodeDto.setShopCityCode(mgtBasePlatformDto.getShopCityCode());
             mgtShopIdByCodeDto.setShopAreaCode(mgtBasePlatformDto.getShopAreaCode());
             MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData();
-            if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){
+            if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) {
                 List<Long> list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(","))
                         .map(Long::valueOf)
                         .collect(Collectors.toList());
@@ -1069,10 +1133,10 @@
         //获取基础统计
         MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto);
         MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto);
-        if(mgtAgeTotalVo!=null){
+        if (mgtAgeTotalVo != null) {
             plTotalMemberTotalVo.setManTotal(mgtAgeTotalVo.getManTotal());
             plTotalMemberTotalVo.setWomenTotal(mgtAgeTotalVo.getWomenTotal());
-        }else{
+        } else {
             plTotalMemberTotalVo.setManTotal(0);
             plTotalMemberTotalVo.setWomenTotal(0);
         }
@@ -1085,13 +1149,13 @@
         plTotalMemberTotalVo.setAgeKey(ageKey);
         plTotalMemberTotalVo.setAgeValue(ageValue);
         // 获取不同调理类型的会员数
-        List<MgtMapTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> nurseTotalVos = memberMapper.getPlTotalMemberTotalNurse(mgtBasePlatformDto);
         if (nurseTotalVos != null && nurseTotalVos.size() > 0) {
             nurseTotalVos = listRemoveNull(nurseTotalVos);
             plTotalMemberTotalVo.setNurseTotalVos(nurseTotalVos);
         }
         // 获取不同商品类型的会员数
-        List<MgtMapTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> goodsTypeTotalVos = memberMapper.getPlTotalMemberTotalGoodsType(mgtBasePlatformDto);
         if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) {
             goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos);
             plTotalMemberTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos);
@@ -1104,42 +1168,42 @@
             String actStartDate;
             String actEndDate;
             Integer count;
-            List<MgtMapTotalVo> mgtMapTotalVoList = new ArrayList<>();
-            MgtMapTotalVo mgtMapTotalVo;
+            List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>();
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组
             for (int i = 0; i < activenessList.size(); i++) {
                 activeness = activenessList.get(i);
                 actStartDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getEndDay()));
                 actEndDate = DateUtils.parseDateToStr("yyyy-MM-dd", DateUtils.addDays(nowDay, activeness.getStartDay()));
                 count = memberMapper.getPlTotalMemberTotalActiveness(shopIdList, actStartDate, actEndDate);
-                if(StringUtils.isNotBlank(activeness.getActivenessName())){
-                    mgtMapTotalVo = new MgtMapTotalVo();
-                    mgtMapTotalVo.setMapKey(activeness.getActivenessName());
-                    mgtMapTotalVo.setMapValue(count);
-                    mgtMapTotalVoList.add(mgtMapTotalVo);
+                if (StringUtils.isNotBlank(activeness.getActivenessName())) {
+                    MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    MgtMapIntTotalVo.setMapKey(activeness.getActivenessName());
+                    MgtMapIntTotalVo.setMapValue(count);
+                    MgtMapIntTotalVoList.add(MgtMapIntTotalVo);
                 }
             }
-            plTotalMemberTotalVo.setActivenessList(mgtMapTotalVoList);
+            plTotalMemberTotalVo.setActivenessList(MgtMapIntTotalVoList);
         }
         //获取会员消费排名
-        List<MgtMapTotalVo> memberPayList = memberMapper.getPlTotalMemberRankPay(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> memberPayList = memberMapper.getPlTotalMemberRankPay(mgtBasePlatformDto);
         if (memberPayList != null && memberPayList.size() > 0) {
             memberPayList = listRemoveNull(memberPayList);
             plTotalMemberTotalVo.setMemberPayList(memberPayList);
         }
         //获取来源渠道排名
-        List<MgtMapTotalVo> customerSourceList = memberMapper.getPlTotalMemberRankCustomerSource(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> customerSourceList = memberMapper.getPlTotalMemberRankCustomerSource(mgtBasePlatformDto);
         if (customerSourceList != null && customerSourceList.size() > 0) {
             customerSourceList = listRemoveNull(customerSourceList);
             plTotalMemberTotalVo.setCustomerSourceList(customerSourceList);
         }
         //获取商铺会员排名
-        List<MgtMapTotalVo> shopMemberRankList = memberMapper.getPlTotalMemberRank(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> shopMemberRankList = memberMapper.getPlTotalMemberRank(mgtBasePlatformDto);
         if (shopMemberRankList != null && shopMemberRankList.size() > 0) {
             shopMemberRankList = listRemoveNull(shopMemberRankList);
             plTotalMemberTotalVo.setShopMemberRankList(shopMemberRankList);
         }
-        List<MgtMapTotalVo> memberGoodsRankList = remoteOrderService.listMemberGoodsRank(mgtBasePlatformDto).getData();
+        List<MgtMapIntTotalVo> memberGoodsRankList = remoteOrderService.listMemberGoodsRank(mgtBasePlatformDto).getData();
         if (memberGoodsRankList != null && memberGoodsRankList.size() > 0) {
             memberGoodsRankList = listRemoveNull(memberGoodsRankList);
             plTotalMemberTotalVo.setMemberGoodsRankList(memberGoodsRankList);
@@ -1148,42 +1212,42 @@
     }
 
     /**
-     * @description  去除空字符串
-     * @author  jqs
-     * @date    2023/6/27 17:35
-     * @param mgtMapTotalVos
-     * @return  List<MgtMapTotalVo>
+     * @param MgtMapIntTotalVos
+     * @return List<MgtMapIntTotalVo>
+     * @description 去除空字符串
+     * @author jqs
+     * @date 2023/6/27 17:35
      */
-    private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos){
-        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-            if(StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())){
-                mgtMapTotalVos.remove(i);
+    private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos) {
+        for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+            if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) {
+                MgtMapIntTotalVos.remove(i);
             }
         }
-        return mgtMapTotalVos;
+        return MgtMapIntTotalVos;
     }
 
     /**
-     * @description  通过shopId获取userId
-     * @author  jqs
-     * @date    2023/6/21 17:11
      * @param shopIdList
-     * @return  List<Long>
+     * @return List<Long>
+     * @description 通过shopId获取userId
+     * @author jqs
+     * @date 2023/6/21 17:11
      */
     @Override
-    public List<Long> listUserIdByShopId(List<Long> shopIdList){
+    public List<Long> listUserIdByShopId(List<Long> shopIdList) {
         return memberMapper.listUserIdByShopId(shopIdList);
     }
 
     /**
-     * @description  通过shopId获取user统计
-     * @author  jqs
-     * @date    2023/6/21 17:19
      * @param shopIdList
-     * @return  MgtShopTotalMemberVo
+     * @return MgtShopTotalMemberVo
+     * @description 通过shopId获取user统计
+     * @author jqs
+     * @date 2023/6/21 17:19
      */
     @Override
-    public MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList){
+    public MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList) {
         MgtShopTotalMemberVo mgtShopTotalMemberVo = new MgtShopTotalMemberVo();
         MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
         mgtBasePlatformDto.setShopIdList(shopIdList);
@@ -1199,4 +1263,67 @@
         mgtShopTotalMemberVo.setAgeValue(ageValue);
         return mgtShopTotalMemberVo;
     }
+
+    /**
+     * @param memberTotalChangeDto
+     * @return void
+     * @description 会员统计变动
+     * @author jqs
+     * @date 2023/6/28 14:34
+     */
+    @Override
+    public void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto) {
+        Member member = this.getByUserId(memberTotalChangeDto.getUserId());
+        MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
+        //积分变动
+        if (memberTotalChangeDto.getChangeIntegral() != null) {
+            if (memberTotalChangeDto.getTypeIntegral() == 2) {
+                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() - memberTotalChangeDto.getChangeIntegral());
+                memberTotal.setUsedIntegral(memberTotal.getUsedIntegral() + memberTotalChangeDto.getChangeIntegral());
+            } else {
+                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getChangeIntegral());
+                memberTotal.setTotalIntegral(memberTotal.getTotalIntegral() + memberTotalChangeDto.getChangeIntegral());
+            }
+        }
+        //消费变动
+        if (memberTotalChangeDto.getPayMoney() != null) {
+            memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
+            memberTotal.setTotalPayCount(memberTotal.getTotalPayCount() + 1);
+            memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney());
+            memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime());
+        }
+        //服务次数变动
+        if (memberTotalChangeDto.getServiceCount() != null) {
+            if (memberTotalChangeDto.getTypeService() == 2) {
+                memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() - memberTotalChangeDto.getServiceCount());
+                memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount() + memberTotalChangeDto.getServiceCount());
+            } else {
+                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getServiceCount());
+                memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount() + memberTotalChangeDto.getServiceCount());
+            }
+        }
+        //跟进时间
+        if (memberTotalChangeDto.getNextTaskTime() != null) {
+            memberTotal.setNextTaskTime(memberTotalChangeDto.getNextTaskTime());
+        }
+        //活动次数变动
+        if (memberTotalChangeDto.getActivityTime() != null) {
+            memberTotal.setTotalActivityCount(memberTotal.getTotalActivityCount() + 1);
+            memberTotal.setLastActivityTime(memberTotalChangeDto.getActivityTime());
+        }
+        //订单数量变动
+        if (memberTotalChangeDto.getCycleOrderChange() != null) {
+            memberTotal.setTotalCycleOrder(memberTotal.getTotalCycleOrder() + memberTotalChangeDto.getCycleOrderChange());
+        }
+        if (memberTotalChangeDto.getExperienceOrderChange() != null) {
+            memberTotal.setTotalExperienceOrder(memberTotal.getTotalExperienceOrder() + memberTotalChangeDto.getExperienceOrderChange());
+        }
+        if (memberTotalChangeDto.getServiceOrderChange() != null) {
+            memberTotal.setTotalServiceOrder(memberTotal.getTotalServiceOrder() + memberTotalChangeDto.getServiceOrderChange());
+        }
+        if (memberTotalChangeDto.getGoodsOrderChange() != null) {
+            memberTotal.setTotalGoodsOrder(memberTotal.getTotalGoodsOrder() + memberTotalChangeDto.getGoodsOrderChange());
+        }
+        memberTotalService.saveOrUpdate(memberTotal);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberTotalServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberTotalServiceImpl.java
index 3d9fb1f..f12dce4 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberTotalServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberTotalServiceImpl.java
@@ -5,6 +5,7 @@
 import com.ruoyi.member.mapper.member.MemberTotalMapper;
 import com.ruoyi.member.service.member.MemberTotalService;
 import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto;
+import com.ruoyi.system.api.domain.poji.member.Member;
 import org.springframework.stereotype.Service;
 
 /**
@@ -19,65 +20,5 @@
 public class MemberTotalServiceImpl extends ServiceImpl<MemberTotalMapper, MemberTotal> implements MemberTotalService {
 
 
-    /**
-     * @description  会员统计变动
-     * @author  jqs
-     * @date    2023/6/28 14:34
-     * @param memberTotalChangeDto
-     * @return  void
-     */
-    @Override
-    public void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto){
-        MemberTotal memberTotal = this.getById(memberTotalChangeDto.getMemberId());
-        //积分变动
-        if(memberTotalChangeDto.getChangeIntegral()!=null){
-            if(memberTotalChangeDto.getTypeIntegral()==2){
-                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()-memberTotalChangeDto.getChangeIntegral());
-                memberTotal.setUsedIntegral(memberTotal.getUsedIntegral()+memberTotalChangeDto.getChangeIntegral());
-            }else{
-                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+memberTotalChangeDto.getChangeIntegral());
-                memberTotal.setTotalIntegral(memberTotal.getTotalIntegral()+memberTotalChangeDto.getChangeIntegral());
-            }
-        }
-        //消费变动
-        if(memberTotalChangeDto.getPayMoney()!=null){
-            memberTotal.setTotalPayMoney(memberTotal.getTotalPayMoney().add(memberTotalChangeDto.getPayMoney()));
-            memberTotal.setTotalPayCount(memberTotal.getTotalPayCount()+1);
-            memberTotal.setLastPayMoney(memberTotalChangeDto.getPayMoney());
-            memberTotal.setLastPayTime(memberTotalChangeDto.getPayTime());
-        }
-        //服务次数变动
-        if(memberTotalChangeDto.getServiceCount()!=null){
-            if(memberTotalChangeDto.getTypeService()==2){
-                memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount()-memberTotalChangeDto.getServiceCount());
-                memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount()+memberTotalChangeDto.getServiceCount());
-            }else{
-                memberTotal.setUseableIntegral(memberTotal.getUseableIntegral()+memberTotalChangeDto.getServiceCount());
-                memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount()+memberTotalChangeDto.getServiceCount());
-            }
-        }
-        //跟进时间
-        if(memberTotalChangeDto.getNextTaskTime()!=null){
-            memberTotal.setNextTaskTime(memberTotalChangeDto.getNextTaskTime());
-        }
-        //活动次数变动
-        if(memberTotalChangeDto.getActivityTime()!=null){
-            memberTotal.setTotalActivityCount(memberTotal.getTotalActivityCount()+1);
-            memberTotal.setLastActivityTime(memberTotalChangeDto.getActivityTime());
-        }
-        //订单数量变动
-        if(memberTotalChangeDto.getCycleOrderChange()!=null){
-            memberTotal.setTotalCycleOrder(memberTotal.getTotalCycleOrder()+memberTotalChangeDto.getCycleOrderChange());
-        }
-        if(memberTotalChangeDto.getExperienceOrderChange()!=null){
-            memberTotal.setTotalExperienceOrder(memberTotal.getTotalExperienceOrder()+memberTotalChangeDto.getExperienceOrderChange());
-        }
-        if(memberTotalChangeDto.getServiceOrderChange()!=null){
-            memberTotal.setTotalServiceOrder(memberTotal.getTotalServiceOrder()+memberTotalChangeDto.getServiceOrderChange());
-        }
-        if(memberTotalChangeDto.getGoodsOrderChange()!=null){
-            memberTotal.setTotalGoodsOrder(memberTotal.getTotalGoodsOrder()+memberTotalChangeDto.getGoodsOrderChange());
-        }
-        this.saveOrUpdate(memberTotal);
-    }
+
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveFieldsService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveFieldsService.java
index 4831c3e..e2ad335 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveFieldsService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveFieldsService.java
@@ -3,6 +3,9 @@
 import com.ruoyi.member.domain.dto.MgtArchiveFieldsEditDto;
 import com.ruoyi.member.domain.pojo.member.MemberArchiveFields;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,6 +17,9 @@
  */
 public interface MemberArchiveFieldsService extends IService<MemberArchiveFields> {
 
+
+
+
     /**
      * @description  编辑会员档案字段
      * @author  jqs
@@ -22,4 +28,13 @@
      * @return  void
      */
     void editMemberArchiveFields(MgtArchiveFieldsEditDto mgtArchiveFieldsEditDto);
+
+    /**
+     * @description  平台获取档案字段
+     * @author  jqs
+     * @date    2023/6/30 9:39
+     * @param
+     * @return  List<MgtArchiveFieldsListVo>
+     */
+    List<MgtArchiveFieldsListVo> listMgtArchiveFields();
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveService.java
index 08fb83b..a3ae8ab 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberArchiveService.java
@@ -17,9 +17,18 @@
 public interface MemberArchiveService extends IService<MemberArchive> {
 
     /**
-     * 获取用户档案
+     * 获取用户档案去除空信息
      * @param userId
      * @return
      */
-    List<MemberArchiveVo> listVoByUserId(Long userId);
+    List<MemberArchiveVo> listMgtVoByUserId(Long userId);
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/30 11:20
+     * @param userId
+     * @return  List<MemberArchiveVo>
+     */
+    List<MemberArchiveVo> listMerVoByUserId(Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
index 78e4425..2c7f6b4 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
@@ -42,4 +42,14 @@
      * @return  MerVerifyCouponGetVo
      */
     MerVerifyCouponGetVo sureVerifyCoupon(String memberCouponId);
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/29 11:43
+     * @param userId
+ * @param couponId
+     * @return  Integer
+     */
+    Integer totalMemberCouponByUserAndCoupon(Long userId,String couponId);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
index 5b89662..8f87bea 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -71,7 +71,7 @@
     * @date 2023/5/4 23:55
     * @version 1.0
     */
-    MerMemberInfoVo getMerMemberInfo(Long userId);
+    MerMemberInfoVo getMerMemberInfo( MerBaseGetDto merBaseGetDto);
 
     /**
      * 分页获取收银会员列表
@@ -266,4 +266,14 @@
      * @return  MgtShopTotalMemberVo
      */
     MgtShopTotalMemberVo getUserTotalByShopId(List<Long> shopIdList);
+
+
+    /**
+     * @description  会员统计变动
+     * @author  jqs
+     * @date    2023/6/28 14:34
+     * @param memberTotalChangeDto
+     * @return  void
+     */
+    void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto);
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberTotalService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberTotalService.java
index 27f7ffe..5e6ee0a 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberTotalService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberTotalService.java
@@ -14,13 +14,6 @@
  */
 public interface MemberTotalService extends IService<MemberTotal> {
 
-    /**
-     * @description  会员统计变动
-     * @author  jqs
-     * @date    2023/6/28 14:34
-     * @param memberTotalChangeDto
-     * @return  void
-     */
-    void changeMemberTotal(MemberTotalChangeDto memberTotalChangeDto);
+
 
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
index fbb33f3..9c12deb 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -253,4 +253,9 @@
             AND tc.create_time &lt;= #{param.createEndTime}
         </if>
     </select>
+
+    <update id="updateCouponTotal">
+        UPDATE t_coupon_total set send_count = send_count + #{sendTotal}, send_user_count = send_user_count + sendPerson WHERE coupon_id = #{couponId}
+    </update>
+
 </mapper>
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveFieldsMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveFieldsMapper.xml
index 03e2108..580389f 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveFieldsMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveFieldsMapper.xml
@@ -81,4 +81,17 @@
         </foreach>
     </delete>
 
+    <select id="listMgtArchiveFields" resultType="com.ruoyi.member.domain.vo.MgtArchiveFieldsListVo">
+        SELECT
+        id afId,
+        field_name  fieldName,
+        required_flag requiredFlag,
+        field_sort fieldSort,
+        field_type fieldType,
+        input_tip inputTip,
+        option_values optionValues
+        FROM t_member_archive_fields
+        WHERE del_flag = 0
+        ORDER BY field_sort DESC
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveMapper.xml
index 1e489eb..0206624 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberArchiveMapper.xml
@@ -66,7 +66,7 @@
         </foreach>
     </delete>
 
-    <select id="listVoByUserId" resultType="com.ruoyi.member.domain.vo.MemberArchiveVo">
+    <select id="listMgtVoByUserId" resultType="com.ruoyi.member.domain.vo.MemberArchiveVo">
         SELECT
         tmaf.id fieldId,
         tmaf.field_name fieldName,
@@ -77,4 +77,14 @@
         ORDER BY tmaf.field_sort DESC
     </select>
 
+    <select id="listMerVoByUserId" resultType="com.ruoyi.member.domain.vo.MemberArchiveVo">
+        SELECT
+        tmaf.id fieldId,
+        tmaf.field_name fieldName,
+        tma.field_value fieldValue
+        FROM t_member_archive_fields tmaf
+        LEFT JOIN t_member_archive tma ON tma.field_id = tmaf.id AND tma.user_id = #{userId} AND tma.del_flag = 0
+        WHERE tmaf.del_flag = 0
+        ORDER BY tmaf.field_sort DESC
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
index 7c853c7..2c579eb 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -161,9 +161,13 @@
         tm.user_tags userTags,
         tm.goods_type goodsType
         FROM t_member tm
+        INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id
         WHERE tm.relation_shop_id = #{param.shopId}
         <if test="param.memberGender != null and param.memberGender != ''">
             AND tm.gender = #{param.memberGender}
+        </if>
+        <if test="param.memberType != null and param.memberType != ''">
+            AND FIND_IN_SET(#{param.memberType},tm.goods_type) &gt; 0
         </if>
         <if test="param.memberTag != null and param.memberTag != ''">
             AND FIND_IN_SET(#{param.memberTag},tm.user_tags) &gt; 0
@@ -173,6 +177,27 @@
         </if>
         <if test="param.endMemberDate!=null and param.endMemberDate!=''">
             AND tm.create_time &lt;= #{param.endMemberDate}
+        </if>
+        <if test="param.memberFrom != null and param.memberFrom != ''">
+            AND tm.customer_source = #{param.memberFrom}
+        </if>
+        <if test="param.taskStartDate!=null and param.taskStartDate!=''">
+            AND tmt.next_task_time &gt;= #{param.taskStartDate}
+        </if>
+        <if test="param.taskEndDate!=null and param.taskEndDate!=''">
+            AND tmt.next_task_time &lt;= #{param.taskEndDate}
+        </if>
+        <if test="param.surpNum != null and param.surpNum != ''">
+            AND tmt.useable_service_count = #{param.surpNum}
+        </if>
+        <if test="param.memberNurse != null and param.memberNurse != ''">
+            AND FIND_IN_SET(#{param.memberNurse},tm.member_nurse) &gt; 0
+        </if>
+        <if test="param.actStartDate!=null and param.actStartDate!=''">
+            AND tmt.last_pay_time &gt;= #{param.actStartDate}
+        </if>
+        <if test="param.actEndDate!=null and param.actEndDate!=''">
+            AND tmt.last_pay_time &lt;= #{param.actEndDate}
         </if>
         <if test="param.keyword != null and param.keyword != ''">
             AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.referrer LIKE CONCAT('%',#{param.keyword},'%'))
@@ -381,7 +406,7 @@
         </if>
     </select>
 
-    <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT member_nurse mapKey, COUNT(*) mapValue
         FROM (
             SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse
@@ -401,7 +426,7 @@
         GROUP BY member_nurse
     </select>
 
-    <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT goods_type mapKey, COUNT(*) mapValue
         FROM (
         SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type
@@ -438,7 +463,7 @@
         </if>
     </select>
 
-    <select id="getTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         tm.nick_name mapKey,
         tmt.total_pay_count mapValue
@@ -457,7 +482,7 @@
         ORDER BY tmt.total_pay_count DESC LIMIT 15
     </select>
 
-    <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         tm.customer_source mapKey,
         COUNT(tm.user_id) mapValue
@@ -534,7 +559,7 @@
         </if>
     </select>
 
-    <select id="getPlTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getPlTotalMemberTotalNurse" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT member_nurse mapKey, COUNT(*) mapValue
         FROM (
         SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) member_nurse
@@ -557,7 +582,7 @@
         GROUP BY member_nurse
     </select>
 
-    <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT goods_type mapKey, COUNT(*) mapValue
         FROM (
         SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(goods_type, ',', numbers.n), ',', -1) goods_type
@@ -600,7 +625,7 @@
         </if>
     </select>
 
-    <select id="getPlTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getPlTotalMemberRankPay" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         tm.nick_name mapKey,
         tmt.total_pay_count mapValue
@@ -622,7 +647,7 @@
         ORDER BY tmt.total_pay_count DESC LIMIT 15
     </select>
 
-    <select id="getPlTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getPlTotalMemberRankCustomerSource" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         tm.customer_source mapKey,
         COUNT(tm.user_id) mapValue
@@ -643,7 +668,7 @@
         ORDER BY COUNT(tm.user_id) DESC LIMIT 15
     </select>
 
-    <select id="getPlTotalMemberRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getPlTotalMemberRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         tm.relation_shop_name mapKey,
         COUNT(tm.user_id) mapValue
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
index f15ac5b..2c80808 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/concole/OrderController.java
@@ -2,17 +2,19 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.service.order.OrderService;
+import com.ruoyi.system.api.domain.dto.MerBaseDto;
 import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
 import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 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 javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -66,11 +68,25 @@
      * @author  jqs
      * @date    2023/6/21 15:27
      * @param mgtBasePlatformDto
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
     @PostMapping("/listMemberGoodsRank")
-    public R<List<MgtMapTotalVo>> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){
-        List<MgtMapTotalVo> memberGoodsRankList = orderService.listMemberGoodsRank(mgtBasePlatformDto);
+    public R<List<MgtMapIntTotalVo>> listMemberGoodsRank(@RequestBody MgtBasePlatformDto mgtBasePlatformDto){
+        List<MgtMapIntTotalVo> memberGoodsRankList = orderService.listMemberGoodsRank(mgtBasePlatformDto);
         return R.ok(memberGoodsRankList);
     }
+
+    /**
+     * @description  获取用户未支付金额
+     * @author  jqs
+     * @date    2023/6/29 18:00
+     * @param merBaseDto
+     * @return  R<BigDecimal>
+     */
+    @PostMapping("/getMemberUnpaidOrder")
+    public R<BigDecimal> getMemberUnpaidOrder(@RequestBody MerBaseDto merBaseDto){
+        BigDecimal unpaidMoney = orderService.getMemberUnpaidOrder(merBaseDto);
+        return R.ok(unpaidMoney);
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyCouponDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyCouponDto.java
index f8a5aed..3d821be 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyCouponDto.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyCouponDto.java
@@ -1,6 +1,6 @@
 package com.ruoyi.order.domain.dto;
 
-import com.ruoyi.system.api.domain.dto.MgtBaseDto;
+import com.ruoyi.system.api.domain.dto.MerBaseDto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -12,7 +12,7 @@
  * @Version 1.0
  */
 @Data
-public class MerVerifyCouponDto extends MgtBaseDto {
+public class MerVerifyCouponDto extends MerBaseDto {
 
     @ApiModelProperty(value = "优惠券id")
     private String memberCouponId;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberConsumerGoodsTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberConsumerGoodsTotalVo.java
new file mode 100644
index 0000000..d65ba76
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberConsumerGoodsTotalVo.java
@@ -0,0 +1,28 @@
+package com.ruoyi.order.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MerMemberConsumerGoodsTotalVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/29 15:10
+ * @Version 1.0
+ */
+@Data
+public class MerMemberConsumerGoodsTotalVo {
+
+    @ApiModelProperty(value = "周期订单")
+    private Integer cycleOrder;
+
+    @ApiModelProperty(value = "体验订单")
+    private Integer experienceOrder;
+
+    @ApiModelProperty(value = "服务订单")
+    private Integer serviceOrder;
+
+    @ApiModelProperty(value = "单品订单")
+    private Integer goodsOrder;
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
index dfb8fce..23498a3 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
@@ -1,7 +1,7 @@
 package com.ruoyi.order.domain.vo;
 
 import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -64,13 +64,13 @@
     private BigDecimal[] orderMoneyValue;
 
     @ApiModelProperty(value = "商品类型数量")
-    private List<MgtMapTotalVo> goodsTypeTotalList;
+    private List<MgtMapIntTotalVo> goodsTypeTotalList;
 
     @ApiModelProperty(value = "商品类型金额")
     private List<MgtMapBigTotalVo> goodsTypeMoneyList;
 
     @ApiModelProperty(value = "活动次数排行")
-    private List<MgtMapTotalVo> activityRankList;
+    private List<MgtMapIntTotalVo> activityRankList;
 
     @ApiModelProperty(value = "活动次数排行")
     private List<MgtMapBigTotalVo> shopSalesRankList;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
index 7d29ede..e19d04a 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
@@ -1,7 +1,7 @@
 package com.ruoyi.order.domain.vo;
 
 import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -64,7 +64,7 @@
     private BigDecimal[] orderMoneyValue;
 
     @ApiModelProperty(value = "商品类型数量")
-    private List<MgtMapTotalVo> goodsTypeTotalList;
+    private List<MgtMapIntTotalVo> goodsTypeTotalList;
 
     @ApiModelProperty(value = "商品类型金额")
     private List<MgtMapBigTotalVo> goodsTypeMoneyList;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
index d7977f4..9e4e072 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
@@ -1,7 +1,7 @@
 package com.ruoyi.order.domain.vo;
 
 import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -70,7 +70,7 @@
     private BigDecimal[] orderMoneyValue;
 
     @ApiModelProperty(value = "商品类型数量")
-    private List<MgtMapTotalVo> goodsTypeTotalList;
+    private List<MgtMapIntTotalVo> goodsTypeTotalList;
 
     @ApiModelProperty(value = "商品类型金额")
     private List<MgtMapBigTotalVo> goodsTypeMoneyList;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java
index 4a4799a..9fd8b51 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/ConsumerGoodsMapper.java
@@ -1,13 +1,14 @@
 package com.ruoyi.order.mapper.order;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.order.domain.dto.AppConsumerPageDto;
 import com.ruoyi.order.domain.dto.MerConsumerGoodsDto;
 import com.ruoyi.order.domain.dto.MerConsumerGoodsPageDto;
 import com.ruoyi.order.domain.pojo.order.ConsumerGoods;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.order.domain.vo.AppConsumerPageVo;
 import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo;
+import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -51,4 +52,14 @@
      * @return
      */
     List<MerConsumerGoodsListVo> pageMerConsumerGoodsNum(Page page,@Param("param") MerConsumerGoodsPageDto merConsumerGoodsPageDto);
+
+    /**
+     * @description  获取用户在商户
+     * @author  jqs
+     * @date    2023/6/29 15:13
+     * @param userId
+     * @param shopId
+     * @return  MerMemberConsumerGoodsTotalVo
+     */
+    MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(@Param("userId") Long userId,@Param("shopId") Long shopId);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
index c1f0464..fcad0f5 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -5,14 +5,11 @@
 import com.ruoyi.order.domain.dto.*;
 import com.ruoyi.order.domain.pojo.order.Order;
 import com.ruoyi.order.domain.vo.*;
-import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
-import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
-import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
-import com.ruoyi.system.api.domain.dto.MgtPlActivityAgeDto;
+import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
 import com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -166,7 +163,7 @@
     /**
     * @description listTotalOrderTotal
     * @param mgtBaseShopDto
-    * @return List<MgtMapTotalVo>
+    * @return List<MgtMapIntTotalVo>
     * @author jqs34
     * @date 2023/6/19 22:48
     */
@@ -175,7 +172,7 @@
     /**
      * @description listTotalOrderTotalGoodsType
      * @param mgtBaseShopDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -185,7 +182,7 @@
     /**
      * @description listTotalOrderTotalGoodsRank
      * @param mgtBaseShopDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -194,7 +191,7 @@
     /**
      * @description listTotalOrderTotalOrderFrom
      * @param mgtBaseShopDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -214,7 +211,7 @@
     /**
      * @description listTotalActivityTotalGoodsType
      * @param mgtBaseShopDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -224,7 +221,7 @@
     /**
      * @description listTotalActivityTotal
      * @param mgtBaseShopDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -246,7 +243,7 @@
      * @param mgtActivityAgeDto
      * @return  MgtTotalActivityTotalVo
      */
-    List<MgtMapTotalVo> getTotalActivityAgeRank(@Param("param")MgtActivityAgeDto mgtActivityAgeDto);
+    List<MgtMapIntTotalVo> getTotalActivityAgeRank(@Param("param")MgtActivityAgeDto mgtActivityAgeDto);
 
     /**
      * @description
@@ -280,9 +277,9 @@
      * @author  jqs
      * @date    2023/6/21 15:27
      * @param mgtBasePlatformDto
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> listMemberGoodsRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> listMemberGoodsRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
 
     /**
@@ -306,7 +303,7 @@
     /**
      * @description listTotalOrderTotal
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -315,7 +312,7 @@
     /**
      * @description listTotalOrderTotalGoodsType
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -325,7 +322,7 @@
     /**
      * @description listTotalOrderTotalGoodsRank
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -334,7 +331,7 @@
     /**
      * @description listTotalOrderTotalOrderFrom
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -353,7 +350,7 @@
     /**
      * @description listTotalActivityTotalGoodsType
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -363,7 +360,7 @@
     /**
      * @description listTotalActivityTotal
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -385,12 +382,12 @@
      * @param mgtActivityAgeDto
      * @return  MgtTotalActivityTotalVo
      */
-    List<MgtMapTotalVo> getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto);
+    List<MgtMapIntTotalVo> getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto);
 
     /**
      * @description listPlTotalShopActivityRank
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -399,7 +396,7 @@
     /**
      * @description listTotalActivityTotal
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -408,7 +405,7 @@
     /**
      * @description listTotalActivityTotal
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @author jqs34
      * @date 2023/6/19 22:48
      */
@@ -431,4 +428,14 @@
      * @return  BigDecimal
      */
     BigDecimal shopSalesTotal(@Param("param")MgtBaseShopDto mgtBaseShopDto);
+
+
+    /**
+     * @description  获取用户未支付金额
+     * @author  jqs
+     * @date    2023/6/29 18:00
+     * @param merBaseDto
+     * @return  BigDecimal
+     */
+    BigDecimal getMemberUnpaidOrder(@Param("param")MerBaseDto merBaseDto);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
index 003aa9c..84e8d05 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java
@@ -11,10 +11,15 @@
 import com.ruoyi.order.domain.vo.AppConsumerPageVo;
 import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo;
 import com.ruoyi.order.domain.vo.MerConsumerGoodsVo;
+import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo;
 import com.ruoyi.order.mapper.order.ConsumerGoodsMapper;
 import com.ruoyi.order.service.order.ConsumerGoodsService;
 import com.ruoyi.order.service.order.UserServiceRecordService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto;
+import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
+import com.ruoyi.system.api.service.RemoteMemberService;
+import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -37,6 +42,13 @@
 
     @Resource
     private UserServiceRecordService userServiceRecordService;
+
+    @Resource
+    private RemoteMemberService remoteMemberService;
+
+    @Resource
+    private RemoteShopService remoteShopService;
+
     /**
      * 获取用户服务
      * @param page
@@ -74,12 +86,63 @@
         List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
         if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
             ConsumerGoods consumerGoods;
+            Integer serviceCount = 0;
+            Integer cycleService = 0;
+            Integer cyclePerson = 0;
+            Integer serviceService = 0;
+            Integer servicePerson = 0;
+            Integer experienceService = 0;
+            Integer experiencePerson = 0;
+            MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId());
             for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){
                 consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId());
                 consumerGoods.setCycleNumFlag(1);
                 consumerGoods.setServiceNum(merSureConsumerGoodsListDto.getServiceNum());
                 this.saveOrUpdate(consumerGoods);
+                //处理商品服务次数
+                switch (consumerGoods.getGoodsType()) {
+                    case 1:
+                        cycleService = cycleService + consumerGoods.getServiceNum();
+                        break;
+                    case 2:
+                        serviceService = serviceService + consumerGoods.getServiceNum();
+                        break;
+                    case 3:
+                        experienceService = experienceService + consumerGoods.getServiceNum();
+                        break;
+                    default:
+                        break;
+                }
             }
+            //判断是否加人
+            if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) {
+                cyclePerson = 1;
+            }
+            if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) {
+                servicePerson = 1;
+            }
+            if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) {
+                experiencePerson = 1;
+            }
+            serviceCount = cycleService + serviceService + experienceService;
+            //更新商户和会员服务统计
+            MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+            memberTotalChangeDto.setUserId(merSureConsumerGoodsDto.getUserId());
+            memberTotalChangeDto.setTypeService(1);
+            memberTotalChangeDto.setServiceCount(serviceCount);
+            remoteMemberService.changeMemberTotal(memberTotalChangeDto);
+            ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+            shopTotalChangeDto.setShopId(merSureConsumerGoodsDto.getShopId());
+            shopTotalChangeDto.setTypeCycleService(1);
+            shopTotalChangeDto.setCycleService(cycleService);
+            shopTotalChangeDto.setCyclePerson(cyclePerson);
+            shopTotalChangeDto.setTypeServiceService(1);
+            shopTotalChangeDto.setServiceService(serviceService);
+            shopTotalChangeDto.setServicePerson(servicePerson);
+            shopTotalChangeDto.setTypeExperienceService(1);
+            shopTotalChangeDto.setExperienceService(experienceService);
+            shopTotalChangeDto.setExperiencePerson(experiencePerson);
+            remoteShopService.changeShopTotal(shopTotalChangeDto);
         }
     }
 
@@ -89,62 +152,118 @@
      */
     @Override
     public void useMerConsumerGoods(MerSureConsumerGoodsDto merSureConsumerGoodsDto){
-        List<MerSureConsumerGoodsListDto> merSureConsumerGoodsListDtoList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
-        if(merSureConsumerGoodsListDtoList!=null && !merSureConsumerGoodsListDtoList.isEmpty()){
-            ConsumerGoods consumerGoods;
+        List<MerSureConsumerGoodsListDto> goodsList = merSureConsumerGoodsDto.getMerSureConsumerGoodsListDtoList();
+        if (goodsList != null && !goodsList.isEmpty()) {
+            ConsumerGoods goods;
             Integer serviceNum;
             Integer usedNum;
             Integer useNum;
-            Integer surpNum;
+            Integer surplusNum;
             Long shopId = null;
             Long userId = null;
-            String consumerGoodsNames = "";
-            String consumerGoodsIds = "";
+            String goodsNames = "";
+            String goodsIds = "";
             Integer serviceType = 1;
-            for(MerSureConsumerGoodsListDto merSureConsumerGoodsListDto : merSureConsumerGoodsListDtoList){
-                consumerGoods = this.getById(merSureConsumerGoodsListDto.getConsumerGoodsId());
-                serviceNum = consumerGoods.getServiceNum();
-                usedNum = consumerGoods.getUsedNum();
-                surpNum = serviceNum - usedNum;
-                useNum = merSureConsumerGoodsListDto.getServiceNum();
-                if(useNum>surpNum){
+            Integer serviceCount = 0;
+            Integer cycleService = 0;
+            Integer cyclePerson = 0;
+            Integer serviceService = 0;
+            Integer servicePerson = 0;
+            Integer experienceService = 0;
+            Integer experiencePerson = 0;
+            //获取会员商品总数
+            MerMemberConsumerGoodsTotalVo memberGoodsTotal = this.getMemberConsumerGoodsTotalVo(merSureConsumerGoodsDto.getUserId(), merSureConsumerGoodsDto.getShopId());
+            for (MerSureConsumerGoodsListDto goodsDto : goodsList) {
+                goods = this.getById(goodsDto.getConsumerGoodsId());
+                serviceNum = goods.getServiceNum();
+                usedNum = goods.getUsedNum();
+                surplusNum = serviceNum - usedNum;
+                useNum = goodsDto.getServiceNum();
+                //判断使用数量是否超过剩余数量
+                if (useNum > surplusNum) {
                     throw new ServiceException(AppErrorConstant.BEYOND_SURP_NUM);
                 }
-                consumerGoods.setUsedNum(usedNum+useNum);
-                consumerGoods.setUseTime(new Date());
-                if(consumerGoods.getUsedNum().equals(serviceNum)){
-                    consumerGoods.setServiceStatus(2);
-                    consumerGoods.setCompleteTime(new Date());
+                goods.setUsedNum(usedNum + useNum);
+                goods.setUseTime(new Date());
+                //判断商品是否已使用完
+                if (goods.getUsedNum().equals(serviceNum)) {
+                    goods.setServiceStatus(2);
+                    goods.setCompleteTime(new Date());
                 }
-                this.saveOrUpdate(consumerGoods);
-                shopId = consumerGoods.getShopId();
-                userId= consumerGoods.getUserId();
-                serviceType = consumerGoods.getGoodsType();
-                if(StringUtils.isBlank(consumerGoodsIds)){
-                    consumerGoodsIds = consumerGoods.getConsumerGoodsId();
-                }else{
-                    consumerGoodsIds = consumerGoodsIds + "," + consumerGoods.getConsumerGoodsId();
+                this.saveOrUpdate(goods);
+                shopId = goods.getShopId();
+                userId = goods.getUserId();
+                serviceType = goods.getGoodsType();
+                //拼接商品ID
+                if (StringUtils.isBlank(goodsIds)) {
+                    goodsIds = goods.getConsumerGoodsId();
+                } else {
+                    goodsIds = goodsIds + "," + goods.getConsumerGoodsId();
                 }
-                if(StringUtils.isBlank(consumerGoodsNames)){
-                    consumerGoodsNames = consumerGoods.getGoodsName();
-                }else{
-                    consumerGoodsNames = consumerGoodsNames + "、" + consumerGoods.getGoodsName();
+                //拼接商品名称
+                if (StringUtils.isBlank(goodsNames)) {
+                    goodsNames = goods.getGoodsName();
+                } else {
+                    goodsNames = goodsNames + "、" + goods.getGoodsName();
+                }
+                //处理商品服务次数
+                switch (goods.getGoodsType()) {
+                    case 1:
+                        cycleService = cycleService + useNum;
+                        break;
+                    case 2:
+                        serviceService = serviceService + useNum;
+                        break;
+                    case 3:
+                        experienceService = experienceService + useNum;
+                        break;
+                    default:
+                        break;
                 }
             }
-            UserServiceRecord userServiceRecord = new UserServiceRecord();
-            userServiceRecord.setCreateTime(new Date());
-            userServiceRecord.setServiceType(serviceType);
-            userServiceRecord.setDelFlag(0);
-            userServiceRecord.setShopId(shopId);
-            userServiceRecord.setUserId(userId);
-            userServiceRecord.setConsumerGoodsIds(consumerGoodsIds);
-            userServiceRecord.setConsumerGoodsNames(consumerGoodsNames);
-            userServiceRecordService.saveOrUpdate(userServiceRecord);
+            //判断是否减人
+            if (cycleService > 0 && memberGoodsTotal.getCycleOrder() - cycleService < 1) {
+                cyclePerson = 1;
+            }
+            if (serviceService > 0 && memberGoodsTotal.getServiceOrder() - serviceService < 1) {
+                servicePerson = 1;
+            }
+            if (experienceService > 0 && memberGoodsTotal.getExperienceOrder() - experienceService < 1) {
+                experiencePerson = 1;
+            }
+            serviceCount = cycleService + serviceService + experienceService;
+            UserServiceRecord serviceRecord = new UserServiceRecord();
+            serviceRecord.setCreateTime(new Date());
+            serviceRecord.setServiceType(serviceType);
+            serviceRecord.setDelFlag(0);
+            serviceRecord.setShopId(shopId);
+            serviceRecord.setUserId(userId);
+            serviceRecord.setConsumerGoodsIds(goodsIds);
+            serviceRecord.setConsumerGoodsNames(goodsNames);
+            userServiceRecordService.saveOrUpdate(serviceRecord);
+            //更新商户和会员服务统计
+            MemberTotalChangeDto memberTotalChange = new MemberTotalChangeDto();
+            memberTotalChange.setUserId(merSureConsumerGoodsDto.getUserId());
+            memberTotalChange.setTypeService(2);
+            memberTotalChange.setServiceCount(serviceCount);
+            remoteMemberService.changeMemberTotal(memberTotalChange);
+            ShopTotalChangeDto shopTotalChange = new ShopTotalChangeDto();
+            shopTotalChange.setShopId(merSureConsumerGoodsDto.getShopId());
+            shopTotalChange.setTypeCycleService(2);
+            shopTotalChange.setCycleService(cycleService);
+            shopTotalChange.setCyclePerson(cyclePerson);
+            shopTotalChange.setTypeServiceService(2);
+            shopTotalChange.setServiceService(serviceService);
+            shopTotalChange.setServicePerson(servicePerson);
+            shopTotalChange.setTypeExperienceService(2);
+            shopTotalChange.setExperienceService(experienceService);
+            shopTotalChange.setExperiencePerson(experiencePerson);
+            remoteShopService.changeShopTotal(shopTotalChange);
         }
     }
 
     /**
-     *
+     * 分页获取用户服务次数列表
      * @param page
      * @param merConsumerGoodsPageDto
      * @return
@@ -154,4 +273,17 @@
         List<MerConsumerGoodsListVo> merConsumerGoodsListVos = consumerGoodsMapper.pageMerConsumerGoodsNum(page, merConsumerGoodsPageDto);
         return merConsumerGoodsListVos;
     }
+
+    /**
+     * @description  获取用户在商户
+     * @author  jqs
+     * @date    2023/6/29 15:13
+     * @param userId
+     * @param shopId
+     * @return  MerMemberConsumerGoodsTotalVo
+     */
+    @Override
+    public MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(Long userId, Long shopId){
+        return consumerGoodsMapper.getMemberConsumerGoodsTotalVo(userId, shopId);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index c9a3204..a6a1a73 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -529,9 +529,13 @@
      */
     @Override
     public MerVerifyOrderVo verifyOrder(String orderId) {
+        // 创建返回对象
         MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+        // 根据订单ID获取订单信息
         Order order = this.getById(orderId);
+        // 根据订单ID获取订单商品列表
         List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
+        // 设置返回对象的属性值
         merVerifyOrderVo.setOrderId(orderId);
         merVerifyOrderVo.setOrderNo(order.getOrderNo());
         merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
@@ -546,10 +550,12 @@
         merVerifyOrderVo.setPayTime(order.getPayTime());
         merVerifyOrderVo.setUseTime(order.getUseTime());
         merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
+        // 根据订单用户ID获取用户信息
         SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData();
         merVerifyOrderVo.setUserName(sysUser.getNickName());
         merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber());
         merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
+        // 返回结果
         return merVerifyOrderVo;
     }
 
@@ -583,11 +589,19 @@
         }
         String goodsIds = goodsIdSj.toString();
         List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIds).getData();
-        Map<String,Goods> goodsMap = goodsList.stream()
+        Map<String, Goods> goodsMap = goodsList.stream()
                 .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
         ConsumerGoods consumerGoods;
         String consumerGoodsId;
         Goods goods;
+        Integer serviceCount = 0;
+        Integer cycleService = 0;
+        Integer cyclePerson = 0;
+        Integer serviceService = 0;
+        Integer servicePerson = 0;
+        Integer experienceService = 0;
+        Integer experiencePerson = 0;
+        MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = consumerGoodsService.getMemberConsumerGoodsTotalVo(order.getUserId(), order.getShopId());
         for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
             consumerGoods = new ConsumerGoods();
             goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
@@ -611,7 +625,34 @@
             consumerGoods.setGoodsNurses(goods.getGoodsNurses());
             consumerGoods.setSourceFrom(1);
             consumerGoodsService.save(consumerGoods);
+            //处理商品服务次数
+            if (consumerGoods.getCycleNumFlag() == 1) {
+                switch (goods.getGoodsType()) {
+                    case 1:
+                        cycleService = cycleService + appUserOrderGoodsPageVo.getServiceNum();
+                        break;
+                    case 2:
+                        serviceService = serviceService + appUserOrderGoodsPageVo.getServiceNum();
+                        break;
+                    case 3:
+                        experienceService = experienceService + appUserOrderGoodsPageVo.getServiceNum();
+                        break;
+                    default:
+                        break;
+                }
+            }
         }
+        //判断是否加人
+        if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) {
+            cyclePerson = 1;
+        }
+        if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) {
+            servicePerson = 1;
+        }
+        if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) {
+            experiencePerson = 1;
+        }
+        serviceCount = cycleService + serviceService + experienceService;
         //生成返回
         MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
         merVerifyOrderVo.setOrderId(orderId);
@@ -631,18 +672,36 @@
         SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData();
         merVerifyOrderVo.setUserName(sysUser.getNickName());
         merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber());
+        //更新商户和会员服务统计
+        MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setUserId(order.getUserId());
+        memberTotalChangeDto.setTypeService(1);
+        memberTotalChangeDto.setServiceCount(serviceCount);
+        remoteMemberService.changeMemberTotal(memberTotalChangeDto);
+        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        shopTotalChangeDto.setShopId(order.getShopId());
+        shopTotalChangeDto.setTypeCycleService(1);
+        shopTotalChangeDto.setCycleService(cycleService);
+        shopTotalChangeDto.setCyclePerson(cyclePerson);
+        shopTotalChangeDto.setTypeServiceService(1);
+        shopTotalChangeDto.setServiceService(serviceService);
+        shopTotalChangeDto.setServicePerson(servicePerson);
+        shopTotalChangeDto.setTypeExperienceService(1);
+        shopTotalChangeDto.setExperienceService(experienceService);
+        shopTotalChangeDto.setExperiencePerson(experiencePerson);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);
         return merVerifyOrderVo;
     }
 
     /**
-     * @description  确认核销优惠券
-     * @author  jqs
-     * @date    2023/6/28 11:26
      * @param merVerifyCouponDto
-     * @return  MerVerifyCouponVo
+     * @return MerVerifyCouponVo
+     * @description 确认核销优惠券
+     * @author jqs
+     * @date 2023/6/28 11:26
      */
     @Override
-    public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto){
+    public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
         MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
         // 创建MerVerifyCouponVo对象
         MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
@@ -809,6 +868,10 @@
         String orderNo = CodeFactoryUtil.getShopOrderNo();
         OrderGoods orderGoods;
         String orderGoodsId;
+        BigDecimal cycleMoney = new BigDecimal("0.00");
+        BigDecimal experienceMoney = new BigDecimal("0.00");
+        BigDecimal serviceMoney = new BigDecimal("0.00");
+        BigDecimal goodsMoney = new BigDecimal("0.00");
         for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
             goodsId = appBuyGoodsDto.getGoodsId();
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
@@ -877,6 +940,22 @@
             orderGoods.setServiceNum(serviceNum);
             orderGoods.setGoodsType(goods.getGoodsType());
             orderGoodsService.save(orderGoods);
+            switch(orderGoods.getGoodsType()){
+                case 1:
+                    cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
+                    break;
+                case 2:
+                    serviceMoney = serviceMoney.add(orderGoods.getGoodsReceivableMoney());
+                    break;
+                case 3:
+                    experienceMoney = experienceMoney.add(orderGoods.getGoodsReceivableMoney());
+                    break;
+                case 4:
+                    goodsMoney = goodsMoney.add(orderGoods.getGoodsReceivableMoney());
+                    break;
+                default:
+                    break;
+            }
         }
         //创建订单
         Order order = new Order();
@@ -951,6 +1030,13 @@
             appMemberBindingDto.setBindingFlag(1);
             remoteMemberService.updateMemberBinding(appMemberBindingDto);
         }
+        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        shopTotalChangeDto.setShopId(order.getShopId());
+        shopTotalChangeDto.setCycleMoney(cycleMoney);
+        shopTotalChangeDto.setServiceMoney(serviceMoney);
+        shopTotalChangeDto.setExperienceMoney(experienceMoney);
+        shopTotalChangeDto.setGoodsMoney(goodsMoney);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);
     }
 
 
@@ -1374,53 +1460,53 @@
     public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto) {
         MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto);
         //MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(mgtBaseShopDto);
-        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
-        if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) {
-            String[] orderTotalKey = new String[mgtMapTotalVos.size()];
-            Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()];
-            for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-                orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey();
-                orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst();
-                orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
+        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
+            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
             }
             mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
             mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
             mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
         }
         //获取商品分类销售数据
-        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto);
-        List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto);
+        List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
         List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
-        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
-            MgtMapTotalVo mgtMapTotalVo;
+        if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
-            for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
-                mgtMapTotalVo = new MgtMapTotalVo();
+            for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
+                MgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
-                if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    mgtMapTotalVo.setMapKey("周期");
+                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
+                    MgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
-                    mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    mgtMapTotalVo.setMapKey("服务");
+                    mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
+                    MgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
-                    mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    mgtMapTotalVo.setMapKey("体验");
+                    mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
+                    MgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
-                    mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    mgtMapTotalVo.setMapKey("单品");
+                    mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
+                    MgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
                 }
-                goodsTypeTotalList.add(mgtMapTotalVo);
+                goodsTypeTotalList.add(MgtMapIntTotalVo);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -1442,35 +1528,35 @@
     }
 
     /**
-     * @param mgtMapTotalVos
-     * @return List<MgtMapTotalVo>
+     * @param MgtMapIntTotalVos
+     * @return List<MgtMapIntTotalVo>
      * @description 去除空字符串
      * @author jqs
      * @date 2023/6/27 17:35
      */
-    private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos) {
-        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-            if (StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())) {
-                mgtMapTotalVos.remove(i);
+    private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos) {
+        for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+            if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) {
+                MgtMapIntTotalVos.remove(i);
             }
         }
-        return mgtMapTotalVos;
+        return MgtMapIntTotalVos;
     }
 
     /**
-     * @param mgtMapTotalVos
-     * @return List<MgtMapTotalVo>
+     * @param MgtMapIntTotalVos
+     * @return List<MgtMapIntTotalVo>
      * @description 去除空字符串
      * @author jqs
      * @date 2023/6/27 17:35
      */
-    private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> mgtMapTotalVos) {
-        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-            if (StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())) {
-                mgtMapTotalVos.remove(i);
+    private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> MgtMapIntTotalVos) {
+        for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+            if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) {
+                MgtMapIntTotalVos.remove(i);
             }
         }
-        return mgtMapTotalVos;
+        return MgtMapIntTotalVos;
     }
 
     /**
@@ -1485,9 +1571,9 @@
         //获取基础统计
         MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto);
         //获取商品分类销售数据
-        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
-        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
-            List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
+        if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
+            List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
             List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
             totalActivityTotalVo.setCycleTotal(0);
             totalActivityTotalVo.setCycleMoney(BigDecimal.ZERO);
@@ -1496,49 +1582,49 @@
             totalActivityTotalVo.setExperienceTotal(0);
             totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO);
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
-            MgtMapTotalVo mgtMapTotalVo;
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
-            for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
-                mgtMapTotalVo = new MgtMapTotalVo();
+            for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
+                MgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
-                if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    mgtMapTotalVo.setMapKey("周期");
+                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
+                    MgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
-                    totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    mgtMapTotalVo.setMapKey("服务");
+                    totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
+                    MgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
-                    totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    mgtMapTotalVo.setMapKey("体验");
+                    totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
+                    MgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
-                    totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    mgtMapTotalVo.setMapKey("单品");
+                    totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
+                    MgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
                 }
-                goodsTypeTotalList.add(mgtMapTotalVo);
+                goodsTypeTotalList.add(MgtMapIntTotalVo);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
             totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
         //获取订单分布
-        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
-        if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) {
-            String[] orderTotalKey = new String[mgtMapTotalVos.size()];
-            Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()];
-            for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-                orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey();
-                orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst();
-                orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
+        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
+            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
             }
             totalActivityTotalVo.setOrderTotalKey(orderTotalKey);
             totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
@@ -1560,17 +1646,17 @@
         mgtActivityAgeDto.setUserIds(userIds);
         userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData();
         mgtActivityAgeDto.setUserIds(userIds);
-        List<MgtMapTotalVo> ageRankList = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto);
+        List<MgtMapIntTotalVo> ageRankList = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto);
         ageRankList = listRemoveNull(ageRankList);
         MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo();
         String[] activityAgeKey = new String[ageRankList.size()];
         Integer[] activityAgeValue = new Integer[ageRankList.size()];
         if (!ageRankList.isEmpty()) {
-            MgtMapTotalVo mgtMapTotalVo;
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             for (int i = 0; i < ageRankList.size(); i++) {
-                mgtMapTotalVo = ageRankList.get(i);
-                activityAgeKey[i] = mgtMapTotalVo.getMapKey();
-                activityAgeValue[i] = mgtMapTotalVo.getMapValue();
+                MgtMapIntTotalVo = ageRankList.get(i);
+                activityAgeKey[i] = MgtMapIntTotalVo.getMapKey();
+                activityAgeValue[i] = MgtMapIntTotalVo.getMapValue();
             }
         }
         totalActivityTotalVo.setActivityAgeKey(activityAgeKey);
@@ -1600,13 +1686,13 @@
 
     /**
      * @param mgtBasePlatformDto
-     * @return List<MgtMapTotalVo>
+     * @return List<MgtMapIntTotalVo>
      * @description
      * @author jqs
      * @date 2023/6/21 15:26
      */
     @Override
-    public List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) {
+    public List<MgtMapIntTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) {
         return orderMapper.listMemberGoodsRank(mgtBasePlatformDto);
     }
 
@@ -1681,23 +1767,23 @@
         mgtBasePlatformDto.setShopIdList(shopIdList);
         //获取基础统计
         MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
-        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto);
-        if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) {
-            String[] orderTotalKey = new String[mgtMapTotalVos.size()];
-            Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()];
-            for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-                orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey();
-                orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst();
-                orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto);
+        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
+            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
             }
             mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
             mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
             mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
         }
         //获取商品分类销售数据
-        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto);
-        List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
         List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
         mgtTotalOrderTotalVo.setCycleTotal(0);
         mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO);
@@ -1705,35 +1791,35 @@
         mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO);
         mgtTotalOrderTotalVo.setExperienceTotal(0);
         mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO);
-        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
-            MgtMapTotalVo mgtMapTotalVo;
+        if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
-            for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
-                mgtMapTotalVo = new MgtMapTotalVo();
+            for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
+                MgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
-                if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    mgtMapTotalVo.setMapKey("周期");
+                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
+                    MgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
-                    mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    mgtMapTotalVo.setMapKey("服务");
+                    mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
+                    MgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
-                    mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    mgtMapTotalVo.setMapKey("体验");
+                    mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
+                    MgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
-                    mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    mgtMapTotalVo.setMapKey("单品");
+                    mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
+                    MgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
                 }
-                goodsTypeTotalList.add(mgtMapTotalVo);
+                goodsTypeTotalList.add(MgtMapIntTotalVo);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -1783,8 +1869,8 @@
         //获取基础统计
         MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto);
         //获取商品分类销售数据
-        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto);
-        List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
         List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
         totalActivityTotalVo.setCycleTotal(0);
         totalActivityTotalVo.setCycleMoney(BigDecimal.ZERO);
@@ -1792,32 +1878,32 @@
         totalActivityTotalVo.setServiceMoney(BigDecimal.ZERO);
         totalActivityTotalVo.setExperienceTotal(0);
         totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO);
-        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
-            MgtMapTotalVo mgtMapTotalVo;
+        if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
-            for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
-                mgtMapTotalVo = new MgtMapTotalVo();
+            for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
+                MgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
-                if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    mgtMapTotalVo.setMapKey("周期");
+                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
+                    MgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
-                    totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    mgtMapTotalVo.setMapKey("服务");
+                    totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
+                    MgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
-                    totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    mgtMapTotalVo.setMapKey("体验");
+                    totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
+                    MgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
-                    totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
-                    totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
-                } else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    mgtMapTotalVo.setMapKey("单品");
+                    totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+                } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
+                    MgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
                 }
             }
@@ -1825,15 +1911,15 @@
             totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
         //获取订单分布
-        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
-        if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) {
-            String[] orderTotalKey = new String[mgtMapTotalVos.size()];
-            Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()];
-            for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-                orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey();
-                orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst();
-                orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond();
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
+        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
+            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
             }
             totalActivityTotalVo.setOrderTotalKey(orderTotalKey);
             totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
@@ -1889,17 +1975,17 @@
         mgtActivityAgeDto.setAgeType(mgtPlActivityAgeDto.getAgeType());
         userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData();
         mgtPlActivityAgeDto.setUserIds(userIds);
-        List<MgtMapTotalVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
+        List<MgtMapIntTotalVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
         ageRankList = listRemoveNull(ageRankList);
         MgtPlTotalActivityTotalVo plTotalActivityTotalVo = new MgtPlTotalActivityTotalVo();
         String[] activityAgeKey = new String[ageRankList.size()];
         Integer[] activityAgeValue = new Integer[ageRankList.size()];
         if (!ageRankList.isEmpty()) {
-            MgtMapTotalVo mgtMapTotalVo;
+            MgtMapIntTotalVo MgtMapIntTotalVo;
             for (int i = 0; i < ageRankList.size(); i++) {
-                mgtMapTotalVo = ageRankList.get(i);
-                activityAgeKey[i] = mgtMapTotalVo.getMapKey();
-                activityAgeValue[i] = mgtMapTotalVo.getMapValue();
+                MgtMapIntTotalVo = ageRankList.get(i);
+                activityAgeKey[i] = MgtMapIntTotalVo.getMapKey();
+                activityAgeValue[i] = MgtMapIntTotalVo.getMapValue();
             }
         }
         plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey);
@@ -1941,4 +2027,17 @@
         merVerifyCouponVo.setGoodsList(merCouponGoodsList);
         return merVerifyCouponVo;
     }
+
+    /**
+     * @description  获取用户未支付金额
+     * @author  jqs
+     * @date    2023/6/29 18:00
+     * @param merBaseDto
+     * @return  BigDecimal
+     */
+    @Override
+    public BigDecimal getMemberUnpaidOrder(MerBaseDto merBaseDto){
+        BigDecimal unpaidMoney = orderMapper.getMemberUnpaidOrder(merBaseDto);
+        return unpaidMoney;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java
index 012242b..731254b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/ConsumerGoodsService.java
@@ -1,15 +1,16 @@
 package com.ruoyi.order.service.order;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.order.domain.dto.AppConsumerPageDto;
 import com.ruoyi.order.domain.dto.MerConsumerGoodsDto;
 import com.ruoyi.order.domain.dto.MerConsumerGoodsPageDto;
 import com.ruoyi.order.domain.dto.MerSureConsumerGoodsDto;
 import com.ruoyi.order.domain.pojo.order.ConsumerGoods;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.order.domain.vo.AppConsumerPageVo;
 import com.ruoyi.order.domain.vo.MerConsumerGoodsListVo;
 import com.ruoyi.order.domain.vo.MerConsumerGoodsVo;
+import com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo;
 
 import java.util.List;
 
@@ -57,4 +58,14 @@
      * @return
      */
     List<MerConsumerGoodsListVo> pageMerConsumerGoodsNum(Page page, MerConsumerGoodsPageDto merConsumerGoodsPageDto);
+
+    /**
+     * @description  获取用户在商户
+     * @author  jqs
+     * @date    2023/6/29 15:13
+     * @param userId
+     * @param shopId
+     * @return  MerMemberConsumerGoodsTotalVo
+     */
+    MerMemberConsumerGoodsTotalVo getMemberConsumerGoodsTotalVo(Long userId, Long shopId);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
index dbb0fb8..46c747c 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -9,8 +9,9 @@
 import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
 import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -238,9 +239,9 @@
      * @author  jqs
      * @date    2023/6/21 15:27
      * @param mgtBasePlatformDto
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
     * @description 获取平台商户数据统计
@@ -286,4 +287,13 @@
      * @return  MerVerifyCouponVo
      */
     MerVerifyCouponVo verifyCoupon(String verifyCode);
+
+    /**
+     * @description  获取用户未支付金额
+     * @author  jqs
+     * @date    2023/6/29 18:00
+     * @param userId
+     * @return  BigDecimal
+     */
+    BigDecimal getMemberUnpaidOrder(MerBaseDto merBaseDto);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
index f7b6009..18f9b70 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
@@ -193,4 +193,13 @@
         AND tcg.goods_type = #{param.goodsType} AND tcg.cycle_num_flag = 1
         ORDER BY tcg.create_time DESC
     </select>
+
+    <select id="getMemberConsumerGoodsTotalVo" resultType="com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo">
+        SELECT
+        SUM(CASE WHEN goods_type = 1 THEN service_num - used_num ELSE 0 END) cycleOrder,
+        SUM(CASE WHEN goods_type = 3 THEN service_num - used_num ELSE 0 END) experienceOrder,
+        SUM(CASE WHEN goods_type = 2 THEN service_num - used_num ELSE 0 END) serviceOrder
+        FROM t_consumer_goods tcg
+        WHERE tcg.del_flag = 0 AND tcg.user_id = #{param.memberUserId} AND tcg.shop_id = #{param.shopId}
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index 93ebf10..6454663 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -774,8 +774,8 @@
     <select id="listTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
         SELECT
         DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
-        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
-        SUM(toc.order_money) AS mapValueSecond,
+        COUNT(DISTINCT order_id) AS mapValueFirst,
+        SUM(order_money) AS mapValueSecond,
         FROM
         t_order
         WHERE
@@ -803,7 +803,7 @@
         </if>
     </select>
 
-    <select id="getTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
         COUNT(DISTINCT user_id) AS mapValue
@@ -908,10 +908,10 @@
         HAVING DATEDIFF(t2.pay_time, t1.pay_time) &gt; 30) AS temp
     </select>
 
-    <select id="listMemberGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="listMemberGoodsRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         tog.goods_name mapKey,
-        COUNT(DISTINCT toc.userId) mapValue
+        COUNT(DISTINCT toc.user_id) mapValue
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
         WHERE toc.del_flag = 0
@@ -928,7 +928,7 @@
             AND toc.create_time &lt;= #{param.endDate}
         </if>
         GROUP BY tog.goods_name
-        ORDER BY COUNT(DISTINCT toc.userId) DESC LIMIT 15
+        ORDER BY COUNT(DISTINCT toc.user_id) DESC LIMIT 15
     </select>
 
 
@@ -1143,7 +1143,7 @@
         </if>
     </select>
 
-    <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
         COUNT(DISTINCT user_id) AS mapValue
@@ -1220,7 +1220,14 @@
         SELECT
         SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END) unHandleOrder,
         SUM(pay_money) shopTurnover
-        FROM t.order
+        FROM t_order
         WHERE del_flag = 0 AND shopId = #{shopId}
     </select>
+
+    <select id="getMemberUnpaidOrder" resultType="java.math.BigDecimal">
+        SELECT IFNULL(SUM(receivable_money-pay_money),0)
+        FROM t_order
+        WHERE del_flag = 0 AND user_id = #{param.userId} AND shop_id = #{param.shopId} AND order_status IN (1,2) AND close_flag = 0
+    </select>
+
 </mapper>
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
index 7efb9b5..b875415 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -5,14 +5,15 @@
 import com.ruoyi.shop.domain.pojo.shop.ShopRelUser;
 import com.ruoyi.shop.domain.pojo.shop.ShopStaff;
 import com.ruoyi.shop.service.shop.*;
+import com.ruoyi.shop.service.task.MemberTaskService;
 import com.ruoyi.shop.service.task.ShopTaskService;
-import com.ruoyi.system.api.domain.dto.*;
+import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
+import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
+import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
+import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
-import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo;
-import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
-import com.ruoyi.system.api.domain.vo.ShopRelUserVo;
+import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.model.QwH5LoginVo;
 import com.ruoyi.system.api.model.QwUserDetailDto;
 import com.ruoyi.system.api.service.RemoteUserService;
@@ -57,6 +58,8 @@
     @Resource
     private ShopTotalService shopTotalService;
 
+    @Resource
+    private MemberTaskService memberTaskService;
 
     /**
      * 企业微信H5登录
@@ -202,4 +205,19 @@
         shopTotalService.changeShopTotal(shopTotalChangeDto);
         return R.ok();
     }
+
+    /**
+     * @description  获取最近任务
+     * @author  jqs
+     * @date    2023/6/29 18:25
+     * @param userId
+     * @return  R<MemberTaskSimpleVo>
+     */
+    @PostMapping("/getLastMemberTask")
+    public R<MemberTaskSimpleVo> getLastMemberTask(@RequestBody Long userId)
+    {
+        MemberTaskSimpleVo taskSimpleVo = memberTaskService.getLastMemberTask(userId);
+        return R.ok(taskSimpleVo);
+    }
+
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopTotal.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopTotal.java
index 346e910..0480c25 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopTotal.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopTotal.java
@@ -60,8 +60,8 @@
     /**
      * 总体验订单数
      */
-    @TableField("tolta_experience_order")
-    private Integer toltaExperienceOrder;
+    @TableField("total_experience_order")
+    private Integer totalExperienceOrder;
     /**
      * 总服务订单数
      */
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java
index 3b89317..e55d288 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtPlTotalShopTotalVo.java
@@ -1,6 +1,6 @@
 package com.ruoyi.shop.domain.vo;
 
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -44,13 +44,13 @@
     private Integer[] ageValue;
 
     @ApiModelProperty(value = "合作商类型")
-    private List<MgtMapTotalVo> shopTypeVos;
+    private List<MgtMapIntTotalVo> shopTypeVos;
 
     @ApiModelProperty(value = "区域商户排行")
-    private List<MgtMapTotalVo> areaRankVos;
+    private List<MgtMapIntTotalVo> areaRankVos;
 
     @ApiModelProperty(value = "合作商状态")
-    private List<MgtMapTotalVo> shopStatusVos;
+    private List<MgtMapIntTotalVo> shopStatusVos;
 
     @ApiModelProperty(value = "合作商营业额key")
     private String[] shopSalesRankKey;
@@ -59,5 +59,5 @@
     private Integer[] shopSalesRankValue;
 
     @ApiModelProperty(value = "合作商推荐")
-    private List<MgtMapTotalVo> shopRecommendVos;
+    private List<MgtMapIntTotalVo> shopRecommendVos;
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
index 9e45473..8f3a7af 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
@@ -8,7 +8,7 @@
 import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
-import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
+import com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -153,43 +153,43 @@
      * @author  jqs
      * @date    2023/6/21 17:40
      * @param
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> listShopTypeTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> listShopTypeTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  商户类型统计
      * @author  jqs
      * @date    2023/6/21 17:40
      * @param
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> listShopStatusTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> listShopStatusTotal(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  商户类型统计
      * @author  jqs
      * @date    2023/6/21 17:40
      * @param
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> listShopAreaRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> listShopAreaRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  商户类型统计
      * @author  jqs
      * @date    2023/6/21 17:40
      * @param
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> listShopSalesRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> listShopSalesRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
      * @description  商户类型统计
      * @author  jqs
      * @date    2023/6/21 17:40
      * @param
-     * @return  List<MgtMapTotalVo>
+     * @return  List<MgtMapIntTotalVo>
      */
-    List<MgtMapTotalVo> listShopRecommendRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+    List<MgtMapIntTotalVo> listShopRecommendRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java
index 69ea74b..dd7c1e4 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java
@@ -5,6 +5,7 @@
 import com.ruoyi.shop.domain.dto.MerMemberTaskPageDto;
 import com.ruoyi.shop.domain.pojo.task.MemberTask;
 import com.ruoyi.shop.domain.vo.MerMemberTaskPageVo;
+import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -36,4 +37,14 @@
      * @return  Integer
      */
     Integer getMemberIngTotal(@Param("shopId")Long shopId);
+
+
+    /**
+     * @description  获取最近任务
+     * @author  jqs
+     * @date    2023/6/29 18:25
+     * @param
+     * @return  MemberTaskSimpleVo
+     */
+    MemberTaskSimpleVo getLastMemberTask(@Param("userId")Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
index 250a4e9..763c21e 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -301,7 +301,7 @@
             shopTotal.setTotalActivityCount(0);
             shopTotal.setTotalOrder(0);
             shopTotal.setTotalCycleOrder(0);
-            shopTotal.setToltaExperienceOrder(0);
+            shopTotal.setTotalExperienceOrder(0);
             shopTotal.setTotalServiceOrder(0);
             shopTotal.setTotalGoodsOrder(0);
             shopTotal.setTotalServiceCount(0);
@@ -850,25 +850,25 @@
             plTotalShopTotalVo.setAgeValue(shopTotalMemberVo.getAgeValue());
         }
         //获取商户类型
-        List<MgtMapTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> shopTypeTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto);
         if (shopTypeTotal != null && shopTypeTotal.size() > 0) {
             shopTypeTotal = listRemoveNull(shopTypeTotal);
             plTotalShopTotalVo.setShopTypeVos(shopTypeTotal);
         }
         //获取商户状态
-        List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto);
         if (shopStatusTotal != null && shopStatusTotal.size() > 0) {
             shopStatusTotal = listRemoveNull(shopStatusTotal);
             plTotalShopTotalVo.setShopStatusVos(shopStatusTotal);
         }
         //获取区域排名
-        List<MgtMapTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto);
         if (shopAreaRank != null && shopAreaRank.size() > 0) {
             shopAreaRank = listRemoveNull(shopAreaRank);
             plTotalShopTotalVo.setAreaRankVos(shopAreaRank);
         }
         //获取销售排名
-        List<MgtMapTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto);
         if (shopSalesRank != null && shopSalesRank.size() > 0) {
             String[] shopSalesKey = new String[shopSalesRank.size()];
             Integer[] shopSalesValue = new Integer[shopSalesRank.size()];
@@ -881,7 +881,7 @@
             plTotalShopTotalVo.setShopSalesRankValue(shopSalesValue);
         }
         //获取推荐
-        List<MgtMapTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto);
+        List<MgtMapIntTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto);
         if (shopRecommendRank != null && shopRecommendRank.size() > 0) {
             shopRecommendRank = listRemoveNull(shopRecommendRank);
             plTotalShopTotalVo.setShopRecommendVos(shopRecommendRank);
@@ -893,16 +893,16 @@
      * @description  去除空字符串
      * @author  jqs
      * @date    2023/6/27 17:35
-     * @param mgtMapTotalVos
-     * @return  List<MgtMapTotalVo>
+     * @param MgtMapIntTotalVos
+     * @return  List<MgtMapIntTotalVo>
      */
-    private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos){
-        for (int i = 0; i < mgtMapTotalVos.size(); i++) {
-            if(StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())){
-                mgtMapTotalVos.remove(i);
+    private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos){
+        for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+            if(StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())){
+                MgtMapIntTotalVos.remove(i);
             }
         }
-        return mgtMapTotalVos;
+        return MgtMapIntTotalVos;
     }
 
     /**
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java
index 5900929..b2c2fa5 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java
@@ -7,6 +7,7 @@
 import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.locks.Lock;
@@ -43,8 +44,98 @@
         });
     }
 
+    //更新商户统计实现
     private void handleShopTotal(ShopTotalChangeDto shopTotalChangeDto){
         ShopTotal shopTotal = this.getById(shopTotalChangeDto.getShopId());
+        //订单变化
+        BigDecimal payMoney = BigDecimal.ZERO;
+        Boolean haveOrder = false;
+        if(shopTotalChangeDto.getCycleMoney()!=null){
+            shopTotal.setTotalCycleMoney(shopTotal.getTotalCycleMoney().add(shopTotalChangeDto.getCycleMoney()));
+            payMoney = payMoney.add(shopTotalChangeDto.getCycleMoney());
+            shopTotal.setTotalCycleOrder(shopTotal.getTotalCycleOrder()+1);
+            haveOrder = true;
+        }
+        if(shopTotalChangeDto.getExperienceMoney()!=null){
+            shopTotal.setTotalExperienceMoney(shopTotal.getTotalExperienceMoney().add(shopTotalChangeDto.getExperienceMoney()));
+            payMoney = payMoney.add(shopTotalChangeDto.getExperienceMoney());
+            shopTotal.setTotalExperienceOrder(shopTotal.getTotalExperienceOrder()+1);
+            haveOrder = true;
+        }
+        if(shopTotalChangeDto.getServiceMoney()!=null){
+            shopTotal.setTotalServiceMoney(shopTotal.getTotalServiceMoney().add(shopTotalChangeDto.getServiceMoney()));
+            payMoney = payMoney.add(shopTotalChangeDto.getServiceMoney());
+            shopTotal.setTotalServiceOrder(shopTotal.getTotalServiceOrder()+1);
+            haveOrder = true;
+        }
+        if(shopTotalChangeDto.getGoodsMoney()!=null){
+            shopTotal.setTotalGoodsMoney(shopTotal.getTotalGoodsMoney().add(shopTotalChangeDto.getGoodsMoney()));
+            payMoney = payMoney.add(shopTotalChangeDto.getGoodsMoney());
+            shopTotal.setTotalGoodsOrder(shopTotal.getTotalGoodsOrder()+1);
+            haveOrder = true;
+        }
+        if(haveOrder){
+            shopTotal.setTotalOrderMoney(shopTotal.getTotalOrderMoney().add(payMoney));
+            shopTotal.setTotalOrder(shopTotal.getTotalOrder()+1);
+        }
+        //活动变化
+        if(shopTotalChangeDto.getActivityCount()!=null){
+            shopTotal.setTotalActivityCount(shopTotal.getTotalActivityCount()+shopTotalChangeDto.getActivityCount());
+        }
+        //服务变化
+        Integer serviceCount = 0;
+        Boolean haveService = false;
+        if(shopTotalChangeDto.getTypeCycleService()!=null){
+            if(shopTotalChangeDto.getTypeCycleService()==2){
+                shopTotal.setUsedCycleService(shopTotal.getUsedCycleService()+shopTotalChangeDto.getCycleService());
+                shopTotal.setUseableCycleService(shopTotal.getUseableCycleService()-shopTotalChangeDto.getCycleService());
+                shopTotal.setUseableCyclePerson(shopTotal.getUseableCyclePerson()-shopTotalChangeDto.getCyclePerson());
+                serviceCount = serviceCount - shopTotalChangeDto.getCycleService();
+            }else{
+                shopTotal.setTotalCycleService(shopTotal.getTotalCycleService()+shopTotalChangeDto.getCycleService());
+                shopTotal.setUseableCycleService(shopTotal.getUseableCycleService()+shopTotalChangeDto.getCycleService());
+                shopTotal.setTotalCyclePerson(shopTotal.getTotalCyclePerson()+shopTotalChangeDto.getCyclePerson());
+                serviceCount = serviceCount + shopTotalChangeDto.getCycleService();
+            }
+            haveService = true;
+        }
+        if(shopTotalChangeDto.getTypeServiceService()!=null){
+            if(shopTotalChangeDto.getTypeServiceService()==2){
+                shopTotal.setUsedServiceService(shopTotal.getUsedServiceService()+shopTotalChangeDto.getServiceService());
+                shopTotal.setUseableServiceService(shopTotal.getUseableServiceService()-shopTotalChangeDto.getServiceService());
+                shopTotal.setUseableServicePerson(shopTotal.getUseableServicePerson()-shopTotalChangeDto.getServicePerson());
+                serviceCount = serviceCount - shopTotalChangeDto.getServiceService();
+            }else{
+                shopTotal.setTotalServiceService(shopTotal.getTotalServiceService()+shopTotalChangeDto.getServiceService());
+                shopTotal.setUseableServiceService(shopTotal.getUseableServiceService()+shopTotalChangeDto.getServiceService());
+                shopTotal.setTotalServicePerson(shopTotal.getTotalServicePerson()+shopTotalChangeDto.getServicePerson());
+                serviceCount = serviceCount + shopTotalChangeDto.getServiceService();
+            }
+            haveService = true;
+        }
+        if(shopTotalChangeDto.getTypeExperienceService()!=null){
+            if(shopTotalChangeDto.getTypeExperienceService()==2){
+                shopTotal.setUsedExperienceService(shopTotal.getUsedExperienceService()+shopTotalChangeDto.getExperienceService());
+                shopTotal.setUseableExperienceService(shopTotal.getUseableExperienceService()-shopTotalChangeDto.getExperienceService());
+                shopTotal.setUseableExperiencePerson(shopTotal.getUseableExperiencePerson()-shopTotalChangeDto.getExperiencePerson());
+                serviceCount = serviceCount - shopTotalChangeDto.getExperienceService();
+            }else{
+                shopTotal.setTotalExperienceService(shopTotal.getTotalExperienceService()+shopTotalChangeDto.getExperienceService());
+                shopTotal.setUseableExperienceService(shopTotal.getUseableExperienceService()+shopTotalChangeDto.getExperienceService());
+                shopTotal.setTotalExperiencePerson(shopTotal.getTotalExperiencePerson()+shopTotalChangeDto.getExperiencePerson());
+                serviceCount = serviceCount + shopTotalChangeDto.getExperienceService();
+            }
+            haveService = true;
+        }
+        if(haveService){
+            if(serviceCount<0){
+                shopTotal.setUsedServiceCount(shopTotal.getUsedServiceCount()+serviceCount);
+                shopTotal.setUseableServiceCount(shopTotal.getUsedServiceCount()+serviceCount);
+            }else{
+                shopTotal.setTotalServiceCount(shopTotal.getTotalServiceCount()+serviceCount);
+                shopTotal.setUseableServiceCount(shopTotal.getUsedServiceCount()+serviceCount);
+            }
+        }
         this.saveOrUpdate(shopTotal);
     }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
index fed1213..0b04907 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -16,6 +16,7 @@
 import com.ruoyi.shop.service.task.MemberTaskService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.shop.service.task.TaskFileService;
+import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo;
 import com.ruoyi.system.api.service.RemoteMemberService;
 import org.springframework.stereotype.Service;
 
@@ -175,4 +176,15 @@
         return memberTaskMapper.getMemberIngTotal(shopId);
     }
 
+    /**
+     * @description  获取最近任务
+     * @author  jqs
+     * @date    2023/6/29 18:25
+     * @param
+     * @return  MemberTaskSimpleVo
+     */
+    @Override
+    public MemberTaskSimpleVo getLastMemberTask(Long userId){
+        return memberTaskMapper.getLastMemberTask(userId);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
index fc6e744..8548529 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -114,7 +114,7 @@
     @Override
     public MgtBulletinBoardVo boardTaskTotal(){
         MgtBulletinBoardVo mgtBulletinBoardVo = new MgtBulletinBoardVo();
-        LambdaQueryWrapper<ShopTask> queryWrapper = new LambdaQueryWrapper();
+        LambdaQueryWrapper<ShopTask> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ShopTask::getDelFlag,0);
         queryWrapper.eq(ShopTask::getTaskStatus,1);
         queryWrapper.eq(ShopTask::getTaskDate,DateUtils.getDate());
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
index b83e93d..65fdfc7 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
@@ -1,12 +1,13 @@
 package com.ruoyi.shop.service.task;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.shop.domain.dto.MerCreateMemberTaskDto;
 import com.ruoyi.shop.domain.dto.MerFollowMemberTaskDto;
 import com.ruoyi.shop.domain.dto.MerMemberTaskPageDto;
 import com.ruoyi.shop.domain.pojo.task.MemberTask;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.shop.domain.vo.MerMemberTaskPageVo;
+import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo;
 
 import java.util.List;
 
@@ -48,4 +49,13 @@
      * @return  Integer
      */
     Integer getMemberIngTotal(Long shopId);
+
+    /**
+     * @description  获取最近任务
+     * @author  jqs
+     * @date    2023/6/29 18:25
+     * @param
+     * @return  MemberTaskSimpleVo
+     */
+    MemberTaskSimpleVo getLastMemberTask(Long userId);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
index 89ed8d8..c145d84 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -355,7 +355,7 @@
             AND ts.shop_status = 2
         </if>
         <if test="param.shopTags!=null and param.shopTags!=''">
-            AND tm.shop_tags REGEXP #{param.shopTags}
+            AND ts.shop_tags REGEXP #{param.shopTags}
         </if>
         <if test="param.supportingCapacityFlag!=null and param.supportingCapacityFlag!=''">
             AND ts.supporting_capacity_flag = #{param.supportingCapacityFlag}
@@ -380,7 +380,7 @@
         </if>
         <if test="param.keyword!=null and param.keyword!=''">
             AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%')
-            OR ts.shopowner_phone LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopNumber LIKE CONCAT('%',#{param.keyword},'%'))
+            OR ts.shopowner_phone LIKE CONCAT('%',#{param.keyword},'%') OR ts.shop_number LIKE CONCAT('%',#{param.keyword},'%'))
         </if>
         ORDER BY ts.create_time DESC
     </select>
@@ -607,7 +607,7 @@
     </select>
 
 
-    <select id="listShopTypeTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="listShopTypeTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         ts.shop_type mapKey,
         COUNT(ts.shop_id) mapValue
@@ -637,7 +637,7 @@
         GROUP BY ts.shop_type
     </select>
 
-    <select id="listShopStatusTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="listShopStatusTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         ts.shop_custom_status mapKey,
         COUNT(ts.shop_id) mapValue
@@ -667,7 +667,7 @@
         GROUP BY ts.shop_custom_status
     </select>
 
-    <select id="listShopAreaRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="listShopAreaRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         ts.shop_city_code mapKey,
         COUNT(ts.shop_id) mapValue
@@ -698,7 +698,7 @@
         ORDER BY COUNT(ts.shop_id) DESC LIMIT 15
     </select>
 
-    <select id="listShopSalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="listShopSalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         ts.shop_name mapKey,
         tst.total_order_money mapValue
@@ -729,7 +729,7 @@
         ORDER BY tst.total_order_money DESC LIMIT 15
     </select>
 
-    <select id="listShopRecommendRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+    <select id="listShopRecommendRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
         SELECT
         ts.recommend_person mapKey,
         COUNT(ts.shop_id) mapValue
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
index d40b1ea..88203d4 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
@@ -98,4 +98,13 @@
         FROM t_member_task
         WHERE del_flag = 0 AND task_status = 1 AND shop_id = #{shopId} AND task_date = DATE(NOW())
     </select>
+
+    <select id="getLastMemberTask" resultType="com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo">
+        SELECT
+        task_date taskDate,
+        task_content taskContent
+        FROM t_member_task
+        WHERE del_flag = 0 AND task_status = 2 AND user_id = #{userId}
+        ORDER BY task_date DESC LIMIT 1
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/business/MerConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/business/MerConfigController.java
index 564e7d0..84ba649 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/business/MerConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/business/MerConfigController.java
@@ -52,4 +52,7 @@
         recommendCooperationService.recommendCooperation(merRecommendCooperationDto);
         return R.ok();
     }
+
+
+
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
index 91e2db7..08e3fa0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java
@@ -130,4 +130,17 @@
         return R.ok(sysSimpleUserVoList);
     }
 
+    /**
+     * @description  通过名称获取活跃度
+     * @author  jqs
+     * @date    2023/6/29 17:20
+     * @param name
+     * @return  R<Activeness>
+     */
+    @PostMapping("/getActivenessByName")
+    public R<Activeness> getActivenessByName(@RequestBody String name)
+    {
+        Activeness activeness = activenessService.getActivenessByName(name);
+        return R.ok(activeness);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
index ef3fbf3..f7c4ff3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -87,6 +87,13 @@
         return R.ok(mgtCustomConfigVo);
     }
 
+    @RequestMapping(value = "/getActivenessList", method = RequestMethod.POST)
+    @ApiOperation(value = "获取活跃度")
+    public R<List<String>> getActivenessList() {
+        List<String> activenessList = activenessService.getActivenessList();
+        return R.ok(activenessList);
+    }
+
     @RequestMapping(value = "/editCooperation", method = RequestMethod.POST)
     @Log(title = "申请合作管理", businessType = BusinessType.UPDATE,operContent = "修改申请合作")
     @ApiOperation(value = "修改申请合作")
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/ActivenessService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/ActivenessService.java
index f9426ea..8946bd0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/ActivenessService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/ActivenessService.java
@@ -42,4 +42,22 @@
      */
     void deleteMgtActiveness(MgtBaseGetDto mgtBaseGetDto);
 
+    /**
+     * @description  获取活跃度list
+     * @author  jqs
+     * @date    2023/6/29 17:12
+     * @param
+     * @return  List<String>
+     */
+    List<String> getActivenessList();
+
+    /**
+     * @description  通过名称获取活跃度
+     * @author  jqs
+     * @date    2023/6/29 17:18
+     * @param activenessName
+     * @return  Activeness
+     */
+    Activeness getActivenessByName(String activenessName);
+
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ActivenessServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ActivenessServiceImpl.java
index 0a40e9d..b7ea447 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ActivenessServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/ActivenessServiceImpl.java
@@ -12,6 +12,7 @@
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -79,4 +80,34 @@
         activeness.setUpdateUserId(mgtBaseGetDto.getUserId());
         this.saveOrUpdate(activeness);
     }
+
+    /**
+     * @description  获取活跃度list
+     * @author  jqs
+     * @date    2023/6/29 17:12
+     * @param
+     * @return  List<String>
+     */
+    @Override
+    public List<String> getActivenessList(){
+        List<Activeness> activenessList = activenessMapper.selectList(new LambdaQueryWrapper<Activeness>().eq(Activeness::getDelFlag, 0));
+        List<String> nameList = activenessList.stream().map(activeness ->{
+                    String name = activeness.getActivenessName();
+                    return name;
+                }).collect(Collectors.toList());
+        return nameList;
+    }
+
+    /**
+     * @description  通过名称获取活跃度
+     * @author  jqs
+     * @date    2023/6/29 17:18
+     * @param activenessName
+     * @return  Activeness
+     */
+    @Override
+    public Activeness getActivenessByName(String activenessName){
+        Activeness activeness = this.getOne(new LambdaQueryWrapper<Activeness>().eq(Activeness::getDelFlag, 0).eq(Activeness::getActivenessName, activenessName),false);
+        return activeness;
+    }
 }

--
Gitblit v1.7.1