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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND create_time <= #{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()) >= 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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND create_time <= #{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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND create_time <= #{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