All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m36s
- 新增订单管理、支付回调、购买验证等核心服务 - 实现订单、订单项目的数据存储层和 API 接口 - 添加订单数据库迁移和 DTO 定义 - 更新 API 文档和路由配置 - 同步 3 个新规范到主规范库(订单管理、订单支付、套餐购买验证) - 完成 OpenSpec 变更归档 Ultraworked with Sisyphus
97 lines
3.9 KiB
Go
97 lines
3.9 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Order 订单模型
|
|
// 记录套餐购买订单信息,支持单卡购买和设备购买两种类型
|
|
// 买家可以是个人客户(使用卡/设备钱包)或代理商(使用店铺钱包)
|
|
type Order struct {
|
|
gorm.Model
|
|
BaseModel `gorm:"embedded"`
|
|
|
|
// 订单基础信息
|
|
OrderNo string `gorm:"column:order_no;type:varchar(30);uniqueIndex:idx_order_no,where:deleted_at IS NULL;not null;comment:订单号(ORD+时间戳+6位随机数)" json:"order_no"`
|
|
OrderType string `gorm:"column:order_type;type:varchar(20);not null;comment:订单类型 single_card-单卡购买 device-设备购买" json:"order_type"`
|
|
|
|
// 买家信息
|
|
BuyerType string `gorm:"column:buyer_type;type:varchar(20);not null;comment:买家类型 personal-个人客户 agent-代理商" json:"buyer_type"`
|
|
BuyerID uint `gorm:"column:buyer_id;index:idx_order_buyer;not null;comment:买家ID(个人客户ID或店铺ID)" json:"buyer_id"`
|
|
|
|
// 关联资源
|
|
IotCardID *uint `gorm:"column:iot_card_id;index;comment:IoT卡ID(单卡购买时有值)" json:"iot_card_id,omitempty"`
|
|
DeviceID *uint `gorm:"column:device_id;index;comment:设备ID(设备购买时有值)" json:"device_id,omitempty"`
|
|
|
|
// 金额信息
|
|
TotalAmount int64 `gorm:"column:total_amount;type:bigint;not null;comment:订单总金额(分)" json:"total_amount"`
|
|
|
|
// 支付信息
|
|
PaymentMethod string `gorm:"column:payment_method;type:varchar(20);comment:支付方式 wallet-钱包 wechat-微信 alipay-支付宝" json:"payment_method"`
|
|
PaymentStatus int `gorm:"column:payment_status;type:int;default:1;not null;index:idx_order_payment_status;comment:支付状态 1-待支付 2-已支付 3-已取消 4-已退款" json:"payment_status"`
|
|
PaidAt *time.Time `gorm:"column:paid_at;comment:支付时间" json:"paid_at,omitempty"`
|
|
|
|
// 佣金信息
|
|
CommissionStatus int `gorm:"column:commission_status;type:int;default:1;not null;comment:佣金状态 1-待计算 2-已计算" json:"commission_status"`
|
|
CommissionConfigVersion int `gorm:"column:commission_config_version;type:int;default:0;comment:佣金配置版本(订单创建时快照)" json:"commission_config_version"`
|
|
}
|
|
|
|
// TableName 指定表名
|
|
func (Order) TableName() string {
|
|
return "tb_order"
|
|
}
|
|
|
|
// 订单类型常量
|
|
const (
|
|
OrderTypeSingleCard = "single_card" // 单卡购买
|
|
OrderTypeDevice = "device" // 设备购买
|
|
)
|
|
|
|
// 买家类型常量
|
|
const (
|
|
BuyerTypePersonal = "personal" // 个人客户
|
|
BuyerTypeAgent = "agent" // 代理商
|
|
)
|
|
|
|
// 支付方式常量
|
|
const (
|
|
PaymentMethodWallet = "wallet" // 钱包支付
|
|
PaymentMethodWechat = "wechat" // 微信支付
|
|
PaymentMethodAlipay = "alipay" // 支付宝支付
|
|
)
|
|
|
|
// 支付状态常量
|
|
const (
|
|
PaymentStatusPending = 1 // 待支付
|
|
PaymentStatusPaid = 2 // 已支付
|
|
PaymentStatusCancelled = 3 // 已取消
|
|
PaymentStatusRefunded = 4 // 已退款
|
|
)
|
|
|
|
// 佣金状态常量
|
|
const (
|
|
CommissionStatusPending = 1 // 待计算
|
|
CommissionStatusCalculated = 2 // 已计算
|
|
)
|
|
|
|
// OrderItem 订单明细模型
|
|
// 记录订单中购买的套餐明细,支持一个订单购买多个套餐
|
|
type OrderItem struct {
|
|
gorm.Model
|
|
BaseModel `gorm:"embedded"`
|
|
|
|
OrderID uint `gorm:"column:order_id;index:idx_order_item_order_id;not null;comment:订单ID" json:"order_id"`
|
|
PackageID uint `gorm:"column:package_id;index;not null;comment:套餐ID" json:"package_id"`
|
|
PackageName string `gorm:"column:package_name;type:varchar(100);not null;comment:套餐名称(快照)" json:"package_name"`
|
|
Quantity int `gorm:"column:quantity;type:int;default:1;not null;comment:数量" json:"quantity"`
|
|
UnitPrice int64 `gorm:"column:unit_price;type:bigint;not null;comment:单价(分)" json:"unit_price"`
|
|
Amount int64 `gorm:"column:amount;type:bigint;not null;comment:小计金额(分)" json:"amount"`
|
|
}
|
|
|
|
// TableName 指定表名
|
|
func (OrderItem) TableName() string {
|
|
return "tb_order_item"
|
|
}
|