重构项目结构,将数据层集中在 lib 包中;resource 类型更新,支持多个子套餐类型分别表示;新增长效套餐的购买流程,以及已购查询功能

This commit is contained in:
2025-05-22 14:59:22 +08:00
parent 9652181fe4
commit dc83c83cfb
29 changed files with 1827 additions and 1143 deletions

2
src/lib/models/index.ts Normal file
View File

@@ -0,0 +1,2 @@
export * from './models'
export * from './resource'

100
src/lib/models/models.ts Normal file
View File

@@ -0,0 +1,100 @@
import {Resource} from '@/lib/models'
export type User = {
id: number
admin_id: number
phone: string
username: string
email: string
name: string
avatar: string
status: number
balance: number
id_type: number
id_no: string
id_token: string
contact_qq: string
contact_wechat: string
last_login: Date
last_login_host: string
last_login_agent: string
created_at: Date
updated_at: Date
}
export type Bill = {
id: number
user_id: number
trade_id: number
refund_id: number
resource_id: number
bill_no: string
info: string
type: number
amount: number
created_at: Date
updated_at: Date
trade: Trade
refund: Refund
resource: Resource
}
export type Trade = {
id: number
user_id: number
inner_no: string
outer_no: string
type: number
subject: string
remark: string
amount: number
payment: number
method: number
status: number
paid_at: Date
cancel_at: Date
created_at: Date
updated_at: Date
}
export type Refund = {
id: number
product_id: number
trade_id: number
amount: number
reason: string
status: number
created_at: Date
updated_at: Date
}
export type Channel = {
id: number
user_id: number
proxy_id: number
node_id: number
proxy_host: string
proxy_port: number
user_host: string
node_host: string
auth_ip: boolean
auth_pass: boolean
protocol: number
username: string
password: string
expiration: Date
created_at: Date
updated_at: Date
}
export type Announcement = {
id: number
title: string
content: string
type: number
status: number
pin: boolean
sort: number
created_at: Date
updated_at: Date
}

View File

@@ -0,0 +1,47 @@
type ResourceShort = {
id: number
resource_id: number
type: number
live: number
expire: Date
quota: number
used: number
daily_limit: number
daily_used: number
daily_last: Date
created_at: Date
updated_at: Date
}
type ResourceLong = {
id: number
resource_id: number
type: number
live: number
expire: Date
quota: number
used: number
daily_limit: number
daily_used: number
daily_last: Date
created_at: Date
updated_at: Date
}
export type Resource<T extends 1 | 2 = 1 | 2> = {
id: number
user_id: number
resource_no: string
active: boolean
created_at: Date
updated_at: Date
} & (
T extends 1 ? {
type: 1
short: ResourceShort
} :
T extends 2 ? {
type: 2
long: ResourceLong
} : {}
)