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 {
|
||||
return &roomv1.AdminRoomRocketConfig{
|
||||
AppCode: input.AppCode,
|
||||
Enabled: input.Enabled,
|
||||
FuelSource: input.FuelSource,
|
||||
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"
|
||||
"strings"
|
||||
|
||||
"hyapp-admin-server/internal/appctx"
|
||||
"hyapp-admin-server/internal/integration/roomclient"
|
||||
)
|
||||
|
||||
@ -108,17 +109,7 @@ func (s *Service) UpdateConfig(ctx context.Context, req updateRoomRocketConfigRe
|
||||
if s.roomClient == nil {
|
||||
return RoomRocketConfig{}, fmt.Errorf("room service client is not configured")
|
||||
}
|
||||
config, err := normalizeConfig(RoomRocketConfig{
|
||||
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,
|
||||
})
|
||||
config, err := normalizeConfig(configFromUpdateRequest(ctx, req))
|
||||
if err != nil {
|
||||
return RoomRocketConfig{}, err
|
||||
}
|
||||
@ -132,6 +123,22 @@ func (s *Service) UpdateConfig(ctx context.Context, req updateRoomRocketConfigRe
|
||||
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 {
|
||||
levels := make([]RoomRocketLevelConfig, 0, roomRocketLevelCount)
|
||||
for index, threshold := range defaultLevelFuelThresholds {
|
||||
|
||||
@ -1,10 +1,24 @@
|
||||
package roomrocket
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"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) {
|
||||
config, err := normalizeConfig(RoomRocketConfig{
|
||||
AppCode: "lalu",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user