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 {
|
if err != nil {
|
||||||
return propsNobleVIPAbilityRow{}, serverError("vip_ability_query_failed", err.Error())
|
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 propsNobleVIPAbilityRow{}, badRequest("vip_not_giftable", "only noble VIP level 1-3 can be gifted")
|
||||||
}
|
}
|
||||||
return row, nil
|
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: 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: 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: 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)
|
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) {
|
func TestBanUserRejectsRechargedUser(t *testing.T) {
|
||||||
service, fake := newManagerCenterTestService(t)
|
service, fake := newManagerCenterTestService(t)
|
||||||
db := service.db.(*gorm.DB)
|
db := service.db.(*gorm.DB)
|
||||||
|
|||||||
@ -27,8 +27,9 @@ const (
|
|||||||
vipGiftOrigin = "VIP_PURCHASE"
|
vipGiftOrigin = "VIP_PURCHASE"
|
||||||
vipGiftOriginDesc = "VIP purchase"
|
vipGiftOriginDesc = "VIP purchase"
|
||||||
|
|
||||||
defaultGiftDays = 7
|
defaultGiftDays = 7
|
||||||
defaultVIPGiftDays = 30
|
defaultVIPGiftDays = 30
|
||||||
|
maxGiftableVIPLevel = 3
|
||||||
|
|
||||||
accountStatusNormal = "NORMAL"
|
accountStatusNormal = "NORMAL"
|
||||||
accountStatusFreeze = "FREEZE"
|
accountStatusFreeze = "FREEZE"
|
||||||
|
|||||||
@ -63,6 +63,7 @@ func (s *Service) listVIPProps(ctx context.Context, user AuthUser) (*PropsListRe
|
|||||||
var rows []model.VipLevelConfig
|
var rows []model.VipLevelConfig
|
||||||
if err := s.db.WithContext(ctx).
|
if err := s.db.WithContext(ctx).
|
||||||
Where("sys_origin = ? AND enabled = ?", sysOrigin, true).
|
Where("sys_origin = ? AND enabled = ?", sysOrigin, true).
|
||||||
|
Where("level BETWEEN ? AND ?", 1, maxGiftableVIPLevel).
|
||||||
Order("level ASC").
|
Order("level ASC").
|
||||||
Find(&rows).Error; err != nil {
|
Find(&rows).Error; err != nil {
|
||||||
return nil, serverError("vip_config_query_failed", err.Error())
|
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 {
|
if !config.Enabled {
|
||||||
return nil, badRequest("vip_level_disabled", "vip level is disabled")
|
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")
|
return nil, badRequest("vip_not_giftable", "vip level is invalid")
|
||||||
}
|
}
|
||||||
if config.DurationDays <= 0 {
|
if config.DurationDays <= 0 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user