You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
365 lines
7.7 KiB
365 lines
7.7 KiB
/**
|
|
* 业务相关类型定义
|
|
*/
|
|
|
|
// 用户相关类型
|
|
declare namespace User {
|
|
/** 用户状态 */
|
|
type Status = 'active' | 'inactive' | 'banned';
|
|
|
|
/** 用户性别 */
|
|
type Gender = 'male' | 'female' | 'unknown';
|
|
|
|
/** 用户角色 */
|
|
interface Role extends BaseEntity {
|
|
roleCode: string;
|
|
roleName: string;
|
|
description?: string;
|
|
permissions?: Permission[];
|
|
}
|
|
|
|
/** 用户权限 */
|
|
interface Permission extends BaseEntity {
|
|
authority: string;
|
|
description?: string;
|
|
}
|
|
|
|
/** 用户基础信息 */
|
|
interface BaseInfo extends BaseEntity {
|
|
userId: ID;
|
|
username: string;
|
|
nickname?: string;
|
|
realName?: string;
|
|
avatar?: string;
|
|
avatarUrl?: string;
|
|
phone?: string;
|
|
email?: string;
|
|
gender?: Gender;
|
|
sexName?: string;
|
|
birthday?: string;
|
|
status: Status;
|
|
tenantId?: ID;
|
|
companyId?: ID;
|
|
}
|
|
|
|
/** 完整用户信息 */
|
|
interface Info extends BaseInfo {
|
|
roles?: Role[];
|
|
authorities?: Permission[];
|
|
balance?: number;
|
|
points?: number;
|
|
openid?: string;
|
|
certification?: boolean;
|
|
isAdmin?: boolean;
|
|
lastLoginTime?: string;
|
|
}
|
|
|
|
/** 用户登录参数 */
|
|
interface LoginParams {
|
|
username?: string;
|
|
password?: string;
|
|
phone?: string;
|
|
code?: string;
|
|
captcha?: string;
|
|
tenantId?: ID;
|
|
}
|
|
|
|
/** 用户注册参数 */
|
|
interface RegisterParams {
|
|
username: string;
|
|
password: string;
|
|
phone: string;
|
|
code: string;
|
|
nickname?: string;
|
|
tenantId?: ID;
|
|
}
|
|
}
|
|
|
|
// 商品相关类型
|
|
declare namespace Product {
|
|
/** 商品状态 */
|
|
type Status = 'draft' | 'published' | 'offline' | 'deleted';
|
|
|
|
/** 商品规格 */
|
|
interface Spec {
|
|
specName: string;
|
|
specValues: string[];
|
|
}
|
|
|
|
/** 商品SKU */
|
|
interface SKU extends BaseEntity {
|
|
skuId: ID;
|
|
goodsId: ID;
|
|
sku: string;
|
|
price: number;
|
|
originalPrice?: number;
|
|
stock: number;
|
|
weight?: number;
|
|
volume?: number;
|
|
image?: string;
|
|
barcode?: string;
|
|
}
|
|
|
|
/** 商品分类 */
|
|
interface Category extends BaseEntity, BaseTreeNode<Category> {
|
|
categoryName: string;
|
|
categoryCode?: string;
|
|
description?: string;
|
|
image?: string;
|
|
sort?: number;
|
|
status: Status;
|
|
}
|
|
|
|
/** 商品基础信息 */
|
|
interface BaseInfo extends BaseEntity {
|
|
goodsId: ID;
|
|
goodsName: string;
|
|
goodsCode?: string;
|
|
categoryId: ID;
|
|
categoryName?: string;
|
|
brand?: string;
|
|
description?: string;
|
|
content?: string;
|
|
images?: string[];
|
|
mainImage?: string;
|
|
status: Status;
|
|
sort?: number;
|
|
tags?: string[];
|
|
}
|
|
|
|
/** 完整商品信息 */
|
|
interface Info extends BaseInfo {
|
|
category?: Category;
|
|
specs?: Spec[];
|
|
skus?: SKU[];
|
|
minPrice?: number;
|
|
maxPrice?: number;
|
|
totalStock?: number;
|
|
salesCount?: number;
|
|
viewCount?: number;
|
|
favoriteCount?: number;
|
|
}
|
|
|
|
/** 商品查询参数 */
|
|
interface QueryParams extends BasePaginationParams {
|
|
categoryId?: ID;
|
|
categoryIds?: ID[];
|
|
keywords?: string;
|
|
status?: Status;
|
|
minPrice?: number;
|
|
maxPrice?: number;
|
|
brand?: string;
|
|
tags?: string[];
|
|
sortBy?: 'price' | 'sales' | 'createTime' | 'updateTime';
|
|
}
|
|
}
|
|
|
|
// 订单相关类型
|
|
declare namespace Order {
|
|
/** 订单状态 */
|
|
type Status = 'pending' | 'paid' | 'shipped' | 'delivered' | 'completed' | 'cancelled' | 'refunded';
|
|
|
|
/** 支付状态 */
|
|
type PayStatus = 0 | 1 | 2; // 0-未支付 1-已支付 2-已退款
|
|
|
|
/** 配送状态 */
|
|
type DeliveryStatus = 10 | 20 | 30; // 10-待发货 20-已发货 30-已收货
|
|
|
|
/** 支付方式 */
|
|
type PaymentType = 0 | 1 | 2 | 3; // 0-余额 1-微信 2-支付宝 3-其他
|
|
|
|
/** 订单商品 */
|
|
interface Goods extends BaseEntity {
|
|
orderGoodsId: ID;
|
|
orderId: ID;
|
|
goodsId: ID;
|
|
goodsName: string;
|
|
goodsImage?: string;
|
|
skuId?: ID;
|
|
sku?: string;
|
|
price: number;
|
|
quantity: number;
|
|
totalPrice: number;
|
|
refundQuantity?: number;
|
|
refundAmount?: number;
|
|
}
|
|
|
|
/** 收货地址 */
|
|
interface Address {
|
|
name: string;
|
|
phone: string;
|
|
province: string;
|
|
city: string;
|
|
district: string;
|
|
detail: string;
|
|
postalCode?: string;
|
|
}
|
|
|
|
/** 订单基础信息 */
|
|
interface BaseInfo extends BaseEntity {
|
|
orderId: ID;
|
|
orderNo: string;
|
|
userId: ID;
|
|
status: Status;
|
|
payStatus: PayStatus;
|
|
deliveryStatus?: DeliveryStatus;
|
|
paymentType?: PaymentType;
|
|
totalAmount: number;
|
|
payAmount: number;
|
|
discountAmount?: number;
|
|
shippingFee?: number;
|
|
remark?: string;
|
|
payTime?: string;
|
|
shipTime?: string;
|
|
deliveryTime?: string;
|
|
completeTime?: string;
|
|
cancelTime?: string;
|
|
}
|
|
|
|
/** 完整订单信息 */
|
|
interface Info extends BaseInfo {
|
|
goods?: Goods[];
|
|
address?: Address;
|
|
user?: User.BaseInfo;
|
|
goodsCount?: number;
|
|
trackingNumber?: string;
|
|
expressCompany?: string;
|
|
}
|
|
|
|
/** 订单创建参数 */
|
|
interface CreateParams {
|
|
goods: Array<{
|
|
goodsId: ID;
|
|
skuId?: ID;
|
|
quantity: number;
|
|
price?: number;
|
|
}>;
|
|
address: Address;
|
|
paymentType: PaymentType;
|
|
remark?: string;
|
|
couponId?: ID;
|
|
usePoints?: number;
|
|
}
|
|
|
|
/** 订单查询参数 */
|
|
interface QueryParams extends BasePaginationParams {
|
|
userId?: ID;
|
|
status?: Status;
|
|
payStatus?: PayStatus;
|
|
deliveryStatus?: DeliveryStatus;
|
|
orderNo?: string;
|
|
startTime?: string;
|
|
endTime?: string;
|
|
}
|
|
}
|
|
|
|
// 购物车相关类型
|
|
declare namespace Cart {
|
|
/** 购物车商品 */
|
|
interface Item {
|
|
cartId: ID;
|
|
goodsId: ID;
|
|
goodsName: string;
|
|
goodsImage?: string;
|
|
skuId?: ID;
|
|
sku?: string;
|
|
price: number;
|
|
originalPrice?: number;
|
|
quantity: number;
|
|
stock: number;
|
|
selected: boolean;
|
|
invalid?: boolean;
|
|
addTime: string;
|
|
}
|
|
|
|
/** 购物车统计 */
|
|
interface Summary {
|
|
totalCount: number;
|
|
selectedCount: number;
|
|
totalAmount: number;
|
|
selectedAmount: number;
|
|
discountAmount?: number;
|
|
finalAmount: number;
|
|
}
|
|
}
|
|
|
|
// 内容管理相关类型
|
|
declare namespace CMS {
|
|
/** 文章状态 */
|
|
type ArticleStatus = 'draft' | 'published' | 'archived';
|
|
|
|
/** 文章分类 */
|
|
interface Category extends BaseEntity, BaseTreeNode<Category> {
|
|
categoryName: string;
|
|
categoryCode?: string;
|
|
description?: string;
|
|
image?: string;
|
|
sort?: number;
|
|
}
|
|
|
|
/** 文章信息 */
|
|
interface Article extends BaseEntity {
|
|
articleId: ID;
|
|
title: string;
|
|
summary?: string;
|
|
content: string;
|
|
coverImage?: string;
|
|
categoryId?: ID;
|
|
categoryName?: string;
|
|
author?: string;
|
|
status: ArticleStatus;
|
|
publishTime?: string;
|
|
viewCount?: number;
|
|
likeCount?: number;
|
|
tags?: string[];
|
|
seoTitle?: string;
|
|
seoKeywords?: string;
|
|
seoDescription?: string;
|
|
}
|
|
|
|
/** 文章查询参数 */
|
|
interface ArticleQueryParams extends BasePaginationParams {
|
|
categoryId?: ID;
|
|
status?: ArticleStatus;
|
|
keywords?: string;
|
|
author?: string;
|
|
tags?: string[];
|
|
startTime?: string;
|
|
endTime?: string;
|
|
}
|
|
}
|
|
|
|
// 系统相关类型
|
|
declare namespace System {
|
|
/** 字典类型 */
|
|
interface Dict extends BaseEntity {
|
|
dictCode: string;
|
|
dictName: string;
|
|
dictValue: string;
|
|
description?: string;
|
|
sort?: number;
|
|
status?: 'active' | 'inactive';
|
|
}
|
|
|
|
/** 配置项 */
|
|
interface Config extends BaseEntity {
|
|
configKey: string;
|
|
configValue: string;
|
|
configName?: string;
|
|
description?: string;
|
|
type?: 'string' | 'number' | 'boolean' | 'json';
|
|
}
|
|
|
|
/** 菜单项 */
|
|
interface Menu extends BaseEntity, BaseTreeNode<Menu> {
|
|
menuName: string;
|
|
menuCode?: string;
|
|
path?: string;
|
|
icon?: string;
|
|
component?: string;
|
|
permission?: string;
|
|
sort?: number;
|
|
visible?: boolean;
|
|
type?: 'menu' | 'button';
|
|
}
|
|
}
|