feat:完善统计接口数据
This commit is contained in:
@@ -1,30 +1,26 @@
|
||||
package com.gxwebsoft.shop.controller;
|
||||
|
||||
import com.alipay.api.domain.DashboardParam;
|
||||
|
||||
import com.gxwebsoft.common.core.annotation.OperationLog;
|
||||
import com.gxwebsoft.common.core.web.ApiResult;
|
||||
import com.gxwebsoft.common.core.web.PageResult;
|
||||
import com.gxwebsoft.shop.entity.Coupon;
|
||||
import com.gxwebsoft.shop.entity.Dashboard;
|
||||
import com.gxwebsoft.shop.param.CouponParam;
|
||||
import com.gxwebsoft.shop.service.CouponService;
|
||||
import com.gxwebsoft.shop.service.OrderService;
|
||||
|
||||
import com.gxwebsoft.shop.entity.*;
|
||||
import com.gxwebsoft.shop.param.DashBoardParam;
|
||||
import com.gxwebsoft.shop.service.DashboardService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.gxwebsoft.common.core.web.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 仪表盘,数据统计
|
||||
*
|
||||
* @author 科技小王子
|
||||
* @since 2022-11-28 18:26:05
|
||||
* @author yqy
|
||||
* @since 2024-08-21 18:26:05
|
||||
*/
|
||||
@Api(tags = "数据统计")
|
||||
@RestController
|
||||
@@ -32,18 +28,18 @@ import java.math.BigDecimal;
|
||||
public class DashboardController extends BaseController {
|
||||
|
||||
@Resource
|
||||
private OrderService orderService;
|
||||
private DashboardService dashboardService;
|
||||
|
||||
//@PreAuthorize("hasAuthority('shop:dashboard')")
|
||||
//@PreAuthorize("hasAuthority('shop:dashboard:day')")
|
||||
@OperationLog
|
||||
@ApiOperation("可查看一天日新增的订单量、一天日销售额以及总订单量、总销售额等数据\n")
|
||||
@ApiOperation("可查看一天日新增的订单量、一天日销售额以及总订单量、总销售额数据\n")
|
||||
@GetMapping("/day")
|
||||
public ApiResult<Dashboard> day(DashboardParam param) {
|
||||
public ApiResult<Dashboard> day(DashBoardParam param) {
|
||||
Dashboard dashboard = new Dashboard();
|
||||
dashboard.setDayTotalSale(BigDecimal.valueOf(30));
|
||||
dashboard.setDayNewOrderNum(20);
|
||||
dashboard.setTotalSale(BigDecimal.valueOf(5000));
|
||||
dashboard.setTotalOrderNum(2000);;
|
||||
dashboard.setOrderStatistics(dashboardService.orderStatistics(param));
|
||||
dashboard.setSalesAmountStatistics(dashboardService.salesAmountStatistics(param));
|
||||
dashboard.setUserStatistics(dashboardService.userStatistics(param));
|
||||
dashboard.setEquipmentStatistics(dashboardService.equipmentStatistics(param));
|
||||
return success(dashboard);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,21 +6,73 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value = "Dashboard对象", description = "仪表盘数据统计字段")
|
||||
public class Dashboard {
|
||||
|
||||
@ApiModelProperty(value = "新增的订单量")
|
||||
private int dayNewOrderNum;
|
||||
@ApiModelProperty(value = "销售统计")
|
||||
private SalesAmountStatistics salesAmountStatistics;//日销售额,总销售额
|
||||
|
||||
@ApiModelProperty(value = "当日销售额")
|
||||
private BigDecimal dayTotalSale;
|
||||
@ApiModelProperty(value = "订单统计")
|
||||
private OrderStatistics orderStatistics;//当日新增的订单量,总订单量
|
||||
|
||||
@ApiModelProperty(value = "总订单量")
|
||||
private int totalOrderNum;
|
||||
@ApiModelProperty(value = "用户统计")
|
||||
private UserStatistics userStatistics;//当日新增的订单量,总订单量
|
||||
|
||||
@ApiModelProperty(value = "设备统计")
|
||||
private EquipmentStatistics equipmentStatistics;//当日新增的设备,总设备
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "BaseStatistics", description = "基础统计")
|
||||
public static class BaseStatistics{
|
||||
private Date startStatisticsDate; // 开始统计日期
|
||||
private Date endStatisticsDate; // 结束统计日期
|
||||
}
|
||||
|
||||
@Data
|
||||
|
||||
@ApiModel(value = "UserStatistics", description = "统计当日新增用户数、平台总用户数")
|
||||
public static class UserStatistics extends BaseStatistics {
|
||||
@ApiModelProperty(value = "新增用户")
|
||||
private int dailyNewUsers;
|
||||
|
||||
@ApiModelProperty(value = "平台总用户数")
|
||||
private int totalUsers;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "OrderStatistics", description = "日新增订单数、平台总订单数")
|
||||
public static class OrderStatistics extends BaseStatistics{
|
||||
@ApiModelProperty(value = "新增的订单量")
|
||||
private int dailyNewOrders;
|
||||
|
||||
@ApiModelProperty(value = "平台总订单数")
|
||||
private int totalOrders;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "SalesAmount", description = "销售额统计")
|
||||
public static class SalesAmountStatistics extends BaseStatistics{
|
||||
@ApiModelProperty(value = "每日销售额")
|
||||
private BigDecimal dailySale;
|
||||
|
||||
@ApiModelProperty(value = "总销售额")
|
||||
private BigDecimal totalSale;
|
||||
}
|
||||
|
||||
@Data
|
||||
@ApiModel(value = "EquipmentStatistics", description = "设备统计")
|
||||
public static class EquipmentStatistics extends BaseStatistics{
|
||||
@ApiModelProperty(value = "每日新增设备")
|
||||
private int dailyEquipment;
|
||||
|
||||
@ApiModelProperty(value = "设备总数")
|
||||
private int totalEquipment;
|
||||
}
|
||||
|
||||
@ApiModelProperty(value = "总销售额")
|
||||
private BigDecimal totalSale;
|
||||
}
|
||||
|
||||
|
||||
|
||||
42
src/main/java/com/gxwebsoft/shop/mapper/DashboardMapper.java
Normal file
42
src/main/java/com/gxwebsoft/shop/mapper/DashboardMapper.java
Normal file
@@ -0,0 +1,42 @@
|
||||
package com.gxwebsoft.shop.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gxwebsoft.shop.entity.Dashboard;
|
||||
import com.gxwebsoft.shop.param.DashBoardParam;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
public interface DashboardMapper extends BaseMapper<Dashboard> {
|
||||
|
||||
/**
|
||||
* 订单统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return OrderStatistics
|
||||
*/
|
||||
Dashboard.OrderStatistics orderStatistics(@Param("param") DashBoardParam param);
|
||||
|
||||
/**
|
||||
* 销售额统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return SalesAmountStatistics
|
||||
*/
|
||||
Dashboard.SalesAmountStatistics salesAmountStatistics(@Param("param") DashBoardParam param);
|
||||
|
||||
|
||||
/**
|
||||
* 用户统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return UserStatistics
|
||||
*/
|
||||
Dashboard.UserStatistics userStatistics(@Param("param") DashBoardParam param);
|
||||
|
||||
/**
|
||||
* 设备统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return UserStatistics
|
||||
*/
|
||||
Dashboard.EquipmentStatistics equipmentStatistics(@Param("param") DashBoardParam param);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.gxwebsoft.shop.mapper.DashboardMapper">
|
||||
|
||||
<!-- 关联查询sql -->
|
||||
<sql id="selectSql">
|
||||
SELECT a.*
|
||||
FROM shop_cart a
|
||||
<where>
|
||||
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<!-- 分页查询 -->
|
||||
<select id="selectPageRel" resultType="com.gxwebsoft.shop.entity.Dashboard">
|
||||
<include refid="selectSql"></include>
|
||||
</select>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
<select id="selectListRel" resultType="com.gxwebsoft.shop.entity.Dashboard">
|
||||
<include refid="selectSql"></include>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.gxwebsoft.shop.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.gxwebsoft.shop.entity.Dashboard;
|
||||
import com.gxwebsoft.shop.param.DashBoardParam;
|
||||
|
||||
/**
|
||||
* 购物车记录表Service
|
||||
*
|
||||
* @author 科技小王子
|
||||
* @since 2022-11-25 19:04:43
|
||||
*/
|
||||
public interface DashboardService extends IService<Dashboard> {
|
||||
|
||||
/**
|
||||
* 订单统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return OrderStatistics
|
||||
*/
|
||||
Dashboard.OrderStatistics orderStatistics(DashBoardParam param);
|
||||
|
||||
/**
|
||||
* 销售额统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return SalesAmountStatistics
|
||||
*/
|
||||
Dashboard.SalesAmountStatistics salesAmountStatistics(DashBoardParam param);
|
||||
|
||||
|
||||
/**
|
||||
* 用户统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return UserStatistics
|
||||
*/
|
||||
Dashboard.UserStatistics userStatistics(DashBoardParam param);
|
||||
|
||||
/**
|
||||
* 设备统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return UserStatistics
|
||||
*/
|
||||
Dashboard.EquipmentStatistics equipmentStatistics(DashBoardParam param);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,161 @@
|
||||
package com.gxwebsoft.shop.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gxwebsoft.apps.entity.Equipment;
|
||||
import com.gxwebsoft.apps.service.EquipmentService;
|
||||
import com.gxwebsoft.common.system.entity.User;
|
||||
import com.gxwebsoft.common.system.service.UserService;
|
||||
import com.gxwebsoft.shop.entity.Dashboard;
|
||||
import com.gxwebsoft.shop.entity.Order;
|
||||
import com.gxwebsoft.shop.entity.OrderPay;
|
||||
import com.gxwebsoft.shop.mapper.DashboardMapper;
|
||||
import com.gxwebsoft.shop.param.DashBoardParam;
|
||||
import com.gxwebsoft.shop.service.DashboardService;
|
||||
import com.gxwebsoft.shop.service.OrderPayService;
|
||||
import com.gxwebsoft.shop.service.OrderService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 仪表盘,数据统计
|
||||
*
|
||||
* @author yqy
|
||||
* @since 2024-08-21
|
||||
*/
|
||||
@Service
|
||||
public class DashboardServiceImpl extends ServiceImpl<DashboardMapper, Dashboard> implements DashboardService {
|
||||
|
||||
@Resource
|
||||
private OrderService orderService;
|
||||
|
||||
@Resource
|
||||
private UserService userService;
|
||||
|
||||
@Resource
|
||||
private OrderPayService orderPayService;
|
||||
|
||||
@Resource
|
||||
private EquipmentService equipmentService;
|
||||
|
||||
/**
|
||||
* 订单统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return OrderStatistics
|
||||
*/
|
||||
@Override
|
||||
public Dashboard.OrderStatistics orderStatistics(DashBoardParam param) {
|
||||
//某日订单数
|
||||
int dayNewOrderNum = orderService.count(Wrappers.lambdaQuery(Order.class)
|
||||
.ge(Order::getCreateTime,param.getCreateTimeStart())
|
||||
.le(Order::getCreateTime,param.getCreateTimeEnd()));
|
||||
|
||||
//订单总数
|
||||
int totalOrderNum = orderService.count(Wrappers.lambdaQuery(Order.class)
|
||||
.eq(Order::getIsRenew,0)//非继费订单
|
||||
.eq(Order::getIsFreeze,1)//交押金
|
||||
.eq(Order::getDeleted,0));//注意:该过滤方式跟订单管理一致 TODO 这里不考虑巨量数据
|
||||
//订单统计
|
||||
Dashboard.OrderStatistics orderStatistics = new Dashboard.OrderStatistics();
|
||||
orderStatistics.setStartStatisticsDate(DateUtil.parse(param.getCreateTimeStart()));
|
||||
orderStatistics.setEndStatisticsDate(DateUtil.parse(param.getCreateTimeEnd()));
|
||||
orderStatistics.setTotalOrders(totalOrderNum);
|
||||
orderStatistics.setDailyNewOrders(dayNewOrderNum);
|
||||
return orderStatistics;
|
||||
}
|
||||
|
||||
/**
|
||||
* 销售额统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return SalesAmountStatistics
|
||||
*/
|
||||
@Override
|
||||
public Dashboard.SalesAmountStatistics salesAmountStatistics(DashBoardParam param) {
|
||||
//某日销售额
|
||||
BigDecimal dayTotalSale =BigDecimal.ZERO;
|
||||
List<OrderPay> orderPayList=orderPayService.list(Wrappers.lambdaQuery(OrderPay.class)
|
||||
.eq(OrderPay::getPayStatus,20)
|
||||
.ge(OrderPay::getCreateTime,param.getCreateTimeStart())
|
||||
.le(OrderPay::getCreateTime,param.getCreateTimeEnd()));
|
||||
if (null!=orderPayList && !orderPayList.isEmpty()){
|
||||
dayTotalSale= orderPayList.stream().map(OrderPay::getOrderPrice).reduce(BigDecimal.ZERO,BigDecimal::add);
|
||||
}
|
||||
|
||||
//总销售额
|
||||
BigDecimal totalSale =BigDecimal.ZERO;
|
||||
List<OrderPay> totalOrderPayList=orderPayService.list(Wrappers.lambdaQuery(OrderPay.class)
|
||||
.eq(OrderPay::getDeleted,0)
|
||||
.eq(OrderPay::getPayStatus,20));//过滤付款的 TODO 这里不考虑巨量数据
|
||||
if (null!=totalOrderPayList && !orderPayList.isEmpty()){
|
||||
totalSale= totalOrderPayList.stream().map(OrderPay::getOrderPrice).reduce(BigDecimal.ZERO,BigDecimal::add);
|
||||
}
|
||||
|
||||
//销售额统计
|
||||
Dashboard.SalesAmountStatistics salesAmountStatistics = new Dashboard.SalesAmountStatistics();
|
||||
salesAmountStatistics.setStartStatisticsDate(DateUtil.parse(param.getCreateTimeStart()));
|
||||
salesAmountStatistics.setEndStatisticsDate(DateUtil.parse(param.getCreateTimeEnd()));
|
||||
salesAmountStatistics.setDailySale(dayTotalSale);
|
||||
salesAmountStatistics.setTotalSale(totalSale);
|
||||
return salesAmountStatistics;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 用户统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return UserStatistics
|
||||
*/
|
||||
@Override
|
||||
public Dashboard.UserStatistics userStatistics(DashBoardParam param) {
|
||||
//某日新增用户数
|
||||
int dailyNewUsers = userService.count(Wrappers.lambdaQuery(User.class)
|
||||
.ge(User::getCreateTime,param.getCreateTimeStart())
|
||||
.le(User::getCreateTime,param.getCreateTimeEnd()));
|
||||
|
||||
//用户总数
|
||||
int totalUser = userService.count(Wrappers.lambdaQuery(User.class)
|
||||
.eq(User::getDeleted,0));//TODO 这里不考虑巨量数据
|
||||
|
||||
//用户统计
|
||||
Dashboard.UserStatistics userStatistics = new Dashboard.UserStatistics();
|
||||
userStatistics.setStartStatisticsDate(DateUtil.parse(param.getCreateTimeStart()));
|
||||
userStatistics.setEndStatisticsDate(DateUtil.parse(param.getCreateTimeEnd()));
|
||||
userStatistics.setTotalUsers(totalUser);
|
||||
userStatistics.setDailyNewUsers(dailyNewUsers);
|
||||
return userStatistics;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设备统计
|
||||
*
|
||||
* @param param 查询参数
|
||||
* @return EquipmentStatistics
|
||||
*/
|
||||
@Override
|
||||
public Dashboard.EquipmentStatistics equipmentStatistics(DashBoardParam param) {
|
||||
//某日新增设备
|
||||
int dailyEquipment = equipmentService.count(Wrappers.lambdaQuery(Equipment.class)
|
||||
.ge(Equipment::getCreateTime,param.getCreateTimeStart())
|
||||
.le(Equipment::getCreateTime,param.getCreateTimeEnd()));
|
||||
|
||||
//设备总数
|
||||
int totalEquipment = equipmentService.count(Wrappers.lambdaQuery(Equipment.class)
|
||||
.eq(Equipment::getDeleted,0));//TODO 这里不考虑巨量数据
|
||||
|
||||
//设备统计
|
||||
Dashboard.EquipmentStatistics equipmentStatistics = new Dashboard.EquipmentStatistics();
|
||||
equipmentStatistics.setStartStatisticsDate(DateUtil.parse(param.getCreateTimeStart()));
|
||||
equipmentStatistics.setEndStatisticsDate(DateUtil.parse(param.getCreateTimeEnd()));
|
||||
equipmentStatistics.setDailyEquipment(dailyEquipment);
|
||||
equipmentStatistics.setTotalEquipment(totalEquipment);
|
||||
return equipmentStatistics;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user