fix: restrict manager vip gifts
This commit is contained in:
parent
dbd073b97f
commit
6d90ddeee0
@ -535,7 +535,7 @@ func (s *Service) loadGiftableNobleVIPAbility(ctx context.Context, propsID int64
|
||||
if err != nil {
|
||||
return propsNobleVIPAbilityRow{}, serverError("vip_ability_query_failed", err.Error())
|
||||
}
|
||||
if row.VIPLevel > 3 {
|
||||
if row.VIPLevel > maxGiftableVIPLevel {
|
||||
return propsNobleVIPAbilityRow{}, badRequest("vip_not_giftable", "only noble VIP level 1-3 can be gifted")
|
||||
}
|
||||
return row, nil
|
||||
|
||||
@ -135,6 +135,7 @@ func TestListPropsReturnsVIPLevelConfigs(t *testing.T) {
|
||||
model.VipLevelConfig{ID: 301, SysOrigin: "LIKEI", Level: 1, LevelCode: "VIP1", DisplayName: "VIP 1", Enabled: true, DurationDays: 30},
|
||||
model.VipLevelConfig{ID: 302, SysOrigin: "LIKEI", Level: 2, LevelCode: "VIP2", DisplayName: "VIP 2", Enabled: false, DurationDays: 30},
|
||||
model.VipLevelConfig{ID: 303, SysOrigin: "ATYOU", Level: 1, LevelCode: "VIP1", DisplayName: "ATYOU VIP 1", Enabled: true, DurationDays: 30},
|
||||
model.VipLevelConfig{ID: 304, SysOrigin: "LIKEI", Level: 4, LevelCode: "VIP4", DisplayName: "VIP 4", Enabled: true, DurationDays: 30},
|
||||
)
|
||||
|
||||
resp, err := service.ListProps(context.Background(), AuthUser{UserID: 1, SysOrigin: "LIKEI"}, propsTypeNobleVIP)
|
||||
@ -307,6 +308,31 @@ func TestSendVIPUsesVIPLevelConfig(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSendVIPRejectsLevelAboveGiftLimit(t *testing.T) {
|
||||
service, _ := newManagerCenterTestService(t)
|
||||
db := service.db.(*gorm.DB)
|
||||
seedManager(t, db, 1)
|
||||
seedUsers(t, db,
|
||||
userBaseInfoRow{ID: 1, Account: "1", UserNickname: "manager", OriginSys: "LIKEI"},
|
||||
userBaseInfoRow{ID: 2, Account: "2", OriginSys: "LIKEI"},
|
||||
)
|
||||
seedVIPConfigs(t, db, model.VipLevelConfig{
|
||||
ID: 304,
|
||||
SysOrigin: "LIKEI",
|
||||
Level: 4,
|
||||
LevelCode: "VIP4",
|
||||
DisplayName: "VIP 4",
|
||||
Enabled: true,
|
||||
DurationDays: 30,
|
||||
})
|
||||
|
||||
_, err := service.SendProps(context.Background(), AuthUser{UserID: 1, SysOrigin: "LIKEI"}, SendPropsRequest{
|
||||
AcceptUserID: ID(2),
|
||||
PropsID: ID(304),
|
||||
})
|
||||
assertAppErrorCode(t, err, "vip_not_giftable")
|
||||
}
|
||||
|
||||
func TestBanUserRejectsRechargedUser(t *testing.T) {
|
||||
service, fake := newManagerCenterTestService(t)
|
||||
db := service.db.(*gorm.DB)
|
||||
|
||||
@ -27,8 +27,9 @@ const (
|
||||
vipGiftOrigin = "VIP_PURCHASE"
|
||||
vipGiftOriginDesc = "VIP purchase"
|
||||
|
||||
defaultGiftDays = 7
|
||||
defaultVIPGiftDays = 30
|
||||
defaultGiftDays = 7
|
||||
defaultVIPGiftDays = 30
|
||||
maxGiftableVIPLevel = 3
|
||||
|
||||
accountStatusNormal = "NORMAL"
|
||||
accountStatusFreeze = "FREEZE"
|
||||
|
||||
@ -63,6 +63,7 @@ func (s *Service) listVIPProps(ctx context.Context, user AuthUser) (*PropsListRe
|
||||
var rows []model.VipLevelConfig
|
||||
if err := s.db.WithContext(ctx).
|
||||
Where("sys_origin = ? AND enabled = ?", sysOrigin, true).
|
||||
Where("level BETWEEN ? AND ?", 1, maxGiftableVIPLevel).
|
||||
Order("level ASC").
|
||||
Find(&rows).Error; err != nil {
|
||||
return nil, serverError("vip_config_query_failed", err.Error())
|
||||
@ -87,7 +88,7 @@ func (s *Service) sendVIPGift(ctx context.Context, manager AuthUser, target user
|
||||
if !config.Enabled {
|
||||
return nil, badRequest("vip_level_disabled", "vip level is disabled")
|
||||
}
|
||||
if config.Level < 1 || config.Level > 5 {
|
||||
if config.Level < 1 || config.Level > maxGiftableVIPLevel {
|
||||
return nil, badRequest("vip_not_giftable", "vip level is invalid")
|
||||
}
|
||||
if config.DurationDays <= 0 {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user