# 数据库定义 ### 用户表(Users) | 字段名 | 类型 | 描述 | 备注 | | --------- | -------------------- | -------- | ------------ | | Id | int | 用户ID | 主键自增 | | Username | varchar(20) | 用户名 | 唯一 | | Email | varchar(20) | 邮箱 | 唯一 | | PassHash | varchar(255) | 密码哈希 | | | Role | Enum('Admin','User') | 用户角色 | | | IsBan | boolean | 是否禁用 | | | Balance | Decimal(10) | 余额 | | | CreatedAt | Timestamp | 创建时间 | 默认当前时间 | ### API表(Apis) | 字段名 | 数据类型 | 描述 | 备注 | | ------------ | ------------------------------- | ------------- | ---------------------- | | Id | int | 主键,自增 | | | Name | varchar(20) | api名称 | | | Endpoint | varchar(255) | api地址 | | | Method | enum('GET','POST','PUT',DELETE) | 调用方法 | | | PackageId | int | 套餐Id | 默认为空(免费无限制) | | IsThirdParty | boolean | 是否第三方API | | | IsActive | boolean | 是否启用 | | | CreatedAt | timestamp | 创建时间 | 默认当前时间 | ### API调用表(ApiCallLogs) | 字段名 | 数据类型 | 描述 | 备注 | | ---------- | --------- | -------------- | ------------ | | Id | int | 主键,自增 | | | UserId | int | 外键 | 用户ID | | ApiId | int | 外键 | APIID | | CallTime | timestamp | 调用时间 | 默认当前时间 | | CallResult | int | 调用结果状态码 | | ### 订单表(Orders) | 字段名 | 数据类型 | 描述 | 备注 | | ----------------- | ------------------------------------------------ | ------------------ | -------------------------------- | | Id | int | 主键,自增 | | | UserId | int | 外键 | 用户ID | | OrderNumber | varchar(50) | 订单号 | 唯一订单编号,适合与外部系统对接 | | ThirdPartyOrderId | varchar(100) | 第三方系统订单编号 | 可用于追踪第三方支付 | | Amount | decimal(10,2) | 订单金额 | 正数充值或消费,负数表示退款 | | OrderType | enum('Recharge','Purchase', 'Refund') | 订单类型 | 充值、购买、退款等 | | Status | enum('Pending','Completed','Cancelled','Failed') | 订单状态 | 订单状态:进行中、完成、取消等 | | CreatedAt | timestamp | 创建时间 | 订单创建时间 | | UpdatedAt | timestamp | 更新时间 | 订单状态更新时间 | | Description | varchar(255) | 订单描述 | 可选的详细信息,解释订单用途 | ### 操作日志表(OperationLogs) | 字段名 | 数据类型 | 描述 | 备注 | | ----------- | ------------ | ------------ | ---------------------------------- | | Id | int | 主键,自增 | | | UserId | int | 操作人ID | 操作者的用户ID(通常是管理员) | | Operation | varchar(20) | 操作类型 | 描述操作的具体内容,例如“禁用用户” | | TargetType | varchar(50) | 目标类型 | 操作的对象类型,例如“用户” | | TargetId | int | 目标对象ID | 操作对象的具体ID | | CreatedAt | timestamp | 操作时间 | 操作发生时间 | | IpAddress | varchar(45) | 操作来源IP | | | UserAgent | varchar(255) | 操作设备信息 | | | Description | varchar(255) | 操作描述 | 可选的详细说明,解释操作原因等 | ### 套餐表(ApiPackages) | 字段名 | 数据类型 | 描述 | 备注 | | ---------- | ------------- | ------------ | ---------------------- | | Id | int | 主键,自增 | | | Name | varchar(20) | 套餐名称 | | | CallLimit | int | 最大调用次数 | | | Price | decimal(10,2) | 价格 | | | ExpiryDate | timestamp | 套餐过期时间 | 可用于控制套餐是否过期 | | CreatedAt | timestamp | 创建时间 | | ### 用户套餐关系表(UserPackages) | 字段名 | 数据类型 | 描述 | 备注 | | -------------- | --------- | ------------ | ------ | | Id | int | 主键,自增 | | | UserId | int | 外键 | 用户ID | | PackageId | int | 外键 | 套餐ID | | RemainingCalls | int | 剩余调用次数 | | | PurchasedAt | timestamp | 购买时间 | | > [!CAUTION] > > 注:删除用户时需要保证数据一致性。