package request

import (
	"topsdk/util"
)

type TaobaoFenxiaoOrdersGetRequest struct {
	/*
	   交易状态，不传默认查询所有采购单 根据用户角色选择自身状态可选值:  * 供应商： WAIT_SELLER_SEND_GOODS(等待发货)  WAIT_SELLER_CONFIRM_PAY(待确认收款)  WAIT_BUYER_PAY(等待付款)  WAIT_BUYER_CONFIRM_GOODS(已发货)  TRADE_REFUNDING(退款中)  TRADE_FINISHED(采购成功)  TRADE_CLOSED(已关闭)  * 分销商： WAIT_BUYER_PAY(等待付款)  WAIT_BUYER_CONFIRM_GOODS(待收货确认)   TRADE_FOR_PAY(已付款)  TRADE_REFUNDING(退款中)  TRADE_FINISHED(采购成功)  TRADE_CLOSED(已关闭)     */
	Status *string `json:"status,omitempty" required:"false" `
	/*
	   起始时间，格式 yyyy-MM-dd HH:mm:ss 支持到秒的查询。若不传时分秒，默认为0时0分0秒。当指定了purchase_order_id或者tc_order_id时，此值可选，否则此参数必传。 结束时间和开始时间的时间间隔不能超过7天，精确到秒。     */
	StartCreated *util.LocalTime `json:"start_created,omitempty" required:"false" `
	/*
	   结束时间，格式 yyyy-MM-dd HH:mm:ss 支持到秒的查询。若不传时分秒，默认为0时0分0秒。当指定了purchase_order_id或者tc_order_id时，此值可选，否则此参数必传。 结束时间和开始时间的时间间隔不能超过7天，精确到秒。     */
	EndCreated *util.LocalTime `json:"end_created,omitempty" required:"false" `
	/*
	   时间类型： trade_time_type(默认类型，按照采购单创建时间范围查询，推荐按照此时间类型查询) update_time_type(采购单按照更新时间范围查询)     */
	TimeType *string `json:"time_type,omitempty" required:"false" `
	/*
	   采购单编号或分销流水号。 当指定此参数后，其他可选参数可以为空     */
	PurchaseOrderId *int64 `json:"purchase_order_id,omitempty" required:"false" `
	/*
	   页码。（大于0的整数。默认为1）     */
	PageNo *int64 `json:"page_no,omitempty" required:"false" `
	/*
	   每页条数。（每页条数不超过50条）     */
	PageSize *int64 `json:"page_size,omitempty" required:"false" `
	/*
	   指定返回的字段（废弃该参数） 多个字段用","分隔。  fields 如果为空：返回所有采购单对象(purchase_orders)字段。 如果不为空：返回指定采购单对象(purchase_orders)字段。  例1： sub_purchase_orders.tc_order_id 表示只返回tc_order_id 例2： sub_purchase_orders表示只返回子采购单列表     */
	Fields *string `json:"fields,omitempty" required:"false" `
	/*
	   消费者交易单号（采购单下游买家订单id）。 当在代销、寄售交易中，此单号存在。     */
	TcOrderId *int64 `json:"tc_order_id,omitempty" required:"false" `
	/*
	   渠道市场编码，可批量指定。 当不指定时，按照配置的分销市场生效 渠道编码枚举：1-供销平台（淘宝）；2-供销平台（天猫）；3-供销平台（天猫超市）；5-供销平台（淘乡甜）；110001-供销平台（全球购）；110007-淘分销；200002-消费电子市场     */
	ChannelCodes *[]int64 `json:"channel_codes,omitempty" required:"false" `
	/*
	   当前查询用户的角色 当不指定时，默认为供应商 供应商：2，分销商：1     */
	UserRoleType *int64 `json:"user_role_type,omitempty" required:"false" `
	/*
	   查询的经营模式，当不指定时，默认查询代销订单 代销：1  经销：2  寄售（自营寄售）：5  平台寄售：6     */
	TradeTypes *[]int64 `json:"trade_types,omitempty" required:"false" `
}

func (s *TaobaoFenxiaoOrdersGetRequest) SetStatus(v string) *TaobaoFenxiaoOrdersGetRequest {
	s.Status = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetStartCreated(v util.LocalTime) *TaobaoFenxiaoOrdersGetRequest {
	s.StartCreated = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetEndCreated(v util.LocalTime) *TaobaoFenxiaoOrdersGetRequest {
	s.EndCreated = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetTimeType(v string) *TaobaoFenxiaoOrdersGetRequest {
	s.TimeType = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetPurchaseOrderId(v int64) *TaobaoFenxiaoOrdersGetRequest {
	s.PurchaseOrderId = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetPageNo(v int64) *TaobaoFenxiaoOrdersGetRequest {
	s.PageNo = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetPageSize(v int64) *TaobaoFenxiaoOrdersGetRequest {
	s.PageSize = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetFields(v string) *TaobaoFenxiaoOrdersGetRequest {
	s.Fields = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetTcOrderId(v int64) *TaobaoFenxiaoOrdersGetRequest {
	s.TcOrderId = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetChannelCodes(v []int64) *TaobaoFenxiaoOrdersGetRequest {
	s.ChannelCodes = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetUserRoleType(v int64) *TaobaoFenxiaoOrdersGetRequest {
	s.UserRoleType = &v
	return s
}
func (s *TaobaoFenxiaoOrdersGetRequest) SetTradeTypes(v []int64) *TaobaoFenxiaoOrdersGetRequest {
	s.TradeTypes = &v
	return s
}

func (req *TaobaoFenxiaoOrdersGetRequest) ToMap() map[string]interface{} {
	paramMap := make(map[string]interface{})
	if req.Status != nil {
		paramMap["status"] = *req.Status
	}
	if req.StartCreated != nil {
		paramMap["start_created"] = *req.StartCreated
	}
	if req.EndCreated != nil {
		paramMap["end_created"] = *req.EndCreated
	}
	if req.TimeType != nil {
		paramMap["time_type"] = *req.TimeType
	}
	if req.PurchaseOrderId != nil {
		paramMap["purchase_order_id"] = *req.PurchaseOrderId
	}
	if req.PageNo != nil {
		paramMap["page_no"] = *req.PageNo
	}
	if req.PageSize != nil {
		paramMap["page_size"] = *req.PageSize
	}
	if req.Fields != nil {
		paramMap["fields"] = *req.Fields
	}
	if req.TcOrderId != nil {
		paramMap["tc_order_id"] = *req.TcOrderId
	}
	if req.ChannelCodes != nil {
		paramMap["channel_codes"] = util.ConvertBasicList(*req.ChannelCodes)
	}
	if req.UserRoleType != nil {
		paramMap["user_role_type"] = *req.UserRoleType
	}
	if req.TradeTypes != nil {
		paramMap["trade_types"] = util.ConvertBasicList(*req.TradeTypes)
	}
	return paramMap
}

func (req *TaobaoFenxiaoOrdersGetRequest) ToFileMap() map[string]interface{} {
	fileMap := make(map[string]interface{})
	return fileMap
}
