feat(backend): license_purchases 增 amount_minor/currency/pay_url/renewed_to 列 + 存量回填(pay v2 金额口径)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -368,6 +368,21 @@ func entitle(tx *gorm.DB, shopID uint64, plan payPlan) error {
|
||||
}).Error
|
||||
}
|
||||
|
||||
// BackfillPurchaseAmountMinor 启动回填:v1 存量购买单 amount("2999.00") → amount_minor(299900)+CNY。
|
||||
// 幂等:只处理 amount_minor=0 且 amount 非空的行(参照 backfillPinyin 先例)。
|
||||
func BackfillPurchaseAmountMinor(db *gorm.DB) {
|
||||
var rows []model.LicensePurchase
|
||||
if err := db.Where("amount_minor = 0 AND amount <> ''").Find(&rows).Error; err != nil {
|
||||
return
|
||||
}
|
||||
for _, p := range rows {
|
||||
if c, err := toCents(p.Amount); err == nil && c > 0 {
|
||||
db.Model(&model.LicensePurchase{}).Where("id = ?", p.ID).
|
||||
Updates(map[string]any{"amount_minor": c, "currency": "CNY"})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// amountEqual 金额按分归一比较("2999.00" == "2999" == "2999.0")。
|
||||
func amountEqual(a, b string) bool {
|
||||
ca, ea := toCents(a)
|
||||
|
||||
Reference in New Issue
Block a user