package controller

import (
	"time"

	"fafa-crawler/src/colly_service"
	"fafa-crawler/src/services"
)

var (
	hdyColly       *colly_service.HdyCollyService
	productService *services.ProductService
	sxGoodsService *services.SxGoodsService
)

func init() {
	hdyColly = colly_service.NewHdyCollyService()
	productService = services.NewProductService()
	sxGoodsService = services.NewSxGoodsService()
}

// APIResponse 标准API响应结构体(符合国内大厂规范)
// 包含状态码、消息、数据和时间戳字段
type APIResponse struct {
	Code      int         `json:"code"`      // 状态码: 0成功, 非0错误
	Msg       string      `json:"msg"`       // 响应消息
	Data      interface{} `json:"data"`      // 业务数据
	Timestamp int64       `json:"timestamp"` // 服务器时间戳(秒级)
}

// NewSuccessResponse 创建成功响应
func NewSuccessResponse(data interface{}) *APIResponse {
	return &APIResponse{
		Code:      0,
		Msg:       "success",
		Data:      data,
		Timestamp: time.Now().Unix(),
	}
}

// NewErrorResponse 创建错误响应
func NewErrorResponse(code int, msg string) *APIResponse {
	return &APIResponse{
		Code:      code,
		Msg:       msg,
		Data:      nil,
		Timestamp: time.Now().Unix(),
	}
}

// Success 简化成功响应（仅数据）
func Success(data interface{}) *APIResponse {
	return NewSuccessResponse(data)
}

// SuccessMsg 简化成功响应（仅消息）
func SuccessMsg(msg string) *APIResponse {
	return &APIResponse{
		Code:      0,
		Msg:       msg,
		Data:      nil,
		Timestamp: time.Now().Unix(),
	}
}

// SuccessEmpty 无参数成功响应
func SuccessEmpty() *APIResponse {
	return Success(nil)
}

// Error 简化错误响应（仅消息）
func Error(code int, msg string) *APIResponse {
	return NewErrorResponse(code, msg)
}

// ErrorEmpty 无参数错误响应
func ErrorEmpty() *APIResponse {
	return Error(1, "操作失败")
}
