package product_listV2_request

import (
	"encoding/json"
	product_listV2_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/product_listV2/response"
	doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core"
)

type ProductListV2Request struct {
	doudian_sdk.BaseDoudianOpApiRequest
	Param *ProductListV2Param
}

func (c *ProductListV2Request) GetUrlPath() string {
	return "/product/listV2"
}

func New() *ProductListV2Request {
	request := &ProductListV2Request{
		Param: &ProductListV2Param{},
	}
	request.SetConfig(doudian_sdk.GlobalConfig)
	request.SetClient(doudian_sdk.DefaultDoudianOpApiClient)
	return request

}

func (c *ProductListV2Request) Execute(accessToken *doudian_sdk.AccessToken) (*product_listV2_response.ProductListV2Response, error) {
	responseJson, err := c.GetClient().Request(c, accessToken)
	if err != nil {
		return nil, err
	}
	response := &product_listV2_response.ProductListV2Response{}
	_ = json.Unmarshal([]byte(responseJson), response)
	return response, nil

}

func (c *ProductListV2Request) GetParamObject() interface{} {
	return c.Param
}

func (c *ProductListV2Request) GetParams() *ProductListV2Param {
	return c.Param
}

//草稿箱：status=0 and check_status=1 and draft_status=1或0
//在售：status=0&&check_status=3
//审核中：status=0 and check_status=2 and draft_status=2
//新版本审核中：status=0 and check_status=3 and draft_status=2
//封禁中：status=1 and check_status=5 and draft_status=0
//上架的商品被下架放入仓库中：status=1 and check_status=1 and draft_status=0
//延迟上架，放入仓库中(start_sale_type=1)：status=1 and check_status=7 and draft_status=0
//删除：status=2 and check_status=1 and draft_status=0
type ProductListV2Param struct {
	// 商品在店铺中状态: 0-在线；1-下线；2-删除；详见商品状态机：https://op.jinritemai.com/docs/question-docs/92/2070
	Status int64 `json:"status"`
	// 商品审核状态: 1-未提交；2-待审核；3-审核通过；4-审核未通过；5-封禁；7-审核通过待上架；详见商品状态机：https://op.jinritemai.com/docs/question-docs/92/2070
	CheckStatus int64 `json:"check_status"`
	// 商品类型；0-普通；1-新客商品；3-虚拟；6-玉石闪购；7-云闪购 ；127-其他类型；
	ProductType int64 `json:"product_type"`
	// 商品创建开始时间，unix时间戳，单位：秒；
	StartTime int64 `json:"start_time"`
	// 商品创建结束时间，unix时间戳，单位：秒；
	EndTime int64 `json:"end_time"`
	// 页码，从1开始，最大为100；page* size最大不能超过1万条
	Page int64 `json:"page"`
	// 页数，填写范围1~100；page* size最大不能超过1万条
	Size int64 `json:"size"`
	// 商品更新开始时间，unix时间戳，单位：秒；注意：查询范围是update_start_time和update_end_time之间的数据，不包含入参时间。
	UpdateStartTime int64 `json:"update_start_time"`
	// 商品更新结束时间，unix时间戳，单位：秒；注意：查询范围是update_start_time和update_end_time之间的数据，不包含入参时间。
	UpdateEndTime int64 `json:"update_end_time"`
	// 小时达商家使用的门店id
	StoreId int64 `json:"store_id"`
	// 商品ID,最大一百个
	ProductId []string `json:"product_id"`
}
