All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m19s
- 新增迁移 000129:tb_package_usage 添加 paid_amount BIGINT 字段,存量数据通过 JOIN tb_order 回填 - PackageUsage Model 新增 PaidAmount *int64 字段 - 4 个写入点(order service 主套餐/加油包、auto_purchase 主套餐/加油包)赋值 order.ActualPaidAmount - AssetPackageResponse DTO 新增 paid_amount 字段 - GetCurrentPackage / GetPackages 填充 paid_amount,接口直接返回购买价格无需 JOIN 订单表
2.6 KiB
2.6 KiB
1. 数据库迁移
- 1.1 新建迁移文件
migrations/000129_add_paid_amount_to_package_usage.up.sql:ALTER TABLE tb_package_usage ADD COLUMN IF NOT EXISTS paid_amount BIGINT,添加字段注释,执行存量数据回填(UPDATE ... FROM tb_order WHERE order_id != 0) - 1.2 新建迁移文件
migrations/000129_add_paid_amount_to_package_usage.down.sql:ALTER TABLE tb_package_usage DROP COLUMN IF EXISTS paid_amount - 1.3 执行迁移并通过 PostgreSQL MCP 验证字段已添加,存量数据已回填
2. Model 层
- 2.1 在
internal/model/package.go的PackageUsage结构体中新增字段PaidAmount *int64,添加 GORM taggorm:"column:paid_amount;type:bigint;comment:购买实付金额快照(分,从订单复制,无订单或线下支付时为null)"及 JSON tagjson:"paid_amount,omitempty"
3. 套餐激活写入点
- 3.1
internal/service/order/service.goactivateMainPackage():在初始化usage := &model.PackageUsage{...}中新增PaidAmount: order.ActualPaidAmount - 3.2
internal/service/order/service.goactivateAddonPackage():在初始化usage := &model.PackageUsage{...}中新增PaidAmount: order.ActualPaidAmount - 3.3
internal/task/auto_purchase.goactivateMainPackage()(line ~507):在初始化usage := &model.PackageUsage{...}中新增PaidAmount: order.ActualPaidAmount - 3.4
internal/task/auto_purchase.goactivateAddonPackage()(line ~578):在初始化usage := &model.PackageUsage{...}中新增PaidAmount: order.ActualPaidAmount
4. DTO 层
- 4.1
internal/model/dto/asset_dto.go的AssetPackageResponse结构体新增字段PaidAmount *int64,添加 JSON tagjson:"paid_amount,omitempty",description tagdescription:"购买实付金额(分),线下支付或无订单分配时为空"
5. Asset Service 查询填充
- 5.1
internal/service/asset/service.goGetCurrentPackage()方法:在构建AssetPackageResponse时填充PaidAmount: usage.PaidAmount - 5.2
internal/service/asset/service.goGetPackages()方法:在构建每条AssetPackageResponse时填充PaidAmount: usage.PaidAmount
6. 验证
- 6.1 通过 PostgreSQL MCP 验证新套餐记录的
paid_amount字段已正确写入(分别验证钱包支付和线下支付场景) - 6.2 调用
GET /api/admin/assets/{id}/current-package验证响应包含paid_amount字段 - 6.3 调用
GET /api/admin/assets/{id}/packages验证响应 items 中包含paid_amount字段 - 6.4 运行
go build ./...确认无编译错误