فهرست منبع

feat(gameShield): 优化生成盾号逻辑并添加新接口

- 移除生成盾号时的时间戳,改为直接使用 hostId- 添加 GetKeyAndEditGameShield 接口,用于获取 key并更新游戏盾号
- 在 GameShieldBackendService 中集成 GameShieldService
- 优化游戏盾号后台相关操作,包括更新 key 和处理非 PC 类型的 SDK IP
fusu 3 ماه پیش
والد
کامیت
0a7215ff4c
3فایلهای تغییر یافته به همراه27 افزوده شده و 2 حذف شده
  1. 1 1
      cmd/server/wire/wire_gen.go
  2. 17 1
      internal/service/gameshield.go
  3. 9 0
      internal/service/gameshieldbackend.go

+ 1 - 1
cmd/server/wire/wire_gen.go

@@ -52,7 +52,7 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	gameShieldService := service.NewGameShieldService(serviceService, gameShieldRepository, crawlerService, gameShieldPublicIpService, duedateService, formatterService, parserService, requiredService, viperViper, gameShieldSdkIpService)
 	gameShieldService := service.NewGameShieldService(serviceService, gameShieldRepository, crawlerService, gameShieldPublicIpService, duedateService, formatterService, parserService, requiredService, viperViper, gameShieldSdkIpService)
 	gameShieldHandler := handler.NewGameShieldHandler(handlerHandler, gameShieldService, crawlerService)
 	gameShieldHandler := handler.NewGameShieldHandler(handlerHandler, gameShieldService, crawlerService)
 	gameShieldBackendRepository := repository.NewGameShieldBackendRepository(repositoryRepository)
 	gameShieldBackendRepository := repository.NewGameShieldBackendRepository(repositoryRepository)
-	gameShieldBackendService := service.NewGameShieldBackendService(serviceService, gameShieldBackendRepository, gameShieldRepository, crawlerService, gameShieldPublicIpService, duedateService, formatterService, parserService, requiredService, viperViper)
+	gameShieldBackendService := service.NewGameShieldBackendService(serviceService, gameShieldBackendRepository, gameShieldRepository, crawlerService, gameShieldPublicIpService, duedateService, formatterService, parserService, requiredService, viperViper, gameShieldService)
 	gameShieldBackendHandler := handler.NewGameShieldBackendHandler(handlerHandler, gameShieldBackendService)
 	gameShieldBackendHandler := handler.NewGameShieldBackendHandler(handlerHandler, gameShieldBackendService)
 	webForwardingRepository := repository.NewWebForwardingRepository(repositoryRepository)
 	webForwardingRepository := repository.NewWebForwardingRepository(repositoryRepository)
 	webForwardingService := service.NewWebForwardingService(serviceService, requiredService, webForwardingRepository, crawlerService, parserService)
 	webForwardingService := service.NewWebForwardingService(serviceService, requiredService, webForwardingRepository, crawlerService, parserService)

+ 17 - 1
internal/service/gameshield.go

@@ -16,6 +16,7 @@ type GameShieldService interface {
 	EditGameShield(ctx context.Context, req *v1.GameShieldSubmitRequest) (string, error)
 	EditGameShield(ctx context.Context, req *v1.GameShieldSubmitRequest) (string, error)
 	DeleteGameShield(ctx context.Context, req int) (string, error)
 	DeleteGameShield(ctx context.Context, req int) (string, error)
 	GetGameShieldKey(ctx context.Context, id int) (string, error)
 	GetGameShieldKey(ctx context.Context, id int) (string, error)
+	GetKeyAndEditGameShield(ctx context.Context, hostId string, dunName string) (string, error)
 }
 }
 
 
 func NewGameShieldService(
 func NewGameShieldService(
@@ -77,7 +78,7 @@ func (service *gameShieldService) SubmitGameShield(ctx context.Context, req *v1.
 		return "", fmt.Errorf("生成IP地址失败: %w", err)
 		return "", fmt.Errorf("生成IP地址失败: %w", err)
 	}
 	}
 
 
-	dunName := strconv.Itoa(req.Uid) + "_" + strconv.FormatInt(time.Now().Unix(), 10) + "_hostId" + req.HostId
+	dunName := strconv.Itoa(req.Uid) + "_hostId" + req.HostId
 	formData := map[string]interface{}{
 	formData := map[string]interface{}{
 		"app_name":         dunName,
 		"app_name":         dunName,
 		"gateway_group_id": 4,
 		"gateway_group_id": 4,
@@ -156,3 +157,18 @@ func (service *gameShieldService) GetGameShieldKey(ctx context.Context, id int)
 	}
 	}
 	return res, nil
 	return res, nil
 }
 }
