package address_update_request

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

type AddressUpdateRequest struct {
	doudian_sdk.BaseDoudianOpApiRequest
	Param *AddressUpdateParam
}

func (c *AddressUpdateRequest) GetUrlPath() string {
	return "/address/update"
}

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

}

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

}

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

func (c *AddressUpdateRequest) GetParams() *AddressUpdateParam {
	return c.Param
}

type Address struct {
	// 地址ID
	Id int64 `json:"id"`
	// 联系人姓名
	UserName string `json:"user_name"`
	// 手机号码
	Mobile string `json:"mobile"`
	// 省ID
	ProvinceId int64 `json:"province_id"`
	// 城市ID
	CityId int64 `json:"city_id"`
	// 区ID
	TownId int64 `json:"town_id"`
	// 详细地址
	Detail string `json:"detail"`
	// 街道ID
	StreetId int64 `json:"street_id"`
	// 联系方式类型(0-手机,1-普通座机,2-企业座机)
	LinkType int32 `json:"link_type"`
	// 普通座机格式：区号-座机号-分机号(分机号选填)、区号3~4位、座机号7~8位、分机号不超过5位。企业座机：400/800开头不超过10位、95开头在5~8we
	FixedPhone string `json:"fixed_phone"`
	// 售后备注
	Remark string `json:"remark"`
}
type AddressUpdateParam struct {
	// 地址信息
	Address *Address `json:"address"`
	// 门店场景需要传门店ID，其他场景默认值0即可
	StoreId int64 `json:"store_id"`
}
