feat(pickup): 线下提号完成时发放号主成长积分
- 提号完成按号主实际结算金额发放积分,使用提号单维度幂等键防重复 - 增加线下提号积分补发脚本,默认预演,支持指定起始时间和单号 - 补充提号完成与积分幂等回归测试
This commit is contained in:
@@ -3,6 +3,7 @@ package pickup
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -363,6 +364,20 @@ func TestRepositoryCompleteInternalPickupCreditsWallet(t *testing.T) {
|
||||
t.Fatalf("站内提号应生成钱包流水: %v", err)
|
||||
}
|
||||
assertInt64(t, "站内提号钱包入账", ledger.AmountCent, 12000)
|
||||
|
||||
var owner model.User
|
||||
if err := db.First(&owner, listing.OwnerID).Error; err != nil {
|
||||
t.Fatalf("读取提号号主失败: %v", err)
|
||||
}
|
||||
assertInt64(t, "提号号主成长积分", owner.RenterGrowthPoints, 120)
|
||||
var growthLedger model.RenterGrowthLedger
|
||||
if err := db.Where("biz_key = ?", "pickup:"+strconv.FormatUint(pickup.ID, 10)+":owner:pickup_completed").
|
||||
First(&growthLedger).Error; err != nil {
|
||||
t.Fatalf("提号应生成号主积分流水: %v", err)
|
||||
}
|
||||
if growthLedger.Role != "owner" || growthLedger.Source != "pickup_completed" || growthLedger.Points != 120 {
|
||||
t.Fatalf("提号积分流水 = %#v", growthLedger)
|
||||
}
|
||||
}
|
||||
|
||||
// 线下提号不走正常订单结账流程,完成时必须同步给号主邀请人发放返利,
|
||||
@@ -736,6 +751,8 @@ func newPickupTestRepo(t *testing.T) (*Repository, *gorm.DB) {
|
||||
&model.ProcessEvent{},
|
||||
&model.Notification{},
|
||||
&model.ListingStatusEvent{},
|
||||
&model.SystemConfig{},
|
||||
&model.RenterGrowthLedger{},
|
||||
); err != nil {
|
||||
t.Fatalf("迁移测试表失败: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user