From 5ac314f143fb473f83091396a4033a975b6e608d Mon Sep 17 00:00:00 2001 From: czc Date: Mon, 31 Jul 2023 09:14:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fjp/lc/test/service/ServiceTest.java | 20 ++ .../com/ruoyi/generator/ApplicationTest.java | 7 +- .../src/test/resources/application.yml | 18 +- .../main/java/com/cyl/job/StatisticsJob.java | 37 ++++ .../SystemStatisticsController.java | 93 +++++++++ .../aws/convert/SystemStatisticsConvert.java | 16 ++ .../manager/aws/domain/SystemStatistics.java | 68 +++++++ .../aws/mapper/SystemStatisticsMapper.java | 21 ++ .../aws/pojo/query/SystemStatisticsQuery.java | 50 +++++ .../aws/pojo/vo/SystemStatisticsVO.java | 51 +++++ .../aws/service/SystemStatisticsService.java | 183 ++++++++++++++++++ .../cyl/manager/oms/mapper/OrderMapper.java | 5 + .../manager/ums/mapper/MemberCartMapper.java | 4 + .../ums/mapper/MemberLogininforMapper.java | 4 + .../mapper/aws/SystemStatisticsMapper.xml | 42 ++++ .../main/resources/mapper/oms/OrderMapper.xml | 15 ++ .../resources/mapper/ums/MemberCartMapper.xml | 6 + .../mapper/ums/MemberLogininforMapper.xml | 6 + sql/aws/systemStatistics.sql | 22 +++ 19 files changed, 656 insertions(+), 12 deletions(-) create mode 100644 ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/aws/convert/SystemStatisticsConvert.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/aws/domain/SystemStatistics.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/aws/mapper/SystemStatisticsMapper.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/vo/SystemStatisticsVO.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java create mode 100644 ruoyi-mall/src/main/resources/mapper/aws/SystemStatisticsMapper.xml create mode 100644 sql/aws/systemStatistics.sql diff --git a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java index ddeb905..8cc8e8b 100644 --- a/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java +++ b/ruoyi-admin/src/test/java/com/fjp/lc/test/service/ServiceTest.java @@ -7,6 +7,9 @@ import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.symmetric.AES; import com.cyl.h5.pojo.dto.PayNotifyMessageDTO; import com.cyl.h5.service.H5OrderService; +import com.cyl.manager.aws.domain.SystemStatistics; +import com.cyl.manager.aws.mapper.SystemStatisticsMapper; +import com.cyl.manager.aws.service.SystemStatisticsService; import com.cyl.manager.ums.service.MemberCartService; import com.cyl.wechat.WechatAuthService; import com.cyl.wechat.WechatPayService; @@ -25,6 +28,9 @@ import org.springframework.http.ResponseEntity; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -44,6 +50,12 @@ public class ServiceTest { @Value("${aes.key}") private String key; + @Autowired + private SystemStatisticsService systemStatisticsService; + + @Autowired + private SystemStatisticsMapper systemStatisticsMapper; + @Test public void test1() { memberCartService.mineCartNum(); @@ -110,4 +122,12 @@ public class ServiceTest { ResponseEntity stringResponseEntity = h5OrderService.payCallBack(messageDTO); System.out.println(stringResponseEntity.getBody()); } + + @Test + public void test7(){ + LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusDays(-1); + LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).plusDays(-1); + SystemStatistics data = systemStatisticsService.stat(startTime, endTime); + systemStatisticsMapper.insert(data); + } } diff --git a/ruoyi-generator/src/test/java/com/ruoyi/generator/ApplicationTest.java b/ruoyi-generator/src/test/java/com/ruoyi/generator/ApplicationTest.java index 6c40f01..21ab343 100644 --- a/ruoyi-generator/src/test/java/com/ruoyi/generator/ApplicationTest.java +++ b/ruoyi-generator/src/test/java/com/ruoyi/generator/ApplicationTest.java @@ -33,12 +33,13 @@ public class ApplicationTest { // "ums_member_address", // "ums_member_wechat", // "ums_member_cart" - "oms_order", +// "oms_order", // "oms_order_delivery_history", // "oms_order_item", // "oms_order_operate_history", - "oms_aftersale", - "oms_aftersale_item" +// "oms_aftersale", +// "oms_aftersale_item" + "aws_system_statistics" ); // 查询表信息 List tableList = genTableService.selectGenTableByName(tableNames); diff --git a/ruoyi-generator/src/test/resources/application.yml b/ruoyi-generator/src/test/resources/application.yml index 39cedb5..0fd7560 100644 --- a/ruoyi-generator/src/test/resources/application.yml +++ b/ruoyi-generator/src/test/resources/application.yml @@ -5,9 +5,9 @@ spring: # schema: classpath*:sql/init.sql # data: classpath:sql/data.sql driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: password + url: jdbc:mysql://rm-wz987gwxg397qojlao.mysql.rds.aliyuncs.com:3638/ry_mall?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&allowMultiQueries=true + username: mall_cyl + password: asdfpCC_sodpfjoDD_piuPOi jpa: properties: hibernate: @@ -27,11 +27,11 @@ gen: # 作者 author: zcc # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool - packageName: com.cyl.manager.pms + packageName: com.cyl.manager.aws # 自动去除表前缀,默认是false autoRemovePre: true # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) - tablePrefix: pms_ + tablePrefix: aws_ # 一级权限名 rootPermission: mall # 模板根路径 @@ -39,17 +39,17 @@ gen: # 路径 path: # 后端根目录 - backPath: C:\Users\zccbbg\ichengle\ruoyi-mall\ + backPath: D:\workspace\RuoYi-Mall\ # 后端 service 模块名 serviceModule: ruoyi-mall # 后端 api 模块名, 默认与 service 一致 apiModule: ruoyi-mall # 前端根目录 - frontPath: C:\Users\zccbbg\ichengle\ruoyi-mall-vue\ + frontPath: D:\workspace\ruoyi-mall-vue\ # 前端 api 目录 - frontApiPath: src/api/pms + frontApiPath: src/api/aws # 前端 view 目录 - frontViewPath: src/views/pms + frontViewPath: src/views/aws # sql 目录 sql: sql # 环境变量 diff --git a/ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java b/ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java new file mode 100644 index 0000000..0c0da32 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java @@ -0,0 +1,37 @@ +package com.cyl.job; + +import com.cyl.manager.aws.domain.SystemStatistics; +import com.cyl.manager.aws.mapper.SystemStatisticsMapper; +import com.cyl.manager.aws.service.SystemStatisticsService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; + + +@Component +@Slf4j +public class StatisticsJob { + + @Autowired + private SystemStatisticsService systemStatisticsService; + + @Autowired + private SystemStatisticsMapper systemStatisticsMapper; + + @Async + @Scheduled(cron = "00 00 3 * * ?") + public void cancelOrder(){ + log.info("【统计昨日系统数据任务开始】"); + LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusDays(-1); + LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).plusDays(-1); + SystemStatistics data = systemStatisticsService.stat(startTime, endTime); + systemStatisticsMapper.insert(data); + log.info("【统计昨日系统数据任务结束】"); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java new file mode 100644 index 0000000..aeab89f --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java @@ -0,0 +1,93 @@ +package com.cyl.manager.aws.controller; + +import java.util.List; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Page; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.enums.BusinessType; +import com.cyl.manager.aws.convert.SystemStatisticsConvert; +import com.cyl.manager.aws.domain.SystemStatistics; +import com.cyl.manager.aws.pojo.query.SystemStatisticsQuery; +import com.cyl.manager.aws.service.SystemStatisticsService; +import com.cyl.manager.aws.pojo.vo.SystemStatisticsVO; +import com.ruoyi.common.utils.poi.ExcelUtil; +/** + * 系统数据统计Controller + * + * @author zcc + * @date 2023-07-28 + */ +@Api(description ="系统数据统计接口列表") +@RestController +@RequestMapping("/aws/systemStatistics") +public class SystemStatisticsController extends BaseController { + @Autowired + private SystemStatisticsService service; + @Autowired + private SystemStatisticsConvert convert; + + @ApiOperation("查询系统数据统计列表") + @PreAuthorize("@ss.hasPermi('aws:systemStatistics:list')") + @PostMapping("/list") + public ResponseEntity> list(@RequestBody SystemStatisticsQuery query, Pageable page) { + List list = service.selectList(query, page); + return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); + } + + @ApiOperation("导出系统数据统计列表") + @PreAuthorize("@ss.hasPermi('aws:systemStatistics:export')") + @Log(title = "系统数据统计", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public ResponseEntity export(SystemStatisticsQuery query) { + List list = service.selectList(query, null); + ExcelUtil util = new ExcelUtil<>(SystemStatisticsVO.class); + return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "系统数据统计数据")); + } + + @ApiOperation("获取系统数据统计详细信息") + @PreAuthorize("@ss.hasPermi('aws:systemStatistics:query')") + @GetMapping(value = "/{id}") + public ResponseEntity getInfo(@PathVariable("id") Long id) { + return ResponseEntity.ok(service.selectById(id)); + } + + @ApiOperation("新增系统数据统计") + @PreAuthorize("@ss.hasPermi('aws:systemStatistics:add')") + @Log(title = "系统数据统计", businessType = BusinessType.INSERT) + @PostMapping + public ResponseEntity add(@RequestBody SystemStatistics systemStatistics) { + return ResponseEntity.ok(service.insert(systemStatistics)); + } + + @ApiOperation("修改系统数据统计") + @PreAuthorize("@ss.hasPermi('aws:systemStatistics:edit')") + @Log(title = "系统数据统计", businessType = BusinessType.UPDATE) + @PutMapping + public ResponseEntity edit(@RequestBody SystemStatistics systemStatistics) { + return ResponseEntity.ok(service.update(systemStatistics)); + } + + @ApiOperation("删除系统数据统计") + @PreAuthorize("@ss.hasPermi('aws:systemStatistics:remove')") + @Log(title = "系统数据统计", businessType = BusinessType.DELETE) + @DeleteMapping("/{id}") + public ResponseEntity remove(@PathVariable Long id) { + return ResponseEntity.ok(service.deleteById(id)); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/convert/SystemStatisticsConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/convert/SystemStatisticsConvert.java new file mode 100644 index 0000000..7bb27ec --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/convert/SystemStatisticsConvert.java @@ -0,0 +1,16 @@ +package com.cyl.manager.aws.convert; + +import org.mapstruct.Mapper; +import com.cyl.manager.aws.domain.SystemStatistics; +import com.cyl.manager.aws.pojo.vo.SystemStatisticsVO; +import java.util.List; +/** + * 系统数据统计 DO <=> DTO <=> VO / BO / Query + * + * @author zcc + */ +@Mapper(componentModel = "spring") +public interface SystemStatisticsConvert { + + List dos2vos(List list); +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/domain/SystemStatistics.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/domain/SystemStatistics.java new file mode 100644 index 0000000..c0a85df --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/domain/SystemStatistics.java @@ -0,0 +1,68 @@ +package com.cyl.manager.aws.domain; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotation.TableName; +/** + * 系统数据统计对象 aws_system_statistics + * + * @author zcc + */ +@ApiModel(description="系统数据统计对象") +@Data +@TableName("aws_system_statistics") +public class SystemStatistics { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("统计日期") + @Excel(name = "统计日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime date; + + @ApiModelProperty("登录用户数") + @Excel(name = "登录用户数") + private Integer loginMemberCount; + + @ApiModelProperty("注册用户数") + @Excel(name = "注册用户数") + private Integer registerMemberCount; + + @ApiModelProperty("加购用户数") + @Excel(name = "加购用户数") + private Integer addCartMemberCount; + + @ApiModelProperty("下单用户数") + @Excel(name = "下单用户数") + private Integer createOrderMemberCount; + + @ApiModelProperty("成交用户数") + @Excel(name = "成交用户数") + private Integer dealMemberCount; + + @ApiModelProperty("下单数") + @Excel(name = "下单数") + private Integer orderCount; + + @ApiModelProperty("成交数") + @Excel(name = "成交数") + private Integer dealCount; + + @ApiModelProperty("成交金额") + @Excel(name = "成交金额") + private BigDecimal dealAmount; + + @ApiModelProperty("售后数") + @Excel(name = "售后数") + private Integer aftersaleCount; + + @ApiModelProperty("售后金额") + @Excel(name = "售后金额") + private BigDecimal aftersaleAmount; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/mapper/SystemStatisticsMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/mapper/SystemStatisticsMapper.java new file mode 100644 index 0000000..304a86e --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/mapper/SystemStatisticsMapper.java @@ -0,0 +1,21 @@ +package com.cyl.manager.aws.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import com.cyl.manager.aws.domain.SystemStatistics; + +/** + * 系统数据统计Mapper接口 + * + * @author zcc + */ +public interface SystemStatisticsMapper extends BaseMapper { + /** + * 查询系统数据统计列表 + * + * @param systemStatistics 系统数据统计 + * @return 系统数据统计集合 + */ + List selectByEntity(SystemStatistics systemStatistics); +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java new file mode 100644 index 0000000..13d9548 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java @@ -0,0 +1,50 @@ +package com.cyl.manager.aws.pojo.query; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Data; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * 系统数据统计 查询 对象 + * + * @author zcc + */ +@ApiModel(description="系统数据统计 查询 对象") +@Data +public class SystemStatisticsQuery { + @ApiModelProperty("统计日期 精确匹配") + private LocalDateTime date; + + @ApiModelProperty("登录用户数 精确匹配") + private Integer loginMemberCount; + + @ApiModelProperty("注册用户数 精确匹配") + private Integer registerMemberCount; + + @ApiModelProperty("加购用户数 精确匹配") + private Integer addCartMemberCount; + + @ApiModelProperty("下单用户数 精确匹配") + private Integer createOrderMemberCount; + + @ApiModelProperty("成交用户数 精确匹配") + private Integer dealMemberCount; + + @ApiModelProperty("下单数 精确匹配") + private Integer orderCount; + + @ApiModelProperty("成交数 精确匹配") + private Integer dealCount; + + @ApiModelProperty("成交金额 精确匹配") + private BigDecimal dealAmount; + + @ApiModelProperty("售后数 精确匹配") + private Integer aftersaleCount; + + @ApiModelProperty("售后金额 精确匹配") + private BigDecimal aftersaleAmount; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/vo/SystemStatisticsVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/vo/SystemStatisticsVO.java new file mode 100644 index 0000000..bb5b2b2 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/vo/SystemStatisticsVO.java @@ -0,0 +1,51 @@ +package com.cyl.manager.aws.pojo.vo; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import com.ruoyi.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +/** + * 系统数据统计 数据视图对象 + * + * @author zcc + */ +@Data +public class SystemStatisticsVO { + /** ID */ + private Long id; + /** 统计日期 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "统计日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime date; + /** 登录用户数 */ + @Excel(name = "登录用户数") + private Integer loginMemberCount; + /** 注册用户数 */ + @Excel(name = "注册用户数") + private Integer registerMemberCount; + /** 加购用户数 */ + @Excel(name = "加购用户数") + private Integer addCartMemberCount; + /** 下单用户数 */ + @Excel(name = "下单用户数") + private Integer createOrderMemberCount; + /** 成交用户数 */ + @Excel(name = "成交用户数") + private Integer dealMemberCount; + /** 下单数 */ + @Excel(name = "下单数") + private Integer orderCount; + /** 成交数 */ + @Excel(name = "成交数") + private Integer dealCount; + /** 成交金额 */ + @Excel(name = "成交金额") + private BigDecimal dealAmount; + /** 售后数 */ + @Excel(name = "售后数") + private Integer aftersaleCount; + /** 售后金额 */ + @Excel(name = "售后金额") + private BigDecimal aftersaleAmount; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java new file mode 100644 index 0000000..5442c62 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java @@ -0,0 +1,183 @@ +package com.cyl.manager.aws.service; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; +import java.time.LocalDateTime; +import java.util.Map; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cyl.manager.oms.domain.Aftersale; +import com.cyl.manager.oms.mapper.AftersaleMapper; +import com.cyl.manager.oms.mapper.OrderMapper; +import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.MemberCart; +import com.cyl.manager.ums.mapper.MemberCartMapper; +import com.cyl.manager.ums.mapper.MemberLogininforMapper; +import com.cyl.manager.ums.mapper.MemberMapper; +import com.github.pagehelper.PageHelper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import com.cyl.manager.aws.mapper.SystemStatisticsMapper; +import com.cyl.manager.aws.domain.SystemStatistics; +import com.cyl.manager.aws.pojo.query.SystemStatisticsQuery; + +/** + * 系统数据统计Service业务层处理 + * + * @author zcc + */ +@Service +public class SystemStatisticsService { + @Autowired + private SystemStatisticsMapper systemStatisticsMapper; + + @Autowired + private OrderMapper orderMapper; + + @Autowired + private AftersaleMapper aftersaleMapper; + + @Autowired + private MemberLogininforMapper memberLogininforMapper; + + @Autowired + private MemberMapper memberMapper; + + @Autowired + private MemberCartMapper memberCartMapper; + + /** + * 查询系统数据统计 + * + * @param id 系统数据统计主键 + * @return 系统数据统计 + */ + public SystemStatistics selectById(Long id) { + return systemStatisticsMapper.selectById(id); + } + + /** + * 查询系统数据统计列表 + * + * @param query 查询条件 + * @param page 分页条件 + * @return 系统数据统计 + */ + public List selectList(SystemStatisticsQuery query, Pageable page) { + if (page != null) { + PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); + } + QueryWrapper qw = new QueryWrapper<>(); + LocalDateTime date = query.getDate(); + if (date != null) { + qw.eq("date", date); + } + Integer loginMemberCount = query.getLoginMemberCount(); + if (loginMemberCount != null) { + qw.eq("login_member_count", loginMemberCount); + } + Integer registerMemberCount = query.getRegisterMemberCount(); + if (registerMemberCount != null) { + qw.eq("register_member_count", registerMemberCount); + } + Integer addCartMemberCount = query.getAddCartMemberCount(); + if (addCartMemberCount != null) { + qw.eq("add_cart_member_count", addCartMemberCount); + } + Integer createOrderMemberCount = query.getCreateOrderMemberCount(); + if (createOrderMemberCount != null) { + qw.eq("create_order_member_count", createOrderMemberCount); + } + Integer dealMemberCount = query.getDealMemberCount(); + if (dealMemberCount != null) { + qw.eq("deal_member_count", dealMemberCount); + } + Integer orderCount = query.getOrderCount(); + if (orderCount != null) { + qw.eq("order_count", orderCount); + } + Integer dealCount = query.getDealCount(); + if (dealCount != null) { + qw.eq("deal_count", dealCount); + } + BigDecimal dealAmount = query.getDealAmount(); + if (dealAmount != null) { + qw.eq("deal_amount", dealAmount); + } + Integer aftersaleCount = query.getAftersaleCount(); + if (aftersaleCount != null) { + qw.eq("aftersale_count", aftersaleCount); + } + BigDecimal aftersaleAmount = query.getAftersaleAmount(); + if (aftersaleAmount != null) { + qw.eq("aftersale_amount", aftersaleAmount); + } + return systemStatisticsMapper.selectList(qw); + } + + /** + * 新增系统数据统计 + * + * @param systemStatistics 系统数据统计 + * @return 结果 + */ + public int insert(SystemStatistics systemStatistics) { + return systemStatisticsMapper.insert(systemStatistics); + } + + /** + * 修改系统数据统计 + * + * @param systemStatistics 系统数据统计 + * @return 结果 + */ + public int update(SystemStatistics systemStatistics) { + return systemStatisticsMapper.updateById(systemStatistics); + } + + /** + * 删除系统数据统计信息 + * + * @param id 系统数据统计主键 + * @return 结果 + */ + public int deleteById(Long id) { + return systemStatisticsMapper.deleteById(id); + } + + public SystemStatistics stat(LocalDateTime startTime, LocalDateTime endTime) { + //统计下单用户数、成交用户数、下单数、成交数、成交金额 + SystemStatistics systemStatistics = orderMapper.statNewAndDeal(startTime, endTime); + //统计成交用户数 + systemStatistics.setDealMemberCount(orderMapper.statDealMember(startTime, endTime)); + //统计售后 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.between(Aftersale::getCreateTime, startTime, endTime); + List aftersaleList = aftersaleMapper.selectList(wrapper); + if (CollectionUtil.isEmpty(aftersaleList)) { + systemStatistics.setAftersaleCount(0); + systemStatistics.setAftersaleAmount(BigDecimal.ZERO); + } else { + Map map = aftersaleList.stream().collect(Collectors.toMap(Aftersale::getOrderId, Aftersale::getReturnAmount)); + systemStatistics.setAftersaleCount(map.values().size()); + systemStatistics.setAftersaleAmount(map.values().stream().reduce(BigDecimal::add).get()); + } + //统计登录用户数 + systemStatistics.setLoginMemberCount(memberLogininforMapper.statLoginMember(startTime, endTime)); + //统计注册用户 + LambdaQueryWrapper memberWrapper = new LambdaQueryWrapper<>(); + memberWrapper.between(Member::getCreateTime, startTime, endTime); + systemStatistics.setRegisterMemberCount(memberMapper.selectCount(memberWrapper)); + //统计加购数 + systemStatistics.setAddCartMemberCount(memberCartMapper.statAddCount(startTime, endTime)); + systemStatistics.setDate(startTime); + return systemStatistics; + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java index b438545..94ebb0b 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/mapper/OrderMapper.java @@ -5,6 +5,7 @@ import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cyl.h5.pojo.vo.CountOrderVO; import com.cyl.h5.pojo.vo.H5OrderVO; +import com.cyl.manager.aws.domain.SystemStatistics; import com.cyl.manager.oms.domain.Order; import com.cyl.manager.oms.pojo.request.ManagerOrderQueryRequest; import com.cyl.manager.oms.pojo.vo.ManagerOrderVO; @@ -42,4 +43,8 @@ public interface OrderMapper extends BaseMapper { Integer statWaitDelivered(); OrderAndAftersaleStatisticsVO statTodayData(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime); + + SystemStatistics statNewAndDeal(@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime); + + int statDealMember(@Param("startTime") LocalDateTime startTime,@Param("endTime") LocalDateTime endTime); } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberCartMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberCartMapper.java index bc9415b..c2d3901 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberCartMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberCartMapper.java @@ -1,10 +1,12 @@ package com.cyl.manager.ums.mapper; +import java.time.LocalDateTime; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.cyl.manager.ums.domain.MemberCart; import com.cyl.manager.ums.pojo.query.MemberCartQuery; import com.cyl.manager.ums.pojo.vo.MemberCartVO; +import org.apache.ibatis.annotations.Param; /** * 购物车Mapper接口 @@ -24,4 +26,6 @@ public interface MemberCartMapper extends BaseMapper { * */ List selectByPage(MemberCartQuery query); + + int statAddCount(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime); } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java index 5f7f0b5..5c14606 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java @@ -1,7 +1,9 @@ package com.cyl.manager.ums.mapper; +import java.time.LocalDateTime; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.cyl.manager.aws.domain.SystemStatistics; import org.apache.ibatis.annotations.Param; import com.cyl.manager.ums.domain.MemberLogininfor; @@ -18,4 +20,6 @@ public interface MemberLogininforMapper extends BaseMapper { * @return 会员登录记录集合 */ List selectByEntity(MemberLogininfor memberLogininfor); + + int statLoginMember(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime); } diff --git a/ruoyi-mall/src/main/resources/mapper/aws/SystemStatisticsMapper.xml b/ruoyi-mall/src/main/resources/mapper/aws/SystemStatisticsMapper.xml new file mode 100644 index 0000000..06618bd --- /dev/null +++ b/ruoyi-mall/src/main/resources/mapper/aws/SystemStatisticsMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + select id, date, login_member_count, register_member_count, add_cart_member_count, create_order_member_count, deal_member_count, order_count, deal_count, deal_amount, aftersale_count, aftersale_amount from aws_system_statistics + + + + diff --git a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml index e22e600..66b297b 100644 --- a/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/oms/OrderMapper.xml @@ -243,5 +243,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from oms_order where create_time between #{startTime} and #{endTime} + + diff --git a/ruoyi-mall/src/main/resources/mapper/ums/MemberCartMapper.xml b/ruoyi-mall/src/main/resources/mapper/ums/MemberCartMapper.xml index 1f867c3..59745d4 100644 --- a/ruoyi-mall/src/main/resources/mapper/ums/MemberCartMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/ums/MemberCartMapper.xml @@ -65,4 +65,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by a.create_time desc + diff --git a/ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml b/ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml index 405b5e7..b16e51e 100644 --- a/ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml @@ -31,4 +31,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and login_time = #{loginTime} + diff --git a/sql/aws/systemStatistics.sql b/sql/aws/systemStatistics.sql new file mode 100644 index 0000000..39e365f --- /dev/null +++ b/sql/aws/systemStatistics.sql @@ -0,0 +1,22 @@ +-- 菜单 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('系统数据统计', '3', '1', 'systemStatistics', 'aws/systemStatistics/index', 1, 0, 'C', '0', '0', 'aws:systemStatistics:list', '#', 1, sysdate(), '', null, '系统数据统计菜单'); + +-- 按钮父菜单ID +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('系统数据统计查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'aws:systemStatistics:query', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('系统数据统计新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'aws:systemStatistics:add', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('系统数据统计修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', 'aws:systemStatistics:edit', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('系统数据统计删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'aws:systemStatistics:remove', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('系统数据统计导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'aws:systemStatistics:export', '#', 1, sysdate(), '', null, ''); From 91fe6b9c3fff37227fee1d82ed221affb6deb82b Mon Sep 17 00:00:00 2001 From: czc Date: Mon, 31 Jul 2023 16:40:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/cyl/job/StatisticsJob.java | 2 +- .../SystemStatisticsController.java | 10 +-- .../aws/pojo/query/SystemStatisticsQuery.java | 11 +++- .../aws/service/SystemStatisticsService.java | 66 ++++++------------- 4 files changed, 35 insertions(+), 54 deletions(-) diff --git a/ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java b/ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java index 0c0da32..06f6cde 100644 --- a/ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java +++ b/ruoyi-mall/src/main/java/com/cyl/job/StatisticsJob.java @@ -26,7 +26,7 @@ public class StatisticsJob { @Async @Scheduled(cron = "00 00 3 * * ?") - public void cancelOrder(){ + public void cancelOrder() { log.info("【统计昨日系统数据任务开始】"); LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).plusDays(-1); LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).plusDays(-1); diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java index aeab89f..72f0bb5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/controller/SystemStatisticsController.java @@ -46,8 +46,7 @@ public class SystemStatisticsController extends BaseController { @PreAuthorize("@ss.hasPermi('aws:systemStatistics:list')") @PostMapping("/list") public ResponseEntity> list(@RequestBody SystemStatisticsQuery query, Pageable page) { - List list = service.selectList(query, page); - return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); + return ResponseEntity.ok(service.selectList(query, page)); } @ApiOperation("导出系统数据统计列表") @@ -55,9 +54,10 @@ public class SystemStatisticsController extends BaseController { @Log(title = "系统数据统计", businessType = BusinessType.EXPORT) @GetMapping("/export") public ResponseEntity export(SystemStatisticsQuery query) { - List list = service.selectList(query, null); - ExcelUtil util = new ExcelUtil<>(SystemStatisticsVO.class); - return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "系统数据统计数据")); +// List list = service.selectList(query, null); +// ExcelUtil util = new ExcelUtil<>(SystemStatisticsVO.class); +// return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "系统数据统计数据")); + return null; } @ApiOperation("获取系统数据统计详细信息") diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java index 13d9548..357d8ac 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/pojo/query/SystemStatisticsQuery.java @@ -2,6 +2,8 @@ package com.cyl.manager.aws.pojo.query; import java.math.BigDecimal; import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -14,8 +16,13 @@ import io.swagger.annotations.ApiModelProperty; @ApiModel(description="系统数据统计 查询 对象") @Data public class SystemStatisticsQuery { - @ApiModelProperty("统计日期 精确匹配") - private LocalDateTime date; + @ApiModelProperty("统计开始日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime beginTime; + + @ApiModelProperty("统计结束日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime endTime; @ApiModelProperty("登录用户数 精确匹配") private Integer loginMemberCount; diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java b/ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java index 5442c62..92f6155 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/aws/service/SystemStatisticsService.java @@ -1,8 +1,11 @@ package com.cyl.manager.aws.service; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.util.Arrays; +import java.util.LinkedHashMap; import java.util.List; import java.time.LocalDateTime; import java.util.Map; @@ -19,8 +22,10 @@ import com.cyl.manager.ums.domain.MemberCart; import com.cyl.manager.ums.mapper.MemberCartMapper; import com.cyl.manager.ums.mapper.MemberLogininforMapper; import com.cyl.manager.ums.mapper.MemberMapper; +import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -70,56 +75,24 @@ public class SystemStatisticsService { * @param page 分页条件 * @return 系统数据统计 */ - public List selectList(SystemStatisticsQuery query, Pageable page) { + public PageImpl selectList(SystemStatisticsQuery query, Pageable page) { if (page != null) { PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); } - QueryWrapper qw = new QueryWrapper<>(); - LocalDateTime date = query.getDate(); - if (date != null) { - qw.eq("date", date); + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + if (query.getBeginTime() != null && query.getEndTime() != null){ + qw.ge(SystemStatistics::getDate, query.getBeginTime()); + qw.lt(SystemStatistics::getDate, query.getEndTime()); } - Integer loginMemberCount = query.getLoginMemberCount(); - if (loginMemberCount != null) { - qw.eq("login_member_count", loginMemberCount); + qw.orderByDesc(SystemStatistics::getDate); + List statList = systemStatisticsMapper.selectList(qw); + long total = ((Page)statList).getTotal(); + if ((query.getBeginTime() == null && query.getEndTime() == null) || (query.getEndTime() != null && query.getEndTime().isAfter(LocalDateTime.now()))){ + SystemStatistics stat = this.stat(LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX)); + statList.add(0, stat); + return new PageImpl<>(statList, page, total); } - Integer registerMemberCount = query.getRegisterMemberCount(); - if (registerMemberCount != null) { - qw.eq("register_member_count", registerMemberCount); - } - Integer addCartMemberCount = query.getAddCartMemberCount(); - if (addCartMemberCount != null) { - qw.eq("add_cart_member_count", addCartMemberCount); - } - Integer createOrderMemberCount = query.getCreateOrderMemberCount(); - if (createOrderMemberCount != null) { - qw.eq("create_order_member_count", createOrderMemberCount); - } - Integer dealMemberCount = query.getDealMemberCount(); - if (dealMemberCount != null) { - qw.eq("deal_member_count", dealMemberCount); - } - Integer orderCount = query.getOrderCount(); - if (orderCount != null) { - qw.eq("order_count", orderCount); - } - Integer dealCount = query.getDealCount(); - if (dealCount != null) { - qw.eq("deal_count", dealCount); - } - BigDecimal dealAmount = query.getDealAmount(); - if (dealAmount != null) { - qw.eq("deal_amount", dealAmount); - } - Integer aftersaleCount = query.getAftersaleCount(); - if (aftersaleCount != null) { - qw.eq("aftersale_count", aftersaleCount); - } - BigDecimal aftersaleAmount = query.getAftersaleAmount(); - if (aftersaleAmount != null) { - qw.eq("aftersale_amount", aftersaleAmount); - } - return systemStatisticsMapper.selectList(qw); + return new PageImpl<>(statList, page, total); } /** @@ -160,12 +133,13 @@ public class SystemStatisticsService { //统计售后 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.between(Aftersale::getCreateTime, startTime, endTime); + wrapper.orderByDesc(Aftersale::getCreateTime); List aftersaleList = aftersaleMapper.selectList(wrapper); if (CollectionUtil.isEmpty(aftersaleList)) { systemStatistics.setAftersaleCount(0); systemStatistics.setAftersaleAmount(BigDecimal.ZERO); } else { - Map map = aftersaleList.stream().collect(Collectors.toMap(Aftersale::getOrderId, Aftersale::getReturnAmount)); + Map map = aftersaleList.stream().collect(Collectors.toMap(Aftersale::getOrderId, Aftersale::getReturnAmount, (v1, v2) -> v1, LinkedHashMap::new)); systemStatistics.setAftersaleCount(map.values().size()); systemStatistics.setAftersaleAmount(map.values().stream().reduce(BigDecimal::add).get()); }