完善租客等级免押与积分管理
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"hfb_sys/backend/internal/model"
|
||||
"hfb_sys/backend/internal/modules/rentergrowth"
|
||||
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
@@ -69,17 +70,59 @@ func TestApplyUserFilterHasDepositFreeQuota(t *testing.T) {
|
||||
stmt := applyUserFilter(db.Table("users AS u"), ListQuery{
|
||||
Status: "active",
|
||||
HasDepositFreeQuota: true,
|
||||
}).Find(&[]struct{}{}).Statement
|
||||
}, rentergrowth.DefaultConfig()).Find(&[]struct{}{}).Statement
|
||||
sql := stmt.SQL.String()
|
||||
|
||||
if !strings.Contains(sql, "u.deposit_free_quota_cent > 0") {
|
||||
if !strings.Contains(sql, "u.deposit_free_quota_cent > 0 OR u.renter_growth_points >=") {
|
||||
t.Fatalf("SQL 未包含免押额度过滤:%s", sql)
|
||||
}
|
||||
if len(stmt.Vars) != 1 || stmt.Vars[0] != "active" {
|
||||
if len(stmt.Vars) != 2 || stmt.Vars[0] != "active" || stmt.Vars[1] != int64(300) {
|
||||
t.Fatalf("筛选变量不正确:%v", stmt.Vars)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAdjustGrowthPointsWritesRepeatableLedgers(t *testing.T) {
|
||||
db := setupAdminUserTestDB(t)
|
||||
user := model.User{
|
||||
Phone: "13900000005",
|
||||
Status: "active",
|
||||
RenterGrowthPoints: 290,
|
||||
RenterGrowthLevel: rentergrowth.DefaultLevelCode,
|
||||
}
|
||||
if err := db.Create(&user).Error; err != nil {
|
||||
t.Fatalf("创建用户失败:%v", err)
|
||||
}
|
||||
repo := NewRepository(db)
|
||||
if _, err := repo.AdjustGrowthPoints(t.Context(), 66, user.ID, GrowthPointsAdjustRequest{
|
||||
TargetPoints: 1000,
|
||||
Reason: "运营活动赠送",
|
||||
}, AuditMeta{RequestID: "growth-1"}); err != nil {
|
||||
t.Fatalf("第一次调整积分失败:%v", err)
|
||||
}
|
||||
got, err := repo.AdjustGrowthPoints(t.Context(), 66, user.ID, GrowthPointsAdjustRequest{
|
||||
TargetPoints: 200,
|
||||
Reason: "修正错误赠送",
|
||||
}, AuditMeta{RequestID: "growth-2"})
|
||||
if err != nil {
|
||||
t.Fatalf("第二次调整积分失败:%v", err)
|
||||
}
|
||||
if got.RenterGrowthPoints != 200 || got.RenterGrowthLevel != rentergrowth.DefaultLevelCode {
|
||||
t.Fatalf("调整后成长信息 = %d/%s, want 200/normal", got.RenterGrowthPoints, got.RenterGrowthLevel)
|
||||
}
|
||||
var ledgers []model.RenterGrowthLedger
|
||||
if err := db.Where("user_id = ? AND source = ?", user.ID, rentergrowth.SourceAdminAdjustment).Order("id ASC").Find(&ledgers).Error; err != nil {
|
||||
t.Fatalf("查询积分流水失败:%v", err)
|
||||
}
|
||||
if len(ledgers) != 2 || ledgers[0].Points != 710 || ledgers[1].Points != -800 {
|
||||
t.Fatalf("积分流水不正确:%+v", ledgers)
|
||||
}
|
||||
for _, ledger := range ledgers {
|
||||
if ledger.OrderID != nil || ledger.OperatorAdminID == nil || *ledger.OperatorAdminID != 66 {
|
||||
t.Fatalf("人工积分流水关联不正确:%+v", ledger)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestManualRealnameUpdatesUserRecordAndAudit(t *testing.T) {
|
||||
db := setupAdminUserTestDB(t)
|
||||
user := model.User{
|
||||
@@ -265,6 +308,8 @@ func setupAdminUserTestDB(t *testing.T) *gorm.DB {
|
||||
&model.Dispute{},
|
||||
&model.WalletAccount{},
|
||||
&model.WalletLedger{},
|
||||
&model.SystemConfig{},
|
||||
&model.RenterGrowthLedger{},
|
||||
); err != nil {
|
||||
t.Fatalf("数据库迁移失败:%v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user