package user import ( "encoding/json" "errors" "github.com/gin-gonic/gin" "github.com/perfect-panel/server/internal/logic/admin/user" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/result" ) // Update user subcribe func UpdateUserSubscribeHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) { return func(c *gin.Context) { var req types.UpdateUserSubscribeRequest _ = c.ShouldBind(&req) validateErr := svcCtx.Validate(&req) if validateErr != nil { result.ParamErrorResult(c, validateErr) return } if err := validateUpdateUserSubscribeTrafficLimit(&req); err != nil { result.ParamErrorResult(c, err) return } l := user.NewUpdateUserSubscribeLogic(c.Request.Context(), svcCtx) err := l.UpdateUserSubscribe(&req) result.HttpResult(c, nil, err) } } func validateUpdateUserSubscribeTrafficLimit(req *types.UpdateUserSubscribeRequest) error { if req.TrafficLimit == nil || *req.TrafficLimit == "" { return nil } var rules []types.TrafficLimit if err := json.Unmarshal([]byte(*req.TrafficLimit), &rules); err != nil { return errors.New("traffic_limit must be a valid JSON array") } return nil }