Ver código fonte

refactor(gameshield):重构游戏盾提交逻辑

-移除了 GameShieldSubmitRequest 中的冗余字段
- 更新了 UpdateGameShield 方法的查询条件
- 移除了未使用的 GetGameShieldrequired 方法
- 简化了 SubmitGameShield 和 EditGameShield 方法的逻辑
fusu 3 meses atrás
pai
commit
d3158cad8b
3 arquivos alterados com 35 adições e 114 exclusões
  1. 6 11
      api/v1/GameShield.go
  2. 1 1
      internal/repository/gameshield.go
  3. 28 102
      internal/service/gameshield.go

+ 6 - 11
api/v1/GameShield.go

@@ -1,17 +1,12 @@
 package v1
 
 type GameShieldSubmitRequest struct {
-	HostId      string `json:"host_id" form:"host_id" binding:"required"`
-	AppIp       string `json:"app_ip" form:"app_ip" binding:"required"`
-	AppName     string `json:"app_name" form:"app_name" binding:"required"`
-	RuleId      int    `json:"rule_id" form:"rule_id"`
-	Checked     int    `json:"checked" form:"checked"`
-	Id          int    `json:"id" form:"id"`
-	Uid         int    `json:"uid" form:"uid"`
-	SdkArgs     string `json:"sdk_args" form:"sdk_args"`
-	SdkInitArgs string `json:"sdk_init_args" form:"sdk_init_args"`
-	Comment     string `json:"comment" form:"comment"`
-	Data        string `json:"data" form:"data"`
+	HostId  string `json:"host_id" form:"host_id" binding:"required"`
+	AppName string `json:"app_name" form:"app_name" binding:"required"`
+	RuleId  int    `json:"rule_id" form:"rule_id"`
+	Id      int    `json:"id" form:"id"`
+	Uid     int    `json:"uid" form:"uid"`
+	Comment string `json:"comment" form:"comment"`
 }
 
 type BackendItem struct {

+ 1 - 1
internal/repository/gameshield.go

@@ -58,7 +58,7 @@ func (r *gameShieldRepository) AddGameShield(ctx context.Context, gameShield *mo
 }
 
 func (r *gameShieldRepository) UpdateGameShield(ctx context.Context, gameShield *model.GameShield) error {
-	if err := r.DB(ctx).Where("rule_id", gameShield.RuleId).Updates(gameShield).Error; err != nil {
+	if err := r.DB(ctx).Where("host_id = ?", gameShield.HostId).Updates(gameShield).Error; err != nil {
 		return err
 	}
 	return nil

+ 28 - 102
internal/service/gameshield.go

@@ -7,6 +7,7 @@ import (
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository"
 	"github.com/spf13/viper"
+	"strconv"
 	"time"
 )
 
@@ -54,27 +55,6 @@ type gameShieldService struct {
 	required                  RequiredService
 }
 
-//func (service *gameShieldService) GetGameShieldrequired(ctx context.Context, req *v1.GameShieldSubmitRequest) (*v1.GetGameShieldRequiredResponse, error) {
-//	var res v1.GetGameShieldRequiredResponse
-//	var err error
-//	if req.Uid == 0 {
-//		return nil, fmt.Errorf("uid is required")
-//	}
-//	res.ExpiredAt, err = service.duedate.NextDueDate(ctx, req.Uid, req.HostId)
-//	if err != nil {
-//		return nil, err
-//	}
-//	res.Backend, err = service.formatter.FormatBackendData(ctx, req)
-//	if err != nil {
-//		return nil, err
-//	}
-//	res.Cookie, err = service.crawlerService.GetLoginCookie(ctx)
-//	if err != nil {
-//		return nil, err
-//	}
-//	return &res, nil
-//}
-
 func (service *gameShieldService) SubmitGameShield(ctx context.Context, req *v1.GameShieldSubmitRequest) (string, error) {
 	nameCount, err := service.gameShieldRepository.GetGameShieldDuplicateName(ctx, req.AppName, req.Uid)
 	if err != nil {
@@ -83,42 +63,38 @@ func (service *gameShieldService) SubmitGameShield(ctx context.Context, req *v1.
 	if nameCount > 0 {
 		return "", fmt.Errorf("应用名称已存在")
 	}
-	//require, err := service.GetGameShieldrequired(ctx, req)
-	//if err != nil {
-	//	return "", err
-	//}
-	//dunName := strconv.Itoa(req.Uid) + "_" + strconv.FormatInt(time.Now().Unix(), 10) + "_" + req.AppName
-	//formData := map[string]interface{}{
-	//	"app_name":         dunName,
-	//	"gateway_group_id": 4,
-	//	"backend":          require.Backend,
-	//	"expired_at":       require.ExpiredAt,
-	//	"max_device_count": 0,
-	//}
-	//respBody, err := service.required.SendForm(ctx, "admin/info/rule/new", "admin/new/rule", formData)
-	//if err != nil {
-	//	return "", err
-	//}
-	//// 解析响应内容中的 alert 消息
-	//res, err := service.parser.ParseAlert(string(respBody))
-	//if err != nil {
-	//	return "", err
-	//}
-	//if res != "" {
-	//	return "", fmt.Errorf(res)
-	//}
-	//KeyAndField, err := service.required.GetKeyAndField(ctx, dunName, "rule_id")
-	//if err != nil {
-	//	return "", err
-	//}
+	dunName := strconv.Itoa(req.Uid) + "_" + strconv.FormatInt(time.Now().Unix(), 10) + "_hostId" + req.HostId
+	formData := map[string]interface{}{
+		"app_name":         dunName,
+		"gateway_group_id": 4,
+		"backend":          "{}",
+		"expired_at":       "",
+		"max_device_count": 0,
+	}
+	respBody, err := service.required.SendForm(ctx, "admin/info/rule/new", "admin/new/rule", formData)
+	if err != nil {
+		return "", err
+	}
+	// 解析响应内容中的 alert 消息
+	res, err := service.parser.ParseAlert(string(respBody))
+	if err != nil {
+		return "", err
+	}
+	if res != "" {
+		return "", fmt.Errorf(res)
+	}
+	KeyAndField, err := service.required.GetKeyAndField(ctx, dunName, "rule_id")
+	if err != nil {
+		return "", err
+	}
 	if err := service.gameShieldRepository.AddGameShield(ctx, &model.GameShield{
 		AppName:        req.AppName,
 		GatewayGroupId: 4,
 		AddTime:        time.Now(),
 		Uid:            req.Uid,
 		HostId:         req.HostId,
-		AppIp:          req.AppIp,
-		Checked:        req.Checked,
+		DunName:        dunName,
+		RuleId:         KeyAndField.FieldId,
 	}); err != nil {
 		return "", err
 	}
@@ -126,58 +102,8 @@ func (service *gameShieldService) SubmitGameShield(ctx context.Context, req *v1.
 }
 
 func (service *gameShieldService) EditGameShield(ctx context.Context, req *v1.GameShieldSubmitRequest) (string, error) {
-	ruleId, err := service.gameShieldRepository.GetGameShieldRuleIdByAppName(ctx, req.AppName)
-	if err != nil {
-		return "", err
-	}
-	if ruleId != req.RuleId {
-		return "", fmt.Errorf("应用名称已存在")
-	}
-	//require, err := service.GetGameShieldrequired(ctx, req)
-	//if err != nil {
-	//	return "", err
-	//}
-	//tokenUrl := service.Url + "admin/info/rule/edit?&__goadmin_edit_pk=" + strconv.Itoa(req.RuleId) + "_" + req.AppName
-	//tokens, err := service.crawlerService.GetFormTokens(ctx, tokenUrl, require.Cookie)
-	//if err != nil {
-	//	return "", err
-	//}
-	//sendUrl := service.Url + "admin/edit/rule"
-	//
-	//dunName := strconv.Itoa(req.Uid) + "_" + strconv.FormatInt(time.Now().Unix(), 10) + "_" + req.AppName
-	//formData := map[string]interface{}{
-	//	"app_name":             dunName,
-	//	"gateway_group_id":     4,
-	//	"backend":              require.Backend,
-	//	"rule_id":              req.RuleId,
-	//	"expired_at":           require.ExpiredAt,
-	//	"max_device_count":     0,
-	//	"__go_admin_previous_": tokens["previous"],
-	//	"__go_admin_t_":        tokens["t"],
-	//}
-	//respBody, err := service.crawlerService.SendFormData(ctx, sendUrl, require.Cookie, formData)
-	//if err != nil {
-	//	return "", err
-	//}
-	//// 解析响应内容中的 alert 消息
-	//res, err := service.parser.ParseAlert(string(respBody))
-	//if err != nil {
-	//	return "", err
-	//}
-	//if res != "" {
-	//	return "", fmt.Errorf(res)
-	//}
-	//KeyAndField, err := service.required.GetKeyAndField(ctx, dunName, "rule_id")
-	//if err != nil {
-	//	return "", err
-	//}
 	if err := service.gameShieldRepository.UpdateGameShield(ctx, &model.GameShield{
-		AppName:        req.AppName,
-		GatewayGroupId: 4,
-		Uid:            req.Uid,
-		HostId:         req.HostId,
-		AppIp:          req.AppIp,
-		Checked:        req.Checked,
+		AppName: req.AppName,
 	}); err != nil {
 		return "", err
 	}