fix: pass app code when updating room rocket config
This commit is contained in:
parent
9c2413ca11
commit
4c41c964d2
@ -561,6 +561,7 @@ func roomPinFromProto(input *roomv1.AdminRoomPin) RoomPin {
|
|||||||
|
|
||||||
func roomRocketConfigToProto(input RoomRocketConfig) *roomv1.AdminRoomRocketConfig {
|
func roomRocketConfigToProto(input RoomRocketConfig) *roomv1.AdminRoomRocketConfig {
|
||||||
return &roomv1.AdminRoomRocketConfig{
|
return &roomv1.AdminRoomRocketConfig{
|
||||||
|
AppCode: input.AppCode,
|
||||||
Enabled: input.Enabled,
|
Enabled: input.Enabled,
|
||||||
FuelSource: input.FuelSource,
|
FuelSource: input.FuelSource,
|
||||||
LaunchDelayMs: input.LaunchDelayMS,
|
LaunchDelayMs: input.LaunchDelayMS,
|
||||||
|
|||||||
10
server/admin/internal/integration/roomclient/client_test.go
Normal file
10
server/admin/internal/integration/roomclient/client_test.go
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package roomclient
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestRoomRocketConfigToProtoKeepsAppCode(t *testing.T) {
|
||||||
|
config := roomRocketConfigToProto(RoomRocketConfig{AppCode: "lalu"})
|
||||||
|
if config.GetAppCode() != "lalu" {
|
||||||
|
t.Fatalf("proto app code mismatch: %q", config.GetAppCode())
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -7,6 +7,7 @@ import (
|
|||||||
"slices"
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"hyapp-admin-server/internal/appctx"
|
||||||
"hyapp-admin-server/internal/integration/roomclient"
|
"hyapp-admin-server/internal/integration/roomclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -108,17 +109,7 @@ func (s *Service) UpdateConfig(ctx context.Context, req updateRoomRocketConfigRe
|
|||||||
if s.roomClient == nil {
|
if s.roomClient == nil {
|
||||||
return RoomRocketConfig{}, fmt.Errorf("room service client is not configured")
|
return RoomRocketConfig{}, fmt.Errorf("room service client is not configured")
|
||||||
}
|
}
|
||||||
config, err := normalizeConfig(RoomRocketConfig{
|
config, err := normalizeConfig(configFromUpdateRequest(ctx, req))
|
||||||
Enabled: req.Enabled,
|
|
||||||
FuelSource: req.FuelSource,
|
|
||||||
LaunchDelayMS: req.LaunchDelayMS,
|
|
||||||
BroadcastEnabled: req.BroadcastEnabled,
|
|
||||||
BroadcastScope: req.BroadcastScope,
|
|
||||||
BroadcastDelayMS: req.BroadcastDelayMS,
|
|
||||||
RewardStackPolicy: req.RewardStackPolicy,
|
|
||||||
Levels: req.Levels,
|
|
||||||
GiftFuelRules: req.GiftFuelRules,
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return RoomRocketConfig{}, err
|
return RoomRocketConfig{}, err
|
||||||
}
|
}
|
||||||
@ -132,6 +123,22 @@ func (s *Service) UpdateConfig(ctx context.Context, req updateRoomRocketConfigRe
|
|||||||
return configFromClient(saved)
|
return configFromClient(saved)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func configFromUpdateRequest(ctx context.Context, req updateRoomRocketConfigRequest) RoomRocketConfig {
|
||||||
|
// 房间火箭配置按 App 隔离;更新请求体不让前端传 app_code,必须使用中间件写入的上下文值。
|
||||||
|
return RoomRocketConfig{
|
||||||
|
AppCode: appctx.FromContext(ctx),
|
||||||
|
Enabled: req.Enabled,
|
||||||
|
FuelSource: req.FuelSource,
|
||||||
|
LaunchDelayMS: req.LaunchDelayMS,
|
||||||
|
BroadcastEnabled: req.BroadcastEnabled,
|
||||||
|
BroadcastScope: req.BroadcastScope,
|
||||||
|
BroadcastDelayMS: req.BroadcastDelayMS,
|
||||||
|
RewardStackPolicy: req.RewardStackPolicy,
|
||||||
|
Levels: req.Levels,
|
||||||
|
GiftFuelRules: req.GiftFuelRules,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func defaultConfig(appCode string) RoomRocketConfig {
|
func defaultConfig(appCode string) RoomRocketConfig {
|
||||||
levels := make([]RoomRocketLevelConfig, 0, roomRocketLevelCount)
|
levels := make([]RoomRocketLevelConfig, 0, roomRocketLevelCount)
|
||||||
for index, threshold := range defaultLevelFuelThresholds {
|
for index, threshold := range defaultLevelFuelThresholds {
|
||||||
|
|||||||
@ -1,10 +1,24 @@
|
|||||||
package roomrocket
|
package roomrocket
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"hyapp-admin-server/internal/appctx"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestConfigFromUpdateRequestUsesContextAppCode(t *testing.T) {
|
||||||
|
request := updateRoomRocketConfigRequest{Levels: defaultConfig("ignored").Levels}
|
||||||
|
config := configFromUpdateRequest(appctx.WithContext(context.Background(), "LALU"), request)
|
||||||
|
if config.AppCode != "lalu" {
|
||||||
|
t.Fatalf("config app code should come from context: %+v", config)
|
||||||
|
}
|
||||||
|
if _, err := normalizeConfig(config); err != nil {
|
||||||
|
t.Fatalf("normalizeConfig should accept context app code: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestNormalizeConfigDefaultsAndSortsLevels(t *testing.T) {
|
func TestNormalizeConfigDefaultsAndSortsLevels(t *testing.T) {
|
||||||
config, err := normalizeConfig(RoomRocketConfig{
|
config, err := normalizeConfig(RoomRocketConfig{
|
||||||
AppCode: "lalu",
|
AppCode: "lalu",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user