商城:增加 stat 统计设计

plp
YunaiV 2 years ago
parent 26dfbfb2ac
commit c5f2d07c87

@ -15,7 +15,7 @@
<name>${project.artifactId}</name>
<description>
商城大模块,由 product 商品、promotion 营销、trade 交易等组成
商城大模块,由 product 商品、promotion 营销、trade 交易、statistics 统计等组成
</description>
<modules>
<module>yudao-module-promotion-api</module>
@ -24,6 +24,8 @@
<module>yudao-module-product-biz</module>
<module>yudao-module-trade-api</module>
<module>yudao-module-trade-biz</module>
<module>yudao-module-statistics-api</module>
<module>yudao-module-statistics-biz</module>
</modules>
</project>

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-mall</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yudao-module-statistics-api</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>
statistics 模块 API暴露给其它模块调用
</description>
<dependencies>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-common</artifactId>
</dependency>
<!-- 参数校验 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>

@ -0,0 +1,4 @@
/**
* TODO
*/
package cn.iocoder.yudao.module.statistics.api;

@ -0,0 +1,4 @@
/**
* TODO
*/
package cn.iocoder.yudao.module.statistics.enums;

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-mall</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yudao-module-statistics-biz</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>
statistics 模块,主要实现统计相关功能
例如:统计商品、会员、交易等功能。
</description>
<dependencies>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-statistics-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-promotion-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-product-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-trade-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-member-api</artifactId>
<version>${revision}</version>
</dependency>
<!-- 业务组件 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
</dependency>
<!-- Web 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-security</artifactId>
</dependency>
<!-- DB 相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-mybatis</artifactId>
</dependency>
<!-- Test 测试相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-test</artifactId>
</dependency>
<!-- 工具类相关 -->
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-excel</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
</dependency>
</dependencies>
</project>

@ -0,0 +1,9 @@
/**
* TODO
* 1.
* 2.
* 3.
* 4.
* 5.
*/
package cn.iocoder.yudao.module.statistics.controller.member;

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.statistics.controller.product;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.statistics.dal.mysql.product.ProductSpuStatisticsDO;
import cn.iocoder.yudao.module.statistics.dal.mysql.product.ProductStatisticsDO;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.List;
@Tag(name = "管理后台 - 商品统计")
@RestController
@RequestMapping("/statistics/product")
@Validated
@Slf4j
public class ProductStatisticsController {
// TODO @麦子:返回 ProductStatisticsComparisonResp 里面有两个字段,一个是选择的时间范围的合计结果,一个是对比的时间范围的合计结果;
// 例如说,选择时间范围是 2023-10-01 ~ 2023-10-02那么对比就是 2023-09-30再倒推 2 天;
public CommonResult<Object> getProductStatisticsComparison() {
return null;
}
// TODO @麦子查询指定时间范围内的商品统计数据DO 到时需要改成 VO 哈
public CommonResult<List<ProductStatisticsDO>> getProductStatisticsList(
LocalDateTime[] times) {
return null;
}
// TODO @麦子:查询指定时间范围内的商品 SPU 统计数据DO 到时需要改成 VO 哈
// 入参是分页参数 + 时间范围 + 排序字段
public CommonResult<PageResult<ProductSpuStatisticsDO>> getProductSpuStatisticsPage() {
return null;
}
}

@ -0,0 +1,36 @@
package cn.iocoder.yudao.module.statistics.controller.trade;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.statistics.dal.mysql.trade.TradeStatisticsDO;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.List;
@Tag(name = "管理后台 - 交易统计")
@RestController
@RequestMapping("/statistics/product")
@Validated
@Slf4j
public class TradeStatisticsController {
// TODO @疯狂:有个 summary 接口,返回昨日、本月、支付金额、本月订单金额等数据;具体看 ui 哈;
// TODO @疯狂:返回 ProductStatisticsComparisonResp 里面有两个字段,一个是选择的时间范围的合计结果,一个是对比的时间范围的合计结果;
// 例如说,选择时间范围是 2023-10-01 ~ 2023-10-02那么对比就是 2023-09-30再倒推 2 天;
public CommonResult<Object> getTradeStatisticsComparison() {
return null;
}
// TODO @疯狂查询指定时间范围内的交易统计数据DO 到时需要改成 VO 哈
// 总收入(营业额)= 订单、充值的支付 - 订单、充值的退款
public CommonResult<List<TradeStatisticsDO>> getTradeStatisticsList(
LocalDateTime[] times) {
return null;
}
}

@ -0,0 +1,4 @@
/**
* todo
*/
package cn.iocoder.yudao.module.statistics.dal.dataobject;

@ -0,0 +1,74 @@
package cn.iocoder.yudao.module.statistics.dal.mysql.product;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.time.LocalDateTime;
/**
* SPU DO
*
* SPU
*
* @author
*/
@TableName("product_spu_statistics")
@KeySequence("product_spu_statistics_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductSpuStatisticsDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* SPU
*
* ProductSpuDO id
*/
private Long spuId;
/**
*
*/
private LocalDateTime time;
/**
*
*/
private Integer browseCount;
/**
*
*/
private Integer favoriteCount;
/**
*
*
* createTime
*
*/
private Integer addCartCount;
/**
*
*/
private Integer createOrderCount;
/**
*
*/
private Integer payOrderCount;
/**
*
*/
private Integer payPrice;
}

@ -0,0 +1,70 @@
package cn.iocoder.yudao.module.statistics.dal.mysql.product;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.time.LocalDateTime;
/**
* DO
*
*
*
* {@link ProductSpuStatisticsDO}
*
* @author
*/
@TableName("product_spu_statistics")
@KeySequence("product_spu_statistics_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductStatisticsDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private LocalDateTime time;
/**
*
*/
private Integer browseCount;
/**
*
*/
private Integer favoriteCount;
/**
*
*
* createTime
*
*/
private Integer addCartCount;
/**
*
*/
private Integer createOrderCount;
/**
*
*/
private Integer payOrderCount;
/**
*
*/
private Integer payPrice;
}

@ -0,0 +1,89 @@
package cn.iocoder.yudao.module.statistics.dal.mysql.trade;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.time.LocalDateTime;
/**
* DO
*
*
*
* @author
*/
@TableName("trade_statistics")
@KeySequence("trade_statistics_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TradeStatisticsDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private LocalDateTime time;
/**
*
*/
private Integer orderCreateCount;
/**
*
*/
private Integer orderPayCount;
/**
*
*/
private Integer orderPayPrice;
/**
*
*/
private Integer orderWalletPayPrice;
/**
* 退
*/
private Integer afterSaleCount;
/**
* 退
*/
private Integer afterSaleRefundPrice;
/**
*
*/
private Integer brokerageSettlementPrice;
/**
*
*
* PayWalletRechargeDO
*/
private Integer rechargePayCount;
/**
*
*/
private Integer rechargePayPrice;
/**
* 退
*/
private Integer rechargeRefundCount;
/**
* 退
*/
private Integer rechargeRefundPrice;
}

@ -0,0 +1,4 @@
/**
* TODO
*/
package cn.iocoder.yudao.module.statistics.job;

@ -0,0 +1,8 @@
/**
* statistics
*
*
* 1. Controller URL /statistics/ Module
* 2. DataObject statistics_ 便
*/
package cn.iocoder.yudao.module.statistics;
Loading…
Cancel
Save