package sci99

// Header 代表表头信息
type Header struct {
	Code        string  `json:"Code"`
	DisplayName string  `json:"DisplayName"`
	OrderNO     float64 `json:"OrderNO"`
	DataType    int     `json:"DataType"`
	DisplayType int     `json:"DisplayType"`
}

// Item 代表数据项
type Item struct {
	Area                string `json:"Area"`
	DataModelName       string `json:"DataModelName"`
	DataTypeID          int    `json:"DataTypeID"`
	Digits              int    `json:"Digits"`
	DIID                int    `json:"DIID"`
	FactorySampleName   string `json:"FactorySampleName"`
	MarketSampleName    string `json:"MarketSampleName"`
	Model               string `json:"Model"`
	TradeTerms          string `json:"TradeTerms"`
	PriceType           string `json:"PriceType"`
	PriceTypeID         int    `json:"PriceTypeID"`
	ProductName         string `json:"ProductName"`
	ProductID           int    `json:"ProductID"`
	Province            string `json:"Province"`
	Region              string `json:"Region"`
	TimeMarkID          int    `json:"TimeMarkID"`
	Unit                string `json:"Unit"`
	Order               int    `json:"Order"`
	DataName            string `json:"DataName"`
	DataItemName        string `json:"DataItemName"`
	DataTypeName        string `json:"DataTypeName"`
	IsWarn              bool   `json:"IsWarn"`
	EName               string `json:"EName"`
	GasRate             string `json:"GasRate"`
	FromArea            string `json:"FromArea"`
	DataStatus          int    `json:"DataStatus"`
	Purpose             string `json:"Purpose"`
	FuturesMark         string `json:"FuturesMark"`
	MainShippers        string `json:"MainShippers"`
	PriceClassification string `json:"PriceClassification"`
	Stand               string `json:"Stand"`
	Type                string `json:"Type"`
	DItemDTypeID        int    `json:"DItemDTypeID"`
	Classification      string `json:"Classification"`
	LockDateName        string `json:"LockDateName"`
	PriceCondition      string `json:"PriceCondition"`
	// 动态日期字段，需要特殊处理
	//DateFields        map[string]string `json:"date_fields,inline"`
	Change      string `json:"Change"`
	ChangeRate  string `json:"ChangeRate"`
	Remark      string `json:"Remark"`
	LockState   string `json:"LockState"`
	PowerStatus int    `json:"PowerStatus"`
}

// Data 代表数据部分
type FirstData struct {
	Headers    []Header   `json:"Headers"`
	SecondData SecondData `json:"data"`
}

type SecondData struct {
	LockTimeRange string  `json:"LockTimeRange"`
	PageNO        int     `json:"PageNO"`
	PageSize      int     `json:"PageSize"`
	TotalItems    int     `json:"TotalItems"`
	TotalPages    int     `json:"TotalPages"`
	Items         []Item  `json:"Items"`
	DiidDtypeids  *string `json:"DiidDtypeids"` // 使用指针以处理null值
	TableHeader   *string `json:"TableHeader"`  // 使用指针以处理null值
}

// ListResponse 代表整个API响应
type ListResponse struct {
	Status    int       `json:"status"`
	Msg       string    `json:"msg"`
	FirstData FirstData `json:"data"`
}

// 创建请求体的数据结构
type ListRequestBody struct {
	Region           string `json:"region"`
	Market           string `json:"market"`
	Factory          string `json:"factory"`
	Model            string `json:"model"`
	Pname            string `json:"pname"`
	CycleType        string `json:"cycletype"`
	PriceCycle       string `json:"pricecycle"`
	SpecialPriceType string `json:"specialpricetype"`
	Groupname        string `json:"groupname"`
	Ppname           string `json:"ppname"`
	Province         string `json:"province"`
	PriceTypeID      int    `json:"pricetypeid"`
	PPIDs            string `json:"ppids"`
	Navid            string `json:"navid"`
	SiteType         int    `json:"sitetype"`
	PageNo           int    `json:"pageno"`
	PageSize         string `json:"pagesize"`
	Purpose          string `json:"purpose"`
	Stand            string `json:"stand"`
	Type             string `json:"type"`
	FromArea         string `json:"fromarea"`
	Classification   string `json:"classification"`
}

// DetailRequest
type DetailRequest struct {
	Start        string `json:"start"`
	End          string `json:"end"`
	APIStart     string `json:"apiStart"`
	APIEnd       string `json:"apiEnd"`
	DIIDD        string `json:"diid"`
	DataTypeID   string `json:"datatypeid"`
	PPID         string `json:"ppid"`
	CycleType    string `json:"cycletype"`
	SelectConfig int    `json:"selectconfig"`
}

type RefreshSci99CrawlerReq struct {
	ClassifyName string
	IndexName    string
	ListData     Item
	DetailData   DetailResponse
}
