fix(admin): classify legacy coin seller recharges

This commit is contained in:
zhx 2026-07-17 18:22:42 +08:00
parent dc79adae36
commit a10213b4d8
2 changed files with 6 additions and 13 deletions

View File

@ -18,6 +18,8 @@ var (
errLegacyCoinSellerOrderDuplicate = errors.New("legacy coin seller recharge order already exists") errLegacyCoinSellerOrderDuplicate = errors.New("legacy coin seller recharge order already exists")
) )
const legacyCoinSellerRechargeType = "USDT-进货"
type coinSellerTarget struct { type coinSellerTarget struct {
UserID int64 UserID int64
DisplayUserID string DisplayUserID string
@ -214,7 +216,9 @@ WHERE id = ?`, input.CoinAmount, input.UserID, input.GrantedAt, balanceID); err
return legacyRechargeGrantResult{}, err return legacyRechargeGrantResult{}, err
} }
waterID := legacySnowflakeLikeID(input.GrantedAt) waterID := legacySnowflakeLikeID(input.GrantedAt)
rechargeType := legacyRechargeType(input.ProviderCode, input.Chain) // likei-services 经理中心按固定 recharge_type=USDT-进货 汇总币商入金;
// V5Pay、Binance 站内转账和链上网络属于支付凭证维度,已完整保存在 admin 订单中,不能写进旧钱包的统计分类字段。
rechargeType := legacyCoinSellerRechargeType
if _, err := tx.ExecContext(queryCtx, ` if _, err := tx.ExecContext(queryCtx, `
INSERT INTO user_freight_balance_running_water INSERT INTO user_freight_balance_running_water
(id, sys_origin, user_id, accept_user_id, seller_id, type, quantity, usd_quantity, balance, amount, recharge_type, origin, remark, create_user, update_user, create_time, update_time) (id, sys_origin, user_id, accept_user_id, seller_id, type, quantity, usd_quantity, balance, amount, recharge_type, origin, remark, create_user, update_user, create_time, update_time)
@ -258,17 +262,6 @@ func decimalBalanceAfter(earnPointsText string, consumptionText string, delta in
return int64(earn) + delta - int64(consumption), nil return int64(earn) + delta - int64(consumption), nil
} }
func legacyRechargeType(providerCode string, chain string) string {
providerCode = strings.ToUpper(strings.TrimSpace(providerCode))
if providerCode == "USDT" {
if chain = strings.ToUpper(strings.TrimSpace(chain)); chain != "" {
return "USDT-" + chain + "-进货"
}
return "USDT-进货"
}
return providerCode + "-进货"
}
func legacySnowflakeLikeID(now time.Time) int64 { func legacySnowflakeLikeID(now time.Time) int64 {
// 旧服务用 MyBatis ASSIGN_ID 写 bigint 主键;后台没有接入旧雪花 worker只需保证单进程内足够唯一且单调。 // 旧服务用 MyBatis ASSIGN_ID 写 bigint 主键;后台没有接入旧雪花 worker只需保证单进程内足够唯一且单调。
return now.UTC().UnixMilli()*1000 + int64(legacyWaterIDCounter.Add(1)%1000) return now.UTC().UnixMilli()*1000 + int64(legacyWaterIDCounter.Add(1)%1000)

View File

@ -32,7 +32,7 @@ func TestLegacyCoinSellerRechargeWriterGrantUpdatesBalanceAndRunningWater(t *tes
WithArgs(int64(1200), int64(10001), grantedAt, int64(77)). WithArgs(int64(1200), int64(10001), grantedAt, int64(77)).
WillReturnResult(sqlmock.NewResult(0, 1)) WillReturnResult(sqlmock.NewResult(0, 1))
walletMock.ExpectExec(`(?s)INSERT INTO user_freight_balance_running_water`). walletMock.ExpectExec(`(?s)INSERT INTO user_freight_balance_running_water`).
WithArgs(sqlmock.AnyArg(), "ATYOU", int64(10001), int64(10001), nil, int64(1200), int64(5200), "12.34", "MIFAPAY-进货", "MIFA-001", int64(10001), int64(10001), grantedAt, grantedAt). WithArgs(sqlmock.AnyArg(), "ATYOU", int64(10001), int64(10001), nil, int64(1200), int64(5200), "12.34", legacyCoinSellerRechargeType, "MIFA-001", int64(10001), int64(10001), grantedAt, grantedAt).
WillReturnResult(sqlmock.NewResult(0, 1)) WillReturnResult(sqlmock.NewResult(0, 1))
walletMock.ExpectCommit() walletMock.ExpectCommit()