+
+func (service *gameShieldService) GetKeyAndEditGameShield(ctx context.Context, hostId string, dunName string) (string, error) {
+	key, err := service.crawlerService.GetKey(ctx, dunName)
+	if err != nil {
+		return "", err
+	}
+
+	if err := service.gameShieldRepository.UpdateGameShield(ctx, &model.GameShield{
+		HostId: hostId,
+		Key:    key,
+	}); err != nil {
+		return "", err
+	}
+	return "", nil
+}

+ 9 - 0
internal/service/gameshieldbackend.go

@@ -31,6 +31,7 @@ func NewGameShieldBackendService(
 	parser ParserService,
 	parser ParserService,
 	required RequiredService,
 	required RequiredService,
 	conf *viper.Viper,
 	conf *viper.Viper,
+	shieldService GameShieldService,
 ) GameShieldBackendService {
 ) GameShieldBackendService {
 	return &gameShieldBackendService{
 	return &gameShieldBackendService{
 		Service:                     service,
 		Service:                     service,
@@ -43,6 +44,7 @@ func NewGameShieldBackendService(
 		parser:                      parser,
 		parser:                      parser,
 		required:                    required,
 		required:                    required,
 		Url:                         conf.GetString("crawler.Url"),
 		Url:                         conf.GetString("crawler.Url"),
+		shieldService:               shieldService,
 	}
 	}
 }
 }
 
 
@@ -57,6 +59,7 @@ type gameShieldBackendService struct {
 	Url                         string
 	Url                         string
 	parser                      ParserService
 	parser                      ParserService
 	required                    RequiredService
 	required                    RequiredService
+	shieldService               GameShieldService
 }
 }
 
 
 func (s *gameShieldBackendService) GetGameShieldRequired(ctx context.Context, req *v1.GameShieldBackendArrayRequest) (*v1.GetGameShieldRequiredResponse, int, error) {
 func (s *gameShieldBackendService) GetGameShieldRequired(ctx context.Context, req *v1.GameShieldBackendArrayRequest) (*v1.GetGameShieldRequiredResponse, int, error) {
@@ -142,6 +145,9 @@ func (s *gameShieldBackendService) GameShieldBackend(ctx context.Context, req *v
 	if err := s.gameShieldRepository.UpdateGameShieldByHostId(ctx, &model.GameShield{Id: req.HostId, Key: KeyAndField.Key}); err != nil {
 	if err := s.gameShieldRepository.UpdateGameShieldByHostId(ctx, &model.GameShield{Id: req.HostId, Key: KeyAndField.Key}); err != nil {
 		return "", 0, err
 		return "", 0, err
 	}
 	}
+	if res, err = s.shieldService.GetKeyAndEditGameShield(ctx, strconv.Itoa(req.HostId), require.DunName); err != nil {
+		return "", 0, err
+	}
 	return res, count, nil
 	return res, count, nil
 }
 }
 
 
@@ -197,6 +203,9 @@ func (s *gameShieldBackendService) SaveGameShieldBackend(ctx context.Context, re
 		if err != nil {
 		if err != nil {
 			return err
 			return err
 		}
 		}
+		if v.Type != "pc" {
+			v.SdkIp = "127.0.0.1"
+		}
 		if err := s.gameShieldBackendRepository.AddGameShieldBackend(ctx,
 		if err := s.gameShieldBackendRepository.AddGameShieldBackend(ctx,
 			&model.GameShieldBackend{
 			&model.GameShieldBackend{
 				HostId:          hostId,
 				HostId:          hostId,