From dc1b9ef0f6437e73bbb7d25ec3ff4f8704557998 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 19 六月 2023 18:27:49 +0800
Subject: [PATCH] 统计

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java               |   48 ++++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java                  |   13 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtNurseTotalVo.java                     |   22 +++
 ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java                                            |    2 
 ruoyi-gateway/src/main/resources/bootstrap.yml                                                               |    4 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java                           |    2 
 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/CodeFactoryUtil.java        |   32 ++--
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java                 |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java         |   23 +++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java             |    2 
 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/ApplicationContextUtil.java |   27 +++
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java                 |   19 ++
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml                                 |   79 +++++++++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java                        |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtTotalController.java      |   43 ++++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtAgeTotalVo.java                       |   36 +++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java                           |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java                    |   33 ++++
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseDateDto.java                 |   21 +++
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java                              |    2 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java             |    4 
 21 files changed, 386 insertions(+), 32 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseDateDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseDateDto.java
new file mode 100644
index 0000000..94eee24
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseDateDto.java
@@ -0,0 +1,21 @@
+package com.ruoyi.system.api.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MgtBaseDateDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/19 15:04
+ * @Version 1.0
+ */
+@Data
+public class MgtBaseDateDto extends MgtBaseDto{
+
+    @ApiModelProperty(value = "开始日期")
+    private String startDate;
+
+    @ApiModelProperty(value = "结束日期")
+    private String endDate;
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java
new file mode 100644
index 0000000..e8413d9
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtBaseShopDto.java
@@ -0,0 +1,19 @@
+package com.ruoyi.system.api.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MgtBaseShopDto
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/19 15:31
+ * @Version 1.0
+ */
+@Data
+public class MgtBaseShopDto extends MgtBaseDateDto{
+
+    @ApiModelProperty(value = "商户id")
+    private Long shopId;
+
+}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
index f5a5b35..8fc7c6b 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/RuoYiAuthApplication.java
@@ -18,7 +18,7 @@
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
-@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api")})
+@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")})
 public class RuoYiAuthApplication
 {
     public static void main(String[] args)
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/ApplicationContextUtil.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/ApplicationContextUtil.java
new file mode 100644
index 0000000..4ebffee
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/ApplicationContextUtil.java
@@ -0,0 +1,27 @@
+package com.ruoyi.common.security.utils;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName ApplicationContextUtil
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/19 17:47
+ * @Version 1.0
+ */
+@Component
+public class ApplicationContextUtil implements ApplicationContextAware {
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        ApplicationContextUtil.applicationContext = applicationContext;
+    }
+
+    public static <T> T getBean(Class<T> clazz) {
+        return applicationContext.getBean(clazz);
+    }
+}
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/CodeFactoryUtil.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/CodeFactoryUtil.java
index 142f067..4fe9468 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/CodeFactoryUtil.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/CodeFactoryUtil.java
@@ -5,7 +5,6 @@
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.Resource;
 import java.security.SecureRandom;
 import java.util.Date;
 import java.util.Random;
@@ -21,14 +20,13 @@
 @Component
 public class CodeFactoryUtil {
 
+    private static RedisService redisService = null;
 
-    //静态住入到自己的类中
-    private static RedisService redisService;
-
-    //将静态属性以入参(形参)的方式传入一个方法中,然后将此方法通过 @Resource 注入到Spring容器中
-    @Resource
-    public void setService(RedisService redisService) {
-        CodeFactoryUtil.redisService = redisService;
+    private static RedisService getRedisService() {
+        if (redisService == null) {
+            redisService = ApplicationContextUtil.getBean(RedisService.class);
+        }
+        return redisService;
     }
 
     /**
@@ -123,7 +121,7 @@
      */
 
     public static void main(String[] args) {
-
+        System.out.printf("getShopNo()"+getShopNo());
     }
 
     /**
@@ -167,13 +165,13 @@
     private static String getNoSuffixNumber(String prefix){
         Integer suffixNumberInt;
         String suffixNumber = "00001";
-        if(redisService.hasKey(prefix)){
-            suffixNumberInt = redisService.getCacheObject(prefix);
+        if(getRedisService().hasKey(prefix)){
+            suffixNumberInt = getRedisService().getCacheObject(prefix);
             suffixNumber = toFillZeroSuffixNumber(suffixNumberInt,SHOP_LENGTH);
             suffixNumberInt = suffixNumberInt + 1;
-            redisService.setCacheObject(prefix, suffixNumberInt);
+            getRedisService().setCacheObject(prefix, suffixNumberInt);
         }else{
-            redisService.setCacheObject(prefix, 1);
+            getRedisService().setCacheObject(prefix, 1);
         }
         return suffixNumber;
     }
@@ -200,13 +198,13 @@
     private static String getOrderSuffixNumber(String prefix){
         Integer suffixNumberInt;
         String suffixNumber = "0001";
-        if(redisService.hasKey(prefix)){
-            suffixNumberInt = redisService.getCacheObject(prefix);
+        if(getRedisService().hasKey(prefix)){
+            suffixNumberInt = getRedisService().getCacheObject(prefix);
             suffixNumber = toFillZeroSuffixNumber(suffixNumberInt,ORDER_LENGTH);
             suffixNumberInt = suffixNumberInt + 1;
-            redisService.setCacheObject(prefix, suffixNumberInt, 24L, TimeUnit.HOURS);
+            getRedisService().setCacheObject(prefix, suffixNumberInt, 24L, TimeUnit.HOURS);
         }else{
-            redisService.setCacheObject(prefix, 1, 24L, TimeUnit.HOURS);
+            getRedisService().setCacheObject(prefix, 1, 24L, TimeUnit.HOURS);
         }
         return suffixNumber;
     }
diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml
index 95ed46d..fdae1b6 100644
--- a/ruoyi-gateway/src/main/resources/bootstrap.yml
+++ b/ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -35,8 +35,8 @@
       datasource:
         ds1:
           nacos:
-            server-addr: 47.109.78.184:5000
-            #server-addr: 127.0.0.1:8848
+            #server-addr: 47.109.78.184:5000
+            server-addr: 127.0.0.1:8848
             dataId: sentinel-ruoyi-gateway
             groupId: DEFAULT_GROUP
             data-type: json
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java
index 83a80d4..2d72679 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java
@@ -17,7 +17,7 @@
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @SpringBootApplication
-@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api")})
+@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")})
 public class RuoYiGoodsApplication
 {
     public static void main(String[] args)
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
index de054a7..5a6b650 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/goods/GoodsServiceImpl.java
@@ -61,6 +61,8 @@
     @Resource
     private GoodsTotalService goodsTotalService;
 
+    
+
     /**
     * @description 获取推荐商品列表
     * @param page shopId
@@ -278,7 +280,7 @@
         String goodsId = mgtGoodsEditDto.getGoodsId();
         Goods goodsSame = this.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getDelFlag,0).eq(Goods::getGoodsName,mgtGoodsEditDto.getGoodsName()));
         // 判断是否有商品ID 没有则新建
-        if (goodsId != null) {
+        if (StringUtils.isNotBlank(goodsId)) {
             if(goodsSame!=null&&!Objects.equals(goodsSame.getGoodsId(), goodsId)){
                 throw new ServiceException(AppErrorConstant.GOODS_DOUBLE);
             }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
index d4c7bc9..8a4c77e 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
@@ -17,7 +17,7 @@
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @SpringBootApplication
-@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api")})
+@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")})
 public class RuoYiMemberApplication
 {
     public static void main(String[] args)
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtTotalController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtTotalController.java
new file mode 100644
index 0000000..c666bba
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtTotalController.java
@@ -0,0 +1,43 @@
+package com.ruoyi.member.controller.management;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.member.domain.vo.MgtTotalMemberTotalVo;
+import com.ruoyi.member.service.member.MemberService;
+import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @ClassName MgtTotalController
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/19 14:36
+ * @Version 1.0
+ */
+@Api(value = "管理台会员统计相关接口", tags = "管理台会员统计相关接口", description = "管理台会员统计相关接口")
+@RestController
+@RequestMapping("/mgt/total")
+public class MgtTotalController {
+
+    @Resource
+    private MemberService memberService;
+
+
+    @RequestMapping(value = "/getTotalMemberTotal", method = RequestMethod.POST)
+    @ApiOperation(value = "获取会员人数统计")
+    public R<MgtTotalMemberTotalVo> getTotalMemberTotal(@RequestBody MgtBaseShopDto mgtBaseShopDto) {
+        Long userId = SecurityUtils.getUserId();
+        mgtBaseShopDto.setUserId(userId);
+        MgtTotalMemberTotalVo totalMemberTotalVo = memberService.getTotalMemberTotal(mgtBaseShopDto);
+        return R.ok(totalMemberTotalVo);
+    }
+
+
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtAgeTotalVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtAgeTotalVo.java
new file mode 100644
index 0000000..e022a27
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtAgeTotalVo.java
@@ -0,0 +1,36 @@
+package com.ruoyi.member.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MgtAgeTotalVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/19 15:56
+ * @Version 1.0
+ */
+@Data
+public class MgtAgeTotalVo {
+
+    @ApiModelProperty(value = "男人")
+    private Integer manTotal;
+
+    @ApiModelProperty(value = "女人")
+    private Integer womenTotal;
+
+    @ApiModelProperty(value = "<20")
+    private Integer tenAge;
+
+    @ApiModelProperty(value = "21-30")
+    private Integer twentyAge;
+
+    @ApiModelProperty(value = "31-40")
+    private Integer ThirtyAge;
+
+    @ApiModelProperty(value = "41-50")
+    private Integer fortyAge;
+
+    @ApiModelProperty(value = ">50")
+    private Integer fiftyAge;
+}
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtNurseTotalVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtNurseTotalVo.java
new file mode 100644
index 0000000..57f7816
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtNurseTotalVo.java
@@ -0,0 +1,22 @@
+package com.ruoyi.member.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MgtNurseTotalVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/19 18:06
+ * @Version 1.0
+ */
+@Data
+public class MgtNurseTotalVo {
+
+    @ApiModelProperty(value = "调理问题")
+    private String nurse;
+
+    @ApiModelProperty(value = "人数")
+    private Integer userCount;
+
+}
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
new file mode 100644
index 0000000..a227cbd
--- /dev/null
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -0,0 +1,48 @@
+package com.ruoyi.member.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName MgtTotalMemberTotalVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/19 15:06
+ * @Version 1.0
+ */
+@Data
+public class MgtTotalMemberTotalVo {
+
+    @ApiModelProperty(value = "总会员")
+    private Integer memberTotal;
+
+    @ApiModelProperty(value = "线上来源")
+    private Integer onlineTotal;
+
+    @ApiModelProperty(value = "线下来源")
+    private Integer offlineTotal;
+
+    @ApiModelProperty(value = "转介绍")
+    private Integer introduceTotal;
+
+    @ApiModelProperty(value = "周期会员")
+    private Integer cycleTotal;
+
+    @ApiModelProperty(value = "体验会员")
+    private Integer experienceTotal;
+
+    @ApiModelProperty(value = "服务会员")
+    private Integer serviceTotal;
+
+    @ApiModelProperty(value = "男人")
+    private Integer manTotal;
+
+    @ApiModelProperty(value = "女人")
+    private Integer womenTotal;
+
+    @ApiModelProperty(value = "会员年龄key")
+    private String[] ageKey;
+
+    @ApiModelProperty(value = "会员年龄value")
+    private Integer[] ageValue;
+}
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 02b0803..be6d804 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
@@ -5,9 +5,8 @@
 import com.ruoyi.member.domain.dto.MerCashMemberPageDto;
 import com.ruoyi.member.domain.dto.MerMemberPageDto;
 import com.ruoyi.member.domain.dto.MgtMemberPageDto;
-import com.ruoyi.member.domain.vo.MerCashMemberPageVo;
-import com.ruoyi.member.domain.vo.MerMemberPageVo;
-import com.ruoyi.member.domain.vo.MgtMemberPageVo;
+import com.ruoyi.member.domain.vo.*;
+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.MgtSimpleMemberVo;
@@ -130,6 +129,34 @@
     * @date 2023/6/18 16:47
     */
     Integer memberToday();
+
+
+    /**
+     * @description  会员人数统计
+     * @author  jqs
+     * @date    2023/6/19 15:26
+     * @param
+     * @return  MgtTotalMemberTotalVo
+     */
+    MgtTotalMemberTotalVo getTotalMemberTotal(@Param("param") MgtBaseShopDto mgtBaseShopDto);
+
+    /**
+     * @description  会员人数统计
+     * @author  jqs
+     * @date    2023/6/19 15:26
+     * @param
+     * @return  MgtTotalMemberTotalVo
+     */
+    MgtAgeTotalVo getTotalMemberTotalAge(@Param("param") MgtBaseShopDto mgtBaseShopDto);
+
+    /**
+     * @description  会员人数统计
+     * @author  jqs
+     * @date    2023/6/19 15:26
+     * @param
+     * @return  MgtTotalMemberTotalVo
+     */
+    List<MgtNurseTotalVo> getTotalMemberTotalNurse(@Param("param") MgtBaseShopDto mgtBaseShopDto);
 }
 
 
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 33a978e..302bf90 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
@@ -102,6 +102,7 @@
     @Resource
     private MemberArchiveService memberArchiveService;
 
+    
 
     /**
      * @description: TODO
@@ -740,7 +741,7 @@
             String memberUserIds = mgtMemberRelDelDto.getMemberUserIds();
             String[] memberUserIdArr = memberUserIds.split(",");
             for(String str : memberUserIdArr) {
-                Member member = this.getById(Long.valueOf(str));
+                Member member = this.getByUserId(Long.valueOf(str));
                 member.setBindingFlag(0);
                 member.setUpdateTime(new Date());
                 member.setUpdateUserId(mgtMemberRelDelDto.getUserId());
@@ -944,4 +945,24 @@
         mgtBulletinBoardVo.setMemberToday(memberMapper.memberToday());
         return mgtBulletinBoardVo;
     }
+
+    /**
+     * @description  会员人数统计
+     * @author  jqs
+     * @date    2023/6/19 15:26
+     * @param
+     * @return  MgtTotalMemberTotalVo
+     */
+    @Override
+    public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto){
+        MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto);
+        MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto);
+        String[] ageKey = {"<20","21-30","31-40","41-50",">50"};
+        Integer[] ageValue = {mgtAgeTotalVo.getTenAge(),mgtAgeTotalVo.getTwentyAge(),mgtAgeTotalVo.getThirtyAge(),mgtAgeTotalVo.getFortyAge(),mgtAgeTotalVo.getFiftyAge()};
+        mgtTotalMemberTotalVo.setAgeKey(ageKey);
+        mgtTotalMemberTotalVo.setAgeValue(ageValue);
+        List<MgtNurseTotalVo> nurseTotalVos = memberMapper.getTotalMemberTotalNurse(mgtBaseShopDto);
+
+        return mgtTotalMemberTotalVo;
+    }
 }
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 4d05fc4..bc709aa 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
@@ -208,7 +208,7 @@
     List<MgtSimpleMemberVo> listSimpleVoByIds(String userIds);
 
     /**
-     * @description
+     * @description 通过关键词获取用户id集合
      * @author  jqs
      * @date    2023/6/16 12:42
      * @param mgtUserIdByKeywordDto
@@ -217,11 +217,20 @@
     MgtUserIdByKeywordVo getUserIdByKeyword(MgtUserIdByKeywordDto mgtUserIdByKeywordDto);
 
     /**
-    * @description boardMemberTotal
+    * @description 看板会员统计
     * @param
     * @return MgtBulletinBoardVo
     * @author jqs34
     * @date 2023/6/18 16:47
     */
     MgtBulletinBoardVo boardMemberTotal();
