Files
guilixu-admin/src/api/shop/shopZone/model/index.ts
T
gxwebsoft ced8c7cff7 feat(shop-zone): 新增专区销量统计功能
- 后端新增专区销量统计相关 VO 并扩展 ShopHomeSection 实体
- 新增批量查询专区销量汇总与商品排行的 Mapper 方法及接口
- Controller 增加获取专区销量统计的接口支持时间范围查询
- 前端接口定义新增专区销量统计类型及请求方法
- 专区管理页面列表新增销量件数、销售额列及销量详情按钮
- 实现专区销量统计弹窗支持时间筛选、汇总展示和排行显示
- 完成前端相关界面和交互设计,保证功能完整可用
- 统计口径基于已支付且未取消/退款订单商品实际成交数据
2026-08-17 12:40:08 +08:00

121 lines
2.3 KiB
TypeScript

import type { PageParam } from '@/api';
/**
* 首页专区
*/
export interface HomeSection {
// 专区ID
sectionId?: number;
// 租户id
tenantId?: number;
// 专区标题
title?: string;
// 专区副标题
subtitle?: string;
// banner 图片URL
banner?: string;
// 关联分类ID(逗号分隔字符串,可选)
categoryIds?: string;
// 样式类型 0默认
styleType?: number;
// 是否受限专区 0否 1是
restricted?: number;
// 排序号(数字越小越靠前)
sortNumber?: number;
// 状态 0正常 1禁用
status?: number;
// 生效开始时间
startTime?: string;
// 生效结束时间
endTime?: string;
// 用户ID
userId?: number;
// 是否删除 0否 1是
deleted?: number;
// 创建时间
createTime?: string;
// 修改时间
updateTime?: string;
// 销量件数(统计, 非DB字段)
salesNum?: number;
// 销售额(统计, 非DB字段)
salesAmount?: number;
}
/**
* 首页专区搜索条件
*/
export interface HomeSectionParam extends PageParam {
// 专区标题(模糊)
title?: string;
// 状态 0正常 1禁用
status?: number;
// 是否受限专区 0/1
restricted?: number;
// 排序号
sortNumber?: number;
}
/**
* 专区权限校验结果
*/
export interface SectionPermission {
// 专区ID
sectionId?: number;
// 是否受限专区
restricted?: boolean;
// 当前用户是否允许访问
allowed?: boolean;
}
/**
* 专区商品(只读展示,字段按需取用)
*/
export interface SectionGoods {
goodsId?: number;
name?: string;
image?: string;
price?: string;
salePrice?: string;
stock?: number;
status?: number;
[key: string]: any;
}
/**
* 专区白名单用户
*/
export interface SectionUser {
id?: number;
sectionId?: number;
userId?: number;
}
/**
* 专区销量统计(含商品排行)
*/
export interface SectionSalesStatsVO {
// 专区ID
sectionId?: number;
// 销量件数
salesNum?: number;
// 销售额
salesAmount?: number;
// 统计开始时间
startTime?: string;
// 统计结束时间
endTime?: string;
// 商品销量排行
goodsRank?: SectionGoodsRankItem[];
}
/**
* 专区商品销量排行项
*/
export interface SectionGoodsRankItem {
goodsId?: number;
goodsName?: string;
salesNum?: number;
salesAmount?: number;
}