+
+    /**
+     * @description  会员人数统计
+     * @author  jqs
+     * @date    2023/6/19 15:26
+     * @param
+     * @return  MgtTotalMemberTotalVo
+     */
+    MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto);
 }
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 a9182f0..3f67897 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
@@ -195,6 +195,7 @@
 
     <select id="pageMgtMember" resultType="com.ruoyi.member.domain.vo.MgtMemberPageVo">
         SELECT
+        tm.member_id memberId,
         tm.user_id userId,
         tm.relation_shop_id relationShopId,
         tm.member_no memberNo,
@@ -322,4 +323,82 @@
     <select id="memberToday" resultType="java.lang.Integer">
         SELECT COUNT(user_id) FROM t_member WHERE del_flag = 0 AND create_time = CURDATE()
     </select>
+
+    <select id="getTotalMemberTotal" resultType="com.ruoyi.member.domain.vo.MgtTotalMemberTotalVo">
+        SELECT
+            COUNT(member_id) memberTotal,
+            SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END) onlineTotal,
+            SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END) offlineTotal,
+            0 introduceTotal,
+            SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END) cycleTotal,
+            SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END) experienceTotal,
+            SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END) serviceTotal
+        FROM t_member WHERE del_flag = 0 AND binding_flag = 1
+        <if test="param.shopId != null and param.shopId != ''">
+            AND relation_shop_id = #{param.shopId}
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND create_time &lt;= #{param.endDate}
+        </if>
+    </select>
+
+    <select id="getTotalMemberTotal" resultType="com.ruoyi.member.domain.vo.MgtTotalMemberTotalVo">
+        SELECT
+        COUNT(member_id) memberTotal,
+        SUM(CASE WHEN customer_source = "小程序" THEN 1 ELSE 0 END) onlineTotal,
+        SUM(CASE WHEN customer_source = "小程序" THEN 0 ELSE 1 END) offlineTotal,
+        0 introduceTotal,
+        SUM(CASE WHEN goods_type LIKE "%周期%" THEN 1 ELSE 0 END) cycleTotal,
+        SUM(CASE WHEN goods_type LIKE "%体验%" THEN 1 ELSE 0 END) experienceTotal,
+        SUM(CASE WHEN goods_type LIKE "%服务%" THEN 1 ELSE 0 END) serviceTotal
+        FROM t_member WHERE del_flag = 0 AND binding_flag = 1
+        <if test="param.shopId != null and param.shopId != ''">
+            AND relation_shop_id = #{param.shopId}
+        </if>
+    </select>
+
+    <select id="getTotalMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo">
+        SELECT
+        SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) manTotal,
+        SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) womenTotal,
+        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END) AS tenAge,
+        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS twentyAge,
+        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS ThirtyAge,
+        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END) AS fortyAge,
+        SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) &gt;= 51 THEN 1 ELSE 0 END) AS fiftyAge
+        FROM t_member WHERE del_flag = 0 AND binding_flag = 1
+        <if test="param.shopId != null and param.shopId != ''">
+            AND relation_shop_id = #{param.shopId}
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND create_time &lt;= #{param.endDate}
+        </if>
+    </select>
+
+    <select id="getTotalMemberTotalNurse" resultType="com.ruoyi.member.domain.vo.MgtNurseTotalVo">
+        SELECT member_nurse nurse, COUNT(*) AS userCount
+        FROM (
+            SELECT member_id, SUBSTRING_INDEX(SUBSTRING_INDEX(member_nurse, ',', numbers.n), ',', -1) user_tag
+            FROM (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10) numbers
+            INNER JOIN t_member ON CHAR_LENGTH(member_nurse) - CHAR_LENGTH(REPLACE(member_nurse, ',', '')) >= numbers.n - 1
+            <if test="param.shopId != null and param.shopId != ''">
+                AND relation_shop_id = #{param.shopId}
+            </if>
+            <if test="param.startDate!=null and param.startDate!=''">
+                AND create_time &gt;= #{param.startDate}
+            </if>
+            <if test="param.endDate!=null and param.endDate!=''">
+                AND create_time &lt;= #{param.endDate}
+            </if>
+            ) x
+        WHERE member_nurse != ''
+        GROUP BY member_nurse
+        ORDER BY count DESC;
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java
index 3ad9542..8570837 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java
@@ -17,7 +17,7 @@
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @SpringBootApplication
-@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api")})
+@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")})
 public class RuoYiOrderApplication
 {
     public static void main(String[] args)
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 6a4ea59..9189131 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
@@ -72,6 +72,8 @@
     @Resource
     private RemoteShoppingCartService remoteShoppingCartService;
 
+    
+
 
     /**
      * @description: buyGoods
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java
index 2323020..7de9087 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java
@@ -17,7 +17,7 @@
 @EnableCustomSwagger2
 @EnableRyFeignClients
 @SpringBootApplication
-@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api")})
+@ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")})
 public class RuoYiShopApplication
 {
     public static void main(String[] args)
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 55a9409..a526860 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
@@ -93,7 +93,7 @@
     @Resource
     private ShopProportionService shopProportionService;
 
-
+    
 
     /**
      * 获取商户详情

--
Gitblit v1.7.1