diff --git a/platformapi/mtwmapi/order_test.go b/platformapi/mtwmapi/order_test.go index 6a46bf34..50b0e403 100644 --- a/platformapi/mtwmapi/order_test.go +++ b/platformapi/mtwmapi/order_test.go @@ -71,7 +71,7 @@ func TestOrderApplyPartRefund(t *testing.T) { } func TestOrderLogisticsStatus(t *testing.T) { - result, err := api.OrderLogisticsStatus(128752442052682640) + result, err := api.OrderLogisticsStatus(140382472052682640) if err != nil { t.Fatal(err) } diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_areaList/request/address_areaList_request.go b/platformapi/tiktok_shop/sdk-golang/api/address_areaList/request/address_areaList_request.go new file mode 100644 index 00000000..3b4faa6f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_areaList/request/address_areaList_request.go @@ -0,0 +1,47 @@ +package address_areaList_request + +import ( + "encoding/json" +) + +type AddressAreaListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AddressAreaListParam +} + +func (c *AddressAreaListRequest) GetUrlPath() string { + return "/address/areaList" +} + +func New() *AddressAreaListRequest { + request := &AddressAreaListRequest{ + Param: &AddressAreaListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AddressAreaListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*address_areaList_response.AddressAreaListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &address_areaList_response.AddressAreaListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AddressAreaListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AddressAreaListRequest) GetParams() *AddressAreaListParam { + return c.Param +} + +type AddressAreaListParam struct { + CityId int64 `json:"city_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_areaList/response/address_areaList_response.go b/platformapi/tiktok_shop/sdk-golang/api/address_areaList/response/address_areaList_response.go new file mode 100644 index 00000000..568da266 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_areaList/response/address_areaList_response.go @@ -0,0 +1,14 @@ +package address_areaList_response + +type AddressAreaListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AddressAreaListData `json:"data"` +} +type DataItem struct { + AreaId int64 `json:"area_id"` + Area string `json:"area"` + FatherId int64 `json:"father_id"` +} +type AddressAreaListData struct { + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_create/request/address_create_request.go b/platformapi/tiktok_shop/sdk-golang/api/address_create/request/address_create_request.go new file mode 100644 index 00000000..a6d5443b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_create/request/address_create_request.go @@ -0,0 +1,72 @@ +package address_create_request + +import ( + "encoding/json" +) + +type AddressCreateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AddressCreateParam +} + +func (c *AddressCreateRequest) GetUrlPath() string { + return "/address/create" +} + +func New() *AddressCreateRequest { + request := &AddressCreateRequest{ + Param: &AddressCreateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AddressCreateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*address_create_response.AddressCreateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &address_create_response.AddressCreateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AddressCreateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AddressCreateRequest) GetParams() *AddressCreateParam { + return c.Param +} + +type Address struct { + // 联系人姓名 + 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 AddressCreateParam struct { + // 地址信息 + Address *Address `json:"address"` + // 门店ID(新建地址绑定在该门店下,非门店场景无需填写) + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_create/response/address_create_response.go b/platformapi/tiktok_shop/sdk-golang/api/address_create/response/address_create_response.go new file mode 100644 index 00000000..4c601fa3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_create/response/address_create_response.go @@ -0,0 +1,10 @@ +package address_create_response + +type AddressCreateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AddressCreateData `json:"data"` +} +type AddressCreateData struct { + // 新建地址ID + AddressId int64 `json:"address_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_getAreasByProvince/request/address_getAreasByProvince_request.go b/platformapi/tiktok_shop/sdk-golang/api/address_getAreasByProvince/request/address_getAreasByProvince_request.go new file mode 100644 index 00000000..2c50f2e0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_getAreasByProvince/request/address_getAreasByProvince_request.go @@ -0,0 +1,48 @@ +package address_getAreasByProvince_request + +import ( + "encoding/json" +) + +type AddressGetAreasByProvinceRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AddressGetAreasByProvinceParam +} + +func (c *AddressGetAreasByProvinceRequest) GetUrlPath() string { + return "/address/getAreasByProvince" +} + +func New() *AddressGetAreasByProvinceRequest { + request := &AddressGetAreasByProvinceRequest{ + Param: &AddressGetAreasByProvinceParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AddressGetAreasByProvinceRequest) Execute(accessToken *doudian_sdk.AccessToken) (*address_getAreasByProvince_response.AddressGetAreasByProvinceResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &address_getAreasByProvince_response.AddressGetAreasByProvinceResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AddressGetAreasByProvinceRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AddressGetAreasByProvinceRequest) GetParams() *AddressGetAreasByProvinceParam { + return c.Param +} + +type AddressGetAreasByProvinceParam struct { + // 省ID + ProvinceId int64 `json:"province_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_getAreasByProvince/response/address_getAreasByProvince_response.go b/platformapi/tiktok_shop/sdk-golang/api/address_getAreasByProvince/response/address_getAreasByProvince_response.go new file mode 100644 index 00000000..4624a0f9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_getAreasByProvince/response/address_getAreasByProvince_response.go @@ -0,0 +1,56 @@ +package address_getAreasByProvince_response + +type AddressGetAreasByProvinceResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AddressGetAreasByProvinceData `json:"data"` +} +type SubDistrictsItem struct { + // 镇或者街道ID + Code int64 `json:"code"` + // 父ID + FatherCode int64 `json:"father_code"` + // 地址等级 + Level string `json:"level"` + // 镇或者街道名称 + Name string `json:"name"` +} +type SubDistrictsItem_4 struct { + // 区县ID + Code int64 `json:"code"` + // 父ID + FatherCode int64 `json:"father_code"` + // 区县名称 + Name string `json:"name"` + // 地址等级 + Level string `json:"level"` + // 响应结果 + SubDistricts []SubDistrictsItem `json:"sub_districts"` +} +type SubDistrictsItem_3 struct { + // 市ID + Code int64 `json:"code"` + // 父ID + FatherCode int64 `json:"father_code"` + // 市名 + Name string `json:"name"` + // 地址等级 + Level string `json:"level"` + // 响应结果 + SubDistricts []SubDistrictsItem_4 `json:"sub_districts"` +} +type DataItem struct { + // 省ID + Code int64 `json:"code"` + // 父ID + FatherCode int64 `json:"father_code"` + // 省名称 + Name string `json:"name"` + // 地址等级 + Level string `json:"level"` + // 响应结果 + SubDistricts []SubDistrictsItem_3 `json:"sub_districts"` +} +type AddressGetAreasByProvinceData struct { + // 响应结果 + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_getProvince/request/address_getProvince_request.go b/platformapi/tiktok_shop/sdk-golang/api/address_getProvince/request/address_getProvince_request.go new file mode 100644 index 00000000..f73152cb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_getProvince/request/address_getProvince_request.go @@ -0,0 +1,46 @@ +package address_getProvince_request + +import ( + "encoding/json" +) + +type AddressGetProvinceRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AddressGetProvinceParam +} + +func (c *AddressGetProvinceRequest) GetUrlPath() string { + return "/address/getProvince" +} + +func New() *AddressGetProvinceRequest { + request := &AddressGetProvinceRequest{ + Param: &AddressGetProvinceParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AddressGetProvinceRequest) Execute(accessToken *doudian_sdk.AccessToken) (*address_getProvince_response.AddressGetProvinceResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &address_getProvince_response.AddressGetProvinceResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AddressGetProvinceRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AddressGetProvinceRequest) GetParams() *AddressGetProvinceParam { + return c.Param +} + +type AddressGetProvinceParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_getProvince/response/address_getProvince_response.go b/platformapi/tiktok_shop/sdk-golang/api/address_getProvince/response/address_getProvince_response.go new file mode 100644 index 00000000..49a1532d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_getProvince/response/address_getProvince_response.go @@ -0,0 +1,16 @@ +package address_getProvince_response + +type AddressGetProvinceResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AddressGetProvinceData `json:"data"` +} +type DataItem struct { + // 省份id + ProvinceId int64 `json:"province_id"` + // 省份 + Province string `json:"province"` +} +type AddressGetProvinceData struct { + // data + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_list/request/address_list_request.go b/platformapi/tiktok_shop/sdk-golang/api/address_list/request/address_list_request.go new file mode 100644 index 00000000..a9036263 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_list/request/address_list_request.go @@ -0,0 +1,58 @@ +package address_list_request + +import ( + "encoding/json" +) + +type AddressListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AddressListParam +} + +func (c *AddressListRequest) GetUrlPath() string { + return "/address/list" +} + +func New() *AddressListRequest { + request := &AddressListRequest{ + Param: &AddressListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AddressListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*address_list_response.AddressListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &address_list_response.AddressListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AddressListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AddressListRequest) GetParams() *AddressListParam { + return c.Param +} + +type AddressListParam struct { + // 店铺id(字段废弃,不建议传入) + ShopId int64 `json:"shop_id"` + // 翻页每页数量,默认10 + PageSize int64 `json:"page_size"` + // 翻页页数,从1开始 + PageNo int64 `json:"page_no"` + // 排序方式支持asc/desc + OrderBy string `json:"order_by"` + // 排序字段 + OrderField string `json:"order_field"` + // 门店ID(传入后只获取该门店下地址列表) + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_list/response/address_list_response.go b/platformapi/tiktok_shop/sdk-golang/api/address_list/response/address_list_response.go new file mode 100644 index 00000000..86ab15b1 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_list/response/address_list_response.go @@ -0,0 +1,44 @@ +package address_list_response + +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + +type AddressListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AddressListData `json:"data"` +} +type AddressListItem struct { + // 地址库id + AddressId int64 `json:"address_id"` + // 收/发件人 + RecieverName string `json:"reciever_name"` + // 是否为退货默认 + IsDefault int64 `json:"is_default"` + // 是否为发货默认 + IsSendDefault int64 `json:"is_send_default"` + // 创建时间,时间戳,秒 + CreateTime string `json:"create_time"` + // 更新时间,时间戳,秒 + UpdateTime string `json:"update_time"` + // 收件人省份 + ReceiverProvinc string `json:"receiver_provinc"` + // 收件人城市 + ReceiverCity string `json:"receiver_city"` + // 收件人地区 + ReceiverDistrict string `json:"receiver_district"` + // 收件人详情地址 + ReceiverDetail string `json:"receiver_detail"` + // 收件人街道 + ReceiverStreet string `json:"receiver_street"` + // 地址备注信息 + Remark string `json:"remark"` +} +type AddressListData struct { + // 地址总数 + Total int64 `json:"total"` + // 页码 + PageSize int64 `json:"page_size"` + // 每页数量 + PageNo int64 `json:"page_no"` + // 地址列表 + AddressList []AddressListItem `json:"address_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_provinceList/request/address_provinceList_request.go b/platformapi/tiktok_shop/sdk-golang/api/address_provinceList/request/address_provinceList_request.go new file mode 100644 index 00000000..0f60e001 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_provinceList/request/address_provinceList_request.go @@ -0,0 +1,46 @@ +package address_provinceList_request + +import ( + "encoding/json" +) + +type AddressProvinceListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AddressProvinceListParam +} + +func (c *AddressProvinceListRequest) GetUrlPath() string { + return "/address/provinceList" +} + +func New() *AddressProvinceListRequest { + request := &AddressProvinceListRequest{ + Param: &AddressProvinceListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AddressProvinceListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*address_provinceList_response.AddressProvinceListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &address_provinceList_response.AddressProvinceListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AddressProvinceListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AddressProvinceListRequest) GetParams() *AddressProvinceListParam { + return c.Param +} + +type AddressProvinceListParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_provinceList/response/address_provinceList_response.go b/platformapi/tiktok_shop/sdk-golang/api/address_provinceList/response/address_provinceList_response.go new file mode 100644 index 00000000..12962e07 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_provinceList/response/address_provinceList_response.go @@ -0,0 +1,14 @@ +package address_provinceList_response + +type AddressProvinceListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AddressProvinceListData `json:"data"` +} +type DataItem struct { + ProvinceId int64 `json:"province_id"` + Province string `json:"province"` + FatherId int64 `json:"father_id"` +} +type AddressProvinceListData struct { + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_update/request/address_update_request.go b/platformapi/tiktok_shop/sdk-golang/api/address_update/request/address_update_request.go new file mode 100644 index 00000000..6723bb5c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_update/request/address_update_request.go @@ -0,0 +1,74 @@ +package address_update_request + +import ( + "encoding/json" +) + +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"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/address_update/response/address_update_response.go b/platformapi/tiktok_shop/sdk-golang/api/address_update/response/address_update_response.go new file mode 100644 index 00000000..55b13938 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/address_update/response/address_update_response.go @@ -0,0 +1,8 @@ +package address_update_response + +type AddressUpdateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AddressUpdateData `json:"data"` +} +type AddressUpdateData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_CancelSendGoodsSuccess/request/afterSale_CancelSendGoodsSuccess_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_CancelSendGoodsSuccess/request/afterSale_CancelSendGoodsSuccess_request.go new file mode 100644 index 00000000..41667226 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_CancelSendGoodsSuccess/request/afterSale_CancelSendGoodsSuccess_request.go @@ -0,0 +1,50 @@ +package afterSale_CancelSendGoodsSuccess_request + +import ( + "encoding/json" +) + +type AfterSaleCancelSendGoodsSuccessRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleCancelSendGoodsSuccessParam +} + +func (c *AfterSaleCancelSendGoodsSuccessRequest) GetUrlPath() string { + return "/afterSale/CancelSendGoodsSuccess" +} + +func New() *AfterSaleCancelSendGoodsSuccessRequest { + request := &AfterSaleCancelSendGoodsSuccessRequest{ + Param: &AfterSaleCancelSendGoodsSuccessParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleCancelSendGoodsSuccessRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_CancelSendGoodsSuccess_response.AfterSaleCancelSendGoodsSuccessResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_CancelSendGoodsSuccess_response.AfterSaleCancelSendGoodsSuccessResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleCancelSendGoodsSuccessRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleCancelSendGoodsSuccessRequest) GetParams() *AfterSaleCancelSendGoodsSuccessParam { + return c.Param +} + +type AfterSaleCancelSendGoodsSuccessParam struct { + // 售后单ID + AftersaleId string `json:"aftersale_id"` + // unix时间戳,单位为秒 + OpTime int64 `json:"op_time"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_CancelSendGoodsSuccess/response/afterSale_CancelSendGoodsSuccess_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_CancelSendGoodsSuccess/response/afterSale_CancelSendGoodsSuccess_response.go new file mode 100644 index 00000000..c0061d33 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_CancelSendGoodsSuccess/response/afterSale_CancelSendGoodsSuccess_response.go @@ -0,0 +1,8 @@ +package afterSale_CancelSendGoodsSuccess_response + +type AfterSaleCancelSendGoodsSuccessResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleCancelSendGoodsSuccessData `json:"data"` +} +type AfterSaleCancelSendGoodsSuccessData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_Detail/request/afterSale_Detail_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_Detail/request/afterSale_Detail_request.go new file mode 100644 index 00000000..5220a41a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_Detail/request/afterSale_Detail_request.go @@ -0,0 +1,49 @@ +package afterSale_Detail_request + +import ( + "encoding/json" +) + +type AfterSaleDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleDetailParam +} + +func (c *AfterSaleDetailRequest) GetUrlPath() string { + return "/afterSale/Detail" +} + +func New() *AfterSaleDetailRequest { + request := &AfterSaleDetailRequest{ + Param: &AfterSaleDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_Detail_response.AfterSaleDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_Detail_response.AfterSaleDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleDetailRequest) GetParams() *AfterSaleDetailParam { + return c.Param +} + +type AfterSaleDetailParam struct { + // 售后单ID + AfterSaleId string `json:"after_sale_id"` + IsSearchable bool `json:"is_searchable"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_Detail/response/afterSale_Detail_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_Detail/response/afterSale_Detail_response.go new file mode 100644 index 00000000..444602c6 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_Detail/response/afterSale_Detail_response.go @@ -0,0 +1,493 @@ +package afterSale_Detail_response + +type AfterSaleDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleDetailData `json:"data"` +} +type ArbitrateEvidenceTmpl struct { + // 仲裁图片示例 + Images []string `json:"images"` + // 仲裁描述 + Describe string `json:"describe"` + // 示例截止时间 + DeadLine int64 `json:"dead_line"` +} +type OrderItem struct { + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 物流公司编码 + CompanyCode string `json:"company_code"` + // 物流状态到达时间 + LogisticsTime int64 `json:"logistics_time"` + // 正向物流状态 + LogisticsState int64 `json:"logistics_state"` + // 增值服务标签 + ValueAddedServices []ValueAddedServicesItem `json:"value_added_services"` +} +type DeductionPriceDetailItem struct { + // 金额明细 + PriceText string `json:"price_text"` + // 金额 + Amount int64 `json:"amount"` +} +type ReturnAddress struct { + // 省 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 县/区 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 收件地址标志物 + Landmark string `json:"landmark"` + // 详细地址 + Detail string `json:"detail"` +} +type AftersaleTagsItem struct { + // 标签名称 + TagDetail string `json:"tag_detail"` + // 标签关键字 + TagDetailEn string `json:"tag_detail_en"` + // 标签悬浮文案的占位符定义 + TagDetailText string `json:"tag_detail_text"` + // 标签跳转链接 + TagLinkUrl string `json:"tag_link_url"` + // 标签悬浮文案的占位符定义 + Placeholder map[string]PlaceholderItem `json:"placeholder"` +} +type PlaceholderItem struct { + // 占位符文案 + Text string `json:"text"` + // 占位符跳转链接 + Url string `json:"url"` +} +type ArbitrateEvidence struct { + // 仲裁图片 + Images []string `json:"images"` + // 仲裁图片描述 + Describe string `json:"describe"` +} +type ArbitrateInfo struct { + // 仲裁单id + ArbitrateId string `json:"arbitrate_id"` + // 仲裁状态 + ArbitrateStatus int64 `json:"arbitrate_status"` + // 是否需要上传凭证 + IsRequiredEvidence bool `json:"is_required_evidence"` + // 仲裁截止时间 + ArbitrateStatusDeadline string `json:"arbitrate_status_deadline"` + // 仲裁原因 + ArbitrateOpinion string `json:"arbitrate_opinion"` + // 仲裁结果 + ArbitrateConclusion int64 `json:"arbitrate_conclusion"` + // 仲裁单创建时间 + ArbitrateCreateTime int64 `json:"arbitrate_create_time"` + // 仲裁单更新时间 + ArbitrateUpdateTime int64 `json:"arbitrate_update_time"` + // 凭证示例 + ArbitrateEvidenceTmpl *ArbitrateEvidenceTmpl `json:"arbitrate_evidence_tmpl"` + // 仲裁证据 + ArbitrateEvidence *ArbitrateEvidence `json:"arbitrate_evidence"` + // 仲裁责任方 + ArbitrateBlame int64 `json:"arbitrate_blame"` +} +type ActualAmount struct { + // 金额明细 + PriceText string `json:"price_text"` + // 金额 + Amount int64 `json:"amount"` +} +type OriginAmount struct { + // 金额明细 + PriceText string `json:"price_text"` + // 金额 + Amount int64 `json:"amount"` +} +type OrderInfo struct { + // 店铺单ID + ShopOrderId int64 `json:"shop_order_id"` + // sku单信息 + SkuOrderInfos []SkuOrderInfosItem `json:"sku_order_infos"` +} +type PostAddress struct { + // 省 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 县 + Town *Town `json:"town"` + // 地址详情,此字段已加密,使用前需要解密 + Detail string `json:"detail"` + encryptDetail string `json:"encrypt_detail"` + // 收件地址标志物 + Landmark string `json:"landmark"` + // 街道 + Street *Street `json:"street"` +} +type ExchangeSkuInfo struct { + // 商品skuid + SkuId string `json:"sku_id"` + // 商品编码 + Code string `json:"code"` + // 替换数量 + Num int64 `json:"num"` + // 商家编号 + OutSkuId string `json:"out_sku_id"` + // 区域库存仓ID + OutWarehouseId string `json:"out_warehouse_id"` + // sku外部供应商编码供应商ID + SupplierId string `json:"supplier_id"` + // 商品图片url + Url string `json:"url"` + // 商品名称 + Name string `json:"name"` + // 换货商品的价格,单位分 + Price string `json:"price"` + // sku规格信息 + SpecDesc string `json:"spec_desc"` +} +type TagsItem struct { + // 服务标签名称 + TagDetail string `json:"tag_detail"` + // 服务标签英文代号 + TagDetailEn string `json:"tag_detail_en"` + // 服务跳转地址 + TagLinkUrl string `json:"tag_link_url"` +} +type AfterSaleDetailData struct { + // 售后单及相关信息 + ProcessInfo *ProcessInfo `json:"process_info"` + // 售后单关联订单信息 + OrderInfo *OrderInfo `json:"order_info"` +} +type AfterSaleServiceTagItem struct { + // 服务标签名称 + TagDetail string `json:"tag_detail"` + // 服务标签英文代号 + TagDetailEn string `json:"tag_detail_en"` + // 服务跳转地址 + TagLinkUrl string `json:"tag_link_url"` +} +type ProcessInfo struct { + // 售后单信息 + AfterSaleInfo *AfterSaleInfo `json:"after_sale_info"` + // 仲裁信息 + ArbitrateInfo *ArbitrateInfo `json:"arbitrate_info"` + // 售后标签 + AfterSaleServiceTag *AfterSaleServiceTag `json:"after_sale_service_tag"` + // 物流信息 + LogisticsInfo *LogisticsInfo `json:"logistics_info"` + // 售后备注 + AfterSaleShopRemarks []AfterSaleShopRemarksItem `json:"after_sale_shop_remarks"` + // 价保详情 + PriceProtectionDetail *PriceProtectionDetail `json:"price_protection_detail"` +} +type Return struct { + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 物流公司编码 + CompanyCode string `json:"company_code"` + // 买家填写退货物流时间 + LogisticsTime int64 `json:"logistics_time"` +} +type ValueAddedServicesItem struct { + // 标签编码 + Code string `json:"code"` + // 标签名称 + Name string `json:"name"` +} +type RefundDetail struct { + // 总价 + ActualAmount *ActualAmount `json:"actual_amount"` + // 原价 + OriginAmount *OriginAmount `json:"origin_amount"` + // 减数明细 + DeductionPriceDetail []DeductionPriceDetailItem `json:"deduction_price_detail"` +} +type Town struct { + // 县ID + Id string `json:"id"` + // 县名字 + Name string `json:"name"` +} +type AfterSaleServiceTag struct { + // 售后服务标签 + AfterSaleServiceTag []AfterSaleServiceTagItem `json:"after_sale_service_tag"` +} +type StandardPrice struct { + // 总价 + ActualAmount *ActualAmount `json:"actual_amount"` + // 原价 + OriginAmount *OriginAmount `json:"origin_amount"` + // 减数明细 + DeductionPriceDetail []DeductionPriceDetailItem `json:"deduction_price_detail"` +} +type CheckPrice struct { + // 总价 + ActualAmount *ActualAmount `json:"actual_amount"` + // 原价 + OriginAmount *OriginAmount `json:"origin_amount"` + // 减数明细 + DeductionPriceDetail []DeductionPriceDetailItem `json:"deduction_price_detail"` +} +type PriceProtectionDetail struct { + // 价保文案标题 + Title string `json:"title"` + // 价保计算公式 + PriceProtectionFormulas string `json:"price_protection_formulas"` + // 基准价 + StandardPrice *StandardPrice `json:"standard_price"` + // 核准价 + CheckPrice *CheckPrice `json:"check_price"` + // 退款明细 + RefundDetail *RefundDetail `json:"refund_detail"` + // 钱款承担方 + RefundBearerList []RefundBearerListItem `json:"refund_bearer_list"` + // 平台价保补贴商家金额进度状态,1表示成功 + PlatformToMerchantRefundStatus int64 `json:"platform_to_merchant_refund_status"` + // 平台价保回收金额 + PlatformRecycleAmount int64 `json:"platform_recycle_amount"` +} +type GivenSkuDetailsItem struct { + // 该订单对应的赠品订单 + SkuOrderId string `json:"sku_order_id"` + // 赠品名称 + ProductName string `json:"product_name"` +} +type AfterSaleInfo struct { + // 售后单ID + AfterSaleId int64 `json:"after_sale_id"` + // 售后状态:6-售后申请;27-拒绝售后申请;12-售后成功;7-售后退货中;11-售后已发货;29-售后退货拒绝;13-【换货返回:换货售后换货商家发货】,【补寄返回:补寄待用户收货】; 14-【换货返回:(换货)售后换货用户收货】,【补寄返回:(补寄)用户已收货】 ;28-售后失败;51-订单取消成功;53-逆向交易已完成; + AfterSaleStatus int64 `json:"after_sale_status"` + // 售后状态文案 + AfterSaleStatusDesc string `json:"after_sale_status_desc"` + // 退款方式 + RefundType int64 `json:"refund_type"` + // 退款方式文案 + RefundTypeText string `json:"refund_type_text"` + // 退款状态;1-待退款;2-退款中;3-退款成功;4退款失败;5追缴成功; + RefundStatus int64 `json:"refund_status"` + // 售后总金额(含运费) + RefundTotalAmount int64 `json:"refund_total_amount"` + // 售后运费 + RefundPostAmount int64 `json:"refund_post_amount"` + // 退款补贴总金额 + RefundPromotionAmount int64 `json:"refund_promotion_amount"` + // 售后单申请时间 + ApplyTime int64 `json:"apply_time"` + // 售后单更新时间 + UpdateTime int64 `json:"update_time"` + // 申请原因 + Reason string `json:"reason"` + // 原因码;通过【afterSale/rejectReasonCodeList】接口获取 + ReasonCode int64 `json:"reason_code"` + // 售后类型 ;0-退货退款;1-已发货仅退款;2-未发货仅退款;3-换货;4-系统取消;5-用户取消;6-价保;7-补寄; + AfterSaleType int64 `json:"after_sale_type"` + // 售后单类型文案 + AfterSaleTypeText string `json:"after_sale_type_text"` + // 申请描述 + ReasonRemark string `json:"reason_remark"` + // 买家申请退款图片凭证;仅支持图片,最大返回6张图片。 + Evidence []string `json:"evidence"` + // 用户申请售后件数 + AfterSaleApplyCount int64 `json:"after_sale_apply_count"` + // 用户需退回件数, 数值为用户申请售后件数 - 商家未发货件数 + NeedReturnCount int64 `json:"need_return_count"` + // 平台需要回收的金额(分) + DeductionAmount int64 `json:"deduction_amount"` + // 作废的券ID + DisableCouponId string `json:"disable_coupon_id"` + // 平台优惠退回金额 + PlatformDiscountReturnAmount int64 `json:"platform_discount_return_amount"` + // 平台优惠退回状态,枚举:0:待退补贴;1:退补贴成功;2:退补贴失败 + PlatformDiscountReturnStatus int64 `json:"platform_discount_return_status"` + // 达人优惠退回金额 + KolDiscountReturnAmount int64 `json:"kol_discount_return_amount"` + // 达人优惠退回状态,枚举:0:待退补贴;1:退补贴成功;2:退补贴失败 + KolDiscountReturnStatus int64 `json:"kol_discount_return_status"` + // 换货、补寄时的收货人名字(只有换货、补寄时,这个字段才会有值),此字段已加密,使用前需要解密 + PostReceiver string `json:"post_receiver"` + encryptPostReceiver string `json:"encrypt_post_receiver"` + // 换货、补寄时的收货人的联系电话(只有换货、补寄时,这个字段才会有值),此字段已加密,使用前需要解密 + PostTelSec string `json:"post_tel_sec"` + encryptPostTelSec string `json:"encrypt_post_tel_sec"` + // 换货、补寄时的收货四级地址(只有换货、补寄时,这个字段才会有值) + PostAddress *PostAddress `json:"post_address"` + // 物流异常风控编码 + RiskDecsisonCode int64 `json:"risk_decsison_code"` + // 物流异常风控理由 + RiskDecsisonReason string `json:"risk_decsison_reason"` + // 物流异常风控描述 + RiskDecsisonDescription string `json:"risk_decsison_description"` + // 退货地址 + ReturnAddress *ReturnAddress `json:"return_address"` + // 实际退款金额;单位:分 + RealRefundAmount int64 `json:"real_refund_amount"` + // 买家是否收到货,0-表示未收到货;1-表示收到货 + GotPkg int64 `json:"got_pkg"` + // 逾期时间 + StatusDeadline int64 `json:"status_deadline"` + // 退货地址ID + ReturnAddressId int64 `json:"return_address_id"` + // 换货SKU信息 + ExchangeSkuInfo *ExchangeSkuInfo `json:"exchange_sku_info"` + // 运费优惠退回金额 + PostDiscountReturnAmount int64 `json:"post_discount_return_amount"` + // 运费优惠退回状态,枚举:0:待退补贴;1:退补贴成功;2:退补贴失败 + PostDiscountReturnStatus int64 `json:"post_discount_return_status"` + // 部分退状态,0为全额退款,1为部分退 + PartType int64 `json:"part_type"` + // 用户申请售后选择的二级原因标签 + ReasonSecondLabels []ReasonSecondLabelsItem `json:"reason_second_labels"` + // 卡券商品申请退款的张数 + RefundVoucherNum int64 `json:"refund_voucher_num"` + // 多次券商品申请退款的次数,对于单次券,此字段值与refund_voucher_num相同 + RefundVoucherTimes int64 `json:"refund_voucher_times"` + // 退金币金额 + GoldCoinReturnAmount int64 `json:"gold_coin_return_amount"` + // 退款失败文案 + RefundFailReason string `json:"refund_fail_reason"` + // 售后标签 + AftersaleTags []AftersaleTagsItem `json:"aftersale_tags"` + // 门店id + StoreId string `json:"store_id"` + // 门店名称 + StoreName string `json:"store_name"` +} +type Exchange struct { + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 物流公司编码 + CompanyCode string `json:"company_code"` + // 卖家填写换货物流时间 + LogisticsTime int64 `json:"logistics_time"` +} +type ReasonSecondLabelsItem struct { + // 二级原因标签编码 + Code int64 `json:"code"` + // 二级原因标签名称 + Name string `json:"name"` +} +type Resend struct { + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 物流公司编码 + CompanyCode string `json:"company_code"` + // 卖家填写补寄物流时间 + LogisticsTime int64 `json:"logistics_time"` +} +type RefundBearerListItem struct { + // 文案 + PriceText string `json:"price_text"` + // 金额 + Amount int64 `json:"amount"` +} +type Province struct { + // 省ID + Id string `json:"id"` + // 省名字 + Name string `json:"name"` +} +type City struct { + // 市ID + Id string `json:"id"` + // 市名字 + Name string `json:"name"` +} +type InsuranceTagsItem struct { + // 服务标签名称 + TagDetail string `json:"tag_detail"` + // 服务标签英文代号 + TagDetailEn string `json:"tag_detail_en"` + // 服务跳转地址 + TagLinkUrl string `json:"tag_link_url"` +} +type AfterSaleShopRemarksItem struct { + // 备注关联的订单ID + OrderId int64 `json:"order_id"` + // 备注关联的售后ID + AfterSaleId int64 `json:"after_sale_id"` + // 备注内容 + Remark string `json:"remark"` + // 创建时间 + CreateTime int64 `json:"create_time"` + // 操作人 + Operator string `json:"operator"` +} +type SkuSpecItem struct { + // 规格名称 + Name string `json:"name"` + // 规格值 + Value string `json:"value"` +} +type SkuOrderInfosItem struct { + // sku单ID + SkuOrderId int64 `json:"sku_order_id"` + // 订单状态 + OrderStatus int64 `json:"order_status"` + // 买家实付金额(分) + PayAmount int64 `json:"pay_amount"` + // 买家购买运费(分) + PostAmount int64 `json:"post_amount"` + // 订单件数 + ItemQuantity int64 `json:"item_quantity"` + // 订单创建时间 + CreateTime int64 `json:"create_time"` + // 购买税费(分) + TaxAmount int64 `json:"tax_amount"` + // 是否为跨境业务 + IsOverseaOrder int64 `json:"is_oversea_order"` + // 商品名称 + ProductName string `json:"product_name"` + // 商品ID + ProductId int64 `json:"product_id"` + // 商品图片 + ProductImage string `json:"product_image"` + // 商品标签 + Tags []TagsItem `json:"tags"` + // 商品规格信息 + SkuSpec []SkuSpecItem `json:"sku_spec"` + // 商家sku自定义编码 + ShopSkuCode string `json:"shop_sku_code"` + // skuID + SkuId int64 `json:"sku_id"` + // sku商品总原价(不含优惠) + ItemSumAmount int64 `json:"item_sum_amount"` + // 商品实际支付金额 + SkuPayAmount int64 `json:"sku_pay_amount"` + // 优惠总金额 + PromotionAmount int64 `json:"promotion_amount"` + // 支付方式 + PayType int64 `json:"pay_type"` + // 保险及其状态 + InsuranceTags []InsuranceTagsItem `json:"insurance_tags"` + // 商品单对应的售后数量 + AfterSaleItemCount int64 `json:"after_sale_item_count"` + // 赠品信息 + GivenSkuDetails []GivenSkuDetailsItem `json:"given_sku_details"` +} +type Street struct { + // 街道ID + Id string `json:"id"` + // 街道名字 + Name string `json:"name"` +} +type LogisticsInfo struct { + // 买家退货物流信息 + Return *Return `json:"return"` + // 卖家换货物流信息 + Exchange *Exchange `json:"exchange"` + // 卖家发货正向物流信息 + Order []OrderItem `json:"order"` + // 补寄物流 + Resend *Resend `json:"resend"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_List/request/afterSale_List_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_List/request/afterSale_List_request.go new file mode 100644 index 00000000..0ee81af9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_List/request/afterSale_List_request.go @@ -0,0 +1,96 @@ +package afterSale_List_request + +import ( + "encoding/json" +) + +type AfterSaleListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleListParam +} + +func (c *AfterSaleListRequest) GetUrlPath() string { + return "/afterSale/List" +} + +func New() *AfterSaleListRequest { + request := &AfterSaleListRequest{ + Param: &AfterSaleListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_List_response.AfterSaleListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_List_response.AfterSaleListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleListRequest) GetParams() *AfterSaleListParam { + return c.Param +} + +type AfterSaleListParam struct { + // 父订单号 + OrderId string `json:"order_id"` + // 售后类型;0-退货退款;1-已发货仅退款;2-未发货仅退款;3-换货;6-价保;7-补寄; + AftersaleType int64 `json:"aftersale_type"` + // 已废弃,推荐使用standard_aftersale_status字段。售后状态,枚举为6(待商家同意),7(待买家退货),8(待商家发货),11(待商家二次同意),12(售后成功),13(换货待买家收货),14(换货成功),27(商家一次拒绝),28(售后失败),29(商家二次拒绝) + AftersaleStatus int64 `json:"aftersale_status"` + // 售后理由;1-七天无理由退货;2-非七天无理由退货; + Reason int64 `json:"reason"` + // 退货物流状态,枚举为1(全部),2(已发货),3(未发货) + LogisticsStatus int64 `json:"logistics_status"` + // 付款方式,枚举为1(全部), 2(货到付款),3(线上付款) + PayType int64 `json:"pay_type"` + // 退款类型,枚举为0(原路退款),1(线下退款),2(备用金),3(保证金),4(无需退款) + RefundType int64 `json:"refund_type"` + // 仲裁状态,枚举为0(未介入),1(客服处理中),2(仲裁结束-支持买家),3(仲裁结束-支持卖家),4(待商家举证),5(待与买家协商),6(仲裁结束),255(取消) + ArbitrateStatus []int64 `json:"arbitrate_status"` + // 插旗信息:0:灰 1:紫 2: 青 3:绿 4: 橙 5: 红 + OrderFlag []int64 `json:"order_flag"` + // 申请时间开始,单位为秒 + StartTime int64 `json:"start_time"` + // 申请时间结束,单位为秒 + EndTime int64 `json:"end_time"` + // 金额下限,单位为分 + AmountStart int64 `json:"amount_start"` + // 金额上限,单位为分 + AmountEnd int64 `json:"amount_end"` + // 风控标签,枚举为-1(退货正常),1(退货异常) + RiskFlag int64 `json:"risk_flag"` + // 排序方式,优先级按照列表顺序从前往后依次减小,写法为"<字段名称> <排序方式>",字段名称目前支持"status_deadline"(逾期时间)、"apply_time"(申请时间)和 "update_time"(更新时间),排序方式目前支持"asc"(升序)和"desc"(降序)。按照"逾期时间"升序排列,会优先返回临近逾期时间的数据。 + OrderBy []string `json:"order_by"` + // 页数,从0开始 + Page int64 `json:"page"` + // 每页数量,最多100个 + Size int64 `json:"size"` + // 售后单号 + AftersaleId string `json:"aftersale_id"` + // 售后状态;3-换货待买家收货;6-待商家同意;7-待买家退货;8-待商家发货;11-待商家二次同意;12-售后成功;14-换货成功;27-商家一次拒绝;28-售后失败;29-商家二次拒绝;支持传多种状态,使用英文“,”分隔 + StandardAftersaleStatus []int64 `json:"standard_aftersale_status"` + // 是否展示特殊售后 + NeedSpecialType bool `json:"need_special_type"` + // 更新时间开始,单位为秒 + UpdateStartTime int64 `json:"update_start_time"` + // 更新时间结束,单位为秒 + UpdateEndTime int64 `json:"update_end_time"` + // 正向物流单号 + OrderLogisticsTrackingNo []string `json:"order_logistics_tracking_no"` + // 正向物流状态(仅支持拒签场景下的状态筛选,状态更新有一定时延。1:买家已拒签;2:买家已签收;3:快递退回中,运往商家,包含快递拦截成功;4:商家已签收) + OrderLogisticsState []int64 `json:"order_logistics_state"` + // 是否拒签后退款(1:已同意拒签, 2:未同意拒签) + AgreeRefuseSign []int64 `json:"agree_refuse_sign"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_List/response/afterSale_List_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_List/response/afterSale_List_response.go new file mode 100644 index 00000000..dc4d073c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_List/response/afterSale_List_response.go @@ -0,0 +1,258 @@ +package afterSale_List_response + +type AfterSaleListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleListData `json:"data"` +} +type TagsItem struct { + // 标签中文名称 + TagDetail string `json:"tag_detail"` + // 标签编号 + TagDetailEn string `json:"tag_detail_en"` + // 标签链接 + TagLinkUrl string `json:"tag_link_url"` +} +type SkuSpecItem struct { + // 规格类型名称 + Name string `json:"name"` + // 规格值 + Value string `json:"value"` +} +type OrderInfo struct { + // 店铺单订单ID + ShopOrderId string `json:"shop_order_id"` + // 售后关联的订单信息 + RelatedOrderInfo []RelatedOrderInfoItem `json:"related_order_info"` + // 订单插旗 + OrderFlag int64 `json:"order_flag"` +} +type ExchangeSkuInfo struct { + // 换货SkuID + SkuId string `json:"sku_id"` + // 换货SKU code + Code string `json:"code"` + // 换货数目 + Num int64 `json:"num"` + // 商家编号 + OutSkuId string `json:"out_sku_id"` + // 区域库存仓ID + OutWarehouseId string `json:"out_warehouse_id"` + // sku外部供应商编码供应商ID + SupplierId string `json:"supplier_id"` + // 商品图片url + Url string `json:"url"` + // 商品名称 + Name string `json:"name"` + // 换货商品的价格,单位分 + Price string `json:"price"` + // sku规格信息 + SpecDesc string `json:"spec_desc"` +} +type AftersaleTagsItem struct { + // 标签名称 + TagDetail string `json:"tag_detail"` + // 标签关键字 + TagDetailEn string `json:"tag_detail_en"` + // 标签悬浮文案(其中${key}占位符对应placeholder中的key对应内容) + TagDetailText string `json:"tag_detail_text"` + // 标签跳转链接 + TagLinkUrl string `json:"tag_link_url"` + // 标签悬浮文案的占位符定义 + Placeholder map[string]PlaceholderItem `json:"placeholder"` +} +type OrderLogisticsItem struct { + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 物流公司编码 + CompanyCode string `json:"company_code"` + // 物流状态到达时间 + LogisticsTime int64 `json:"logistics_time"` + // 正向物流状态 + LogisticsState int64 `json:"logistics_state"` +} +type TextPart struct { + // 正向物流发货状态文案 + LogisticsText string `json:"logistics_text"` + // 售后状态文案 + AftersaleStatusText string `json:"aftersale_status_text"` + // 售后类型文案 + AftersaleTypeText string `json:"aftersale_type_text"` + // 退货物流发货状态文案 + ReturnLogisticsText string `json:"return_logistics_text"` + // 售后退款类型文案 + AftersaleRefundTypeText string `json:"aftersale_refund_type_text"` + // 售后理由文案 + ReasonText string `json:"reason_text"` + // 坏单比例文案 + BadItemText string `json:"bad_item_text"` + // 仲裁状态文案 + ArbitrateStatusText string `json:"arbitrate_status_text"` +} +type RelatedOrderInfoItem struct { + // 商品单信息 + SkuOrderId string `json:"sku_order_id"` + // 订单状态,枚举为2(未发货),3(已发货),5(已收货或已完成),255(已完成) + OrderStatus int64 `json:"order_status"` + // 付款金额 + PayAmount int64 `json:"pay_amount"` + // 付运费金额 + PostAmount int64 `json:"post_amount"` + // 购买数量 + ItemNum int64 `json:"item_num"` + // 下单时间 + CreateTime int64 `json:"create_time"` + // 税费 + TaxAmount int64 `json:"tax_amount"` + // 是否为海外订单 + IsOverseaOrder int64 `json:"is_oversea_order"` + // 商品名称 + ProductName string `json:"product_name"` + // 商品ID + ProductId int64 `json:"product_id"` + // 商品图片 + ProductImage string `json:"product_image"` + // 订单标签 + Tags []TagsItem `json:"tags"` + // 商品规格 + SkuSpec []SkuSpecItem `json:"sku_spec"` + // 商家SKU编码 + ShopSkuCode string `json:"shop_sku_code"` + // 发货物流编码 + LogisticsCode string `json:"logistics_code"` + // 售后退款金额 + AftersalePayAmount int64 `json:"aftersale_pay_amount"` + // 售后退运费金额 + AftersalePostAmount int64 `json:"aftersale_post_amount"` + // 售后退税费金额 + AftersaleTaxAmount int64 `json:"aftersale_tax_amount"` + // 售后商品数量 + AftersaleItemNum int64 `json:"aftersale_item_num"` + // 优惠券金额 + PromotionPayAmount int64 `json:"promotion_pay_amount"` + // 价格 + Price int64 `json:"price"` + // 【已废弃】正向物流公司名称,替代字段:aftersale_info.order_logistics.company_name字段 + LogisticsCompanyName string `json:"logistics_company_name"` + // 赠品订单id + GivenSkuOrderIds []string `json:"given_sku_order_ids"` +} +type SellerLogsItem struct { + // 插旗日志内容 + Content string `json:"content"` + // 插旗操作人 + OpName string `json:"op_name"` + // 插旗时间(字符串格式) + CreateTime string `json:"create_time"` + // 插旗信息;0:灰 1:紫 2: 青 3:绿 4: 橙 5: 红 + Star int64 `json:"star"` +} +type ItemsItem struct { + // 售后信息 + AftersaleInfo *AftersaleInfo `json:"aftersale_info"` + // 订单信息 + OrderInfo *OrderInfo `json:"order_info"` + // 文案部分 + TextPart *TextPart `json:"text_part"` + // 卖家插旗日志 + SellerLogs []SellerLogsItem `json:"seller_logs"` +} +type PlaceholderItem struct { + // 占位符文案 + Text string `json:"text"` + // 占位符跳转链接 + Url string `json:"url"` +} +type AftersaleInfo struct { + // 售后单号 + AftersaleId string `json:"aftersale_id"` + // 售后订单类型,枚举为-1(历史订单),1(商品单),2(店铺单) + AftersaleOrderType int64 `json:"aftersale_order_type"` + // 售后类型,枚举为0(退货退款),1(已发货仅退款),2(未发货仅退款),3(换货),6(价保),7(补寄) + AftersaleType int64 `json:"aftersale_type"` + // 售后状态和请求参数standard_aftersale_status字段对应;3-换货待买家收货;6-待商家同意;7-待买家退货;8-待商家发货;11-待商家二次同意;12-售后成功;14-换货成功;27-商家一次拒绝;28-售后失败;29-商家二次拒绝; + AftersaleStatus int64 `json:"aftersale_status"` + // 关联的订单ID + RelatedId string `json:"related_id"` + // 申请时间 + ApplyTime int64 `json:"apply_time"` + // 最近更新时间 + UpdateTime int64 `json:"update_time"` + // 当前节点逾期时间 + StatusDeadline int64 `json:"status_deadline"` + // 售后退款金额,单位为分 + RefundAmount int64 `json:"refund_amount"` + // 售后退运费金额,单位为分 + RefundPostAmount int64 `json:"refund_post_amount"` + // 售后数量 + AftersaleNum int64 `json:"aftersale_num"` + // 部分退类型 + PartType int64 `json:"part_type"` + // 售后退款类型,枚举为-1(历史数据默认值),0(订单货款/原路退款),1(货到付款线下退款),2(备用金),3(保证金),4(无需退款),5(平台垫付) + AftersaleRefundType int64 `json:"aftersale_refund_type"` + // 退款方式,枚举为1(极速退款助手)、2(售后小助手)、3(售后急速退)、4(闪电退货) + RefundType int64 `json:"refund_type"` + // 仲裁状态,枚举为0(无仲裁记录),1(仲裁中),2(客服同意),3(客服拒绝),4(待商家举证),5(协商期),255(仲裁结束) + ArbitrateStatus int64 `json:"arbitrate_status"` + // 售后单创建时间 + CreateTime int64 `json:"create_time"` + // 退税费 + RefundTaxAmount int64 `json:"refund_tax_amount"` + // 商家剩余发送短信(催用户寄回)次数 + LeftUrgeSmsCount int64 `json:"left_urge_sms_count"` + // 退货物流单号 + ReturnLogisticsCode string `json:"return_logistics_code"` + // 风控码 + RiskDecisionCode int64 `json:"risk_decision_code"` + // 风控理由 + RiskDecisionReason string `json:"risk_decision_reason"` + // 风控描述 + RiskDecisionDescription string `json:"risk_decision_description"` + // 退优惠金额 + ReturnPromotionAmount int64 `json:"return_promotion_amount"` + // 退款状态;1-待退款;2-退款中;3-退款成功;4-退款失败;5-追缴成功; + RefundStatus int64 `json:"refund_status"` + // 仲裁责任方 + ArbitrateBlame int64 `json:"arbitrate_blame"` + // 换货SKU信息 + ExchangeSkuInfo *ExchangeSkuInfo `json:"exchange_sku_info"` + // 退货物流公司名称 + ReturnLogisticsCompanyName string `json:"return_logistics_company_name"` + // 换货物流公司名称 + ExchangeLogisticsCompanyName string `json:"exchange_logistics_company_name"` + // 售后商家备注 + Remark string `json:"remark"` + // 买家是否收到货物,0表示未收到,1表示收到 + GotPkg int64 `json:"got_pkg"` + // 商家首次发货的正向物流信息 + OrderLogistics []OrderLogisticsItem `json:"order_logistics"` + // 是否拒签后退款(1:已同意拒签, 2:未同意拒签) + IsAgreeRefuseSign int64 `json:"is_agree_refuse_sign"` + // 用户申请售后时选择的二级原因标签 + ReasonSecondLabels []ReasonSecondLabelsItem `json:"reason_second_labels"` + // 售后标签(含时效延长、风险预警、豁免体验分等标签) + AftersaleTags []AftersaleTagsItem `json:"aftersale_tags"` + // 门店ID + StoreId int64 `json:"store_id"` + // 门店名称 + StoreName string `json:"store_name"` +} +type ReasonSecondLabelsItem struct { + // 二级原因标签编号 + Code int64 `json:"code"` + // 二级原因标签名称 + Name string `json:"name"` +} +type AfterSaleListData struct { + // 售后列表元素 + Items []ItemsItem `json:"items"` + // 是否还有更多 + HasMore bool `json:"has_more"` + // 当前搜索条件下,匹配到的总数量 + Total int64 `json:"total"` + // 页码,从0开始 + Page int64 `json:"page"` + // 当前返回售后数量 + Size int64 `json:"size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_OpenAfterSaleChannel/request/afterSale_OpenAfterSaleChannel_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_OpenAfterSaleChannel/request/afterSale_OpenAfterSaleChannel_request.go new file mode 100644 index 00000000..dae476b4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_OpenAfterSaleChannel/request/afterSale_OpenAfterSaleChannel_request.go @@ -0,0 +1,48 @@ +package afterSale_OpenAfterSaleChannel_request + +import ( + "encoding/json" +) + +type AfterSaleOpenAfterSaleChannelRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleOpenAfterSaleChannelParam +} + +func (c *AfterSaleOpenAfterSaleChannelRequest) GetUrlPath() string { + return "/afterSale/OpenAfterSaleChannel" +} + +func New() *AfterSaleOpenAfterSaleChannelRequest { + request := &AfterSaleOpenAfterSaleChannelRequest{ + Param: &AfterSaleOpenAfterSaleChannelParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleOpenAfterSaleChannelRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_OpenAfterSaleChannel_response.AfterSaleOpenAfterSaleChannelResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_OpenAfterSaleChannel_response.AfterSaleOpenAfterSaleChannelResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleOpenAfterSaleChannelRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleOpenAfterSaleChannelRequest) GetParams() *AfterSaleOpenAfterSaleChannelParam { + return c.Param +} + +type AfterSaleOpenAfterSaleChannelParam struct { + // 订单ID + OrderId int64 `json:"order_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_OpenAfterSaleChannel/response/afterSale_OpenAfterSaleChannel_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_OpenAfterSaleChannel/response/afterSale_OpenAfterSaleChannel_response.go new file mode 100644 index 00000000..a57099cc --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_OpenAfterSaleChannel/response/afterSale_OpenAfterSaleChannel_response.go @@ -0,0 +1,20 @@ +package afterSale_OpenAfterSaleChannel_response + +type AfterSaleOpenAfterSaleChannelResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleOpenAfterSaleChannelData `json:"data"` +} +type AfterSaleOpenAfterSaleChannelData struct { + // 打开售后通道结论 + Conclusion *Conclusion `json:"conclusion"` +} +type Conclusion struct { + // 匹配到超级售后的类型,1是超售后期售后,2是EP订单超级售后,3是虚拟订单超级售后,4是超售后次数售后 + MatchConclusion int32 `json:"match_conclusion"` + // 匹配结果的解释,成功时为空 + MatchMessage string `json:"match_message"` + // 当前超级售后可以发起的售后类型,0是退货退款,1是已发货仅退款,2是未发货仅退款,3是换货 + CanApplyTypeList []int64 `json:"can_apply_type_list"` + // 匹配是否成功,当match_conclusion不为0且can_apply_type_list不是空的时候,此值为true + MatchSuccess bool `json:"match_success"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_addOrderRemark/request/afterSale_addOrderRemark_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_addOrderRemark/request/afterSale_addOrderRemark_request.go new file mode 100644 index 00000000..37dcaf85 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_addOrderRemark/request/afterSale_addOrderRemark_request.go @@ -0,0 +1,52 @@ +package afterSale_addOrderRemark_request + +import ( + "encoding/json" +) + +type AfterSaleAddOrderRemarkRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleAddOrderRemarkParam +} + +func (c *AfterSaleAddOrderRemarkRequest) GetUrlPath() string { + return "/afterSale/addOrderRemark" +} + +func New() *AfterSaleAddOrderRemarkRequest { + request := &AfterSaleAddOrderRemarkRequest{ + Param: &AfterSaleAddOrderRemarkParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleAddOrderRemarkRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_addOrderRemark_response.AfterSaleAddOrderRemarkResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_addOrderRemark_response.AfterSaleAddOrderRemarkResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleAddOrderRemarkRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleAddOrderRemarkRequest) GetParams() *AfterSaleAddOrderRemarkParam { + return c.Param +} + +type AfterSaleAddOrderRemarkParam struct { + // 订单ID,与售后单ID二选一传入 + OrderId string `json:"order_id"` + // 售后单ID,与订单ID二选一传入,二者均传入时售后单ID的优先级更高 + AfterSaleId string `json:"after_sale_id"` + // 商家添加的备注信息 + Remark string `json:"remark"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_addOrderRemark/response/afterSale_addOrderRemark_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_addOrderRemark/response/afterSale_addOrderRemark_response.go new file mode 100644 index 00000000..541ae349 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_addOrderRemark/response/afterSale_addOrderRemark_response.go @@ -0,0 +1,8 @@ +package afterSale_addOrderRemark_response + +type AfterSaleAddOrderRemarkResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleAddOrderRemarkData `json:"data"` +} +type AfterSaleAddOrderRemarkData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_applyLogisticsIntercept/request/afterSale_applyLogisticsIntercept_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_applyLogisticsIntercept/request/afterSale_applyLogisticsIntercept_request.go new file mode 100644 index 00000000..7a695f24 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_applyLogisticsIntercept/request/afterSale_applyLogisticsIntercept_request.go @@ -0,0 +1,58 @@ +package afterSale_applyLogisticsIntercept_request + +import ( + "encoding/json" +) + +type AfterSaleApplyLogisticsInterceptRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleApplyLogisticsInterceptParam +} + +func (c *AfterSaleApplyLogisticsInterceptRequest) GetUrlPath() string { + return "/afterSale/applyLogisticsIntercept" +} + +func New() *AfterSaleApplyLogisticsInterceptRequest { + request := &AfterSaleApplyLogisticsInterceptRequest{ + Param: &AfterSaleApplyLogisticsInterceptParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleApplyLogisticsInterceptRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_applyLogisticsIntercept_response.AfterSaleApplyLogisticsInterceptResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_applyLogisticsIntercept_response.AfterSaleApplyLogisticsInterceptResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleApplyLogisticsInterceptRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleApplyLogisticsInterceptRequest) GetParams() *AfterSaleApplyLogisticsInterceptParam { + return c.Param +} + +type InterceptTargetsItem struct { + // 物流公司编码 + CompanyCode string `json:"company_code"` + // 物流单号 + TrackingNo string `json:"tracking_no"` +} +type AfterSaleApplyLogisticsInterceptParam struct { + // 售后单ID + AfterSaleId int64 `json:"after_sale_id"` + // 操作来源(1:商家 3:客服) + OpFrom int32 `json:"op_from"` + // 要拦截的包裹 + InterceptTargets []InterceptTargetsItem `json:"intercept_targets"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_applyLogisticsIntercept/response/afterSale_applyLogisticsIntercept_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_applyLogisticsIntercept/response/afterSale_applyLogisticsIntercept_response.go new file mode 100644 index 00000000..cef1c64f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_applyLogisticsIntercept/response/afterSale_applyLogisticsIntercept_response.go @@ -0,0 +1,78 @@ +package afterSale_applyLogisticsIntercept_response + +type AfterSaleApplyLogisticsInterceptResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleApplyLogisticsInterceptData `json:"data"` +} +type CurProduct struct { + // 商品单订单号 + OrderId int64 `json:"order_id"` + // 商品图片 + ProductImage string `json:"product_image"` + // 商品名称 + ProductName string `json:"product_name"` + // 商品规格 + ProductSpec string `json:"product_spec"` + // 商品标签 + Tags []string `json:"tags"` + // 单价 + Price int64 `json:"price"` + // 数量 + Amount int64 `json:"amount"` +} +type OtherProductsItem struct { + // 商品单订单号 + OrderId int64 `json:"order_id"` + // 商品图片 + ProductImage string `json:"product_image"` + // 商品名称 + ProductName string `json:"product_name"` + // 商品规格 + ProductSpec string `json:"product_spec"` + // 商品标签 + Tags []string `json:"tags"` + // 单价 + Price int64 `json:"price"` + // 数量 + Amount int64 `json:"amount"` +} +type InterceptResultsItem struct { + // 物流公司编码 + CompanyCode string `json:"company_code"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 包裹价值(分) + ValueAmount int64 `json:"value_amount"` + // 是否可拦截(拦截详情时返回) + CanIntercept bool `json:"can_intercept"` + // 是否拦截成功(发起拦截时返回) + IsSuccess bool `json:"is_success"` + // 不可拦截原因编码 + UnavailableReasonCode int64 `json:"unavailable_reason_code"` + // 不可拦截原因文案 + UnavailableReason string `json:"unavailable_reason"` + // 拦截费用(分),(拦截详情时返回,不可拦截时无意义) + InterceptCost int64 `json:"intercept_cost"` + // 当前售后商品信息 + CurProduct *CurProduct `json:"cur_product"` + // 其它商品列表 + OtherProducts []OtherProductsItem `json:"other_products"` + // 其他商品件数 + OtherProductAmount int64 `json:"other_product_amount"` +} +type AfterSaleApplyLogisticsInterceptData struct { + // 物流拦截结果 + InterceptResults []InterceptResultsItem `json:"intercept_results"` + // 拦截成功次数 + SuccessCount int64 `json:"success_count"` + // 拦截失败次数 + FailedCount int64 `json:"failed_count"` + // 不可拦截编码(failed_count=1时有意义) + UnavailableReasonCode int64 `json:"unavailable_reason_code"` + // 不可拦截原因(failed_count=1时有意义) + UnavailableReason string `json:"unavailable_reason"` + // 售后单退款总金额 + RefundAmount int64 `json:"refund_amount"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_fillLogistics/request/afterSale_fillLogistics_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_fillLogistics/request/afterSale_fillLogistics_request.go new file mode 100644 index 00000000..706c10ca --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_fillLogistics/request/afterSale_fillLogistics_request.go @@ -0,0 +1,60 @@ +package afterSale_fillLogistics_request + +import ( + "encoding/json" +) + +type AfterSaleFillLogisticsRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleFillLogisticsParam +} + +func (c *AfterSaleFillLogisticsRequest) GetUrlPath() string { + return "/afterSale/fillLogistics" +} + +func New() *AfterSaleFillLogisticsRequest { + request := &AfterSaleFillLogisticsRequest{ + Param: &AfterSaleFillLogisticsParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleFillLogisticsRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_fillLogistics_response.AfterSaleFillLogisticsResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_fillLogistics_response.AfterSaleFillLogisticsResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleFillLogisticsRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleFillLogisticsRequest) GetParams() *AfterSaleFillLogisticsParam { + return c.Param +} + +type AfterSaleFillLogisticsParam struct { + // 售后单ID + AftersaleId int64 `json:"aftersale_id"` + // 发货类型,目前仅支持补寄(1) + SendType int32 `json:"send_type"` + // 物流公司编号 + CompanyCode string `json:"company_code"` + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 预约上门取货时间戳-目前只超市用 + BookTimeBegin int64 `json:"book_time_begin"` + // 预约上门取货时间戳-目前只超市用 + BookTimeEnd int64 `json:"book_time_end"` + // 门店ID + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_fillLogistics/response/afterSale_fillLogistics_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_fillLogistics/response/afterSale_fillLogistics_response.go new file mode 100644 index 00000000..e14e766d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_fillLogistics/response/afterSale_fillLogistics_response.go @@ -0,0 +1,8 @@ +package afterSale_fillLogistics_response + +type AfterSaleFillLogisticsResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleFillLogisticsData `json:"data"` +} +type AfterSaleFillLogisticsData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_openOutAfterSale/request/afterSale_openOutAfterSale_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_openOutAfterSale/request/afterSale_openOutAfterSale_request.go new file mode 100644 index 00000000..ac3a34e8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_openOutAfterSale/request/afterSale_openOutAfterSale_request.go @@ -0,0 +1,48 @@ +package afterSale_openOutAfterSale_request + +import ( + "encoding/json" +) + +type AfterSaleOpenOutAfterSaleRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleOpenOutAfterSaleParam +} + +func (c *AfterSaleOpenOutAfterSaleRequest) GetUrlPath() string { + return "/afterSale/openOutAfterSale" +} + +func New() *AfterSaleOpenOutAfterSaleRequest { + request := &AfterSaleOpenOutAfterSaleRequest{ + Param: &AfterSaleOpenOutAfterSaleParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleOpenOutAfterSaleRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_openOutAfterSale_response.AfterSaleOpenOutAfterSaleResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_openOutAfterSale_response.AfterSaleOpenOutAfterSaleResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleOpenOutAfterSaleRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleOpenOutAfterSaleRequest) GetParams() *AfterSaleOpenOutAfterSaleParam { + return c.Param +} + +type AfterSaleOpenOutAfterSaleParam struct { + // 要打开超售后入口的商品单ID + OrderId int64 `json:"order_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_openOutAfterSale/response/afterSale_openOutAfterSale_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_openOutAfterSale/response/afterSale_openOutAfterSale_response.go new file mode 100644 index 00000000..ed27c449 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_openOutAfterSale/response/afterSale_openOutAfterSale_response.go @@ -0,0 +1,8 @@ +package afterSale_openOutAfterSale_response + +type AfterSaleOpenOutAfterSaleResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleOpenOutAfterSaleData `json:"data"` +} +type AfterSaleOpenOutAfterSaleData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_operate/request/afterSale_operate_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_operate/request/afterSale_operate_request.go new file mode 100644 index 00000000..d8f285f3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_operate/request/afterSale_operate_request.go @@ -0,0 +1,112 @@ +package afterSale_operate_request + +import ( + "encoding/json" +) + +type AfterSaleOperateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleOperateParam +} + +func (c *AfterSaleOperateRequest) GetUrlPath() string { + return "/afterSale/operate" +} + +func New() *AfterSaleOperateRequest { + request := &AfterSaleOperateRequest{ + Param: &AfterSaleOperateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleOperateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_operate_response.AfterSaleOperateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_operate_response.AfterSaleOperateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleOperateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleOperateRequest) GetParams() *AfterSaleOperateParam { + return c.Param +} + +type EvidenceItem struct { + // 凭证类型,1:图片,2:视频,3:音频(暂不支持展示),4:文字(暂不支持展示)。“用户可见备注”为remark字段 + Type int32 `json:"type"` + // 凭证url + Url string `json:"url"` + // 凭证描述 + Desc string `json:"desc"` +} +type AfterSaleAddressDetail struct { + // 省;使用【/address/getProvince】接口获取 + ProvinceName string `json:"province_name"` + // 市;需要使用【/address/getAreasByProvince】接口响应参数获取 + CityName string `json:"city_name"` + // 区;需要使用【/address/getAreasByProvince】接口响应参数获取 + TownName string `json:"town_name"` + // 地址详情 + Detail string `json:"detail"` + // 收件人 + UserName string `json:"user_name"` + // 联系电话,支持手机号和固定电话;固定电话需要传入区号。注意:区号和号码之间一定要传入“-”传值示例:0571-1234567;否则会报错电话号码不合法。 + Mobile string `json:"mobile"` + // 街道名称 + StreetName string `json:"street_name"` + // 省id;使用【/address/getProvince】接口获取 + ProvinceId int64 `json:"province_id"` + // 市id;需要使用【/address/getAreasByProvince】接口响应参数获取 + CityId int64 `json:"city_id"` + // 区id;需要使用【/address/getAreasByProvince】接口响应参数获取 + TownId int64 `json:"town_id"` + // 街道id;需要使用【/address/getAreasByProvince】接口响应参数获取 + StreetId int64 `json:"street_id"` +} +type Logistics struct { + // 物流公司code,使用【/order/logisticsCompanyList】接口获取;type=311仅换货时需要填入 + CompanyCode string `json:"company_code"` + // 物流单号(快递单号),仅type=311仅换货时需要填入 + LogisticsCode string `json:"logistics_code"` + // 收件地址id(推荐使用),必须通过【/address/list】获取【address_id】填入。和after_sale_address_detail字段集合二选一; + ReceiverAddressId int64 `json:"receiver_address_id"` + // 已废弃字段,(隐藏时间20220610)发件地址id + SenderAddressId int64 `json:"sender_address_id"` + // 商家同意退货/同意换货收件地址详情(不推荐使用);和receiver_address_id字段二选一(推荐使用);商家可以自定义退货地址。 + AfterSaleAddressDetail *AfterSaleAddressDetail `json:"after_sale_address_detail"` +} +type ItemsItem struct { + // 售后单号 + AftersaleId string `json:"aftersale_id"` + // 操作原因,拒绝操作必填 + Reason string `json:"reason"` + // 操作评论,拒绝操作必填 + Remark string `json:"remark"` + // 操作凭证编码,当【afterSale/rejectReasonCodeList】接口响应参数evidence_need=Y时,该参数必填;使用【afterSale/rejectReasonCodeList】接口获取响应参数中的reject_reason_code字段。 + Evidence []EvidenceItem `json:"evidence"` + // 同意退货/同意换货物流信息,当前type=101,301,311是该集合需要传值。 + Logistics *Logistics `json:"logistics"` + // 售后拒绝原因码,拒绝时必填填。通过/afterSale/rejectReasonCodeList获取 + RejectReasonCode int64 `json:"reject_reason_code"` + // 用于校验售后单版本是不是最新的版本,防止售后单变更且open侧审核通过导致资损。不传就不校验,传入后就会校验isv传入的售后单版本是不是最新的版本。 需要使用【/afterSale/Detail】接口返回的update_time字段或使用售后消息推送中的update_time字段 + UpdateTime int64 `json:"update_time"` +} +type AfterSaleOperateParam struct { + // 操作类型;请查看API描述枚举值说明 + Type int32 `json:"type"` + // 操作售后详情 + Items []ItemsItem `json:"items"` + // 门店ID + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_operate/response/afterSale_operate_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_operate/response/afterSale_operate_response.go new file mode 100644 index 00000000..02bad6f7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_operate/response/afterSale_operate_response.go @@ -0,0 +1,18 @@ +package afterSale_operate_response + +type AfterSaleOperateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleOperateData `json:"data"` +} +type AfterSaleOperateData struct { + // 审核结果 + Items []ItemsItem `json:"items"` +} +type ItemsItem struct { + // 售后单号 + AftersaleId int64 `json:"aftersale_id"` + // 操作结果码 + StatusCode int64 `json:"status_code"` + // 操作结果描述 + StatusMsg string `json:"status_msg"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_rejectReasonCodeList/request/afterSale_rejectReasonCodeList_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_rejectReasonCodeList/request/afterSale_rejectReasonCodeList_request.go new file mode 100644 index 00000000..86c8c098 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_rejectReasonCodeList/request/afterSale_rejectReasonCodeList_request.go @@ -0,0 +1,46 @@ +package afterSale_rejectReasonCodeList_request + +import ( + "encoding/json" +) + +type AfterSaleRejectReasonCodeListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleRejectReasonCodeListParam +} + +func (c *AfterSaleRejectReasonCodeListRequest) GetUrlPath() string { + return "/afterSale/rejectReasonCodeList" +} + +func New() *AfterSaleRejectReasonCodeListRequest { + request := &AfterSaleRejectReasonCodeListRequest{ + Param: &AfterSaleRejectReasonCodeListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleRejectReasonCodeListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_rejectReasonCodeList_response.AfterSaleRejectReasonCodeListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_rejectReasonCodeList_response.AfterSaleRejectReasonCodeListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleRejectReasonCodeListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleRejectReasonCodeListRequest) GetParams() *AfterSaleRejectReasonCodeListParam { + return c.Param +} + +type AfterSaleRejectReasonCodeListParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_rejectReasonCodeList/response/afterSale_rejectReasonCodeList_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_rejectReasonCodeList/response/afterSale_rejectReasonCodeList_response.go new file mode 100644 index 00000000..10e5f04a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_rejectReasonCodeList/response/afterSale_rejectReasonCodeList_response.go @@ -0,0 +1,26 @@ +package afterSale_rejectReasonCodeList_response + +type AfterSaleRejectReasonCodeListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleRejectReasonCodeListData `json:"data"` +} +type ItemsItem struct { + // 售后审核拒绝原因枚举编码 + RejectReasonCode int64 `json:"reject_reason_code"` + // 售后审核拒绝原因文案 + Reason string `json:"reason"` + // 凭证描述文案 + EvidenceDescription string `json:"evidence_description"` + // 是否需要上传凭证,Y必填,N非必填 + EvidenceNeed string `json:"evidence_need"` + // 凭证示例图片链接 + Image string `json:"image"` + // 订单类型,即订单信息中order_type 枚举:0-普通实物订单 1-全款预售订单 2-虚拟商品订单 3-快闪店订单 4-电子券 5-三方核销 6-服务市场 + OrderType int64 `json:"order_type"` + // 是否收到货,0未收到 1收到 + Pkg int64 `json:"pkg"` +} +type AfterSaleRejectReasonCodeListData struct { + // 售后商家拒绝原因详情列表 + Items []ItemsItem `json:"items"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_returnGoodsToWareHouseSuccess/request/afterSale_returnGoodsToWareHouseSuccess_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_returnGoodsToWareHouseSuccess/request/afterSale_returnGoodsToWareHouseSuccess_request.go new file mode 100644 index 00000000..3e5c18c8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_returnGoodsToWareHouseSuccess/request/afterSale_returnGoodsToWareHouseSuccess_request.go @@ -0,0 +1,54 @@ +package afterSale_returnGoodsToWareHouseSuccess_request + +import ( + "encoding/json" +) + +type AfterSaleReturnGoodsToWareHouseSuccessRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleReturnGoodsToWareHouseSuccessParam +} + +func (c *AfterSaleReturnGoodsToWareHouseSuccessRequest) GetUrlPath() string { + return "/afterSale/returnGoodsToWareHouseSuccess" +} + +func New() *AfterSaleReturnGoodsToWareHouseSuccessRequest { + request := &AfterSaleReturnGoodsToWareHouseSuccessRequest{ + Param: &AfterSaleReturnGoodsToWareHouseSuccessParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleReturnGoodsToWareHouseSuccessRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_returnGoodsToWareHouseSuccess_response.AfterSaleReturnGoodsToWareHouseSuccessResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_returnGoodsToWareHouseSuccess_response.AfterSaleReturnGoodsToWareHouseSuccessResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleReturnGoodsToWareHouseSuccessRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleReturnGoodsToWareHouseSuccessRequest) GetParams() *AfterSaleReturnGoodsToWareHouseSuccessParam { + return c.Param +} + +type AfterSaleReturnGoodsToWareHouseSuccessParam struct { + // 售后单Id + AftersaleId string `json:"aftersale_id"` + // 商家确认退货入仓时间,Unix时间戳,时间为秒 + OpTime int64 `json:"op_time"` + // 用户退货物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司代号 + LogisticsCompanyCode string `json:"logistics_company_code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_returnGoodsToWareHouseSuccess/response/afterSale_returnGoodsToWareHouseSuccess_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_returnGoodsToWareHouseSuccess/response/afterSale_returnGoodsToWareHouseSuccess_response.go new file mode 100644 index 00000000..1c6dafad --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_returnGoodsToWareHouseSuccess/response/afterSale_returnGoodsToWareHouseSuccess_response.go @@ -0,0 +1,8 @@ +package afterSale_returnGoodsToWareHouseSuccess_response + +type AfterSaleReturnGoodsToWareHouseSuccessResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleReturnGoodsToWareHouseSuccessData `json:"data"` +} +type AfterSaleReturnGoodsToWareHouseSuccessData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_submitEvidence/request/afterSale_submitEvidence_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_submitEvidence/request/afterSale_submitEvidence_request.go new file mode 100644 index 00000000..b135ace5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_submitEvidence/request/afterSale_submitEvidence_request.go @@ -0,0 +1,52 @@ +package afterSale_submitEvidence_request + +import ( + "encoding/json" +) + +type AfterSaleSubmitEvidenceRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleSubmitEvidenceParam +} + +func (c *AfterSaleSubmitEvidenceRequest) GetUrlPath() string { + return "/afterSale/submitEvidence" +} + +func New() *AfterSaleSubmitEvidenceRequest { + request := &AfterSaleSubmitEvidenceRequest{ + Param: &AfterSaleSubmitEvidenceParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleSubmitEvidenceRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_submitEvidence_response.AfterSaleSubmitEvidenceResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_submitEvidence_response.AfterSaleSubmitEvidenceResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleSubmitEvidenceRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleSubmitEvidenceRequest) GetParams() *AfterSaleSubmitEvidenceParam { + return c.Param +} + +type AfterSaleSubmitEvidenceParam struct { + // 售后单ID ,通过[/trade/refundListSearch](https://op.jinritemai.com/docs/api-docs/17/254) 或者 [/afterSale/refundProcessDetail](https://op.jinritemai.com/docs/api-docs/17/96) 获取 + AftersaleId int64 `json:"aftersale_id"` + // 备注 + Comment string `json:"comment"` + // [https://xxxx.jpg](https://xxxx.jpg/) | 凭证,最多四张 + Evidence []string `json:"evidence"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_submitEvidence/response/afterSale_submitEvidence_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_submitEvidence/response/afterSale_submitEvidence_response.go new file mode 100644 index 00000000..674580f2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_submitEvidence/response/afterSale_submitEvidence_response.go @@ -0,0 +1,8 @@ +package afterSale_submitEvidence_response + +type AfterSaleSubmitEvidenceResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleSubmitEvidenceData `json:"data"` +} +type AfterSaleSubmitEvidenceData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_timeExtend/request/afterSale_timeExtend_request.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_timeExtend/request/afterSale_timeExtend_request.go new file mode 100644 index 00000000..c40ba47c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_timeExtend/request/afterSale_timeExtend_request.go @@ -0,0 +1,50 @@ +package afterSale_timeExtend_request + +import ( + "encoding/json" + afterSale_timeExtend_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/afterSale_timeExtend/response" + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" +) + +type AfterSaleTimeExtendRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AfterSaleTimeExtendParam +} + +func (c *AfterSaleTimeExtendRequest) GetUrlPath() string { + return "/afterSale/timeExtend" +} + +func New() *AfterSaleTimeExtendRequest { + request := &AfterSaleTimeExtendRequest{ + Param: &AfterSaleTimeExtendParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AfterSaleTimeExtendRequest) Execute(accessToken *doudian_sdk.AccessToken) (*afterSale_timeExtend_response.AfterSaleTimeExtendResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &afterSale_timeExtend_response.AfterSaleTimeExtendResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AfterSaleTimeExtendRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AfterSaleTimeExtendRequest) GetParams() *AfterSaleTimeExtendParam { + return c.Param +} + +type AfterSaleTimeExtendParam struct { + // 售后单号 + AftersaleId int64 `json:"aftersale_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/afterSale_timeExtend/response/afterSale_timeExtend_response.go b/platformapi/tiktok_shop/sdk-golang/api/afterSale_timeExtend/response/afterSale_timeExtend_response.go new file mode 100644 index 00000000..474b3904 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/afterSale_timeExtend/response/afterSale_timeExtend_response.go @@ -0,0 +1,10 @@ +package afterSale_timeExtend_response + +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + +type AfterSaleTimeExtendResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AfterSaleTimeExtendData `json:"data"` +} +type AfterSaleTimeExtendData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/antispam_orderQuery/request/antispam_orderQuery_request.go b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderQuery/request/antispam_orderQuery_request.go new file mode 100644 index 00000000..aa454806 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderQuery/request/antispam_orderQuery_request.go @@ -0,0 +1,58 @@ +package antispam_orderQuery_request + +import ( + "encoding/json" +) + +type AntispamOrderQueryRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AntispamOrderQueryParam +} + +func (c *AntispamOrderQueryRequest) GetUrlPath() string { + return "/antispam/orderQuery" +} + +func New() *AntispamOrderQueryRequest { + request := &AntispamOrderQueryRequest{ + Param: &AntispamOrderQueryParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AntispamOrderQueryRequest) Execute(accessToken *doudian_sdk.AccessToken) (*antispam_orderQuery_response.AntispamOrderQueryResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &antispam_orderQuery_response.AntispamOrderQueryResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AntispamOrderQueryRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AntispamOrderQueryRequest) GetParams() *AntispamOrderQueryParam { + return c.Param +} + +type User struct { + // 用户类型 + UidType int32 `json:"uid_type"` + // 用户 ID + UserId int64 `json:"user_id"` +} +type AntispamOrderQueryParam struct { + // 事件时间 + EventTime int64 `json:"event_time"` + // 用户 + User *User `json:"user"` + // 上报参数 + Params string `json:"params"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/antispam_orderQuery/response/antispam_orderQuery_response.go b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderQuery/response/antispam_orderQuery_response.go new file mode 100644 index 00000000..377e25d3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderQuery/response/antispam_orderQuery_response.go @@ -0,0 +1,18 @@ +package antispam_orderQuery_response + +type AntispamOrderQueryResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AntispamOrderQueryData `json:"data"` +} +type Decision struct { + // 决策 + Decision string `json:"decision"` + // 决策详情 + DecisionDetail string `json:"decision_detail"` + // 提示信息 + HitStatus string `json:"hit_status"` +} +type AntispamOrderQueryData struct { + // 决策 + Decision *Decision `json:"decision"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/antispam_orderSend/request/antispam_orderSend_request.go b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderSend/request/antispam_orderSend_request.go new file mode 100644 index 00000000..ce864a9e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderSend/request/antispam_orderSend_request.go @@ -0,0 +1,58 @@ +package antispam_orderSend_request + +import ( + "encoding/json" +) + +type AntispamOrderSendRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AntispamOrderSendParam +} + +func (c *AntispamOrderSendRequest) GetUrlPath() string { + return "/antispam/orderSend" +} + +func New() *AntispamOrderSendRequest { + request := &AntispamOrderSendRequest{ + Param: &AntispamOrderSendParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AntispamOrderSendRequest) Execute(accessToken *doudian_sdk.AccessToken) (*antispam_orderSend_response.AntispamOrderSendResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &antispam_orderSend_response.AntispamOrderSendResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AntispamOrderSendRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AntispamOrderSendRequest) GetParams() *AntispamOrderSendParam { + return c.Param +} + +type User struct { + // 用户类型 + UidType int32 `json:"uid_type"` + // 用户 ID + UserId int64 `json:"user_id"` +} +type AntispamOrderSendParam struct { + // 事件时间 + EventTime int64 `json:"event_time"` + // 用户 + User *User `json:"user"` + // 可变参数 + Params string `json:"params"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/antispam_orderSend/response/antispam_orderSend_response.go b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderSend/response/antispam_orderSend_response.go new file mode 100644 index 00000000..b2df17cd --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/antispam_orderSend/response/antispam_orderSend_response.go @@ -0,0 +1,18 @@ +package antispam_orderSend_response + +type AntispamOrderSendResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AntispamOrderSendData `json:"data"` +} +type Decision struct { + // 决策 + Decision string `json:"decision"` + // 决策详情 + DecisionDetail string `json:"decision_detail"` + // 提示信息 + HitStatus string `json:"hit_status"` +} +type AntispamOrderSendData struct { + // 决策 + Decision *Decision `json:"decision"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/antispam_userLogin/request/antispam_userLogin_request.go b/platformapi/tiktok_shop/sdk-golang/api/antispam_userLogin/request/antispam_userLogin_request.go new file mode 100644 index 00000000..a9a53700 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/antispam_userLogin/request/antispam_userLogin_request.go @@ -0,0 +1,58 @@ +package antispam_userLogin_request + +import ( + "encoding/json" +) + +type AntispamUserLoginRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *AntispamUserLoginParam +} + +func (c *AntispamUserLoginRequest) GetUrlPath() string { + return "/antispam/userLogin" +} + +func New() *AntispamUserLoginRequest { + request := &AntispamUserLoginRequest{ + Param: &AntispamUserLoginParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *AntispamUserLoginRequest) Execute(accessToken *doudian_sdk.AccessToken) (*antispam_userLogin_response.AntispamUserLoginResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &antispam_userLogin_response.AntispamUserLoginResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *AntispamUserLoginRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *AntispamUserLoginRequest) GetParams() *AntispamUserLoginParam { + return c.Param +} + +type User struct { + // 用户类型 + UidType int32 `json:"uid_type"` + // 用户 ID + UserId int64 `json:"user_id"` +} +type AntispamUserLoginParam struct { + // json 字符串 + Params string `json:"params"` + // 事件发生的时间 + EventTime int64 `json:"event_time"` + // 用户 + User *User `json:"user"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/antispam_userLogin/response/antispam_userLogin_response.go b/platformapi/tiktok_shop/sdk-golang/api/antispam_userLogin/response/antispam_userLogin_response.go new file mode 100644 index 00000000..633c17c2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/antispam_userLogin/response/antispam_userLogin_response.go @@ -0,0 +1,18 @@ +package antispam_userLogin_response + +type AntispamUserLoginResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *AntispamUserLoginData `json:"data"` +} +type Decision struct { + // 动作 + Decision string `json:"decision"` + // 详情 + DecisionDetail string `json:"decision_detail"` + // 状态 + HitStatus string `json:"hit_status"` +} +type AntispamUserLoginData struct { + // 决议 + Decision *Decision `json:"decision"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/brand_convert/request/brand_convert_request.go b/platformapi/tiktok_shop/sdk-golang/api/brand_convert/request/brand_convert_request.go new file mode 100644 index 00000000..e7fee142 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/brand_convert/request/brand_convert_request.go @@ -0,0 +1,48 @@ +package brand_convert_request + +import ( + "encoding/json" +) + +type BrandConvertRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *BrandConvertParam +} + +func (c *BrandConvertRequest) GetUrlPath() string { + return "/brand/convert" +} + +func New() *BrandConvertRequest { + request := &BrandConvertRequest{ + Param: &BrandConvertParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *BrandConvertRequest) Execute(accessToken *doudian_sdk.AccessToken) (*brand_convert_response.BrandConvertResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &brand_convert_response.BrandConvertResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *BrandConvertRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *BrandConvertRequest) GetParams() *BrandConvertParam { + return c.Param +} + +type BrandConvertParam struct { + // 品牌关系id,即/shop/brandList返回的id + RelatedId int64 `json:"related_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/brand_convert/response/brand_convert_response.go b/platformapi/tiktok_shop/sdk-golang/api/brand_convert/response/brand_convert_response.go new file mode 100644 index 00000000..8d5e65e4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/brand_convert/response/brand_convert_response.go @@ -0,0 +1,10 @@ +package brand_convert_response + +type BrandConvertResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *BrandConvertData `json:"data"` +} +type BrandConvertData struct { + // 品牌id,对应商品发布接口standard_brand_id字段 + BrandId int64 `json:"brand_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/brand_getSug/request/brand_getSug_request.go b/platformapi/tiktok_shop/sdk-golang/api/brand_getSug/request/brand_getSug_request.go new file mode 100644 index 00000000..b230174c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/brand_getSug/request/brand_getSug_request.go @@ -0,0 +1,82 @@ +package brand_getSug_request + +import ( + "encoding/json" +) + +type BrandGetSugRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *BrandGetSugParam +} + +func (c *BrandGetSugRequest) GetUrlPath() string { + return "/brand/getSug" +} + +func New() *BrandGetSugRequest { + request := &BrandGetSugRequest{ + Param: &BrandGetSugParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *BrandGetSugRequest) Execute(accessToken *doudian_sdk.AccessToken) (*brand_getSug_response.BrandGetSugResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &brand_getSug_response.BrandGetSugResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *BrandGetSugRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *BrandGetSugRequest) GetParams() *BrandGetSugParam { + return c.Param +} + +type FilterInfo struct { + // 品牌ids + BrandIds []int64 `json:"brand_ids"` + // 品牌类别 + BrandCategory []int64 `json:"brand_category"` + // 品牌状态: 1.在线 2.离线 + Status int64 `json:"status"` + // 品牌商标关联Id + RelatedIds []int64 `json:"related_ids"` + // 商标IDs + TradeMarkIds []string `json:"trade_mark_ids"` + // 废弃字段,请勿填写: 1. 审核中 2. 审核通过 3. 审核拒绝 4. 送审失败 + AuditStatus []int32 `json:"audit_status"` +} +type ExtraConfig struct { + // 是否忽略去重 使用原始品牌信息,默认取false + UseOriginBrandInfo bool `json:"use_origin_brand_info"` + // 是否忽略新旧映射 使用老品牌信息,默认取false + UseBrandInfo bool `json:"use_brand_info"` + // 使用品牌名去重,需要和抖店一致请取true + UseBrandNameDeduplicate bool `json:"use_brand_name_deduplicate"` +} +type BrandGetSugParam struct { + // 前缀匹配的品牌名 + Query string `json:"query"` + // 用户ID,可用默认值0 + UserId int64 `json:"user_id"` + // 过滤用参数,不填则是全量召回 + FilterInfo *FilterInfo `json:"filter_info"` + // 是否读取老数据 默认为false + ReadOld bool `json:"read_old"` + // 业务线类型: 0. 国内品牌 1. 跨境品牌 3. 广告 + BizTypes []int32 `json:"biz_types"` + // 是否去重,一般选择true + EnableDeduplicate bool `json:"enable_deduplicate"` + // 额外配置,无特殊需求请按描述填写 + ExtraConfig *ExtraConfig `json:"extra_config"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/brand_getSug/response/brand_getSug_response.go b/platformapi/tiktok_shop/sdk-golang/api/brand_getSug/response/brand_getSug_response.go new file mode 100644 index 00000000..2c99dcb5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/brand_getSug/response/brand_getSug_response.go @@ -0,0 +1,36 @@ +package brand_getSug_response + +type BrandGetSugResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *BrandGetSugData `json:"data"` +} +type SugListItem struct { + // 品牌ID + BrandId int64 `json:"brand_id"` + // 品牌中文名 + BrandNameCN string `json:"brand_name_c_n"` + // 品牌英文名 + BrandNameEN string `json:"brand_name_e_n"` + // 品牌等级 + Level int32 `json:"level"` + // 品牌状态:在线 + Status int32 `json:"status"` + // 品牌别名 + BrandAlias []string `json:"brand_alias"` + // 创建时间 + CreateTimestamp int64 `json:"create_timestamp"` + // 修改时间 + UpdateTimestamp int64 `json:"update_timestamp"` + // 审核情况 1. 审核中 2. 审核通过 3. 审核拒绝 4. 送审失败 + AuditStatus int32 `json:"audit_status"` + // 业务线类型: 0. 国内品牌 1. 跨境品牌 3. 广告 + BizType int32 `json:"biz_type"` + // 品牌logo + Logo string `json:"logo"` + // 额外信息 + Extra map[string]string `json:"extra"` +} +type BrandGetSugData struct { + // 品牌信息列表 + SugList []SugListItem `json:"sug_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/brand_list/request/brand_list_request.go b/platformapi/tiktok_shop/sdk-golang/api/brand_list/request/brand_list_request.go new file mode 100644 index 00000000..4d793783 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/brand_list/request/brand_list_request.go @@ -0,0 +1,62 @@ +package brand_list_request + +import ( + "encoding/json" +) + +type BrandListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *BrandListParam +} + +func (c *BrandListRequest) GetUrlPath() string { + return "/brand/list" +} + +func New() *BrandListRequest { + request := &BrandListRequest{ + Param: &BrandListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *BrandListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*brand_list_response.BrandListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &brand_list_response.BrandListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *BrandListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *BrandListRequest) GetParams() *BrandListParam { + return c.Param +} + +type BrandListParam struct { + // (已停止使用)类目列表 + Categories []int64 `json:"categories"` + // (已停止使用)起始位 + Offset int64 `json:"offset"` + // (已停止使用)单次最大条数 + Size int64 `json:"size"` + // (已停止使用)排序顺序,默认为倒排 0:降序, 1:升序 + Sort int32 `json:"sort"` + // (已停止使用)品牌状态 1:审核中, 2:审核通过, 3:审核拒绝 + Status int32 `json:"status"` + // (已停止使用)是否返回完全的品牌信息 + FullBrandInfo bool `json:"full_brand_info"` + // (推荐使用,必填)类目id + CategoryId int64 `json:"category_id"` + // 品牌前缀(中文或者英文),适用于不需要品牌资质的场景,根据前缀搜索品牌 + Query string `json:"query"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/brand_list/response/brand_list_response.go b/platformapi/tiktok_shop/sdk-golang/api/brand_list/response/brand_list_response.go new file mode 100644 index 00000000..83b36cac --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/brand_list/response/brand_list_response.go @@ -0,0 +1,62 @@ +package brand_list_response + +type BrandListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *BrandListData `json:"data"` +} +type BrandListData struct { + // (已停止使用)品牌id列表 + BrandIds []int64 `json:"brand_ids"` + // (已停止使用)品牌信息 + BrandInfos map[int64]BrandInfosItem `json:"brand_infos"` + // (已停止使用)总数 + Total int64 `json:"total"` + // (已停止使用)还有更多 + HasMore bool `json:"has_more"` + // 类目是否要求品牌有授权 + AuthRequired bool `json:"auth_required"` + // 授权的品牌列表 + AuthBrandList []AuthBrandListItem `json:"auth_brand_list"` + // 未授权的品牌列表 + BrandList []BrandListItem `json:"brand_list"` +} +type BrandInfosItem struct { + // 品牌id + BrandId int64 `json:"brand_id"` + // 品牌中文名 + BrandNameCN string `json:"brand_name_c_n"` + // 品牌英文名 + BrandNameEN string `json:"brand_name_e_n"` + // 品牌评级 0-4 + Level int32 `json:"level"` + // 品牌状态 1:上线, 2:下线 + Status int32 `json:"status"` + // 品牌别名 + BrandAlias []string `json:"brand_alias"` + // 创建时间 + CreateTimestamp int64 `json:"create_timestamp"` + // 更新时间 + UpdateTimestamp int64 `json:"update_timestamp"` + // 品牌审核状态 1:审核中, 2:审核通过, 3:审核拒绝, 4:送审失败 + AuditStatus int32 `json:"audit_status"` + // 业务类型 0:国内, 1:跨境电商, 2:广告 + BizType int32 `json:"biz_type"` + // 品牌logo地址 + Logo string `json:"logo"` +} +type AuthBrandListItem struct { + // 品牌id + BrandId int64 `json:"brand_id"` + // 中文名 + NameCn string `json:"name_cn"` + // 英文名 + NameEn string `json:"name_en"` +} +type BrandListItem struct { + // 品牌id + BrandId int64 `json:"brand_id"` + // 中文名 + NameCn string `json:"name_cn"` + // 英文名 + NameEn string `json:"name_en"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request/freightTemplate_create_request.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request/freightTemplate_create_request.go new file mode 100644 index 00000000..4e85d58b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request/freightTemplate_create_request.go @@ -0,0 +1,126 @@ +package freightTemplate_create_request + +import ( + "encoding/json" +) + +type FreightTemplateCreateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *FreightTemplateCreateParam +} + +func (c *FreightTemplateCreateRequest) GetUrlPath() string { + return "/freightTemplate/create" +} + +func New() *FreightTemplateCreateRequest { + request := &FreightTemplateCreateRequest{ + Param: &FreightTemplateCreateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *FreightTemplateCreateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*freightTemplate_create_response.FreightTemplateCreateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &freightTemplate_create_response.FreightTemplateCreateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *FreightTemplateCreateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *FreightTemplateCreateRequest) GetParams() *FreightTemplateCreateParam { + return c.Param +} + +type ChildrenItem_5 struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id int64 `json:"id"` + // 下一级地址信息 + Children []ChildrenItem `json:"children"` +} +type ChildrenItem_4 struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id int64 `json:"id"` + // 下一级地址信息 + Children []ChildrenItem_5 `json:"children"` +} +type ProvinceInfosItem struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id int64 `json:"id"` + // 下一级地址信息 + Children []ChildrenItem_4 `json:"children"` +} +type ColumnsItem struct { + // 首重(单位:kg) 按重量计价必填 0.1-999.9之间的小数,小数点后一位 + FirstWeight float64 `json:"first_weight"` + // 首重价格(单位:元) 按重量计价必填 0.00-30.00之间的小数,小数点后两位 + FirstWeightPrice float64 `json:"first_weight_price"` + // 首件数量(单位:个) 按数量计价必填 1-999的整数 + FirstNum int64 `json:"first_num"` + // 首件价格(单位:元)按数量计价必填 0.00-30.00之间的小数,小数点后两位 + FirstNumPrice float64 `json:"first_num_price"` + // 续重(单位:kg) 按重量计价必填 0.1-999.9之间的小数,小数点后一位 + AddWeight float64 `json:"add_weight"` + // 续重价格(单位:元) 按重量计价必填 0.00-30.00之间的小数,小数点后两位 + AddWeightPrice float64 `json:"add_weight_price"` + // 续件(单位:个) 按数量计价必填 1-999的整数 + AddNum int64 `json:"add_num"` + // 续件价格(单位:元) 按数量计价必填 0.00-30.00之间的小数,小数点后两位 + AddNumPrice float64 `json:"add_num_price"` + // 是否默认计价方式(1:是;0:不是) + IsDefault int64 `json:"is_default"` + // 是否限运规则 + IsLimited bool `json:"is_limited"` + // 当前规则生效的地址,非默认规则必填。map>>>的json格式,省->市->区->街道,填至选择到的层级即可,仅限售规则支持四级街道 + RuleAddress string `json:"rule_address"` + // 是否包邮规则 + IsOverFree bool `json:"is_over_free"` + // 满xx重量包邮(单位:kg)0.1-10.0之间的小数,小数点后一位 + OverWeight float64 `json:"over_weight"` + // 满xx金额包邮(单位:分)10-99900的整数 + OverAmount int64 `json:"over_amount"` + // 满xx件包邮 1-10之间的整数 + OverNum int64 `json:"over_num"` + // 最小金额限制,单位分,不限制填-1 + MinSkuAmount int64 `json:"min_sku_amount"` + // 最大金额限制,单位分,不限制填-1 + MaxSkuAmount int64 `json:"max_sku_amount"` + // 当前规则生效的地址,统一以List结构返回,该结构为嵌套结构。对应的json格式为[{"id":"32","children":[{"id":"320500","children":[{"id":"320508","children":[{"id":"320508014"},{"id":"320508004"}]}]}]}] 注意:返回的为最新的四级地址版本(地址存储升级变更的可能,以最新的返回) + ProvinceInfos []ProvinceInfosItem `json:"province_infos"` +} +type FreightTemplateCreateParam struct { + // 运费模板信息 + Template *Template `json:"template"` + // 运费模板规则信息;每种类型模板可创建的规则类型: 阶梯计价模板-默认规则,普通计价规则,包邮规则,限运规则;固定运费模板-包邮规则,限运规则;固定运费模板-包邮规则,限运规则;包邮模板-限运规则;货到付款模板-限运规则 + Columns []ColumnsItem `json:"columns"` +} +type Template struct { + // 模板名称 + TemplateName string `json:"template_name"` + // 发货省份id + ProductProvince int64 `json:"product_province"` + // 发货城市id + ProductCity int64 `json:"product_city"` + // 计价方式-1.按重量 2.按数量;模板类型为1、2、3时,计价类型传2 + CalculateType int64 `json:"calculate_type"` + // 快递方式-1.快递 目前仅支持1 + TransferType int64 `json:"transfer_type"` + // 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款 + RuleType int64 `json:"rule_type"` + // 固定运费金额(单位:分) 固定运费模板必填 1-9900之间的整数 + FixedAmount int64 `json:"fixed_amount"` +} +type ChildrenItem struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id int64 `json:"id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/response/freightTemplate_create_response.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/response/freightTemplate_create_response.go new file mode 100644 index 00000000..a26f3693 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/response/freightTemplate_create_response.go @@ -0,0 +1,10 @@ +package freightTemplate_create_response + +type FreightTemplateCreateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *FreightTemplateCreateData `json:"data"` +} +type FreightTemplateCreateData struct { + // 创建的模板的id + TemplateId int64 `json:"template_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_detail/request/freightTemplate_detail_request.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_detail/request/freightTemplate_detail_request.go new file mode 100644 index 00000000..2ea6d076 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_detail/request/freightTemplate_detail_request.go @@ -0,0 +1,48 @@ +package freightTemplate_detail_request + +import ( + "encoding/json" +) + +type FreightTemplateDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *FreightTemplateDetailParam +} + +func (c *FreightTemplateDetailRequest) GetUrlPath() string { + return "/freightTemplate/detail" +} + +func New() *FreightTemplateDetailRequest { + request := &FreightTemplateDetailRequest{ + Param: &FreightTemplateDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *FreightTemplateDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*freightTemplate_detail_response.FreightTemplateDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &freightTemplate_detail_response.FreightTemplateDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *FreightTemplateDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *FreightTemplateDetailRequest) GetParams() *FreightTemplateDetailParam { + return c.Param +} + +type FreightTemplateDetailParam struct { + // 模板id + FreightId int64 `json:"freight_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_detail/response/freightTemplate_detail_response.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_detail/response/freightTemplate_detail_response.go new file mode 100644 index 00000000..de57dbae --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_detail/response/freightTemplate_detail_response.go @@ -0,0 +1,88 @@ +package freightTemplate_detail_response + +type FreightTemplateDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *FreightTemplateDetailData `json:"data"` +} +type ColumnsItem struct { + // 首重(单位:kg) 按重量计价必填 0.1-999.9之间的小数,小数点后一位 + FirstWeight float64 `json:"first_weight"` + // 首重价格(单位:元) 按重量计价必填 0.00-30.00之间的小数,小数点后两位 + FirstWeightPrice float64 `json:"first_weight_price"` + // 首件数量(单位:个) 按数量计价必填 1-999的整数 + FirstNum int64 `json:"first_num"` + // 首件价格(单位:元)按数量计价必填 0.00-30.00之间的小数,小数点后两位 + FirstNumPrice float64 `json:"first_num_price"` + // 续重(单位:kg) 按重量计价必填 0.1-999.9之间的小数,小数点后一位 + AddWeight float64 `json:"add_weight"` + // 续重价格(单位:元) 按重量计价必填 0.00-30.00之间的小数,小数点后两位 + AddWeightPrice float64 `json:"add_weight_price"` + // 续件(单位:个) 按数量计价必填 1-999的整数 + AddNum int64 `json:"add_num"` + // 续件价格(单位:元) 按数量计价必填 0.00-30.00之间的小数,小数点后两位 + AddNumPrice float64 `json:"add_num_price"` + // 是否默认计价方式(1:是;0:不是) + IsDefault int64 `json:"is_default"` + // 是否限运规则 + IsLimited bool `json:"is_limited"` + // 是否包邮规则 + IsOverFree bool `json:"is_over_free"` + // 满xx重量包邮(单位:kg)0.1-10.0之间的小数,小数点后一位 + OverWeight float64 `json:"over_weight"` + // 满xx金额包邮(单位:分)10-99900的整数 + OverAmount int64 `json:"over_amount"` + // 满xx件包邮 1-10之间的整数 + OverNum int64 `json:"over_num"` + // 当前规则生效的地址,统一以List结构返回,该结构为嵌套结构。对应的json格式为[{"id":"32","children":[{"id":"320500","children":[{"id":"320508","children":[{"id":"320508014"},{"id":"320508004"}]}]}]}] 注意:返回的为最新的四级地址版本(地址存储升级变更的可能,以最新的返回) + ProvinceInfos []ProvinceInfosItem `json:"province_infos"` +} +type Data struct { + // 模板信息 + Template *Template `json:"template"` + // 规则 + Columns []ColumnsItem `json:"columns"` +} +type FreightTemplateDetailData struct { + // 模板详情 + Data *Data `json:"data"` +} +type Template struct { + // 模板id + Id int64 `json:"id"` + // 模板名称 + TemplateName string `json:"template_name"` + // 发货省份id + ProductProvince string `json:"product_province"` + // 发货城市id + ProductCity string `json:"product_city"` + // 计价方式-1.按重量计价 2.按数量计价 + CalculateType int64 `json:"calculate_type"` + // 快递方式-1.快递 目前仅支持1 + TransferType int64 `json:"transfer_type"` + // 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款 + RuleType int64 `json:"rule_type"` + // 固定运费金额(单位:分) 固定运费模板必填 1-9900之间的整数 + FixedAmount int64 `json:"fixed_amount"` +} +type ChildrenItem struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id string `json:"id"` +} +type ChildrenItem_6 struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id string `json:"id"` + // 下一级地址信息 + Children []ChildrenItem `json:"children"` +} +type ChildrenItem_5 struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id string `json:"id"` + // 下一级地址信息 + Children []ChildrenItem_6 `json:"children"` +} +type ProvinceInfosItem struct { + // 地址id,第一级是省份、第二级是城市、第三级是区、第四级是街道 + Id string `json:"id"` + // 下一级地址信息 + Children []ChildrenItem_5 `json:"children"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_list/request/freightTemplate_list_request.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_list/request/freightTemplate_list_request.go new file mode 100644 index 00000000..f153ddde --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_list/request/freightTemplate_list_request.go @@ -0,0 +1,52 @@ +package freightTemplate_list_request + +import ( + "encoding/json" +) + +type FreightTemplateListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *FreightTemplateListParam +} + +func (c *FreightTemplateListRequest) GetUrlPath() string { + return "/freightTemplate/list" +} + +func New() *FreightTemplateListRequest { + request := &FreightTemplateListRequest{ + Param: &FreightTemplateListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *FreightTemplateListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*freightTemplate_list_response.FreightTemplateListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &freightTemplate_list_response.FreightTemplateListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *FreightTemplateListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *FreightTemplateListRequest) GetParams() *FreightTemplateListParam { + return c.Param +} + +type FreightTemplateListParam struct { + // 运费模板名称,支持模糊搜索 + Name string `json:"name"` + // 页数(默认为0,第一页从0开始) + Page string `json:"page"` + // 每页模板数(默认为10) + Size string `json:"size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_list/response/freightTemplate_list_response.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_list/response/freightTemplate_list_response.go new file mode 100644 index 00000000..4f499035 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_list/response/freightTemplate_list_response.go @@ -0,0 +1,34 @@ +package freightTemplate_list_response + +type FreightTemplateListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *FreightTemplateListData `json:"data"` +} +type ListItem struct { + // 运费模版 + Template *Template `json:"template"` +} +type FreightTemplateListData struct { + // 运费模版列表 + List []ListItem `json:"List"` + // 总数 + Count int64 `json:"Count"` +} +type Template struct { + // 运费模板id,可用于商品发布接口使用 + Id int64 `json:"id"` + // 运费模板名称 + TemplateName string `json:"template_name"` + // 发货省份id + ProductProvince string `json:"product_province"` + // 发货城市id + ProductCity string `json:"product_city"` + // 计价方式-1.按重量计价 2.按数量计价 + CalculateType int64 `json:"calculate_type"` + // 快递方式-1.快递 目前仅支持1 + TransferType int64 `json:"transfer_type"` + // 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款 + RuleType int64 `json:"rule_type"` + // 固定运费金额(单位:分) 固定运费模板必填 1-9900之间的整数 + FixedAmount int64 `json:"fixed_amount"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_update/request/freightTemplate_update_request.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_update/request/freightTemplate_update_request.go new file mode 100644 index 00000000..0ceb9e97 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_update/request/freightTemplate_update_request.go @@ -0,0 +1,100 @@ +package freightTemplate_update_request + +import ( + "encoding/json" +) + +type FreightTemplateUpdateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *FreightTemplateUpdateParam +} + +func (c *FreightTemplateUpdateRequest) GetUrlPath() string { + return "/freightTemplate/update" +} + +func New() *FreightTemplateUpdateRequest { + request := &FreightTemplateUpdateRequest{ + Param: &FreightTemplateUpdateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *FreightTemplateUpdateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*freightTemplate_update_response.FreightTemplateUpdateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &freightTemplate_update_response.FreightTemplateUpdateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *FreightTemplateUpdateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *FreightTemplateUpdateRequest) GetParams() *FreightTemplateUpdateParam { + return c.Param +} + +type Template struct { + // 要更新的运费模板id + Id int64 `json:"id"` + // 模板名称 + TemplateName string `json:"template_name"` + // 发货省份 + ProductProvince int64 `json:"product_province"` + // 发货城市 + ProductCity int64 `json:"product_city"` + // 计价方式-1.按重量 2.按数量 + CalculateType int64 `json:"calculate_type"` + // 快递方式-1.快递 + TransferType int64 `json:"transfer_type"` + // 模板类型-0:阶梯计价 1:固定运费 2:卖家包邮 3:货到付款 + RuleType int64 `json:"rule_type"` + // 固定运费金额(单位:分) 固定运费模板必填 1-9900之间的整数 + FixedAmount int64 `json:"fixed_amount"` +} +type ColumnsItem struct { + // 首重(单位:kg) 按重量计价必填 0.1-999.9之间的小数,小数点后一位 + FirstWeight float64 `json:"first_weight"` + // 首重价格(单位:元) 按重量计价必填 0.00-30.00之间的小数,小数点后两位 + FirstWeightPrice float64 `json:"first_weight_price"` + // 首件数量(单位:个) 按数量计价必填 1-999的整数 + FirstNum int64 `json:"first_num"` + // 首件价格(单位:元)按数量计价必填 0.00-30.00之间的小数,小数点后两位 + FirstNumPrice float64 `json:"first_num_price"` + // 续重(单位:kg) 按重量计价必填 0.1-999.9之间的小数,小数点后一位 + AddWeight float64 `json:"add_weight"` + // 续重价格(单位:元) 按重量计价必填 0.00-30.00之间的小数,小数点后两位 + AddWeightPrice float64 `json:"add_weight_price"` + // 续件(单位:个)calculate_type=2必填 1-999的整数 + AddNum int64 `json:"add_num"` + // 续件价格(单位:元) 按数量计价必填 0.00-30.00之间的小数,小数点后两位 + AddNumPrice float64 `json:"add_num_price"` + // 是否默认计价方式(1:是;0:不是) + IsDefault int64 `json:"is_default"` + // 是否限运规则 + IsLimited bool `json:"is_limited"` + // 当前规则生效的地址,非默认规则必填。map>>>的json格式,省->市->区->街道,仅限售规则支持四级街道 + RuleAddress string `json:"rule_address"` + // 是否包邮规则 + IsOverFree bool `json:"is_over_free"` + // 满xx重量包邮(单位:kg)0.1-10.0之间的小数,小数点后一位 + OverWeight float64 `json:"over_weight"` + // 满xx金额包邮(单位:分)10-99900的整数 + OverAmount int64 `json:"over_amount"` + // 满xx件包邮 1-10之间的整数 + OverNum int64 `json:"over_num"` +} +type FreightTemplateUpdateParam struct { + // 运费模板相关 + Template *Template `json:"template"` + // 运费模板规则信息;每种类型模板可创建的规则类型: 阶梯计价模板-默认规则,普通计价规则,包邮规则,限运规则;固定运费模板-包邮规则,限运规则;固定运费模板-包邮规则,限运规则;包邮模板-限运规则;货到付款模板-限运规则 + Columns []ColumnsItem `json:"columns"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_update/response/freightTemplate_update_response.go b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_update/response/freightTemplate_update_response.go new file mode 100644 index 00000000..53d76aa3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_update/response/freightTemplate_update_response.go @@ -0,0 +1,10 @@ +package freightTemplate_update_response + +type FreightTemplateUpdateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *FreightTemplateUpdateData `json:"data"` +} +type FreightTemplateUpdateData struct { + // 运费模板id + TemplateId int64 `json:"template_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_appendSubOrder/request/logistics_appendSubOrder_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_appendSubOrder/request/logistics_appendSubOrder_request.go new file mode 100644 index 00000000..65031417 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_appendSubOrder/request/logistics_appendSubOrder_request.go @@ -0,0 +1,54 @@ +package logistics_appendSubOrder_request + +import ( + "encoding/json" +) + +type LogisticsAppendSubOrderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsAppendSubOrderParam +} + +func (c *LogisticsAppendSubOrderRequest) GetUrlPath() string { + return "/logistics/appendSubOrder" +} + +func New() *LogisticsAppendSubOrderRequest { + request := &LogisticsAppendSubOrderRequest{ + Param: &LogisticsAppendSubOrderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsAppendSubOrderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_appendSubOrder_response.LogisticsAppendSubOrderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_appendSubOrder_response.LogisticsAppendSubOrderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsAppendSubOrderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsAppendSubOrderRequest) GetParams() *LogisticsAppendSubOrderParam { + return c.Param +} + +type LogisticsAppendSubOrderParam struct { + // 运单号 + TrackNo string `json:"track_no"` + // 物流商编码 + LogisticsCode string `json:"logistics_code"` + // 追加个数 + PackAddQuantity int32 `json:"pack_add_quantity"` + // 是否返回全量的子单号 + IsReturnFullSubCodes bool `json:"is_return_full_sub_codes"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_appendSubOrder/response/logistics_appendSubOrder_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_appendSubOrder/response/logistics_appendSubOrder_response.go new file mode 100644 index 00000000..f9067b90 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_appendSubOrder/response/logistics_appendSubOrder_response.go @@ -0,0 +1,14 @@ +package logistics_appendSubOrder_response + +type LogisticsAppendSubOrderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsAppendSubOrderData `json:"data"` +} +type LogisticsAppendSubOrderData struct { + // 运单号 + TrackNo string `json:"track_no"` + // 子母单数量 + PackQuantity int64 `json:"pack_quantity"` + // 新追加的子单号 + SubWaybillCodes string `json:"sub_waybill_codes"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_cancelOrder/request/logistics_cancelOrder_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_cancelOrder/request/logistics_cancelOrder_request.go new file mode 100644 index 00000000..3dd2d4df --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_cancelOrder/request/logistics_cancelOrder_request.go @@ -0,0 +1,52 @@ +package logistics_cancelOrder_request + +import ( + "encoding/json" +) + +type LogisticsCancelOrderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsCancelOrderParam +} + +func (c *LogisticsCancelOrderRequest) GetUrlPath() string { + return "/logistics/cancelOrder" +} + +func New() *LogisticsCancelOrderRequest { + request := &LogisticsCancelOrderRequest{ + Param: &LogisticsCancelOrderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsCancelOrderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_cancelOrder_response.LogisticsCancelOrderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_cancelOrder_response.LogisticsCancelOrderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsCancelOrderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsCancelOrderRequest) GetParams() *LogisticsCancelOrderParam { + return c.Param +} + +type LogisticsCancelOrderParam struct { + // 物流公司 + LogisticsCode string `json:"logistics_code"` + // 运单号 + TrackNo string `json:"track_no"` + // 实际使用取号服务店铺user_id + UserId int64 `json:"user_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_cancelOrder/response/logistics_cancelOrder_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_cancelOrder/response/logistics_cancelOrder_response.go new file mode 100644 index 00000000..9142a1ab --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_cancelOrder/response/logistics_cancelOrder_response.go @@ -0,0 +1,14 @@ +package logistics_cancelOrder_response + +type LogisticsCancelOrderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsCancelOrderData `json:"data"` +} +type LogisticsCancelOrderData struct { + // 取消状态 + CancelResult *CancelResult `json:"cancel_result"` +} +type CancelResult struct { + // true:取消成功 false 取消失败 + Success bool `json:"success"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_createSFOrder/request/logistics_createSFOrder_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_createSFOrder/request/logistics_createSFOrder_request.go new file mode 100644 index 00000000..da3ba412 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_createSFOrder/request/logistics_createSFOrder_request.go @@ -0,0 +1,132 @@ +package logistics_createSFOrder_request + +import ( + "encoding/json" +) + +type LogisticsCreateSFOrderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsCreateSFOrderParam +} + +func (c *LogisticsCreateSFOrderRequest) GetUrlPath() string { + return "/logistics/createSFOrder" +} + +func New() *LogisticsCreateSFOrderRequest { + request := &LogisticsCreateSFOrderRequest{ + Param: &LogisticsCreateSFOrderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsCreateSFOrderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_createSFOrder_response.LogisticsCreateSFOrderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_createSFOrder_response.LogisticsCreateSFOrderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsCreateSFOrderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsCreateSFOrderRequest) GetParams() *LogisticsCreateSFOrderParam { + return c.Param +} + +type CargoDetailsItem struct { + // 货物名称,如果需要生成电子运单,则为必填 + Name string `json:"name"` + // 货物单价的币别:参照附录币别代码附件 + Currency string `json:"currency"` + // 货物数量, 跨境件报关需要填写 + Count int64 `json:"count"` + // 货物单位,如:个、台、本,跨境件报关需要填写。 + Unit string `json:"unit"` + // 货物单价,精确到小数点后10位,跨境件报关需要填写 + Amount string `json:"amount"` + // 订单货物单位重量,包含子母件,单位千克,精确到小数点后6位跨境件报关需要填写 + Weight string `json:"weight"` + // 原产地国别,跨境件报关需要填写 + SourceArea string `json:"source_area"` +} +type ServiceListItem struct { + // 增值服务名,如COD等 + Name string `json:"name"` + // 增值服务扩展属性,参考增值 + Value string `json:"value"` + // 增值服务扩展属性 + Value1 string `json:"value1"` + // 增值服务扩展属性2 + Value2 string `json:"value2"` + // 增值服务扩展属性3 + Value3 string `json:"value3"` + // 增值服务扩展属性4 + Value4 string `json:"value4"` +} +type ContactInfoListItem struct { + // 地址类型: 1,寄件方信息 2,到件方信息 + ContactType int16 `json:"contact_type"` + // 公司名称 + BizCompany string `json:"biz_company"` + // 联系人 + Contact string `json:"contact"` + // 联系电话(二选一) + Tel string `json:"tel"` + // 手机 + Mobile string `json:"mobile"` + // 国家或地区 2位代码(默认是CN) + Country string `json:"country"` + // 所在省级行政区名称,必须是 标准的省级行政区名称如:北 京、广东省、广西壮族自治区 等;此字段影响原寄地代码识 别 + Province string `json:"province"` + // 所在地级行政区名称,必须是 标准的城市称谓 如:北京市、 深圳市、大理白族自治州等; 此字段影响原寄地代码识别 + City string `json:"city"` + // 所在县/区级行政区名称,必须 是标准的县/区称谓,如:福田 区,南涧彝族自治县、准格尔旗等 + County string `json:"county"` + // 剩余详细地址 + Address string `json:"address"` +} +type LogisticsCreateSFOrderParam struct { + // 订单号;非抖音订单长度仅支持32个字符,格式:数字、大小写字母及“-”、“/”2种分隔符的组合字符串,例如:Doudian-123456 + OrderId string `json:"order_id"` + // 用于拆包场景:包裹id(只能传入数字、字母和下划线;大小写敏感,即123A,123a 不可当做相同ID,否则存在一定可能取号失败)一单一包裹是不需要传,有2个以上时,从第二个开始都需要传不同id 和parcelQty(子母件)最多二选一填,两者可以都不填 + PackId string `json:"pack_id"` + // 托寄物信息 + CargoDetails []CargoDetailsItem `json:"cargo_details"` + // 增值服务信息 + ServiceList []ServiceListItem `json:"service_list"` + // 收寄双方信息(数组长度必须为2) + ContactInfoList []ContactInfoListItem `json:"contact_info_list"` + // 付款方式,支持以下值: 1:寄方付 2:收方付 + PayMethod int16 `json:"pay_method"` + // 快件产品类别,仅 可使用与顺丰销售约定的快件产品 + ExpressTypeId int16 `json:"express_type_id"` + // 子母件场景使用,包裹数,一个包裹对应一个运单号;若包裹数大于1,则返回一个母运单号和N-1个子运单号 和packid(拆包场景)二选一填 + ParcelQty int16 `json:"parcel_qty"` + // 订单货物总重量, 若为子母件必填, 单位千克, 精确到小数点后3 位,如果提供此值, 必须>0 (子母件需>6) + TotalWeight string `json:"total_weight"` + // 是否返回签回单 (签单返还)的运单号, 支持以下值: 1:要求 0:不要求 + IsSignBack int16 `json:"is_sign_back"` + // 备注 + Remark string `json:"remark"` + // 客户订单货物总长,单位厘米, 精确到小数点后3位, 包含子母件 + TotalLength string `json:"total_length"` + // 客户订单货物总宽,单位厘米, 精确到小数点后3位, 包含子母件 + TotalWidth string `json:"total_width"` + // 客户订单货物总高,单位厘米, 精确到小数点后3位, 包含子母件 + TotalHeight string `json:"total_height"` + // 订单货物总体积,单位立方厘米, 精确到小数点后3位,会用于计抛 + Volume string `json:"volume"` + // 共享账号场景下需传,代表实际使用取号服务的shop_id(需与order_id匹配);若无法获取到该shop_id,value传值 -1 + UserId int64 `json:"user_id"` + // 订单渠道来源编码,具体请参考[下单渠道来源编码表](https://bytedance.feishu.cn/sheets/shtcngIVwcJlgXLzWhEtKrmv7Af),当order_id订单号为非抖音订单时必传 + OrderChannel string `json:"order_channel"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_createSFOrder/response/logistics_createSFOrder_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_createSFOrder/response/logistics_createSFOrder_response.go new file mode 100644 index 00000000..0197f949 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_createSFOrder/response/logistics_createSFOrder_response.go @@ -0,0 +1,92 @@ +package logistics_createSFOrder_response + +type LogisticsCreateSFOrderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsCreateSFOrderData `json:"data"` +} +type RouteLabelData struct { + // 运单号 + TrackNo string `json:"track_no"` + // 原寄地中转场 + SourceTransferCode string `json:"source_transfer_code"` + // 原寄地城市代码 + SourceCityCode string `json:"source_city_code"` + // 原寄地网点代码 + SourceDeptCode string `json:"source_dept_code"` + // 原寄地单元区域 + SourceTeamCode string `json:"sourceTeamCode"` + // 目的地城市代码, eg:755 + DestCityCode string `json:"destCityCode"` + // 目的地网点代码, eg:755AQ + DestDeptCode string `json:"destDeptCode"` + // 目的地网点代码映射码 + DestDeptCodeMapping string `json:"dest_dept_code_mapping"` + // 目的地单元区域, eg:001 + DestTeamCode string `json:"dest_team_code"` + // 目的地单元区域映射码 + DestTeamCodeMapping string `json:"dest_team_code_mapping"` + // 目的地中转场 + DestTransferCode string `json:"dest_transfer_code"` + // 打单时的路由标签信息如果 是大网的路由标签,这里的 值是目的地网点代码,如果 是同城配的路由标签,这里 的值是根据同城配的设置映 射出来的值,不同的配置结 果会不一样,不能根据-符 号切分(如:上海同城配,可能 是:集散点-目的地网点-接 驳点,也有可能是目的地网 点代码-集散点-接驳点) + DestRouteLabel string `json:"dest_route_label"` + // 产品名称 对应RLS:pro_name + ProName string `json:"pro_name"` + // 快件内容: 如:C816、SP601 + CargoTypeCode string `json:"cargo_type_code"` + // 时效代码, 如:T4 + LimitTypeCode string `json:"limit_type_code"` + // 产品类型,如:B1 + ExpressTypeCode string `json:"express_type_code"` + // 入港映射码 eg:S10 + CodingMapping string `json:"coding_mapping"` + // 出港映射码 + CodingMappingOut string `json:"coding_mapping_out"` + // XB标志 0:不需要打印XB 1:需要打印XB + XbFlag string `json:"xb_flag"` + // 打印标志 返回值总共有9位,每位只 有0和1两种,0表示按丰密 面单默认的规则,1是显示, 顺序如下,如111110000 表示打印寄方姓名、寄方 电话、寄方公司名、寄方 地址和重量,收方姓名、收 方电话、收方公司和收方 地址按丰密面单默认规则 1:寄方姓名 2:寄方电话 3:寄方公司名 4:寄方地址 5:重量 6:收方姓名 7:收方电话 8:收方公司名 9:收方地址 + PrintFlag string `json:"print_flag"` + // 二维码 根据规则生成字符串信息, 格式为MMM={"k1":"(目的 地中转场代码)","k2":"(目的 地原始网点代码)","k3":"(目 的地单元区域)","k4":"(附件 通过三维码(express_type_code、 limit_type_code、 cargo_type_code)映射时效类型)","k5":"(运单 号)","k6":"(AB标识)","k7":"( 校验码)"} (ISV自身做逻辑展示) + TwoDimensionCode string `json:"two_dimension_code"` + // 时效类型: 值为二维码中的K4 + ProCode string `json:"pro_code"` + // 打印图标,根据托寄物判断需 要打印的图标(重货,蟹类,生鲜,易碎,Z标) 返回值有8位,每一位只有0和1两种, 0表示按运单默认的规则, 1表示显示。后面两位默认0备用。 顺序如下:重货,蟹类,生鲜,易碎,医药类,Z标,0,0 如:00000000表示不需要打印重货,蟹类,生鲜,易碎 ,医药,Z标,备用,备用 + PrintIcon string `json:"print_icon"` + // AB标 + AbFlag string `json:"ab_flag"` + // 查询出现异常时返回信息。 返回代码: 0 系统异常 1 未找到面单 + ErrMsg string `json:"err_msg"` +} +type RouteLabelInfo struct { + // 返回调用结果,1000:调用成功;其他调用失败 + Code string `json:"code"` + // 路由标签数据详细数据 + RouteLabelData *RouteLabelData `json:"route_label_data"` + // 失败异常描述 + Message string `json:"message"` +} +type LogisticsCreateSFOrderData struct { + // 订单号 + OrderId string `json:"order_id"` + // 包裹id + PackId string `json:"pack_id"` + // 原寄地区域代码,可用于顺丰 电子运单标签打印 + OriginCode string `json:"origin_code"` + // 目的地区域代码,可用于顺丰 电子运单标签打印 + DestCode string `json:"dest_code"` + // 筛单结果: 1:人工确认 2:可收派 3:不可以收派 + FilterResult int16 `json:"filter_result"` + // 如果filter_result=3时为必填, 不可以收派的原因代码: 1:收方超范围 2:派方超范围 3:其它原因 高峰管控提示信息 【数字】:【高峰管控提示信息】 + Remark string `json:"remark"` + // 顺丰运单号 + WaybillNoInfoList []WaybillNoInfoListItem `json:"waybill_no_info_list"` + // 路由标签 + RouteLabelInfo *RouteLabelInfo `json:"route_label_info"` + // 2;具体请看文档映射表 + OrderChannel string `json:"order_channel"` +} +type WaybillNoInfoListItem struct { + // 运单号类型: 1:母单 2 :子单 3 : 签回单 + WaybillType int16 `json:"waybill_type"` + // 运单号 + TrackNo string `json:"track_no"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_customTemplateList/request/logistics_customTemplateList_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_customTemplateList/request/logistics_customTemplateList_request.go new file mode 100644 index 00000000..fd11debb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_customTemplateList/request/logistics_customTemplateList_request.go @@ -0,0 +1,48 @@ +package logistics_customTemplateList_request + +import ( + "encoding/json" +) + +type LogisticsCustomTemplateListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsCustomTemplateListParam +} + +func (c *LogisticsCustomTemplateListRequest) GetUrlPath() string { + return "/logistics/customTemplateList" +} + +func New() *LogisticsCustomTemplateListRequest { + request := &LogisticsCustomTemplateListRequest{ + Param: &LogisticsCustomTemplateListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsCustomTemplateListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_customTemplateList_response.LogisticsCustomTemplateListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_customTemplateList_response.LogisticsCustomTemplateListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsCustomTemplateListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsCustomTemplateListRequest) GetParams() *LogisticsCustomTemplateListParam { + return c.Param +} + +type LogisticsCustomTemplateListParam struct { + // 物流商编码 + LogisticsCode string `json:"logistics_code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_customTemplateList/response/logistics_customTemplateList_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_customTemplateList/response/logistics_customTemplateList_response.go new file mode 100644 index 00000000..204aa58d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_customTemplateList/response/logistics_customTemplateList_response.go @@ -0,0 +1,26 @@ +package logistics_customTemplateList_response + +type LogisticsCustomTemplateListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsCustomTemplateListData `json:"data"` +} +type CustomTemplateInfosItem struct { + // 自定义模板code + CustomTemplateCode string `json:"custom_template_code"` + // 自定义区模板url(URL资源的内容为xml格式的报文) + CustomTemplateUrl string `json:"custom_template_url"` + // 自定义区模板名称 + CustomTemplateName string `json:"custom_template_name"` + // 父模板code(查询标准模板API中返回的template_code) + ParentTemplateCode string `json:"parent_template_code"` +} +type CustomTemplateDataItem struct { + // 物流商编码 + LogisticsCode string `json:"logistics_code"` + // 用户使用的模板数据 + CustomTemplateInfos []CustomTemplateInfosItem `json:"custom_template_infos"` +} +type LogisticsCustomTemplateListData struct { + // 自定义模板的数据列表 + CustomTemplateData []CustomTemplateDataItem `json:"custom_template_data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_deliveryNotice/request/logistics_deliveryNotice_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_deliveryNotice/request/logistics_deliveryNotice_request.go new file mode 100644 index 00000000..3e6facd5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_deliveryNotice/request/logistics_deliveryNotice_request.go @@ -0,0 +1,50 @@ +package logistics_deliveryNotice_request + +import ( + "encoding/json" +) + +type LogisticsDeliveryNoticeRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsDeliveryNoticeParam +} + +func (c *LogisticsDeliveryNoticeRequest) GetUrlPath() string { + return "/logistics/deliveryNotice" +} + +func New() *LogisticsDeliveryNoticeRequest { + request := &LogisticsDeliveryNoticeRequest{ + Param: &LogisticsDeliveryNoticeParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsDeliveryNoticeRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_deliveryNotice_response.LogisticsDeliveryNoticeResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_deliveryNotice_response.LogisticsDeliveryNoticeResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsDeliveryNoticeRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsDeliveryNoticeRequest) GetParams() *LogisticsDeliveryNoticeParam { + return c.Param +} + +type LogisticsDeliveryNoticeParam struct { + // 运单号 + WaybillNo string `json:"waybill_no"` + // 放行/回退 + NoticeType string `json:"notice_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_deliveryNotice/response/logistics_deliveryNotice_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_deliveryNotice/response/logistics_deliveryNotice_response.go new file mode 100644 index 00000000..be0a36e5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_deliveryNotice/response/logistics_deliveryNotice_response.go @@ -0,0 +1,10 @@ +package logistics_deliveryNotice_response + +type LogisticsDeliveryNoticeResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsDeliveryNoticeData `json:"data"` +} +type LogisticsDeliveryNoticeData struct { + // 是否成功 + Result bool `json:"result"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getCustomTemplateList/request/logistics_getCustomTemplateList_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getCustomTemplateList/request/logistics_getCustomTemplateList_request.go new file mode 100644 index 00000000..81db62f2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getCustomTemplateList/request/logistics_getCustomTemplateList_request.go @@ -0,0 +1,48 @@ +package logistics_getCustomTemplateList_request + +import ( + "encoding/json" +) + +type LogisticsGetCustomTemplateListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsGetCustomTemplateListParam +} + +func (c *LogisticsGetCustomTemplateListRequest) GetUrlPath() string { + return "/logistics/getCustomTemplateList" +} + +func New() *LogisticsGetCustomTemplateListRequest { + request := &LogisticsGetCustomTemplateListRequest{ + Param: &LogisticsGetCustomTemplateListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsGetCustomTemplateListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_getCustomTemplateList_response.LogisticsGetCustomTemplateListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_getCustomTemplateList_response.LogisticsGetCustomTemplateListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsGetCustomTemplateListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsGetCustomTemplateListRequest) GetParams() *LogisticsGetCustomTemplateListParam { + return c.Param +} + +type LogisticsGetCustomTemplateListParam struct { + // 物流服务商编码(若为空代表查询全部) + LogisticsCode string `json:"logistics_code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getCustomTemplateList/response/logistics_getCustomTemplateList_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getCustomTemplateList/response/logistics_getCustomTemplateList_response.go new file mode 100644 index 00000000..423b589d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getCustomTemplateList/response/logistics_getCustomTemplateList_response.go @@ -0,0 +1,32 @@ +package logistics_getCustomTemplateList_response + +type LogisticsGetCustomTemplateListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsGetCustomTemplateListData `json:"data"` +} +type CustomTemplateInfosItem struct { + // 自定义区模板code + CustomTemplateCode string `json:"custom_template_code"` + // 自定义区模板名称 + CustomTemplateName string `json:"custom_template_name"` + // 父模板code(查询标准模板API中返回的template_code) + ParentTemplateCode string `json:"parent_template_code"` + // 自定义区模板url(URL资源的内容为xml格式的报文) + CustomTemplateUrl string `json:"custom_template_url"` + // customTemplateKeyList(打印项中字段列表) + CustomTemplateKeyList []string `json:"custom_template_key_list"` + // 自定义区模板id + CustomTemplateId int64 `json:"custom_template_id"` + // 父模板id + ParentTemplateId int64 `json:"parent_template_id"` +} +type CustomTemplateDataItem struct { + // 物流服务商编码 + LogisticsCode string `json:"logistics_code"` + // 用户使用的模板数据 + CustomTemplateInfos []CustomTemplateInfosItem `json:"custom_template_infos"` +} +type LogisticsGetCustomTemplateListData struct { + // 商家所有快递自定义模板的数据列表 + CustomTemplateData []CustomTemplateDataItem `json:"custom_template_data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getDesignTemplateList/request/logistics_getDesignTemplateList_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getDesignTemplateList/request/logistics_getDesignTemplateList_request.go new file mode 100644 index 00000000..6876697f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getDesignTemplateList/request/logistics_getDesignTemplateList_request.go @@ -0,0 +1,46 @@ +package logistics_getDesignTemplateList_request + +import ( + "encoding/json" +) + +type LogisticsGetDesignTemplateListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsGetDesignTemplateListParam +} + +func (c *LogisticsGetDesignTemplateListRequest) GetUrlPath() string { + return "/logistics/getDesignTemplateList" +} + +func New() *LogisticsGetDesignTemplateListRequest { + request := &LogisticsGetDesignTemplateListRequest{ + Param: &LogisticsGetDesignTemplateListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsGetDesignTemplateListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_getDesignTemplateList_response.LogisticsGetDesignTemplateListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_getDesignTemplateList_response.LogisticsGetDesignTemplateListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsGetDesignTemplateListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsGetDesignTemplateListRequest) GetParams() *LogisticsGetDesignTemplateListParam { + return c.Param +} + +type LogisticsGetDesignTemplateListParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getDesignTemplateList/response/logistics_getDesignTemplateList_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getDesignTemplateList/response/logistics_getDesignTemplateList_response.go new file mode 100644 index 00000000..b0192b3e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getDesignTemplateList/response/logistics_getDesignTemplateList_response.go @@ -0,0 +1,20 @@ +package logistics_getDesignTemplateList_response + +type LogisticsGetDesignTemplateListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsGetDesignTemplateListData `json:"data"` +} +type DesignTemplateDataItem struct { + // 自定义模板code + DesignTemplateCode string `json:"design_template_code"` + // 自定义模板名称 + DesignTemplateName string `json:"design_template_name"` + // 自定义模板url + DesignTemplateUrl string `json:"design_template_url"` + // 打印项中字段列表 + DesignTemplateKeyList []string `json:"design_template_key_list"` +} +type LogisticsGetDesignTemplateListData struct { + // 已发布的自定义模板列表 + DesignTemplateData []DesignTemplateDataItem `json:"design_template_data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getOutRange/request/logistics_getOutRange_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getOutRange/request/logistics_getOutRange_request.go new file mode 100644 index 00000000..3b4c6eaa --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getOutRange/request/logistics_getOutRange_request.go @@ -0,0 +1,100 @@ +package logistics_getOutRange_request + +import ( + "encoding/json" +) + +type LogisticsGetOutRangeRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsGetOutRangeParam +} + +func (c *LogisticsGetOutRangeRequest) GetUrlPath() string { + return "/logistics/getOutRange" +} + +func New() *LogisticsGetOutRangeRequest { + request := &LogisticsGetOutRangeRequest{ + Param: &LogisticsGetOutRangeParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsGetOutRangeRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_getOutRange_response.LogisticsGetOutRangeResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_getOutRange_response.LogisticsGetOutRangeResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsGetOutRangeRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsGetOutRangeRequest) GetParams() *LogisticsGetOutRangeParam { + return c.Param +} + +type ServiceListItem struct { + // code + ServiceCode string `json:"service_code"` + // value + ServiceValue string `json:"service_value"` +} +type DeliveryReq struct { + // 是否接受仅镇中心派送 目前仅支持德邦 + IsCenterDelivery bool `json:"is_center_delivery"` + // 是否接受合伙人自提,目前仅支持德邦 + IsPickupSelf bool `json:"is_pickup_self"` +} +type LogisticsGetOutRangeParam struct { + // 快递公司编码 + LogisticsCode string `json:"logistics_code"` + // 发货地址 + SenderAddress *SenderAddress `json:"sender_address"` + // 收件地址 + ReceiverAddress *ReceiverAddress `json:"receiver_address"` + // 类型(0-揽派合一;1-揽收区域;2-派送区域) 0:取senderAddress, receiverAddress值 1:取senderAddress值 2:取receiverAddress值 + Type int16 `json:"type"` + // 增值服务 目前只支持德邦 + ServiceList []ServiceListItem `json:"service_list"` + // 产品类型 目前只支持德邦 + ProductType string `json:"product_type"` + // 投递要求 目前只支持德邦 + DeliveryReq *DeliveryReq `json:"delivery_req"` +} +type SenderAddress struct { + // CHN + CountryCode string `json:"country_code"` + // 省份名称 + ProvinceName string `json:"province_name"` + // 城市名称 + CityName string `json:"city_name"` + // 区名称 + DistrictName string `json:"district_name"` + // 街道名称 + StreetName string `json:"street_name"` + // 详细地址 + DetailAddress string `json:"detail_address"` +} +type ReceiverAddress struct { + // CHN + CountryCode string `json:"country_code"` + // 省份名称 + ProvinceName string `json:"province_name"` + // 城市名称 + CityName string `json:"city_name"` + // 区名称 + DistrictName string `json:"district_name"` + // 街道名称 + StreetName string `json:"street_name"` + // 详细地址,支持密文 + DetailAddress string `json:"detail_address"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getOutRange/response/logistics_getOutRange_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getOutRange/response/logistics_getOutRange_response.go new file mode 100644 index 00000000..c1530dff --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getOutRange/response/logistics_getOutRange_response.go @@ -0,0 +1,12 @@ +package logistics_getOutRange_response + +type LogisticsGetOutRangeResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsGetOutRangeData `json:"data"` +} +type LogisticsGetOutRangeData struct { + // 是否超区响应结果(超区-true;未超区-fasle) + IsOutRange bool `json:"is_out_range"` + // 超区原因 + OutRangeReason string `json:"out_range_reason"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getShopKey/request/logistics_getShopKey_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getShopKey/request/logistics_getShopKey_request.go new file mode 100644 index 00000000..1076860b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getShopKey/request/logistics_getShopKey_request.go @@ -0,0 +1,50 @@ +package logistics_getShopKey_request + +import ( + "encoding/json" +) + +type LogisticsGetShopKeyRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsGetShopKeyParam +} + +func (c *LogisticsGetShopKeyRequest) GetUrlPath() string { + return "/logistics/getShopKey" +} + +func New() *LogisticsGetShopKeyRequest { + request := &LogisticsGetShopKeyRequest{ + Param: &LogisticsGetShopKeyParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsGetShopKeyRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_getShopKey_response.LogisticsGetShopKeyResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_getShopKey_response.LogisticsGetShopKeyResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsGetShopKeyRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsGetShopKeyRequest) GetParams() *LogisticsGetShopKeyParam { + return c.Param +} + +type LogisticsGetShopKeyParam struct { + // 打印密文 + CipherText string `json:"cipher_text"` + // 设备信息 + DeviceInfo string `json:"deviceInfo"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_getShopKey/response/logistics_getShopKey_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_getShopKey/response/logistics_getShopKey_response.go new file mode 100644 index 00000000..4791714c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_getShopKey/response/logistics_getShopKey_response.go @@ -0,0 +1,10 @@ +package logistics_getShopKey_response + +type LogisticsGetShopKeyResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsGetShopKeyData `json:"data"` +} +type LogisticsGetShopKeyData struct { + // 公钥加密后的对称密钥,用于解密电子面单密文 + Key string `json:"key"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_listShopNetsite/request/logistics_listShopNetsite_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_listShopNetsite/request/logistics_listShopNetsite_request.go new file mode 100644 index 00000000..bf42ba2c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_listShopNetsite/request/logistics_listShopNetsite_request.go @@ -0,0 +1,48 @@ +package logistics_listShopNetsite_request + +import ( + "encoding/json" +) + +type LogisticsListShopNetsiteRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsListShopNetsiteParam +} + +func (c *LogisticsListShopNetsiteRequest) GetUrlPath() string { + return "/logistics/listShopNetsite" +} + +func New() *LogisticsListShopNetsiteRequest { + request := &LogisticsListShopNetsiteRequest{ + Param: &LogisticsListShopNetsiteParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsListShopNetsiteRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_listShopNetsite_response.LogisticsListShopNetsiteResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_listShopNetsite_response.LogisticsListShopNetsiteResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsListShopNetsiteRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsListShopNetsiteRequest) GetParams() *LogisticsListShopNetsiteParam { + return c.Param +} + +type LogisticsListShopNetsiteParam struct { + // 物流服务商编码(想获取全量物流,则传空字符串) + LogisticsCode string `json:"logistics_code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_listShopNetsite/response/logistics_listShopNetsite_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_listShopNetsite/response/logistics_listShopNetsite_response.go new file mode 100644 index 00000000..d1b88cd3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_listShopNetsite/response/logistics_listShopNetsite_response.go @@ -0,0 +1,46 @@ +package logistics_listShopNetsite_response + +type LogisticsListShopNetsiteResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsListShopNetsiteData `json:"data"` +} +type SenderAddressItem struct { + // 省名称 + ProvinceName string `json:"province_name"` + // 市名称 + CityName string `json:"city_name"` + // 区/县名称 + DistrictName string `json:"district_name"` + // 街道名称 + StreetName string `json:"street_name"` + // 剩余详细地址 + DetailAddress string `json:"detail_address"` +} +type NetsitesItem struct { + // 网点Code + NetsiteCode string `json:"netsite_code"` + // 网点名称 + NetsiteName string `json:"netsite_name"` + // 电子面单余额数量 + Amount string `json:"amount"` + // 寄件人地址 + SenderAddress []SenderAddressItem `json:"sender_address"` + // 已取单号数量,若业务本身无值,则传-1,前端可展示为“-” + AllocatedQuantity int64 `json:"allocated_quantity"` + // 已取消单号数量,若业务本身无值,则传-1,前端可展示为“-” + CancelledQuantity int64 `json:"cancelled_quantity"` + // 已回收单号数量,若业务本身无值,则传-1,前端可展示为“-” + RecycledQuantity int64 `json:"recycled_quantity"` + // 快递公司编码 + Company string `json:"company"` + // 物流服务商业务类型 1:直营 2:加盟 3:落地配 4:直营带网点 + CompanyType int16 `json:"company_type"` +} +type LogisticsListShopNetsiteData struct { + // 商家已开通的网点列表信息 + Netsites []NetsitesItem `json:"netsites"` + // 快递公司编码 + LogisticsCode string `json:"logistics_code"` + // 物流服务商业务类型 1:直营 2:加盟 3:落地配 4:直营带网点 + CompanyType int16 `json:"company_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_newCreateOrder/request/logistics_newCreateOrder_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_newCreateOrder/request/logistics_newCreateOrder_request.go new file mode 100644 index 00000000..c5a8a63e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_newCreateOrder/request/logistics_newCreateOrder_request.go @@ -0,0 +1,226 @@ +package logistics_newCreateOrder_request + +import ( + "encoding/json" +) + +type LogisticsNewCreateOrderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsNewCreateOrderParam +} + +func (c *LogisticsNewCreateOrderRequest) GetUrlPath() string { + return "/logistics/newCreateOrder" +} + +func New() *LogisticsNewCreateOrderRequest { + request := &LogisticsNewCreateOrderRequest{ + Param: &LogisticsNewCreateOrderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsNewCreateOrderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_newCreateOrder_response.LogisticsNewCreateOrderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_newCreateOrder_response.LogisticsNewCreateOrderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsNewCreateOrderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsNewCreateOrderRequest) GetParams() *LogisticsNewCreateOrderParam { + return c.Param +} + +type Warehouse struct { + // true 总对总门店发货 + IsSumUp bool `json:"is_sum_up"` + // 仓库id编码 + WhCode string `json:"wh_code"` + // 仓库订单号(丹鸟等仓发链路使用) + WhOrderNo string `json:"wh_order_no"` + // 发货方式,2-门店发货 3-仓库发货(不传默认为3) + DeliveryType string `json:"delivery_type"` +} +type OrderInfosItem struct { + // 订单号(合单情况下,isv只需传其中一个订单号,传入的订单号需去掉末尾后缀字母A);非抖音订单长度仅支持32个字符,格式:数字、大小写字母及“-”、“/”2种分隔符的组合字符串,例如:Doudian-123456 + OrderId string `json:"order_id"` + // 包裹id(只能传入数字、字母和下划线;大小写敏感,即123A,123a 不可当做相同ID,否则存在一定可能取号失败)一单一包裹是不需要传,有2个以上时,从第二个开始都需要传不同id + PackId string `json:"pack_id"` + // 增值服务列表,更多增值服务参考[抖音电商电子面单对接文档](https://op.jinritemai.com/docs/guide-docs/78/338) + ServiceList []ServiceListItem `json:"service_list"` + // 快递产品类型 + ProductType string `json:"product_type"` + // 支付方式:1-寄付月结,2-寄付现结)若不传,默认为商家与物流商网点约定的支付方式 + PayMethod int16 `json:"pay_method"` + // 运费金额,单位为分 + PayAmount int64 `json:"pay_amount"` + // 回单寄回地址 + PodModelAddress *PodModelAddress `json:"pod_model_address"` + // 收件人信息 + ReceiverInfo *ReceiverInfo `json:"receiver_info"` + // 商品明细列表 + Items []ItemsItem `json:"items"` + // 要求上门取件时间段 + SenderFetchTime string `json:"sender_fetch_time"` + // 是否返回签回单(签单返还)的运单号,支持以下值:1:要求 0:不要求\" + IsSignBack int16 `json:"is_sign_back"` + // 订单备注 + Remark string `json:"remark"` + // 备用扩展字段(非必传字段,如果传值不可为"null",按照示例来传。) + Extra string `json:"extra"` + // 包裹数量包含了母单号和子单号数量,所以如果商家发母子件,包裹数量必须≥2才可以 不传默认就是一单一包裹 + TotalPackCount int32 `json:"total_pack_count"` + // 商品总重量,单位:克(仅支持顺丰物流使用) + TotalWeight string `json:"total_weight"` + // 商品总长,单位:cm(仅支持顺丰物流使用) + TotalLength string `json:"total_length"` + // 商品总宽,单位:cm(仅支持顺丰物流使用) + TotalWidth string `json:"total_width"` + // 商品总高,单位:cm(仅支持顺丰物流使用) + TotalHeight string `json:"total_height"` + // 商品总体积,单位:cm3(仅支持顺丰物流使用) + Volume string `json:"volume"` + // 仓、门店、总对总发货 + Warehouse *Warehouse `json:"warehouse"` + // 总对总信息门店信息 + NetInfo *NetInfo `json:"net_info"` + // 物料码 + ShippingCode string `json:"shipping_code"` + // 顺丰极效前置场景(必填)使用 2:极效前置单 + SpecialDeliveryTypeCode string `json:"special_delivery_type_code"` + // 顺丰极效前置场景(必填)使用 Y:若不支持则返回普通运单 N:若不支持则返回错误码 + SpecialDeliveryTypeValue string `json:"special_delivery_type_value"` + // 包裹总重量(g) + PackageWeight int32 `json:"package_weight"` +} +type Address struct { + // 国家编码(默认CHN,目前只有国内业务) + CountryCode string `json:"country_code"` + // 省名称 + ProvinceName string `json:"province_name"` + // 市名称 + CityName string `json:"city_name"` + // 区/县名称 + DistrictName string `json:"district_name"` + // 街道名称 + StreetName string `json:"street_name"` + // 剩余详细地址 + DetailAddress string `json:"detail_address"` +} +type Contact struct { + // 寄件人姓名 + Name string `json:"name"` + // 寄件人固话(和mobile二选一) + Phone string `json:"phone"` + // 寄件人移动电话(和phone二选一) + Mobile string `json:"mobile"` +} +type ServiceListItem struct { + // 增值服务类型 + ServiceCode string `json:"service_code"` + // 增值服务对应的value值,如果增值类型涉及金额会校验,单位:分 + ServiceValue string `json:"service_value"` +} +type PodModelAddress struct { + // 国家编码(默认CHN,目前只有国内业务) + CountryCode string `json:"country_code"` + // 省名称 + ProvinceName string `json:"province_name"` + // 市名称 + CityName string `json:"city_name"` + // 区/县名称 + DistrictName string `json:"district_name"` + // 街道名称 + StreetName string `json:"street_name"` + // 剩余详细地址 + DetailAddress string `json:"detail_address"` +} +type ReceiverInfo struct { + // 收件人地址信息 + Address *Address_4_4 `json:"address"` + // 收件人联系信息 + Contact *Contact `json:"contact"` +} +type ItemsItem struct { + // 商品名称 + ItemName string `json:"item_name"` + // 商品规格 + ItemSpecs string `json:"item_specs"` + // 商品数量 + ItemCount int32 `json:"item_count"` + // 单件商品体积(cm3 + ItemVolume int32 `json:"item_volume"` + // 单件商品重量(g) + ItemWeight int32 `json:"item_weight"` + // 单件总净重量(g) + ItemNetWeight int32 `json:"item_net_weight"` +} +type DeliveryReq struct { + // true + IsCenterDelivery bool `json:"is_center_delivery"` + // true + IsPickupSelf bool `json:"is_pickup_self"` +} +type SenderInfo struct { + // 寄件人地址信息 + Address *Address `json:"address"` + // 寄件人联系信息 + Contact *Contact `json:"contact"` +} +type Address_4_4 struct { + // 国家编码(默认中国CHN) + CountryCode string `json:"country_code"` + // 省名称 + ProvinceName string `json:"province_name"` + // 市名称 + CityName string `json:"city_name"` + // 区/县名称 + DistrictName string `json:"district_name"` + // 街道名称。街道名称(street_name)和街道code(street_code),若传入时,需要一起传入。 + StreetName string `json:"street_name"` + // 剩余详细地址,支持密文 + DetailAddress string `json:"detail_address"` + // 省编码code + ProvinceCode string `json:"province_code"` + // 市编码code + CityCode string `json:"city_code"` + // 区编码code + DistrictCode string `json:"district_code"` + // 街道编码code + StreetCode string `json:"street_code"` +} +type NetInfo struct { + // 物流服务商类型,直营/加盟 + Category string `json:"category"` + // 网点编码,当category为加盟类型时,该字段必填;为直营类型时可不传;对总模式该字段均为非必填 + NetCode string `json:"net_code"` + // 总对总账号 月结账号 + MonthlyAccount string `json:"monthly_account"` + // 总对总密码 + SecretKey string `json:"secret_key"` +} +type LogisticsNewCreateOrderParam struct { + // 寄件人信息 + SenderInfo *SenderInfo `json:"sender_info"` + // 物流服务商编码 + LogisticsCode string `json:"logistics_code"` + // 详细订单列表 + OrderInfos []OrderInfosItem `json:"order_infos"` + // 共享账号场景下需传,代表实际使用取号服务的shop_id(需与order_id匹配);若无法获取到该shop_id,value传值 -1 + UserId int64 `json:"user_id"` + // 派送要求(目前仅德邦支持) + DeliveryReq *DeliveryReq `json:"delivery_req"` + // 订单渠道来源编码,具体请参考[下单渠道来源编码表](https://bytedance.feishu.cn/sheets/shtcngIVwcJlgXLzWhEtKrmv7Af),当order_id订单号为非抖音订单时必传 + OrderChannel string `json:"order_channel"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_newCreateOrder/response/logistics_newCreateOrder_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_newCreateOrder/response/logistics_newCreateOrder_response.go new file mode 100644 index 00000000..56de6ce7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_newCreateOrder/response/logistics_newCreateOrder_response.go @@ -0,0 +1,50 @@ +package logistics_newCreateOrder_response + +type LogisticsNewCreateOrderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsNewCreateOrderData `json:"data"` +} +type EbillInfosItem struct { + // 订单号 + OrderId string `json:"order_id"` + // 包裹id + PackId string `json:"pack_id"` + // 运单号 + TrackNo string `json:"track_no"` + // 分拣码(三段码) + SortCode string `json:"sort_code"` + // 集包地代码 + PackageCenterCode string `json:"package_center_code"` + // 集包名称 + PackageCenterName string `json:"package_center_name"` + // 大头笔编码 + ShortAddressCode string `json:"short_address_code"` + // 大头笔名称 + ShortAddressName string `json:"short_address_name"` + // 额外打印信息(众邮、京东、丰网使用),具体请参考[抖音电商电子面单对接文档](https://op.jinritemai.com/docs/guide-docs/33/338)附录4 + ExtraResp string `json:"extra_resp"` + // 子母件列表英文逗号分隔 + SubWaybillCodes string `json:"sub_waybill_codes"` + // 2;详情请看文档映射表 + OrderChannel string `json:"order_channel"` + // 快递商侧系统生成的寄件码 + ShippingCode string `json:"shipping_code"` +} +type ErrInfosItem struct { + // 订单号 + OrderId string `json:"order_id"` + // 包裹id + PackId string `json:"pack_id"` + // 错误码 + ErrCode string `json:"err_code"` + // 错误信息 + ErrMsg string `json:"err_msg"` + // 2;详情请看文档映射表 + OrderChannel string `json:"order_channel"` +} +type LogisticsNewCreateOrderData struct { + // 电子面单信息列表 + EbillInfos []EbillInfosItem `json:"ebill_infos"` + // 错误信息列表 + ErrInfos []ErrInfosItem `json:"err_infos"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_queryPackageRoute/request/logistics_queryPackageRoute_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_queryPackageRoute/request/logistics_queryPackageRoute_request.go new file mode 100644 index 00000000..f73d7753 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_queryPackageRoute/request/logistics_queryPackageRoute_request.go @@ -0,0 +1,78 @@ +package logistics_queryPackageRoute_request + +import ( + "encoding/json" +) + +type LogisticsQueryPackageRouteRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsQueryPackageRouteParam +} + +func (c *LogisticsQueryPackageRouteRequest) GetUrlPath() string { + return "/logistics/queryPackageRoute" +} + +func New() *LogisticsQueryPackageRouteRequest { + request := &LogisticsQueryPackageRouteRequest{ + Param: &LogisticsQueryPackageRouteParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsQueryPackageRouteRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_queryPackageRoute_response.LogisticsQueryPackageRouteResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_queryPackageRoute_response.LogisticsQueryPackageRouteResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsQueryPackageRouteRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsQueryPackageRouteRequest) GetParams() *LogisticsQueryPackageRouteParam { + return c.Param +} + +type Sender struct { + // 寄件人姓名 + Name string `json:"name"` + // 手机号 + Phone string `json:"phone"` + // 手机号 + Mobile string `json:"mobile"` + // 邮箱 + Email string `json:"email"` + // 虚拟手机号 + VirtualMobile string `json:"virtual_mobile"` +} +type LogisticsQueryPackageRouteParam struct { + // 运单号 + TrackNo string `json:"track_no"` + // 物流公司 + Express string `json:"express"` + // 收件人 + Receiver *Receiver `json:"receiver"` + // 寄件人 + Sender *Sender `json:"sender"` +} +type Receiver struct { + // 收件人姓名 + Name string `json:"name"` + // 手机号 + Phone string `json:"phone"` + // 手机号 + Mobile string `json:"mobile"` + // 邮箱 + Email string `json:"email"` + // 虚拟手机号 + VirtualMobile string `json:"virtual_mobile"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_queryPackageRoute/response/logistics_queryPackageRoute_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_queryPackageRoute/response/logistics_queryPackageRoute_response.go new file mode 100644 index 00000000..c78b5dd9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_queryPackageRoute/response/logistics_queryPackageRoute_response.go @@ -0,0 +1,28 @@ +package logistics_queryPackageRoute_response + +type LogisticsQueryPackageRouteResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsQueryPackageRouteData `json:"data"` +} +type LogisticsQueryPackageRouteData struct { + // 数据 + Data *Data `json:"data"` +} +type TrackRoutesItem struct { + // 内容 + Content string `json:"content"` + // 状态 + State string `json:"state"` + // 时间 + StateTime int64 `json:"state_time"` + // code + Opcode string `json:"opcode"` +} +type Data struct { + // 运单号 + TrackNo string `json:"track_no"` + // 快递商 + Express string `json:"express"` + // 轨迹 + TrackRoutes []TrackRoutesItem `json:"track_routes"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_registerPackageRoute/request/logistics_registerPackageRoute_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_registerPackageRoute/request/logistics_registerPackageRoute_request.go new file mode 100644 index 00000000..05656992 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_registerPackageRoute/request/logistics_registerPackageRoute_request.go @@ -0,0 +1,134 @@ +package logistics_registerPackageRoute_request + +import ( + "encoding/json" +) + +type LogisticsRegisterPackageRouteRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsRegisterPackageRouteParam +} + +func (c *LogisticsRegisterPackageRouteRequest) GetUrlPath() string { + return "/logistics/registerPackageRoute" +} + +func New() *LogisticsRegisterPackageRouteRequest { + request := &LogisticsRegisterPackageRouteRequest{ + Param: &LogisticsRegisterPackageRouteParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsRegisterPackageRouteRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_registerPackageRoute_response.LogisticsRegisterPackageRouteResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_registerPackageRoute_response.LogisticsRegisterPackageRouteResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsRegisterPackageRouteRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsRegisterPackageRouteRequest) GetParams() *LogisticsRegisterPackageRouteParam { + return c.Param +} + +type Sender struct { + // 联系人 + Contact *Contact `json:"contact"` + // 地址 + Address *Address `json:"address"` +} +type CargoListItem struct { + // 名称 + Name string `json:"name"` + // 质量 + Quantity int32 `json:"quantity"` + // 体积 + Volume int32 `json:"volume"` + // 总重 + TotalWeight int32 `json:"total_weight"` + // 净重 + TotalNetWeight int32 `json:"total_net_weight"` + // 单位 + Unit string `json:"unit"` +} +type LogisticsRegisterPackageRouteParam struct { + // 物流商 + Express string `json:"express"` + // 运单号 + TrackNo string `json:"track_no"` + // 外部单据id + OuterOrderId string `json:"outer_order_id"` + // 外部子单据id + OuterSubOrderId string `json:"outer_sub_order_id"` + // 回调url + CallbackUrl string `json:"callback_url"` + // 收件人 + Receiver *Receiver `json:"receiver"` + // 寄件人 + Sender *Sender `json:"sender"` + // 货品列表 + CargoList []CargoListItem `json:"cargo_list"` + // 拓展 + Extend map[string]string `json:"extend"` +} +type Province struct { + // 省 + Name string `json:"name"` + // code + Code string `json:"code"` +} +type City struct { + // 市 + Name string `json:"name"` + // code + Code string `json:"code"` +} +type Address struct { + // 省 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 区 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细地址 + Detail string `json:"detail"` +} +type Receiver struct { + // 联系人 + Contact *Contact `json:"contact"` + // 地址 + Address *Address `json:"address"` +} +type Contact struct { + // 姓名 + Name string `json:"name"` + // 手机号 + Phone string `json:"phone"` + // 邮箱 + Email string `json:"email"` +} +type Town struct { + // 区 + Name string `json:"name"` + // code + Code string `json:"code"` +} +type Street struct { + // 街道 + Name string `json:"name"` + // code + Code string `json:"code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_registerPackageRoute/response/logistics_registerPackageRoute_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_registerPackageRoute/response/logistics_registerPackageRoute_response.go new file mode 100644 index 00000000..c5c9dcef --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_registerPackageRoute/response/logistics_registerPackageRoute_response.go @@ -0,0 +1,8 @@ +package logistics_registerPackageRoute_response + +type LogisticsRegisterPackageRouteResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsRegisterPackageRouteData `json:"data"` +} +type LogisticsRegisterPackageRouteData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_templateList/request/logistics_templateList_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_templateList/request/logistics_templateList_request.go new file mode 100644 index 00000000..f211df68 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_templateList/request/logistics_templateList_request.go @@ -0,0 +1,46 @@ +package logistics_templateList_request + +import ( + "encoding/json" +) + +type LogisticsTemplateListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsTemplateListParam +} + +func (c *LogisticsTemplateListRequest) GetUrlPath() string { + return "/logistics/templateList" +} + +func New() *LogisticsTemplateListRequest { + request := &LogisticsTemplateListRequest{ + Param: &LogisticsTemplateListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsTemplateListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_templateList_response.LogisticsTemplateListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_templateList_response.LogisticsTemplateListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsTemplateListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsTemplateListRequest) GetParams() *LogisticsTemplateListParam { + return c.Param +} + +type LogisticsTemplateListParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_templateList/response/logistics_templateList_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_templateList/response/logistics_templateList_response.go new file mode 100644 index 00000000..77a63e5a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_templateList/response/logistics_templateList_response.go @@ -0,0 +1,32 @@ +package logistics_templateList_response + +type LogisticsTemplateListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsTemplateListData `json:"data"` +} +type TemplateInfosItem struct { + // 模版id + TemplateId int64 `json:"template_id"` + // 模版编码 + TemplateCode string `json:"template_code"` + // 模版名称 + TemplateName string `json:"template_name"` + // 模版URL + TemplateUrl string `json:"template_url"` + // 版本 + Version int16 `json:"version"` + // 模版类型; 1-一联单 2-二联单 + TemplateType int16 `json:"template_type"` + // 预览URL + PerviewUrl string `json:"perview_url"` +} +type TemplateDataItem struct { + // 模版信息 + TemplateInfos []TemplateInfosItem `json:"template_infos"` + // 物流公司 + LogisticsCode string `json:"logistics_code"` +} +type LogisticsTemplateListData struct { + // 模版数据 + TemplateData []TemplateDataItem `json:"template_data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_trackNoRouteDetail/request/logistics_trackNoRouteDetail_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_trackNoRouteDetail/request/logistics_trackNoRouteDetail_request.go new file mode 100644 index 00000000..10c309f3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_trackNoRouteDetail/request/logistics_trackNoRouteDetail_request.go @@ -0,0 +1,50 @@ +package logistics_trackNoRouteDetail_request + +import ( + "encoding/json" +) + +type LogisticsTrackNoRouteDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsTrackNoRouteDetailParam +} + +func (c *LogisticsTrackNoRouteDetailRequest) GetUrlPath() string { + return "/logistics/trackNoRouteDetail" +} + +func New() *LogisticsTrackNoRouteDetailRequest { + request := &LogisticsTrackNoRouteDetailRequest{ + Param: &LogisticsTrackNoRouteDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsTrackNoRouteDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_trackNoRouteDetail_response.LogisticsTrackNoRouteDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_trackNoRouteDetail_response.LogisticsTrackNoRouteDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsTrackNoRouteDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsTrackNoRouteDetailRequest) GetParams() *LogisticsTrackNoRouteDetailParam { + return c.Param +} + +type LogisticsTrackNoRouteDetailParam struct { + // 物流商编码;需使用【/order/logisticsCompanyList】接口响应参数中的code; + LogisticsCode string `json:"logistics_code"` + // 运单号;可使用电子面单接口获取返回的单号查询【/logistics/newCreateOrder】或商家店铺后台查看 + TrackNo string `json:"track_no"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_trackNoRouteDetail/response/logistics_trackNoRouteDetail_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_trackNoRouteDetail/response/logistics_trackNoRouteDetail_response.go new file mode 100644 index 00000000..fd1a4271 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_trackNoRouteDetail/response/logistics_trackNoRouteDetail_response.go @@ -0,0 +1,30 @@ +package logistics_trackNoRouteDetail_response + +type LogisticsTrackNoRouteDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsTrackNoRouteDetailData `json:"data"` +} +type RouteNodeListItem struct { + // 轨迹内容 + Content string `json:"content"` + // 时间戳;单位:秒 + Timestamp string `json:"timestamp"` + // 轨迹状态code;枚举值详见:https://op.jinritemai.com/docs/question-docs/94/1642 + State string `json:"state"` + // 轨迹状态描述 + StateDescription string `json:"state_description"` + // 站点名称 + SiteName string `json:"site_name"` +} +type TrackInfo struct { + // 运单号 + TrackNo string `json:"track_no"` + // 物流商编码 + Express string `json:"express"` +} +type LogisticsTrackNoRouteDetailData struct { + // 轨迹信息 + RouteNodeList []RouteNodeListItem `json:"route__node_list"` + // 运单信息 + TrackInfo *TrackInfo `json:"track_info"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_updateOrder/request/logistics_updateOrder_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_updateOrder/request/logistics_updateOrder_request.go new file mode 100644 index 00000000..7b499990 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_updateOrder/request/logistics_updateOrder_request.go @@ -0,0 +1,128 @@ +package logistics_updateOrder_request + +import ( + "encoding/json" +) + +type LogisticsUpdateOrderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsUpdateOrderParam +} + +func (c *LogisticsUpdateOrderRequest) GetUrlPath() string { + return "/logistics/updateOrder" +} + +func New() *LogisticsUpdateOrderRequest { + request := &LogisticsUpdateOrderRequest{ + Param: &LogisticsUpdateOrderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsUpdateOrderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_updateOrder_response.LogisticsUpdateOrderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_updateOrder_response.LogisticsUpdateOrderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsUpdateOrderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsUpdateOrderRequest) GetParams() *LogisticsUpdateOrderParam { + return c.Param +} + +type ItemsItem struct { + // 商品名称 + ItemName string `json:"item_name"` + // 商品规格 + ItemSpecs string `json:"item_specs"` + // 商品数量 + ItemCount int32 `json:"item_count"` + // 单件商品体积(cm3) + ItemVolume int32 `json:"item_volume"` + // 单件商品重量(g) + ItemWeight int32 `json:"item_weight"` + // 单件总净重量(g) + ItemNetWeight int32 `json:"item_net_weight"` +} +type Warehouse struct { + // 目前该字段无效,统一传false + IsSumUp bool `json:"is_sum_up"` + // 仓库订单号(丹鸟等仓发链路使用) + WhOrderNo string `json:"wh_order_no"` +} +type LogisticsUpdateOrderParam struct { + // 寄件人信息 + SenderInfo *SenderInfo `json:"sender_info"` + // 收件人信息 + ReceiverInfo *ReceiverInfo `json:"receiver_info"` + // 物流服务商编码 + LogisticsCode string `json:"logistics_code"` + // 运单号 + TrackNo string `json:"track_no"` + // 商品明细列表 + Items []ItemsItem `json:"items"` + // 备注 + Remark string `json:"remark"` + // 备用扩展字段 + Extra string `json:"extra"` + // 实际使用取号服务店铺user_id + UserId int64 `json:"user_id"` + // 总体积 货物的总体积或长,宽,高 ;整数 单位cm + Volume string `json:"volume"` + // /总重量 ;整数 用于与快递商有计抛信任协议的商家)单位克 + Weight int64 `json:"weight"` + // 仓、门店、总对总发货 + Warehouse *Warehouse `json:"warehouse"` +} +type Contact struct { + // 寄件人姓名 + Name string `json:"name"` + // 寄件人固话(和mobile二选一) + Phone string `json:"phone"` + // 寄件人移动电话(和phone二选一) + Mobile string `json:"mobile"` +} +type SenderInfo struct { + // 寄件人联系信息 + Contact *Contact `json:"contact"` +} +type Address struct { + // 国家编码(默认CHN,目前只有国内业务) + CountryCode string `json:"country_code"` + // 省名称 + ProvinceName string `json:"province_name"` + // 市名称 + CityName string `json:"city_name"` + // 区/县名称 + DistrictName string `json:"district_name"` + // 街道名称。街道名称(street_name)和街道code(street_code),若传入时,需要一起传入。 + StreetName string `json:"street_name"` + // 剩余详细地址,支持密文 + DetailAddress string `json:"detail_address"` + // 省code编码 + ProvinceCode string `json:"province_code"` + // 市code编码 + CityCode string `json:"city_code"` + // 区code编码 + DistrictCode string `json:"district_code"` + // 街道code编码 + StreetCode string `json:"street_code"` +} +type ReceiverInfo struct { + // 收件人地址信息 + Address *Address `json:"address"` + // 收件人联系信息 + Contact *Contact `json:"contact"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_updateOrder/response/logistics_updateOrder_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_updateOrder/response/logistics_updateOrder_response.go new file mode 100644 index 00000000..9a1a4295 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_updateOrder/response/logistics_updateOrder_response.go @@ -0,0 +1,22 @@ +package logistics_updateOrder_response + +type LogisticsUpdateOrderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsUpdateOrderData `json:"data"` +} +type LogisticsUpdateOrderData struct { + // 运单号 + TrackNo string `json:"track_no"` + // 分拣码(三段码) + SortCode string `json:"sort_code"` + // 集包地代码 + PackageCenterCode string `json:"package_center_code"` + // 集包名称 + PackageCenterName string `json:"package_center_name"` + // 大头笔编码 + ShortAddressCode string `json:"short_address_code"` + // 大头笔名称 + ShortAddressName string `json:"short_address_name"` + // 扩展字段 + ExtraResp string `json:"extra_resp"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_waybillApply/request/logistics_waybillApply_request.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_waybillApply/request/logistics_waybillApply_request.go new file mode 100644 index 00000000..d845446e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_waybillApply/request/logistics_waybillApply_request.go @@ -0,0 +1,54 @@ +package logistics_waybillApply_request + +import ( + "encoding/json" +) + +type LogisticsWaybillApplyRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *LogisticsWaybillApplyParam +} + +func (c *LogisticsWaybillApplyRequest) GetUrlPath() string { + return "/logistics/waybillApply" +} + +func New() *LogisticsWaybillApplyRequest { + request := &LogisticsWaybillApplyRequest{ + Param: &LogisticsWaybillApplyParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *LogisticsWaybillApplyRequest) Execute(accessToken *doudian_sdk.AccessToken) (*logistics_waybillApply_response.LogisticsWaybillApplyResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &logistics_waybillApply_response.LogisticsWaybillApplyResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *LogisticsWaybillApplyRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *LogisticsWaybillApplyRequest) GetParams() *LogisticsWaybillApplyParam { + return c.Param +} + +type WaybillAppliesItem struct { + // 物流公司编码 + LogisticsCode string `json:"logistics_code"` + // 运单号 + TrackNo string `json:"track_no"` +} +type LogisticsWaybillApplyParam struct { + // 请求结构体 + WaybillApplies []WaybillAppliesItem `json:"waybill_applies"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/logistics_waybillApply/response/logistics_waybillApply_response.go b/platformapi/tiktok_shop/sdk-golang/api/logistics_waybillApply/response/logistics_waybillApply_response.go new file mode 100644 index 00000000..3b1d4551 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/logistics_waybillApply/response/logistics_waybillApply_response.go @@ -0,0 +1,32 @@ +package logistics_waybillApply_response + +type LogisticsWaybillApplyResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *LogisticsWaybillApplyData `json:"data"` +} +type WaybillInfosItem struct { + // 订单号 + OrderId string `json:"order_id"` + // 运单号 + TrackNo string `json:"track_no"` + // 加密的面单数据 + PrintData string `json:"print_data"` + // 签名信息 + Sign string `json:"sign"` +} +type ErrInfosItem struct { + // 运单号 + TrackNo string `json:"track_no"` + // 订单号 + OrderId string `json:"order_id"` + // 错误码 + ErrCode int32 `json:"err_code"` + // 错误信息 + ErrMsg string `json:"err_msg"` +} +type LogisticsWaybillApplyData struct { + // 正常返回结构体 + WaybillInfos []WaybillInfosItem `json:"waybill_infos"` + // 错误返回结构体 + ErrInfos []ErrInfosItem `json:"err_infos"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadImageSync/request/material_batchUploadImageSync_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadImageSync/request/material_batchUploadImageSync_request.go new file mode 100644 index 00000000..59447451 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadImageSync/request/material_batchUploadImageSync_request.go @@ -0,0 +1,62 @@ +package material_batchUploadImageSync_request + +import ( + "encoding/json" +) + +type MaterialBatchUploadImageSyncRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialBatchUploadImageSyncParam +} + +func (c *MaterialBatchUploadImageSyncRequest) GetUrlPath() string { + return "/material/batchUploadImageSync" +} + +func New() *MaterialBatchUploadImageSyncRequest { + request := &MaterialBatchUploadImageSyncRequest{ + Param: &MaterialBatchUploadImageSyncParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialBatchUploadImageSyncRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_batchUploadImageSync_response.MaterialBatchUploadImageSyncResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_batchUploadImageSync_response.MaterialBatchUploadImageSyncResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialBatchUploadImageSyncRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialBatchUploadImageSyncRequest) GetParams() *MaterialBatchUploadImageSyncParam { + return c.Param +} + +type MaterialsItem struct { + // 素材的唯一id,用于接口幂等(限时1个小时) + RequestId string `json:"request_id"` + // 文件夹id,“0”表示将素材上传到素材中心根目录 + FolderId string `json:"folder_id"` + // 固定值photo + MaterialType string `json:"material_type"` + // 素材名称,长度限制为50个字符 + Name string `json:"name"` + // 素材url,素材中心会将改url转换成素材中心的url + Url string `json:"url"` +} +type MaterialBatchUploadImageSyncParam struct { + // 素材信息 + Materials []MaterialsItem `json:"materials"` + // 是否唯一存储,如果为true,同一张图片素材中心只会存储一份 + NeedDistinct bool `json:"need_distinct"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadImageSync/response/material_batchUploadImageSync_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadImageSync/response/material_batchUploadImageSync_response.go new file mode 100644 index 00000000..639a052d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadImageSync/response/material_batchUploadImageSync_response.go @@ -0,0 +1,34 @@ +package material_batchUploadImageSync_response + +type MaterialBatchUploadImageSyncResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialBatchUploadImageSyncData `json:"data"` +} +type SuccessMapItem struct { + // 素材id,素材中心对素材的唯一编号 + MaterialId string `json:"MaterialId"` + // 素材名称,长度限制为50个字符 + Name string `json:"Name"` + // 文件夹id,“0”表示将素材上传到了素材中心根目录 + FolderId string `json:"FolderId"` + // 上传素材时,传入参数url的取值 + OriginUrl string `json:"OriginUrl"` + // 素材中心返回的url + ByteUrl string `json:"ByteUrl"` + // 审核状态 1-待审核 2-审核中 3-审核通过 4-审核拒绝 + AuditStatus int32 `json:"AuditStatus"` + // 是否为新建的素材,false-表示素材已经存在或者request_id重复使用,true-表示新建 + IsNew bool `json:"IsNew"` +} +type FailedMapItem struct { + // 失败的code + ErrCode int32 `json:"err_code"` + // 失败的原因 + ErrMsg string `json:"err_msg"` +} +type MaterialBatchUploadImageSyncData struct { + // 成功上传的素材,key为参数中的request_id + SuccessMap map[string]SuccessMapItem `json:"success_map"` + // 失败的素材,key为参数中的request_id + FailedMap map[string]FailedMapItem `json:"failed_map"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadVideoAsync/request/material_batchUploadVideoAsync_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadVideoAsync/request/material_batchUploadVideoAsync_request.go new file mode 100644 index 00000000..7d4bcef5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadVideoAsync/request/material_batchUploadVideoAsync_request.go @@ -0,0 +1,60 @@ +package material_batchUploadVideoAsync_request + +import ( + "encoding/json" +) + +type MaterialBatchUploadVideoAsyncRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialBatchUploadVideoAsyncParam +} + +func (c *MaterialBatchUploadVideoAsyncRequest) GetUrlPath() string { + return "/material/batchUploadVideoAsync" +} + +func New() *MaterialBatchUploadVideoAsyncRequest { + request := &MaterialBatchUploadVideoAsyncRequest{ + Param: &MaterialBatchUploadVideoAsyncParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialBatchUploadVideoAsyncRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_batchUploadVideoAsync_response.MaterialBatchUploadVideoAsyncResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_batchUploadVideoAsync_response.MaterialBatchUploadVideoAsyncResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialBatchUploadVideoAsyncRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialBatchUploadVideoAsyncRequest) GetParams() *MaterialBatchUploadVideoAsyncParam { + return c.Param +} + +type MaterialsItem struct { + // 素材的唯一id,用于接口幂等(限时1个小时) + RequestId string `json:"request_id"` + // 文件夹id,“0”表示将素材上传到素材中心根目录 + FolderId string `json:"folder_id"` + // 固定值video + MaterialType string `json:"material_type"` + // 素材名称,长度限制为50个字符 + Name string `json:"name"` + // 素材url,素材中心会将改url转换成素材中心的url + Url string `json:"url"` +} +type MaterialBatchUploadVideoAsyncParam struct { + // 素材信息 + Materials []MaterialsItem `json:"materials"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadVideoAsync/response/material_batchUploadVideoAsync_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadVideoAsync/response/material_batchUploadVideoAsync_response.go new file mode 100644 index 00000000..d8bacb4e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_batchUploadVideoAsync/response/material_batchUploadVideoAsync_response.go @@ -0,0 +1,32 @@ +package material_batchUploadVideoAsync_response + +type MaterialBatchUploadVideoAsyncResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialBatchUploadVideoAsyncData `json:"data"` +} +type FailedMapItem struct { + // 错误码 + ErrCode int32 `json:"err_code"` + // 错误描述 + ErrMsg string `json:"err_msg"` +} +type MaterialBatchUploadVideoAsyncData struct { + // 成功上传的素材,key为参数中的request_id + SuccessMap map[string]SuccessMapItem `json:"success_map"` + // 失败的素材,key为参数中的request_id + FailedMap map[string]FailedMapItem `json:"failed_map"` +} +type SuccessMapItem struct { + // 素材id,素材中心对素材的唯一编号 + MaterialId string `json:"material_id"` + // 素材名称,长度限制为50个字符 + Name string `json:"name"` + // 文件夹id,“0”表示将素材上传到了素材中心根目录 + FolderId string `json:"folder_id"` + // 上传素材时,传入参数url的取值 + OriginUrl string `json:"origin_url"` + // 审核状态 1-待审核 2-审核中 3-审核通过 4-审核拒绝 + AuditStatus int32 `json:"audit_status"` + // 是否为新建的素材,false-表示request_id重复使用,true-表示新建 + IsNew bool `json:"is_new"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_createFolder/request/material_createFolder_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_createFolder/request/material_createFolder_request.go new file mode 100644 index 00000000..b60d57ad --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_createFolder/request/material_createFolder_request.go @@ -0,0 +1,52 @@ +package material_createFolder_request + +import ( + "encoding/json" +) + +type MaterialCreateFolderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialCreateFolderParam +} + +func (c *MaterialCreateFolderRequest) GetUrlPath() string { + return "/material/createFolder" +} + +func New() *MaterialCreateFolderRequest { + request := &MaterialCreateFolderRequest{ + Param: &MaterialCreateFolderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialCreateFolderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_createFolder_response.MaterialCreateFolderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_createFolder_response.MaterialCreateFolderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialCreateFolderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialCreateFolderRequest) GetParams() *MaterialCreateFolderParam { + return c.Param +} + +type MaterialCreateFolderParam struct { + // 文件夹名称。最多20字符 + Name string `json:"name"` + // 父文件夹id,根目录为0。不传该参数默认在根目录下创建文件夹 + ParentFolderId string `json:"parent_folder_id"` + // 文件夹类型。0-用户自建 + Type int32 `json:"type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_createFolder/response/material_createFolder_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_createFolder/response/material_createFolder_response.go new file mode 100644 index 00000000..f8beb0e2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_createFolder/response/material_createFolder_response.go @@ -0,0 +1,16 @@ +package material_createFolder_response + +type MaterialCreateFolderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialCreateFolderData `json:"data"` +} +type MaterialCreateFolderData struct { + // 文件夹id,全局唯一 + FolderId string `json:"folder_id"` + // 父文件夹id,全局唯一 + ParentFolderId string `json:"parent_folder_id"` + // 文件夹名称 + Name string `json:"name"` + // 文件夹类型。0-用户自建 1-默认 2-系统文件夹 + Type int32 `json:"type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_deleteFolder/request/material_deleteFolder_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_deleteFolder/request/material_deleteFolder_request.go new file mode 100644 index 00000000..6ed6d35c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_deleteFolder/request/material_deleteFolder_request.go @@ -0,0 +1,48 @@ +package material_deleteFolder_request + +import ( + "encoding/json" +) + +type MaterialDeleteFolderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialDeleteFolderParam +} + +func (c *MaterialDeleteFolderRequest) GetUrlPath() string { + return "/material/deleteFolder" +} + +func New() *MaterialDeleteFolderRequest { + request := &MaterialDeleteFolderRequest{ + Param: &MaterialDeleteFolderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialDeleteFolderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_deleteFolder_response.MaterialDeleteFolderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_deleteFolder_response.MaterialDeleteFolderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialDeleteFolderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialDeleteFolderRequest) GetParams() *MaterialDeleteFolderParam { + return c.Param +} + +type MaterialDeleteFolderParam struct { + // 文件夹id list,最多不超过20个 + FolderIds []string `json:"folder_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_deleteFolder/response/material_deleteFolder_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_deleteFolder/response/material_deleteFolder_response.go new file mode 100644 index 00000000..e4e63395 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_deleteFolder/response/material_deleteFolder_response.go @@ -0,0 +1,18 @@ +package material_deleteFolder_response + +type MaterialDeleteFolderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialDeleteFolderData `json:"data"` +} +type FailedMapItem struct { + // 错误码 + Code int32 `json:"code"` + // 错误码的描述字段 + Msg string `json:"msg"` +} +type MaterialDeleteFolderData struct { + // 操作成功的文件夹id列表 + SuccessIds []string `json:"success_ids"` + // 操作失败的的文件夹及错误详情 + FailedMap map[string]FailedMapItem `json:"failed_map"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_deleteMaterial/request/material_deleteMaterial_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_deleteMaterial/request/material_deleteMaterial_request.go new file mode 100644 index 00000000..60bbc817 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_deleteMaterial/request/material_deleteMaterial_request.go @@ -0,0 +1,48 @@ +package material_deleteMaterial_request + +import ( + "encoding/json" +) + +type MaterialDeleteMaterialRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialDeleteMaterialParam +} + +func (c *MaterialDeleteMaterialRequest) GetUrlPath() string { + return "/material/deleteMaterial" +} + +func New() *MaterialDeleteMaterialRequest { + request := &MaterialDeleteMaterialRequest{ + Param: &MaterialDeleteMaterialParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialDeleteMaterialRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_deleteMaterial_response.MaterialDeleteMaterialResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_deleteMaterial_response.MaterialDeleteMaterialResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialDeleteMaterialRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialDeleteMaterialRequest) GetParams() *MaterialDeleteMaterialParam { + return c.Param +} + +type MaterialDeleteMaterialParam struct { + // 要删除的素材id列表,最大不得超过100个,只支持删除同一级目录下的素材 + MaterialIds []string `json:"material_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_deleteMaterial/response/material_deleteMaterial_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_deleteMaterial/response/material_deleteMaterial_response.go new file mode 100644 index 00000000..58bb7524 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_deleteMaterial/response/material_deleteMaterial_response.go @@ -0,0 +1,18 @@ +package material_deleteMaterial_response + +type MaterialDeleteMaterialResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialDeleteMaterialData `json:"data"` +} +type FailedMapItem struct { + // 失败code + Code int32 `json:"code"` + // 失败原因 + Msg string `json:"msg"` +} +type MaterialDeleteMaterialData struct { + // 操作成功的素材id + SuccessIds []string `json:"success_ids"` + // 操作失败的素材id和原因 + FailedMap map[string]FailedMapItem `json:"failed_map"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_easyShuttle/request/material_easyShuttle_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_easyShuttle/request/material_easyShuttle_request.go new file mode 100644 index 00000000..0ec77d28 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_easyShuttle/request/material_easyShuttle_request.go @@ -0,0 +1,56 @@ +package material_easyShuttle_request + +import ( + "encoding/json" +) + +type MaterialEasyShuttleRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialEasyShuttleParam +} + +func (c *MaterialEasyShuttleRequest) GetUrlPath() string { + return "/material/easyShuttle" +} + +func New() *MaterialEasyShuttleRequest { + request := &MaterialEasyShuttleRequest{ + Param: &MaterialEasyShuttleParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialEasyShuttleRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_easyShuttle_response.MaterialEasyShuttleResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_easyShuttle_response.MaterialEasyShuttleResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialEasyShuttleRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialEasyShuttleRequest) GetParams() *MaterialEasyShuttleParam { + return c.Param +} + +type MaterialEasyShuttleParam struct { + // 文件夹ID列表,对该文件夹下的文件夹或素材进行操作;0:开放平台;1:图片根目录;2:视频根目录;-1:回收站 + FolderIdList []string `json:"folder_id_list"` + // 操作类型:to_recycle-移到回收站,delete_forever-删除 + OperateType string `json:"operate_type"` + // 操作的素材类型,photo-图片,video-视频 + MaterialTypeList []string `json:"material_type_list"` + // 是否只操作素材,true-只操作素材,false-操作子文件夹和素材 + OnlyMaterial bool `json:"only_material"` + // 只对create_time_end之前创建的素材进行操作,默认取系统当前时间 + CreateTimeEnd string `json:"create_time_end"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_easyShuttle/response/material_easyShuttle_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_easyShuttle/response/material_easyShuttle_response.go new file mode 100644 index 00000000..ab2c545e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_easyShuttle/response/material_easyShuttle_response.go @@ -0,0 +1,8 @@ +package material_easyShuttle_response + +type MaterialEasyShuttleResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialEasyShuttleData `json:"data"` +} +type MaterialEasyShuttleData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_editFolder/request/material_editFolder_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_editFolder/request/material_editFolder_request.go new file mode 100644 index 00000000..f1a3c3f2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_editFolder/request/material_editFolder_request.go @@ -0,0 +1,52 @@ +package material_editFolder_request + +import ( + "encoding/json" +) + +type MaterialEditFolderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialEditFolderParam +} + +func (c *MaterialEditFolderRequest) GetUrlPath() string { + return "/material/editFolder" +} + +func New() *MaterialEditFolderRequest { + request := &MaterialEditFolderRequest{ + Param: &MaterialEditFolderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialEditFolderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_editFolder_response.MaterialEditFolderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_editFolder_response.MaterialEditFolderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialEditFolderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialEditFolderRequest) GetParams() *MaterialEditFolderParam { + return c.Param +} + +type MaterialEditFolderParam struct { + // 文件夹id,不能操作系统文件夹(0:根目录 -1:回收站) + FolderId string `json:"folder_id"` + // 新的文件夹名称 + Name string `json:"name"` + // 需要移动到的父文件夹id + ToFolderId string `json:"to_folder_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_editFolder/response/material_editFolder_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_editFolder/response/material_editFolder_response.go new file mode 100644 index 00000000..1ef0b8cc --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_editFolder/response/material_editFolder_response.go @@ -0,0 +1,8 @@ +package material_editFolder_response + +type MaterialEditFolderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialEditFolderData `json:"data"` +} +type MaterialEditFolderData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_editMaterial/request/material_editMaterial_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_editMaterial/request/material_editMaterial_request.go new file mode 100644 index 00000000..6074a59a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_editMaterial/request/material_editMaterial_request.go @@ -0,0 +1,52 @@ +package material_editMaterial_request + +import ( + "encoding/json" +) + +type MaterialEditMaterialRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialEditMaterialParam +} + +func (c *MaterialEditMaterialRequest) GetUrlPath() string { + return "/material/editMaterial" +} + +func New() *MaterialEditMaterialRequest { + request := &MaterialEditMaterialRequest{ + Param: &MaterialEditMaterialParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialEditMaterialRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_editMaterial_response.MaterialEditMaterialResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_editMaterial_response.MaterialEditMaterialResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialEditMaterialRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialEditMaterialRequest) GetParams() *MaterialEditMaterialParam { + return c.Param +} + +type MaterialEditMaterialParam struct { + // 素材id + MaterialId string `json:"material_id"` + // 素材名称,不得超过50个字符 + MaterialName string `json:"material_name"` + // 目标文件夹id,"0"--素材中心 + ToFolderId string `json:"to_folder_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_editMaterial/response/material_editMaterial_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_editMaterial/response/material_editMaterial_response.go new file mode 100644 index 00000000..bea27fd4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_editMaterial/response/material_editMaterial_response.go @@ -0,0 +1,8 @@ +package material_editMaterial_response + +type MaterialEditMaterialResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialEditMaterialData `json:"data"` +} +type MaterialEditMaterialData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_getFolderInfo/request/material_getFolderInfo_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_getFolderInfo/request/material_getFolderInfo_request.go new file mode 100644 index 00000000..feb178d2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_getFolderInfo/request/material_getFolderInfo_request.go @@ -0,0 +1,52 @@ +package material_getFolderInfo_request + +import ( + "encoding/json" +) + +type MaterialGetFolderInfoRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialGetFolderInfoParam +} + +func (c *MaterialGetFolderInfoRequest) GetUrlPath() string { + return "/material/getFolderInfo" +} + +func New() *MaterialGetFolderInfoRequest { + request := &MaterialGetFolderInfoRequest{ + Param: &MaterialGetFolderInfoParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialGetFolderInfoRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_getFolderInfo_response.MaterialGetFolderInfoResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_getFolderInfo_response.MaterialGetFolderInfoResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialGetFolderInfoRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialGetFolderInfoRequest) GetParams() *MaterialGetFolderInfoParam { + return c.Param +} + +type MaterialGetFolderInfoParam struct { + // 文件夹id + FolderId string `json:"folder_id"` + // 分页的页数,从1开始 + PageNum int32 `json:"page_num"` + // 每页返回的数量。最大为100,默认为50 + PageSize int32 `json:"page_size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_getFolderInfo/response/material_getFolderInfo_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_getFolderInfo/response/material_getFolderInfo_response.go new file mode 100644 index 00000000..a9484094 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_getFolderInfo/response/material_getFolderInfo_response.go @@ -0,0 +1,98 @@ +package material_getFolderInfo_response + +type MaterialGetFolderInfoResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialGetFolderInfoData `json:"data"` +} +type ChildFolderItem struct { + // 文件夹id + FolderId string `json:"folder_id"` + // 文件夹类型 + FolderType int32 `json:"folder_type"` + // 文件夹名称 + FolderName string `json:"folder_name"` + // 文件夹状态,1-有效 4-在回收站中 + OperateStatus int32 `json:"operate_status"` + // 父文件夹id + ParentFolderId string `json:"parent_folder_id"` + // 文件夹创建时间 + CreateTime string `json:"create_time"` + // 文件夹最近一次修改时间 + UpdateTime string `json:"update_time"` + // 文件夹移动到回收站的时间,只有在回收站中,该字段才有意义 + DeleteTime string `json:"delete_time"` +} +type PhotoInfo struct { + // 图片高度 + Height int32 `json:"height"` + // 图片宽度 + Width int32 `json:"width"` + // 图片格式 + Format string `json:"format"` +} +type VideoInfo struct { + // 视频格式 + Format string `json:"format"` + // 视频时长 + Duration float64 `json:"duration"` +} +type ChildMaterialItem struct { + // 素材id + MaterialId string `json:"material_id"` + // 文件夹id + FolderId string `json:"folder_id"` + // 原url + OriginUrl string `json:"origin_url"` + // 素材中心返回的url,只有审核通过的素材才有该字段 + ByteUrl string `json:"byte_url"` + // 素材名称 + MaterilName string `json:"materil_name"` + // 素材类型,photo-图片 video-视频 + MaterialType string `json:"material_type"` + // 状态,0-待下载 1-有效 4-在回收站中 + OperateStatus int32 `json:"operate_status"` + // 审核状态,1-待审核 2-审核中 3-通过 4-拒绝 + AuditStatus int32 `json:"audit_status"` + // 审核失败的原因 + AuditRejectDesc string `json:"audit_reject_desc"` + // 大小,单位为byte + Size int64 `json:"size"` + // 图片信息 + PhotoInfo *PhotoInfo `json:"photo_info"` + // 视频信息 + VideoInfo *VideoInfo `json:"video_info"` + // 素材创建时间 + CreateTime string `json:"create_time"` + // 素材最近一次修改时间 + UpdateTime string `json:"update_time"` + // 素材移动到回收站的时间,只有在回收站中,该字段才有意义 + DeleteTime string `json:"delete_time"` +} +type FolderInfo struct { + // 文件夹id + FolderId string `json:"folder_id"` + // 文件夹类型 + FolderType int32 `json:"folder_type"` + // 文件夹名称 + FolderName string `json:"folder_name"` + // 文件夹状态,1-有效 4-在回收站中 + OperateStatus int32 `json:"operate_status"` + // 子文件夹列表 + ChildFolder []ChildFolderItem `json:"child_folder"` + // 素材列表 + ChildMaterial []ChildMaterialItem `json:"child_material"` + // 父文件夹id,0-素材中心根目录 + ParentFolderId string `json:"parent_folder_id"` + // 文件夹创建时间 + CreateTime string `json:"create_time"` + // 文件夹最近一次修改时间 + UpdateTime string `json:"update_time"` + // 文件夹移动到回收站的时间,只有在回收站中,该字段才有意义 + DeleteTime string `json:"delete_time"` + // 文件夹下素材总数目 + TotalChildMaterialNum int64 `json:"total_child_material_num"` +} +type MaterialGetFolderInfoData struct { + // 文件夹信息 + FolderInfo *FolderInfo `json:"folder_info"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_get_cap_info/request/material_get_cap_info_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_get_cap_info/request/material_get_cap_info_request.go new file mode 100644 index 00000000..5093900e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_get_cap_info/request/material_get_cap_info_request.go @@ -0,0 +1,46 @@ +package material_get_cap_info_request + +import ( + "encoding/json" +) + +type MaterialGetCapInfoRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialGetCapInfoParam +} + +func (c *MaterialGetCapInfoRequest) GetUrlPath() string { + return "/material/get_cap_info" +} + +func New() *MaterialGetCapInfoRequest { + request := &MaterialGetCapInfoRequest{ + Param: &MaterialGetCapInfoParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialGetCapInfoRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_get_cap_info_response.MaterialGetCapInfoResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_get_cap_info_response.MaterialGetCapInfoResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialGetCapInfoRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialGetCapInfoRequest) GetParams() *MaterialGetCapInfoParam { + return c.Param +} + +type MaterialGetCapInfoParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_get_cap_info/response/material_get_cap_info_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_get_cap_info/response/material_get_cap_info_response.go new file mode 100644 index 00000000..2bd375fb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_get_cap_info/response/material_get_cap_info_response.go @@ -0,0 +1,38 @@ +package material_get_cap_info_response + +type MaterialGetCapInfoResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialGetCapInfoData `json:"data"` +} +type MaterialGetCapInfoData struct { + // 总容量,单位B + TotalCapacity int64 `json:"total_capacity"` + // 已使用容量,单位B + TotalCapacityUsed int64 `json:"total_capacity_used"` + // 图片总容量,单位B + PhotoCapacity int64 `json:"photo_capacity"` + // 图片已使用容量,单位B + PhotoCapacityUsed int64 `json:"photo_capacity_used"` + // 视频总容量,单位B + VideoCapacity int64 `json:"video_capacity"` + // 视频已使用容量,单位B + VideoCapacityUsed int64 `json:"video_capacity_used"` + // 当前生效的权益列表 + EquityInfo []EquityInfoItem `json:"equity_info"` +} +type EquityInfoItem struct { + // 权益类型 + EquityType string `json:"equity_type"` + // 权益描述 + EquityTypeDesc string `json:"equity_type_desc"` + // 权益开始时间 + BeginTime int64 `json:"begin_time"` + // 权益结束时间 + EndTime int64 `json:"end_time"` + // 该权益对应的总容量,单位B + TotalCapacity int64 `json:"total_capacity"` + // 该权益对应的图片总容量,单位B + PhotoCapacity int64 `json:"photo_capacity"` + // 该权益对应的视频总容量,单位B + VideoCapacity int64 `json:"video_capacity"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_mGetPlayInfo/request/material_mGetPlayInfo_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_mGetPlayInfo/request/material_mGetPlayInfo_request.go new file mode 100644 index 00000000..b10bc422 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_mGetPlayInfo/request/material_mGetPlayInfo_request.go @@ -0,0 +1,48 @@ +package material_mGetPlayInfo_request + +import ( + "encoding/json" +) + +type MaterialMGetPlayInfoRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialMGetPlayInfoParam +} + +func (c *MaterialMGetPlayInfoRequest) GetUrlPath() string { + return "/material/mGetPlayInfo" +} + +func New() *MaterialMGetPlayInfoRequest { + request := &MaterialMGetPlayInfoRequest{ + Param: &MaterialMGetPlayInfoParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialMGetPlayInfoRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_mGetPlayInfo_response.MaterialMGetPlayInfoResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_mGetPlayInfo_response.MaterialMGetPlayInfoResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialMGetPlayInfoRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialMGetPlayInfoRequest) GetParams() *MaterialMGetPlayInfoParam { + return c.Param +} + +type MaterialMGetPlayInfoParam struct { + // vid列表,列表长度(1, 20) + VidList []string `json:"vid_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_mGetPlayInfo/response/material_mGetPlayInfo_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_mGetPlayInfo/response/material_mGetPlayInfo_response.go new file mode 100644 index 00000000..bc14e20d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_mGetPlayInfo/response/material_mGetPlayInfo_response.go @@ -0,0 +1,40 @@ +package material_mGetPlayInfo_response + +type MaterialMGetPlayInfoResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialMGetPlayInfoData `json:"data"` +} +type MaterialMGetPlayInfoData struct { + // 获取成功map,key为vid,value是视频的播放信息 + SuccessMap map[string]SuccessMapItem `json:"success_map"` + // 获取失败map,key为vid + FailedMap map[string]FailedMapItem `json:"failed_map"` +} +type SuccessMapItem struct { + // vid,素材中心搜索素材或者查素材详情接口返回的vid字段 + Vid string `json:"vid"` + // 视频高度 + Height int32 `json:"height"` + // 视频宽度 + Width int32 `json:"width"` + // 视频格式 + Format string `json:"format"` + // 视频大小,单位B + Size int64 `json:"size"` + // 视频原地址 + Uri string `json:"uri"` + // 视频长度(s) + Duration float64 `json:"duration"` + // 视频封面地址 + VideoCoverUrl string `json:"video_cover_url"` + // 视频播放地址 + MainUrl string `json:"main_url"` + // 视频播放地址和视频封面地址的过期时间 + MainUrlExpire int64 `json:"main_url_expire"` +} +type FailedMapItem struct { + // 错误码 + ErrCode int32 `json:"err_code"` + // 错误信息 + ErrMsg string `json:"err_msg"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_moveFolderToRecycleBin/request/material_moveFolderToRecycleBin_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_moveFolderToRecycleBin/request/material_moveFolderToRecycleBin_request.go new file mode 100644 index 00000000..7c04e219 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_moveFolderToRecycleBin/request/material_moveFolderToRecycleBin_request.go @@ -0,0 +1,48 @@ +package material_moveFolderToRecycleBin_request + +import ( + "encoding/json" +) + +type MaterialMoveFolderToRecycleBinRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialMoveFolderToRecycleBinParam +} + +func (c *MaterialMoveFolderToRecycleBinRequest) GetUrlPath() string { + return "/material/moveFolderToRecycleBin" +} + +func New() *MaterialMoveFolderToRecycleBinRequest { + request := &MaterialMoveFolderToRecycleBinRequest{ + Param: &MaterialMoveFolderToRecycleBinParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialMoveFolderToRecycleBinRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_moveFolderToRecycleBin_response.MaterialMoveFolderToRecycleBinResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_moveFolderToRecycleBin_response.MaterialMoveFolderToRecycleBinResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialMoveFolderToRecycleBinRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialMoveFolderToRecycleBinRequest) GetParams() *MaterialMoveFolderToRecycleBinParam { + return c.Param +} + +type MaterialMoveFolderToRecycleBinParam struct { + // 移动到回收站的文件夹id列表 + FolderIds []string `json:"folder_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_moveFolderToRecycleBin/response/material_moveFolderToRecycleBin_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_moveFolderToRecycleBin/response/material_moveFolderToRecycleBin_response.go new file mode 100644 index 00000000..2376b3d2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_moveFolderToRecycleBin/response/material_moveFolderToRecycleBin_response.go @@ -0,0 +1,18 @@ +package material_moveFolderToRecycleBin_response + +type MaterialMoveFolderToRecycleBinResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialMoveFolderToRecycleBinData `json:"data"` +} +type FailedMapItem struct { + // 失败code + Code int32 `json:"code"` + // 失败原因 + Msg string `json:"msg"` +} +type MaterialMoveFolderToRecycleBinData struct { + // 操作成功的id list + SuccessIds []string `json:"success_ids"` + // 操作失败的id map + FailedMap map[int64]FailedMapItem `json:"failed_map"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_moveMaterialToRecycleBin/request/material_moveMaterialToRecycleBin_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_moveMaterialToRecycleBin/request/material_moveMaterialToRecycleBin_request.go new file mode 100644 index 00000000..c92906fc --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_moveMaterialToRecycleBin/request/material_moveMaterialToRecycleBin_request.go @@ -0,0 +1,48 @@ +package material_moveMaterialToRecycleBin_request + +import ( + "encoding/json" +) + +type MaterialMoveMaterialToRecycleBinRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialMoveMaterialToRecycleBinParam +} + +func (c *MaterialMoveMaterialToRecycleBinRequest) GetUrlPath() string { + return "/material/moveMaterialToRecycleBin" +} + +func New() *MaterialMoveMaterialToRecycleBinRequest { + request := &MaterialMoveMaterialToRecycleBinRequest{ + Param: &MaterialMoveMaterialToRecycleBinParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialMoveMaterialToRecycleBinRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_moveMaterialToRecycleBin_response.MaterialMoveMaterialToRecycleBinResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_moveMaterialToRecycleBin_response.MaterialMoveMaterialToRecycleBinResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialMoveMaterialToRecycleBinRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialMoveMaterialToRecycleBinRequest) GetParams() *MaterialMoveMaterialToRecycleBinParam { + return c.Param +} + +type MaterialMoveMaterialToRecycleBinParam struct { + // 素材id列表,(1)数量不得超过100;(2)同一级目录下的素材 + MaterialIds []string `json:"material_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_moveMaterialToRecycleBin/response/material_moveMaterialToRecycleBin_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_moveMaterialToRecycleBin/response/material_moveMaterialToRecycleBin_response.go new file mode 100644 index 00000000..15901ac4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_moveMaterialToRecycleBin/response/material_moveMaterialToRecycleBin_response.go @@ -0,0 +1,18 @@ +package material_moveMaterialToRecycleBin_response + +type MaterialMoveMaterialToRecycleBinResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialMoveMaterialToRecycleBinData `json:"data"` +} +type FailedMapItem struct { + // 错误码 + Code int32 `json:"code"` + // 错误原因 + Msg string `json:"msg"` +} +type MaterialMoveMaterialToRecycleBinData struct { + // 成功的素材id列表 + SuccessIds []string `json:"success_ids"` + // 失败素材列表 + FailedMap map[string]FailedMapItem `json:"failed_map"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_queryMaterialDetail/request/material_queryMaterialDetail_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_queryMaterialDetail/request/material_queryMaterialDetail_request.go new file mode 100644 index 00000000..d504606c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_queryMaterialDetail/request/material_queryMaterialDetail_request.go @@ -0,0 +1,48 @@ +package material_queryMaterialDetail_request + +import ( + "encoding/json" +) + +type MaterialQueryMaterialDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialQueryMaterialDetailParam +} + +func (c *MaterialQueryMaterialDetailRequest) GetUrlPath() string { + return "/material/queryMaterialDetail" +} + +func New() *MaterialQueryMaterialDetailRequest { + request := &MaterialQueryMaterialDetailRequest{ + Param: &MaterialQueryMaterialDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialQueryMaterialDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_queryMaterialDetail_response.MaterialQueryMaterialDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_queryMaterialDetail_response.MaterialQueryMaterialDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialQueryMaterialDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialQueryMaterialDetailRequest) GetParams() *MaterialQueryMaterialDetailParam { + return c.Param +} + +type MaterialQueryMaterialDetailParam struct { + // 素材id + MaterialId string `json:"material_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_queryMaterialDetail/response/material_queryMaterialDetail_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_queryMaterialDetail/response/material_queryMaterialDetail_response.go new file mode 100644 index 00000000..9e4ce081 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_queryMaterialDetail/response/material_queryMaterialDetail_response.go @@ -0,0 +1,64 @@ +package material_queryMaterialDetail_response + +type MaterialQueryMaterialDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialQueryMaterialDetailData `json:"data"` +} +type PhotoInfo struct { + // 图片高度 + Height int32 `json:"height"` + // 图片宽度 + Width int32 `json:"width"` + // 图片格式 + Format string `json:"format"` +} +type VideoInfo struct { + // 视频格式 + Format string `json:"format"` + // 视频时长,单位秒 + Duration float64 `json:"duration"` + // vid,用于获取视频播放地址,接口文档见:https://op.jinritemai.com/docs/api-docs/69/2164 + Vid string `json:"vid"` + // 视频高度 + Height int32 `json:"height"` + // 视频宽度 + Width int32 `json:"width"` + // 视频封面地址 + VideoCoverUrl string `json:"video_cover_url"` +} +type MaterialInfo struct { + // 素材id + MaterialId string `json:"material_id"` + // 文件夹id + FolderId string `json:"folder_id"` + // 原url + OriginUrl string `json:"origin_url"` + // 素材中心返回的url,该字段只对图片有效;如果想获取视频播放信息,请参考video_info/vid字段介绍 + ByteUrl string `json:"byte_url"` + // 素材名称 + MaterilName string `json:"materil_name"` + // 素材类型,photo-图片 video-视频 + MaterialType string `json:"material_type"` + // 状态,0-待下载 1-有效 4-在回收站中 + OperateStatus int32 `json:"operate_status"` + // 审核状态,1-待审核 2-审核中 3-通过 4-拒绝 + AuditStatus int32 `json:"audit_status"` + // 审核失败的原因 + AuditRejectDesc string `json:"audit_reject_desc"` + // 大小,单位为byte + Size int64 `json:"size"` + // 图片信息 + PhotoInfo *PhotoInfo `json:"photo_info"` + // 视频信息 + VideoInfo *VideoInfo `json:"video_info"` + // 素材创建时间 + CreateTime string `json:"create_time"` + // 素材最近一次修改时间 + UpdateTime string `json:"update_time"` + // 素材移动到回收站的时间,只有在回收站中,该字段才有意义 + DeleteTime string `json:"delete_time"` +} +type MaterialQueryMaterialDetailData struct { + // 素材详情 + MaterialInfo *MaterialInfo `json:"material_info"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_recoverFolder/request/material_recoverFolder_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_recoverFolder/request/material_recoverFolder_request.go new file mode 100644 index 00000000..cc942a31 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_recoverFolder/request/material_recoverFolder_request.go @@ -0,0 +1,48 @@ +package material_recoverFolder_request + +import ( + "encoding/json" +) + +type MaterialRecoverFolderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialRecoverFolderParam +} + +func (c *MaterialRecoverFolderRequest) GetUrlPath() string { + return "/material/recoverFolder" +} + +func New() *MaterialRecoverFolderRequest { + request := &MaterialRecoverFolderRequest{ + Param: &MaterialRecoverFolderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialRecoverFolderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_recoverFolder_response.MaterialRecoverFolderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_recoverFolder_response.MaterialRecoverFolderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialRecoverFolderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialRecoverFolderRequest) GetParams() *MaterialRecoverFolderParam { + return c.Param +} + +type MaterialRecoverFolderParam struct { + // 需要恢复的文件夹的id列表,不能操作系统文件夹(0:根目录 -1:回收站)。批量操作每次最多20个。 + FolderIds []string `json:"folder_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_recoverFolder/response/material_recoverFolder_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_recoverFolder/response/material_recoverFolder_response.go new file mode 100644 index 00000000..536a9387 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_recoverFolder/response/material_recoverFolder_response.go @@ -0,0 +1,18 @@ +package material_recoverFolder_response + +type MaterialRecoverFolderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialRecoverFolderData `json:"data"` +} +type FailedMapItem struct { + // 操作失败的错误码 + Code int32 `json:"code"` + // 操作失败的原因 + Msg string `json:"msg"` +} +type MaterialRecoverFolderData struct { + // 操作成功的文件夹列表 + SuccessIds []string `json:"success_ids"` + // 操作失败的文件夹及失败的详情 + FailedMap map[int64]FailedMapItem `json:"failed_map"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_recoverMaterial/request/material_recoverMaterial_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_recoverMaterial/request/material_recoverMaterial_request.go new file mode 100644 index 00000000..62a6fc2d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_recoverMaterial/request/material_recoverMaterial_request.go @@ -0,0 +1,48 @@ +package material_recoverMaterial_request + +import ( + "encoding/json" +) + +type MaterialRecoverMaterialRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialRecoverMaterialParam +} + +func (c *MaterialRecoverMaterialRequest) GetUrlPath() string { + return "/material/recoverMaterial" +} + +func New() *MaterialRecoverMaterialRequest { + request := &MaterialRecoverMaterialRequest{ + Param: &MaterialRecoverMaterialParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialRecoverMaterialRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_recoverMaterial_response.MaterialRecoverMaterialResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_recoverMaterial_response.MaterialRecoverMaterialResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialRecoverMaterialRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialRecoverMaterialRequest) GetParams() *MaterialRecoverMaterialParam { + return c.Param +} + +type MaterialRecoverMaterialParam struct { + // 素材id列表 + MaterialIds []string `json:"material_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_recoverMaterial/response/material_recoverMaterial_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_recoverMaterial/response/material_recoverMaterial_response.go new file mode 100644 index 00000000..2f630f08 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_recoverMaterial/response/material_recoverMaterial_response.go @@ -0,0 +1,18 @@ +package material_recoverMaterial_response + +type MaterialRecoverMaterialResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialRecoverMaterialData `json:"data"` +} +type FailedMapItem struct { + // 错误码 + Code int32 `json:"code"` + // 错误码描述 + Msg string `json:"msg"` +} +type MaterialRecoverMaterialData struct { + // 成功操作的素材id列表 + SuccessIds []string `json:"success_ids"` + // 失败素材列表及失败原因 + FailedMap map[string]FailedMapItem `json:"failed_map"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_searchFolder/request/material_searchFolder_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_searchFolder/request/material_searchFolder_request.go new file mode 100644 index 00000000..6ac2f659 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_searchFolder/request/material_searchFolder_request.go @@ -0,0 +1,64 @@ +package material_searchFolder_request + +import ( + "encoding/json" +) + +type MaterialSearchFolderRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialSearchFolderParam +} + +func (c *MaterialSearchFolderRequest) GetUrlPath() string { + return "/material/searchFolder" +} + +func New() *MaterialSearchFolderRequest { + request := &MaterialSearchFolderRequest{ + Param: &MaterialSearchFolderParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialSearchFolderRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_searchFolder_response.MaterialSearchFolderResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_searchFolder_response.MaterialSearchFolderResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialSearchFolderRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialSearchFolderRequest) GetParams() *MaterialSearchFolderParam { + return c.Param +} + +type MaterialSearchFolderParam struct { + // 排序方式 0-创建时间倒序 1-创建时间正序 2-修改时间倒序 3-修改时间正序 4-文件夹名倒序 5-文件夹名正序 + OrderBy int32 `json:"order_by"` + // 分页的页数,从1开始 + PageNum int32 `json:"page_num"` + // 每页返回的数量。最大为100,默认为50 + PageSize int32 `json:"page_size"` + // 需要搜索的文件名片段 + Name string `json:"name"` + // 文件夹id + FolderId string `json:"folder_id"` + // 创建时间最小值,包含这一秒 + CreateTimeStart string `json:"create_time_start"` + // 创建时间最大值,包含这一秒 + CreateTimeEnd string `json:"create_time_end"` + // 父文件夹id + ParentFolderId string `json:"parent_folder_id"` + // 文件夹状态。1-有效 4-在回收站中 + OperateStatus []int32 `json:"operate_status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_searchFolder/response/material_searchFolder_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_searchFolder/response/material_searchFolder_response.go new file mode 100644 index 00000000..79b0a1a8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_searchFolder/response/material_searchFolder_response.go @@ -0,0 +1,30 @@ +package material_searchFolder_response + +type MaterialSearchFolderResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialSearchFolderData `json:"data"` +} +type FolderInfoListItem struct { + // 文件夹id + FolderId string `json:"folder_id"` + // 文件夹类型 0-用户创建 1-默认 2-系统文件夹 + FolderType int32 `json:"folder_type"` + // 文件夹名称 + Name string `json:"name"` + // 文件夹状态。1-有效 4-在回收站中 + OperateStatus int32 `json:"operate_status"` + // 父文件夹id + ParentFolderId string `json:"parent_folder_id"` + // 文件夹创建时间 + CreateTime string `json:"create_time"` + // 文件夹最近一次编辑时间 + UpdateTime string `json:"update_time"` + // 文件夹删除时间。当文件夹在回收站时返回,未删除时为"" + DeleteTime string `json:"delete_time"` +} +type MaterialSearchFolderData struct { + // 文件夹列表 + FolderInfoList []FolderInfoListItem `json:"folder_info_list"` + // 符合筛选条件的文件夹数量 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_searchMaterial/request/material_searchMaterial_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_searchMaterial/request/material_searchMaterial_request.go new file mode 100644 index 00000000..5e6778f0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_searchMaterial/request/material_searchMaterial_request.go @@ -0,0 +1,68 @@ +package material_searchMaterial_request + +import ( + "encoding/json" +) + +type MaterialSearchMaterialRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialSearchMaterialParam +} + +func (c *MaterialSearchMaterialRequest) GetUrlPath() string { + return "/material/searchMaterial" +} + +func New() *MaterialSearchMaterialRequest { + request := &MaterialSearchMaterialRequest{ + Param: &MaterialSearchMaterialParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialSearchMaterialRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_searchMaterial_response.MaterialSearchMaterialResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_searchMaterial_response.MaterialSearchMaterialResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialSearchMaterialRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialSearchMaterialRequest) GetParams() *MaterialSearchMaterialParam { + return c.Param +} + +type MaterialSearchMaterialParam struct { + // 素材id + MaterialId string `json:"material_id"` + // 文件名称,支持模糊匹配 + MaterialName string `json:"material_name"` + // 素材类型,空-不限 photo-图片 video-视频 + MaterialType []string `json:"material_type"` + // 审核状态,1-待审核 2-审核中 3-通过 4-拒绝 + AuditStatus []int32 `json:"audit_status"` + // 搜索创建开始时间,格式如:2012-08-12 12:00:12 + CreateTimeStart string `json:"create_time_start"` + // 搜索创建结束时间,格式如:2012-08-12 12:00:12 + CreateTimeEnd string `json:"create_time_end"` + // 文件夹id,"0"--素材中心 "-1"--回收站 + FolderId string `json:"folder_id"` + // 第几页,1,2,……,默认值:1 + PageNum int32 `json:"page_num"` + // 页大小,1,2,……,100,默认值:50 + PageSize int32 `json:"page_size"` + // 排序方式,0-按照创建时间倒序 1-按照创建时间升序 6-按照素材大小降序 7-按照素材大小升序 + OrderType int32 `json:"order_type"` + // 素材状态,0-待下载 1-有效 4-回收站中 + OperateStatus []int32 `json:"operate_status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_searchMaterial/response/material_searchMaterial_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_searchMaterial/response/material_searchMaterial_response.go new file mode 100644 index 00000000..44a2d8c7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_searchMaterial/response/material_searchMaterial_response.go @@ -0,0 +1,68 @@ +package material_searchMaterial_response + +type MaterialSearchMaterialResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialSearchMaterialData `json:"data"` +} +type VideoInfo struct { + // 视频格式 + Format string `json:"format"` + // 视频时长,单位秒 + Duration float64 `json:"duration"` + // vid,用于获取视频播放地址,接口文档见:https://op.jinritemai.com/docs/api-docs/69/2164 + Vid string `json:"vid"` + // 视频封面地址 + VideoCoverUrl string `json:"video_cover_url"` + // 视频高度 + Height int32 `json:"height"` + // 视频宽度 + Width int32 `json:"width"` + // 视频大小,单位B + Size int64 `json:"size"` +} +type MaterialInfoListItem struct { + // 素材id + MaterialId string `json:"material_id"` + // 父文件夹id + FolderId string `json:"folder_id"` + // 创建素材时传入的url + OriginUrl string `json:"origin_url"` + // 素材中心返回的url,该字段只对图片有效;如果想获取视频播放信息,请参考video_info/vid字段介绍 + ByteUrl string `json:"byte_url"` + // 素材名称 + MaterialName string `json:"material_name"` + // photo-图片 video-视频 + MaterialType string `json:"material_type"` + // 素材状态,0-待下载 1-有效 4-回收站中 6-已删除 + OperateStatus int32 `json:"operate_status"` + // 审核状态 1-待审核 2-审核中 3-通过 4-拒绝 + AuditStatus int32 `json:"audit_status"` + // 审核失败的原因 + AuditRejectDesc string `json:"audit_reject_desc"` + // 文件大小 + Size int64 `json:"size"` + // 创建素材的时间 + CreateTime string `json:"create_time"` + // 最近一次更新素材的时间 + UpdateTime string `json:"update_time"` + // 移动到回收站的时间 + DeleteTime string `json:"delete_time"` + // 图片信息 + PhotoInfo *PhotoInfo `json:"photoInfo"` + // 视频信息 + VideoInfo *VideoInfo `json:"videoInfo"` +} +type MaterialSearchMaterialData struct { + // 素材列表 + MaterialInfoList []MaterialInfoListItem `json:"material_info_list"` + // 总数 + Total int64 `json:"total"` +} +type PhotoInfo struct { + // 图片高度 + Height int32 `json:"height"` + // 图片宽度 + Width int32 `json:"width"` + // 图片格式 + Format string `json:"format"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_uploadImageSync/request/material_uploadImageSync_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_uploadImageSync/request/material_uploadImageSync_request.go new file mode 100644 index 00000000..9d247201 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_uploadImageSync/request/material_uploadImageSync_request.go @@ -0,0 +1,56 @@ +package material_uploadImageSync_request + +import ( + "encoding/json" +) + +type MaterialUploadImageSyncRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialUploadImageSyncParam +} + +func (c *MaterialUploadImageSyncRequest) GetUrlPath() string { + return "/material/uploadImageSync" +} + +func New() *MaterialUploadImageSyncRequest { + request := &MaterialUploadImageSyncRequest{ + Param: &MaterialUploadImageSyncParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialUploadImageSyncRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_uploadImageSync_response.MaterialUploadImageSyncResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_uploadImageSync_response.MaterialUploadImageSyncResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialUploadImageSyncRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialUploadImageSyncRequest) GetParams() *MaterialUploadImageSyncParam { + return c.Param +} + +type MaterialUploadImageSyncParam struct { + // 文件夹id,可使用【/material/createFolder】接口创建获取文件夹id + FolderId string `json:"folder_id"` + // 图片url,必须是公网可访问 + Url string `json:"url"` + // 图片名称,开发者自定义,不得超过50个字符。请求成功后图片在抖店素材中心可以查看。 + MaterialName string `json:"material_name"` + // 是否唯一存储,true-同一张图片素材中心只会存储一份,接口会正常响应请求成功;false-新增一张图片至素材中心;不传默认false; + NeedDistinct bool `json:"need_distinct"` + // 请求的唯一标识符,有效时间为1个小时,即:一个小时内使用同样的request_id,视为同一请求。如果未传该参数,素材中心将使用url+material_name生成request_id;接口会正常响应请求成功 + RequestId string `json:"request_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_uploadImageSync/response/material_uploadImageSync_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_uploadImageSync/response/material_uploadImageSync_response.go new file mode 100644 index 00000000..0247982a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_uploadImageSync/response/material_uploadImageSync_response.go @@ -0,0 +1,18 @@ +package material_uploadImageSync_response + +type MaterialUploadImageSyncResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialUploadImageSyncData `json:"data"` +} +type MaterialUploadImageSyncData struct { + // 素材id + MaterialId string `json:"material_id"` + // 素材所在文件夹id,0-素材中心的根目录;其他值-表示对应的文件夹id; + FolderId string `json:"folder_id"` + // 是否是新建,true-新建; false-重复请求;例:request_id重复使用或者素材重复上传 + IsNew bool `json:"is_new"` + // 素材审核状态; 1-等待审核; 2-审核中; 3-通过; 4-拒绝; + AuditStatus int32 `json:"audit_status"` + // 素材中心的图片url + ByteUrl string `json:"byte_url"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_uploadVideoAsync/request/material_uploadVideoAsync_request.go b/platformapi/tiktok_shop/sdk-golang/api/material_uploadVideoAsync/request/material_uploadVideoAsync_request.go new file mode 100644 index 00000000..f294916f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_uploadVideoAsync/request/material_uploadVideoAsync_request.go @@ -0,0 +1,52 @@ +package material_uploadVideoAsync_request + +import ( + "encoding/json" +) + +type MaterialUploadVideoAsyncRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *MaterialUploadVideoAsyncParam +} + +func (c *MaterialUploadVideoAsyncRequest) GetUrlPath() string { + return "/material/uploadVideoAsync" +} + +func New() *MaterialUploadVideoAsyncRequest { + request := &MaterialUploadVideoAsyncRequest{ + Param: &MaterialUploadVideoAsyncParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *MaterialUploadVideoAsyncRequest) Execute(accessToken *doudian_sdk.AccessToken) (*material_uploadVideoAsync_response.MaterialUploadVideoAsyncResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &material_uploadVideoAsync_response.MaterialUploadVideoAsyncResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *MaterialUploadVideoAsyncRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *MaterialUploadVideoAsyncRequest) GetParams() *MaterialUploadVideoAsyncParam { + return c.Param +} + +type MaterialUploadVideoAsyncParam struct { + // 父文件夹id + FolderId string `json:"folder_id"` + // 视频url + Url string `json:"url"` + // 视频名称,不得超过50个字符 + Name string `json:"name"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/material_uploadVideoAsync/response/material_uploadVideoAsync_response.go b/platformapi/tiktok_shop/sdk-golang/api/material_uploadVideoAsync/response/material_uploadVideoAsync_response.go new file mode 100644 index 00000000..7052dfbd --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/material_uploadVideoAsync/response/material_uploadVideoAsync_response.go @@ -0,0 +1,16 @@ +package material_uploadVideoAsync_response + +type MaterialUploadVideoAsyncResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *MaterialUploadVideoAsyncData `json:"data"` +} +type MaterialUploadVideoAsyncData struct { + // 素材id + MaterialId string `json:"material_id"` + // 素材所在文件夹id,0-素材中心的根目录 + FolderId string `json:"folder_id"` + // 是否是新建,false-重复请求 true-新建 + IsNew bool `json:"is_new"` + // 素材审核状态 1-等待审核 2-审核中 3-通过 4-拒绝 + AuditStatus int32 `json:"audit_status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/open_materialToken/request/open_materialToken_request.go b/platformapi/tiktok_shop/sdk-golang/api/open_materialToken/request/open_materialToken_request.go new file mode 100644 index 00000000..95e07152 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/open_materialToken/request/open_materialToken_request.go @@ -0,0 +1,50 @@ +package open_materialToken_request + +import ( + "encoding/json" +) + +type OpenMaterialTokenRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OpenMaterialTokenParam +} + +func (c *OpenMaterialTokenRequest) GetUrlPath() string { + return "/open/materialToken" +} + +func New() *OpenMaterialTokenRequest { + request := &OpenMaterialTokenRequest{ + Param: &OpenMaterialTokenParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OpenMaterialTokenRequest) Execute(accessToken *doudian_sdk.AccessToken) (*open_materialToken_response.OpenMaterialTokenResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &open_materialToken_response.OpenMaterialTokenResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OpenMaterialTokenRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OpenMaterialTokenRequest) GetParams() *OpenMaterialTokenParam { + return c.Param +} + +type OpenMaterialTokenParam struct { + // 需要上传的素材数量 + UploadNum int64 `json:"upload_num"` + // 文件后缀名称,必须以"."开头 + FileExtension string `json:"file_extension"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/open_materialToken/response/open_materialToken_response.go b/platformapi/tiktok_shop/sdk-golang/api/open_materialToken/response/open_materialToken_response.go new file mode 100644 index 00000000..b1fb157d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/open_materialToken/response/open_materialToken_response.go @@ -0,0 +1,10 @@ +package open_materialToken_response + +type OpenMaterialTokenResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OpenMaterialTokenData `json:"data"` +} +type OpenMaterialTokenData struct { + // 获取下载地址query + AuthQuery string `json:"auth_query"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_AddressAppliedSwitch/request/order_AddressAppliedSwitch_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_AddressAppliedSwitch/request/order_AddressAppliedSwitch_request.go new file mode 100644 index 00000000..206c11eb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_AddressAppliedSwitch/request/order_AddressAppliedSwitch_request.go @@ -0,0 +1,50 @@ +package order_AddressAppliedSwitch_request + +import ( + "encoding/json" +) + +type OrderAddressAppliedSwitchRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderAddressAppliedSwitchParam +} + +func (c *OrderAddressAppliedSwitchRequest) GetUrlPath() string { + return "/order/AddressAppliedSwitch" +} + +func New() *OrderAddressAppliedSwitchRequest { + request := &OrderAddressAppliedSwitchRequest{ + Param: &OrderAddressAppliedSwitchParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderAddressAppliedSwitchRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_AddressAppliedSwitch_response.OrderAddressAppliedSwitchResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_AddressAppliedSwitch_response.OrderAddressAppliedSwitchResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderAddressAppliedSwitchRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderAddressAppliedSwitchRequest) GetParams() *OrderAddressAppliedSwitchParam { + return c.Param +} + +type OrderAddressAppliedSwitchParam struct { + // 0代表关闭,不需要审核 1代表开启审核,买家变更需要审核 + IsAllowed int64 `json:"is_allowed"` + // 0代表异步审核,1表示实时审核 + ReviewType int64 `json:"review_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_AddressAppliedSwitch/response/order_AddressAppliedSwitch_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_AddressAppliedSwitch/response/order_AddressAppliedSwitch_response.go new file mode 100644 index 00000000..5cae17d4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_AddressAppliedSwitch/response/order_AddressAppliedSwitch_response.go @@ -0,0 +1,8 @@ +package order_AddressAppliedSwitch_response + +type OrderAddressAppliedSwitchResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderAddressAppliedSwitchData `json:"data"` +} +type OrderAddressAppliedSwitchData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_BatchSearchIndex/request/order_BatchSearchIndex_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_BatchSearchIndex/request/order_BatchSearchIndex_request.go new file mode 100644 index 00000000..3bc9ed99 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_BatchSearchIndex/request/order_BatchSearchIndex_request.go @@ -0,0 +1,54 @@ +package order_BatchSearchIndex_request + +import ( + "encoding/json" +) + +type OrderBatchSearchIndexRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderBatchSearchIndexParam +} + +func (c *OrderBatchSearchIndexRequest) GetUrlPath() string { + return "/order/BatchSearchIndex" +} + +func New() *OrderBatchSearchIndexRequest { + request := &OrderBatchSearchIndexRequest{ + Param: &OrderBatchSearchIndexParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderBatchSearchIndexRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_BatchSearchIndex_response.OrderBatchSearchIndexResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_BatchSearchIndex_response.OrderBatchSearchIndexResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderBatchSearchIndexRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderBatchSearchIndexRequest) GetParams() *OrderBatchSearchIndexParam { + return c.Param +} + +type PlainTextListItem struct { + // 明文 + PlainText string `json:"plain_text"` + // 加密类型;1地址加密 2姓名加密 3电话加密 + EncryptType int16 `json:"encrypt_type"` +} +type OrderBatchSearchIndexParam struct { + // 明文列表 + PlainTextList []PlainTextListItem `json:"plain_text_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_BatchSearchIndex/response/order_BatchSearchIndex_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_BatchSearchIndex/response/order_BatchSearchIndex_response.go new file mode 100644 index 00000000..e80ba09a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_BatchSearchIndex/response/order_BatchSearchIndex_response.go @@ -0,0 +1,24 @@ +package order_BatchSearchIndex_response + +type OrderBatchSearchIndexResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderBatchSearchIndexData `json:"data"` +} +type PlainToEncryptIndexListItem struct { + // 明文 + Plain string `json:"plain"` + // 索引串 + SearchIndex string `json:"search_index"` +} +type CustomErr struct { + // 错误状态码 + ErrCode int64 `json:"err_code"` + // 错误信息 + ErrMsg string `json:"err_msg"` +} +type OrderBatchSearchIndexData struct { + // 明文转化为索引穿列表 + PlainToEncryptIndexList []PlainToEncryptIndexListItem `json:"plain_to_encrypt_index_list"` + // 业务错误 + CustomErr *CustomErr `json:"custom_err"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addOrderRemark/request/order_addOrderRemark_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_addOrderRemark/request/order_addOrderRemark_request.go new file mode 100644 index 00000000..bafff4e2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addOrderRemark/request/order_addOrderRemark_request.go @@ -0,0 +1,54 @@ +package order_addOrderRemark_request + +import ( + "encoding/json" +) + +type OrderAddOrderRemarkRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderAddOrderRemarkParam +} + +func (c *OrderAddOrderRemarkRequest) GetUrlPath() string { + return "/order/addOrderRemark" +} + +func New() *OrderAddOrderRemarkRequest { + request := &OrderAddOrderRemarkRequest{ + Param: &OrderAddOrderRemarkParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderAddOrderRemarkRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_addOrderRemark_response.OrderAddOrderRemarkResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_addOrderRemark_response.OrderAddOrderRemarkResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderAddOrderRemarkRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderAddOrderRemarkRequest) GetParams() *OrderAddOrderRemarkParam { + return c.Param +} + +type OrderAddOrderRemarkParam struct { + // 父订单id + OrderId string `json:"order_id"` + // 备注内容,最大不得超过60个字符 + Remark string `json:"remark"` + // 是否加旗标,不填则默认为否 true:需要加旗标 false:不加旗标 + IsAddStar string `json:"is_add_star"` + // 标星等级,范围0~5 0为灰色旗标,5为红色旗标,数字越大颜色越深 0灰 1紫 2青 3绿 4橙 5红 + Star string `json:"star"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addOrderRemark/response/order_addOrderRemark_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_addOrderRemark/response/order_addOrderRemark_response.go new file mode 100644 index 00000000..34388824 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addOrderRemark/response/order_addOrderRemark_response.go @@ -0,0 +1,8 @@ +package order_addOrderRemark_response + +type OrderAddOrderRemarkResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderAddOrderRemarkData `json:"data"` +} +type OrderAddOrderRemarkData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addSerialNumber/request/order_addSerialNumber_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_addSerialNumber/request/order_addSerialNumber_request.go new file mode 100644 index 00000000..01db2f6b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addSerialNumber/request/order_addSerialNumber_request.go @@ -0,0 +1,50 @@ +package order_addSerialNumber_request + +import ( + "encoding/json" +) + +type OrderAddSerialNumberRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderAddSerialNumberParam +} + +func (c *OrderAddSerialNumberRequest) GetUrlPath() string { + return "/order/addSerialNumber" +} + +func New() *OrderAddSerialNumberRequest { + request := &OrderAddSerialNumberRequest{ + Param: &OrderAddSerialNumberParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderAddSerialNumberRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_addSerialNumber_response.OrderAddSerialNumberResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_addSerialNumber_response.OrderAddSerialNumberResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderAddSerialNumberRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderAddSerialNumberRequest) GetParams() *OrderAddSerialNumberParam { + return c.Param +} + +type OrderAddSerialNumberParam struct { + // 订单号 + OrderId string `json:"order_id"` + // 商品序列号,序列号长度不能超过30位字符,其中手机序列号仅支持填写15~17位数字 + SerialNumberList []string `json:"serial_number_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addSerialNumber/response/order_addSerialNumber_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_addSerialNumber/response/order_addSerialNumber_response.go new file mode 100644 index 00000000..d14ab799 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addSerialNumber/response/order_addSerialNumber_response.go @@ -0,0 +1,8 @@ +package order_addSerialNumber_response + +type OrderAddSerialNumberResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderAddSerialNumberData `json:"data"` +} +type OrderAddSerialNumberData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addresSwitchConfig/request/order_addresSwitchConfig_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_addresSwitchConfig/request/order_addresSwitchConfig_request.go new file mode 100644 index 00000000..152431a8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addresSwitchConfig/request/order_addresSwitchConfig_request.go @@ -0,0 +1,46 @@ +package order_addresSwitchConfig_request + +import ( + "encoding/json" +) + +type OrderAddresSwitchConfigRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderAddresSwitchConfigParam +} + +func (c *OrderAddresSwitchConfigRequest) GetUrlPath() string { + return "/order/addresSwitchConfig" +} + +func New() *OrderAddresSwitchConfigRequest { + request := &OrderAddresSwitchConfigRequest{ + Param: &OrderAddresSwitchConfigParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderAddresSwitchConfigRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_addresSwitchConfig_response.OrderAddresSwitchConfigResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_addresSwitchConfig_response.OrderAddresSwitchConfigResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderAddresSwitchConfigRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderAddresSwitchConfigRequest) GetParams() *OrderAddresSwitchConfigParam { + return c.Param +} + +type OrderAddresSwitchConfigParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addresSwitchConfig/response/order_addresSwitchConfig_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_addresSwitchConfig/response/order_addresSwitchConfig_response.go new file mode 100644 index 00000000..1ce8a7de --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addresSwitchConfig/response/order_addresSwitchConfig_response.go @@ -0,0 +1,10 @@ +package order_addresSwitchConfig_response + +type OrderAddresSwitchConfigResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderAddresSwitchConfigData `json:"data"` +} +type OrderAddresSwitchConfigData struct { + // 0: 商家当前未开启审核 1:商家当前已开启审核,但本应用不可进行审核 2:商家当前已开启审核,且本应用可审核 + AuthorizedStatus int64 `json:"authorized_status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addressConfirm/request/order_addressConfirm_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_addressConfirm/request/order_addressConfirm_request.go new file mode 100644 index 00000000..d7cb9c6c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addressConfirm/request/order_addressConfirm_request.go @@ -0,0 +1,50 @@ +package order_addressConfirm_request + +import ( + "encoding/json" +) + +type OrderAddressConfirmRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderAddressConfirmParam +} + +func (c *OrderAddressConfirmRequest) GetUrlPath() string { + return "/order/addressConfirm" +} + +func New() *OrderAddressConfirmRequest { + request := &OrderAddressConfirmRequest{ + Param: &OrderAddressConfirmParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderAddressConfirmRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_addressConfirm_response.OrderAddressConfirmResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_addressConfirm_response.OrderAddressConfirmResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderAddressConfirmRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderAddressConfirmRequest) GetParams() *OrderAddressConfirmParam { + return c.Param +} + +type OrderAddressConfirmParam struct { + // 主订单id,注意请求时order/list或 order/detail中返回的主订单id带的‘A’需要截断掉 + OrderId string `json:"order_id"` + // 0:同意; 拒绝需要传入以下参数: 1001:订单已进入拣货环节 1002:订单已进入配货环节 1003:订单已进入仓库环节 1004:订单已进入出库环节 1005:订单已进入发货环节 + IsApproved int64 `json:"is_approved"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addressConfirm/response/order_addressConfirm_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_addressConfirm/response/order_addressConfirm_response.go new file mode 100644 index 00000000..6eb95993 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addressConfirm/response/order_addressConfirm_response.go @@ -0,0 +1,8 @@ +package order_addressConfirm_response + +type OrderAddressConfirmResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderAddressConfirmData `json:"data"` +} +type OrderAddressConfirmData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addressModify/request/order_addressModify_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_addressModify/request/order_addressModify_request.go new file mode 100644 index 00000000..57897aaa --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addressModify/request/order_addressModify_request.go @@ -0,0 +1,92 @@ +package order_addressModify_request + +import ( + "encoding/json" +) + +type OrderAddressModifyRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderAddressModifyParam +} + +func (c *OrderAddressModifyRequest) GetUrlPath() string { + return "/order/addressModify" +} + +func New() *OrderAddressModifyRequest { + request := &OrderAddressModifyRequest{ + Param: &OrderAddressModifyParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderAddressModifyRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_addressModify_response.OrderAddressModifyResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_addressModify_response.OrderAddressModifyResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderAddressModifyRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderAddressModifyRequest) GetParams() *OrderAddressModifyParam { + return c.Param +} + +type Street struct { + // 街道id + Id string `json:"id"` + // 街道名称 + Name string `json:"name"` +} +type PostAddr struct { + // 省 + Province *Province `json:"province"` + // 城市 + City *City `json:"city"` + // 镇 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细地址 + AddressDetail string `json:"address_detail"` + // 暂时未使用的字段 + LandMark string `json:"land_mark"` +} +type OrderAddressModifyParam struct { + // 点单号 + OrderId string `json:"order_id"` + // 修改收货地址,post_addr中的所有字段都必传。 + PostAddr *PostAddr `json:"post_addr"` + // 收货人姓名 + PostReceiver string `json:"post_receiver"` + // 收货人电话号码 + PostTel string `json:"post_tel"` +} +type Province struct { + // 省id + Id string `json:"id"` + // 省名称 + Name string `json:"name"` +} +type City struct { + // 城市id + Id string `json:"id"` + // 城市名称 + Name string `json:"name"` +} +type Town struct { + // 镇id + Id string `json:"id"` + // 镇名称 + Name string `json:"name"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_addressModify/response/order_addressModify_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_addressModify/response/order_addressModify_response.go new file mode 100644 index 00000000..a445f0d6 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_addressModify/response/order_addressModify_response.go @@ -0,0 +1,8 @@ +package order_addressModify_response + +type OrderAddressModifyResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderAddressModifyData `json:"data"` +} +type OrderAddressModifyData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request/order_batchDecrypt_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request/order_batchDecrypt_request.go new file mode 100644 index 00000000..c08dcbbb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/request/order_batchDecrypt_request.go @@ -0,0 +1,58 @@ +package order_batchDecrypt_request + +import ( + "encoding/json" +) + +type OrderBatchDecryptRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderBatchDecryptParam +} + +func (c *OrderBatchDecryptRequest) GetUrlPath() string { + return "/order/batchDecrypt" +} + +func New() *OrderBatchDecryptRequest { + request := &OrderBatchDecryptRequest{ + Param: &OrderBatchDecryptParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderBatchDecryptRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_batchDecrypt_response.OrderBatchDecryptResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_batchDecrypt_response.OrderBatchDecryptResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderBatchDecryptRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderBatchDecryptRequest) GetParams() *OrderBatchDecryptParam { + return c.Param +} + +type CipherInfosItem struct { + // 订单号 + AuthId string `json:"auth_id"` + // 待解密值 + CipherText string `json:"cipher_text"` +} +type OrderBatchDecryptParam struct { + // 待解密值集合,最大支持一次解密50条。待解密的密文列表示例,入参结构{"cipher_infos":[{"auth_id”:”订单号”,”cipher_text”:”待解密值”},{“auth_id”:”订单号”,”cipher_text”:”待解密值”}]} + CipherInfos []CipherInfosItem `json:"cipher_infos"` + // 服务商账号体系中,商户的账户ID,每个ISV下需要保证唯一,可选格式:独立生成的账户唯一标识 + AccountId string `json:"account_id"` + // 商户的账户ID类型;服务商账号中的主-main_account;子账号-sub_account; + AccountType string `json:"account_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response/order_batchDecrypt_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response/order_batchDecrypt_response.go new file mode 100644 index 00000000..ca978dd0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchDecrypt/response/order_batchDecrypt_response.go @@ -0,0 +1,38 @@ +package order_batchDecrypt_response + +type OrderBatchDecryptResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderBatchDecryptData `json:"data"` +} +type DecryptInfosItem struct { + // 业务标识;解密抖音官方密文数据使用订单号即可。如果开发者使用【/order/batchEncrypt】加密接口自定义auth_id值,需要传自己定义的标识。 + AuthId string `json:"auth_id"` + // 密文值,具体内容参考[数据安全加密对接文档](https://op.jinritemai.com/docs/guide-docs/56/589) + CipherText string `json:"cipher_text"` + // 解密后明文 + DecryptText string `json:"decrypt_text"` + // 错误码 + ErrNo int64 `json:"err_no"` + // 错误描述 + ErrMsg string `json:"err_msg"` + // 手机号描述;false-真实手机号,true-虚拟手机号 + IsVirtualTel bool `json:"is_virtual_tel"` + // 虚拟号过期时间(商家自有呼叫中心记录,在到期后还需要则再次请求获取) + ExpireTime int64 `json:"expire_time"` + // 虚拟号主机号 + PhoneNoA string `json:"phone_no_a"` + // 虚拟号分机号 + PhoneNoB string `json:"phone_no_b"` +} +type CustomErr struct { + // 错误码 + ErrCode int64 `json:"err_code"` + // 错误内容描述 + ErrMsg string `json:"err_msg"` +} +type OrderBatchDecryptData struct { + // 解密列表 + DecryptInfos []DecryptInfosItem `json:"decrypt_infos"` + // 业务错误 + CustomErr *CustomErr `json:"custom_err"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchEncrypt/request/order_batchEncrypt_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchEncrypt/request/order_batchEncrypt_request.go new file mode 100644 index 00000000..6b2aa3c0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchEncrypt/request/order_batchEncrypt_request.go @@ -0,0 +1,60 @@ +package order_batchEncrypt_request + +import ( + "encoding/json" +) + +type OrderBatchEncryptRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderBatchEncryptParam +} + +func (c *OrderBatchEncryptRequest) GetUrlPath() string { + return "/order/batchEncrypt" +} + +func New() *OrderBatchEncryptRequest { + request := &OrderBatchEncryptRequest{ + Param: &OrderBatchEncryptParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderBatchEncryptRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_batchEncrypt_response.OrderBatchEncryptResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_batchEncrypt_response.OrderBatchEncryptResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderBatchEncryptRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderBatchEncryptRequest) GetParams() *OrderBatchEncryptParam { + return c.Param +} + +type BatchEncryptListItem struct { + // 明文 + PlainText string `json:"plain_text"` + // 业务标识,value为抖音订单号;若是三方订单,可用三方订单号作为标识或自定义标识 + AuthId string `json:"auth_id"` + // 是否支持密文索引 + IsSupportIndex bool `json:"is_support_index"` + // 加密类型;1地址加密 2姓名加密 3电话加密 + SensitiveType int16 `json:"sensitive_type"` +} +type OrderBatchEncryptParam struct { + // 待加密列表 + BatchEncryptList []BatchEncryptListItem `json:"batch_encrypt_list"` + // 加密场景:OrderCode代表订单 AftersaleCode代表售后单 + SensitiveScene string `json:"sensitive_scene"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchEncrypt/response/order_batchEncrypt_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchEncrypt/response/order_batchEncrypt_response.go new file mode 100644 index 00000000..69aa29f8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchEncrypt/response/order_batchEncrypt_response.go @@ -0,0 +1,30 @@ +package order_batchEncrypt_response + +type OrderBatchEncryptResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderBatchEncryptData `json:"data"` +} +type EncryptInfosItem struct { + // 鉴权id + AuthId string `json:"auth_id"` + // 密文 + CipherText string `json:"cipher_text"` + // 明文 + DecryptText string `json:"decrypt_text"` + // 错误码 + ErrNo int64 `json:"err_no"` + // 错误描述 + ErrMsg string `json:"err_msg"` +} +type CustomErr struct { + // 错误码 + ErrCode int64 `json:"err_code"` + // 错误描述 + ErrMsg string `json:"err_msg"` +} +type OrderBatchEncryptData struct { + // 加密之后的数据 + EncryptInfos []EncryptInfosItem `json:"encrypt_infos"` + // 业务错误 + CustomErr *CustomErr `json:"custom_err"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/request/order_batchSensitive_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/request/order_batchSensitive_request.go new file mode 100644 index 00000000..7540e4c8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/request/order_batchSensitive_request.go @@ -0,0 +1,54 @@ +package order_batchSensitive_request + +import ( + "encoding/json" +) + +type OrderBatchSensitiveRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderBatchSensitiveParam +} + +func (c *OrderBatchSensitiveRequest) GetUrlPath() string { + return "/order/batchSensitive" +} + +func New() *OrderBatchSensitiveRequest { + request := &OrderBatchSensitiveRequest{ + Param: &OrderBatchSensitiveParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderBatchSensitiveRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_batchSensitive_response.OrderBatchSensitiveResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_batchSensitive_response.OrderBatchSensitiveResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderBatchSensitiveRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderBatchSensitiveRequest) GetParams() *OrderBatchSensitiveParam { + return c.Param +} + +type CipherInfosItem struct { + // 业务标识,value为抖音订单号 + AuthId string `json:"auth_id"` + // 密文 + CipherText string `json:"cipher_text"` +} +type OrderBatchSensitiveParam struct { + // 待脱敏的密文列表,每次调用不超过50条 + CipherInfos []CipherInfosItem `json:"cipher_infos"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/response/order_batchSensitive_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/response/order_batchSensitive_response.go new file mode 100644 index 00000000..dd7939d0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_batchSensitive/response/order_batchSensitive_response.go @@ -0,0 +1,30 @@ +package order_batchSensitive_response + +type OrderBatchSensitiveResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderBatchSensitiveData `json:"data"` +} +type CustomErr struct { + // 0 + ErrCode int64 `json:"err_code"` + // "" + ErrMsg string `json:"err_msg"` +} +type OrderBatchSensitiveData struct { + // 脱敏信息列表 + DecryptInfos []DecryptInfosItem `json:"decrypt_infos"` + // 业务错误 + CustomErr *CustomErr `json:"custom_err"` +} +type DecryptInfosItem struct { + // 业务标识,value为抖音订单号 + AuthId string `json:"auth_id"` + // 密文 + CipherText string `json:"cipher_text"` + // 13*******64 + DecryptText string `json:"decrypt_text"` + // 0 + ErrNo int64 `json:"err_no"` + // "" + ErrMsg string `json:"err_msg"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_getSearchIndex/request/order_getSearchIndex_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_getSearchIndex/request/order_getSearchIndex_request.go new file mode 100644 index 00000000..a0c5419e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_getSearchIndex/request/order_getSearchIndex_request.go @@ -0,0 +1,50 @@ +package order_getSearchIndex_request + +import ( + "encoding/json" +) + +type OrderGetSearchIndexRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderGetSearchIndexParam +} + +func (c *OrderGetSearchIndexRequest) GetUrlPath() string { + return "/order/getSearchIndex" +} + +func New() *OrderGetSearchIndexRequest { + request := &OrderGetSearchIndexRequest{ + Param: &OrderGetSearchIndexParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderGetSearchIndexRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_getSearchIndex_response.OrderGetSearchIndexResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_getSearchIndex_response.OrderGetSearchIndexResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderGetSearchIndexRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderGetSearchIndexRequest) GetParams() *OrderGetSearchIndexParam { + return c.Param +} + +type OrderGetSearchIndexParam struct { + // 电话号码 + PlainText string `json:"plain_text"` + // 加密类型;1地址加密 2姓名加密 3电话加密 + SensitiveType int16 `json:"sensitive_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_getSearchIndex/response/order_getSearchIndex_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_getSearchIndex/response/order_getSearchIndex_response.go new file mode 100644 index 00000000..c28ad139 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_getSearchIndex/response/order_getSearchIndex_response.go @@ -0,0 +1,10 @@ +package order_getSearchIndex_response + +type OrderGetSearchIndexResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderGetSearchIndexData `json:"data"` +} +type OrderGetSearchIndexData struct { + // 索引串 + EncryptIndexText string `json:"encrypt_index_text"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_getServiceList/request/order_getServiceList_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_getServiceList/request/order_getServiceList_request.go new file mode 100644 index 00000000..8b93c44e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_getServiceList/request/order_getServiceList_request.go @@ -0,0 +1,64 @@ +package order_getServiceList_request + +import ( + "encoding/json" +) + +type OrderGetServiceListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderGetServiceListParam +} + +func (c *OrderGetServiceListRequest) GetUrlPath() string { + return "/order/getServiceList" +} + +func New() *OrderGetServiceListRequest { + request := &OrderGetServiceListRequest{ + Param: &OrderGetServiceListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderGetServiceListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_getServiceList_response.OrderGetServiceListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_getServiceList_response.OrderGetServiceListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderGetServiceListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderGetServiceListRequest) GetParams() *OrderGetServiceListParam { + return c.Param +} + +type OrderGetServiceListParam struct { + // 开始时间时间戳 + StartTime int64 `json:"start_time"` + // 结束时间时间戳,必须大于开始时间 + EndTime int64 `json:"end_time"` + // 1、不传代表获取全部服务请求 2、操作状态:0 #待处理 10 #审核中 100 #已关闭 + Status int32 `json:"status"` + // 订单id + OrderId int64 `json:"order_id"` + // 服务单id + ServiceId int64 `json:"service_id"` + // 1、默认按服务单创建时间搜索 2、值为“create_time”:按服务单创建时间;值为“update_time”:按服务单更新时间 + OrderBy string `json:"order_by"` + // 页数(默认值为1,第一页从1开始) + Page int32 `json:"page"` + // 每页订单数(默认为10,最大100),超过100则会按照最大值100处理 + Size int32 `json:"size"` + // 排序方式:ASC按时间升序, DESC按时间降序 默认DESC + Order string `json:"order"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_getServiceList/response/order_getServiceList_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_getServiceList/response/order_getServiceList_response.go new file mode 100644 index 00000000..f2eb4af9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_getServiceList/response/order_getServiceList_response.go @@ -0,0 +1,36 @@ +package order_getServiceList_response + +type OrderGetServiceListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderGetServiceListData `json:"data"` +} +type ListItem struct { + // 服务请求ID + Id int64 `json:"id"` + // 订单号 + OrderId int64 `json:"order_id"` + // 操作状态 + OperateStatus int32 `json:"operate_status"` + // 服务单详情 + Detail string `json:"detail"` + // 回复内容 + Reply string `json:"reply"` + // 服务创建时间 + CreateTime string `json:"create_time"` + // 服务类型 + ServiceType int64 `json:"service_type"` + // 回复时间 + ReplyTime string `json:"reply_time"` + // 操作状态含义 + OperateStatusDesc string `json:"operate_status_desc"` + // 店铺id + ShopId int64 `json:"shop_id"` + // 服务更新时间时间 + UpdateTime string `json:"update_time"` +} +type OrderGetServiceListData struct { + // 总数 + Total int64 `json:"total"` + // 列表 + List []ListItem `json:"list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_insurance/request/order_insurance_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_insurance/request/order_insurance_request.go new file mode 100644 index 00000000..ac3f6c84 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_insurance/request/order_insurance_request.go @@ -0,0 +1,48 @@ +package order_insurance_request + +import ( + "encoding/json" +) + +type OrderInsuranceRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderInsuranceParam +} + +func (c *OrderInsuranceRequest) GetUrlPath() string { + return "/order/insurance" +} + +func New() *OrderInsuranceRequest { + request := &OrderInsuranceRequest{ + Param: &OrderInsuranceParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderInsuranceRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_insurance_response.OrderInsuranceResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_insurance_response.OrderInsuranceResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderInsuranceRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderInsuranceRequest) GetParams() *OrderInsuranceParam { + return c.Param +} + +type OrderInsuranceParam struct { + // 订单id(可以加A也可以不加) + OrderId string `json:"order_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_insurance/response/order_insurance_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_insurance/response/order_insurance_response.go new file mode 100644 index 00000000..086d9f98 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_insurance/response/order_insurance_response.go @@ -0,0 +1,58 @@ +package order_insurance_response + +type OrderInsuranceResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderInsuranceData `json:"data"` +} +type GoodsInfoListItem struct { + // 商品名称 + ProductName string `json:"product_name"` + // 商品id + ProductId int64 `json:"product_id"` + // 类目 + CategoryId string `json:"category_id"` + // url + ShowPageUrl string `json:"show_page_url"` + // 数量 + Amount int32 `json:"amount"` +} +type PolicyInfoListItem struct { + // 保单号 + InsPolicyNo string `json:"ins_policy_no"` + // 预计退保费用,单位分 + ApproximateReturnFee int64 `json:"approximate_return_fee"` + // 总保费,单位分 + TotalPremium int64 `json:"total_premium"` + // 用户支付的保费,单位分 + UserPremium int64 `json:"user_premium"` + // 商家支付的保费,单位分 + MerchantPremium int64 `json:"merchant_premium"` + // 平台承担的保费,单位分 + PlatformPremium int64 `json:"platform_premium"` + // 保单状态 0: 初始化 1: 待生效 2: 保障中 3: 赔付完成 4: 保单失效 5: 已经取消 + Status int32 `json:"status"` + // 申述状态 0: 初始化 1: 申诉处理中 2: 申诉成功 3: 申诉失败 + AppealStatus int32 `json:"appeal_status"` + // 理赔状态 0: 初始化 1: 理赔中 2: 理赔成功 3: 理赔失败 + ClaimStatus int32 `json:"claim_status"` + // 保险公司名称 + CompanyName string `json:"company_name"` + // 只有在保单状态为赔付失败的时候并允许申诉 true,其他情况 false + IsAllowAppeal bool `json:"is_allow_appeal"` + // 商品列表 + GoodsInfoList []GoodsInfoListItem `json:"goods_info_list"` + // 理赔或申述失败原因 + FailReason string `json:"fail_reason"` + // 保险客服电话 + InsuranceHotline string `json:"insurance_hotline"` + // 保费状态 1:待扣减 2:已扣减 3:已退还 4:已垫付 5:已关闭 + PremiumStatus int32 `json:"premium_status"` + // 出保时间 + InsEnsuredTimeBegin string `json:"ins_ensured_time_begin"` + // 保险过期时间 + InsEnsuredTimeEnd string `json:"ins_ensured_time_end"` +} +type OrderInsuranceData struct { + // 保单详情列表 + PolicyInfoList []PolicyInfoListItem `json:"policy_info_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAdd/request/order_logisticsAdd_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAdd/request/order_logisticsAdd_request.go new file mode 100644 index 00000000..4927ab31 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAdd/request/order_logisticsAdd_request.go @@ -0,0 +1,66 @@ +package order_logisticsAdd_request + +import ( + "encoding/json" +) + +type OrderLogisticsAddRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderLogisticsAddParam +} + +func (c *OrderLogisticsAddRequest) GetUrlPath() string { + return "/order/logisticsAdd" +} + +func New() *OrderLogisticsAddRequest { + request := &OrderLogisticsAddRequest{ + Param: &OrderLogisticsAddParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderLogisticsAddRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_logisticsAdd_response.OrderLogisticsAddResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_logisticsAdd_response.OrderLogisticsAddResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderLogisticsAddRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderLogisticsAddRequest) GetParams() *OrderLogisticsAddParam { + return c.Param +} + +type OrderLogisticsAddParam struct { + // 订单ID + OrderId string `json:"order_id"` + // 已废弃。物流公司ID。请使用company_code字段。 + LogisticsId int64 `json:"logistics_id"` + // 物流公司名称 + Company string `json:"company"` + // 物流公司code,字段必传。可从/order/logisticsCompanyList接口获取。 + CompanyCode string `json:"company_code"` + // 快递单号 + LogisticsCode string `json:"logistics_code"` + // 是否拒绝退款申请(true表示拒绝退款,并继续发货;不传或为false表示有退款需要处理,拒绝发货),is_refund_reject和is_reject_refund随机使用一个即可 + IsRefundReject bool `json:"is_refund_reject"` + // 是否拒绝退款申请(true表示拒绝退款,并继续发货;不传或为false表示有退款需要处理,拒绝发货),is_refund_reject和is_reject_refund随机使用一个即可 + IsRejectRefund bool `json:"is_reject_refund"` + // 商品序列号,15-17位数字 + SerialNumberList []string `json:"serial_number_list"` + // 发货地址ID,通过地址库接口查询 + AddressId int64 `json:"address_id"` + // 门店ID + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAdd/response/order_logisticsAdd_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAdd/response/order_logisticsAdd_response.go new file mode 100644 index 00000000..e8d09ea9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAdd/response/order_logisticsAdd_response.go @@ -0,0 +1,8 @@ +package order_logisticsAdd_response + +type OrderLogisticsAddResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderLogisticsAddData `json:"data"` +} +type OrderLogisticsAddData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddMultiPack/request/order_logisticsAddMultiPack_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddMultiPack/request/order_logisticsAddMultiPack_request.go new file mode 100644 index 00000000..dce4e106 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddMultiPack/request/order_logisticsAddMultiPack_request.go @@ -0,0 +1,90 @@ +package order_logisticsAddMultiPack_request + +import ( + "encoding/json" +) + +type OrderLogisticsAddMultiPackRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderLogisticsAddMultiPackParam +} + +func (c *OrderLogisticsAddMultiPackRequest) GetUrlPath() string { + return "/order/logisticsAddMultiPack" +} + +func New() *OrderLogisticsAddMultiPackRequest { + request := &OrderLogisticsAddMultiPackRequest{ + Param: &OrderLogisticsAddMultiPackParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderLogisticsAddMultiPackRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_logisticsAddMultiPack_response.OrderLogisticsAddMultiPackResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_logisticsAddMultiPack_response.OrderLogisticsAddMultiPackResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderLogisticsAddMultiPackRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderLogisticsAddMultiPackRequest) GetParams() *OrderLogisticsAddMultiPackParam { + return c.Param +} + +type ShippedOrderInfoItem struct { + // 需要发货的子订单id + ShippedOrderId string `json:"shipped_order_id"` + // 上述子订单的待发货数 + ShippedNum int64 `json:"shipped_num"` + // 已废弃 + ShippedItemIds []string `json:"shipped_item_ids"` + // 组套商品参数列表 + BundleList []BundleListItem `json:"bundle_list"` +} +type PackListItem struct { + // 需要发货的子订单信息列表 + ShippedOrderInfo []ShippedOrderInfoItem `json:"shipped_order_info"` + // 运单号 + LogisticsCode string `json:"logistics_code"` + // 物流公司名称 + Company string `json:"company"` + // 物流公司code,字段必传。可从/order/logisticsCompanyList接口获取。 + CompanyCode string `json:"company_code"` + // 已废弃。物流公司ID。请使用company_code字段。 + LogisticsId string `json:"logistics_id"` +} +type OrderLogisticsAddMultiPackParam struct { + // 父订单ID + OrderId string `json:"order_id"` + // 包裹list + PackList []PackListItem `json:"pack_list"` + // 是否拒绝退款申请(true表示拒绝退款,并继续发货;不传或为false表示有退款需要处理,拒绝发货),is_refund_reject和is_reject_refund随机使用一个即可 + IsRejectRefund bool `json:"is_reject_refund"` + // 请求唯一标识,相同request_id多次请求,第一次请求成功后,后续的请求会触发幂等,会直接返回第一次请求成功的结果,不会实际触发发货。 + RequestId string `json:"request_id"` + // 发货地址id,使用/address/list接口获取 + AddressId string `json:"address_id"` + // 商品序列号,单个序列号长度不能超过30位字符,其中手机序列号仅支持填写15~17位数字 + SerialNumberList []string `json:"serial_number_list"` + // 是否拒绝退款申请(true表示拒绝退款,并继续发货;不传或为false表示有退款需要处理,拒绝发货),is_refund_reject和is_reject_refund随机使用一个即可 + IsRefundReject bool `json:"is_refund_reject"` +} +type BundleListItem struct { + // 组套商品子商品ID + SubProductId string `json:"sub_product_id"` + // 组套商品子商品SKU_ID + SubSkuId string `json:"sub_sku_id"` + // 组套商品子商品发货数量 + ComboNum int64 `json:"combo_num"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddMultiPack/response/order_logisticsAddMultiPack_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddMultiPack/response/order_logisticsAddMultiPack_response.go new file mode 100644 index 00000000..d84ee5c0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddMultiPack/response/order_logisticsAddMultiPack_response.go @@ -0,0 +1,26 @@ +package order_logisticsAddMultiPack_response + +type OrderLogisticsAddMultiPackResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderLogisticsAddMultiPackData `json:"data"` +} +type PackListItem struct { + // 发货的订单信息 + ShippedOrderInfo []ShippedOrderInfoItem `json:"shipped_order_info"` + // 物流单号 + LogisticsCode string `json:"logistics_code"` + // 包裹id + PackId string `json:"pack_id"` +} +type OrderLogisticsAddMultiPackData struct { + // 包裹信息 + PackList []PackListItem `json:"pack_list"` +} +type ShippedOrderInfoItem struct { + // 发货的子单id + ShippedOrderId string `json:"shipped_order_id"` + // 发货子单数量 + ShippedNum int64 `json:"shipped_num"` + // 发货的四层单id + ShippedItemIds []string `json:"shipped_item_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddSinglePack/request/order_logisticsAddSinglePack_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddSinglePack/request/order_logisticsAddSinglePack_request.go new file mode 100644 index 00000000..9da2b488 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddSinglePack/request/order_logisticsAddSinglePack_request.go @@ -0,0 +1,84 @@ +package order_logisticsAddSinglePack_request + +import ( + "encoding/json" +) + +type OrderLogisticsAddSinglePackRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderLogisticsAddSinglePackParam +} + +func (c *OrderLogisticsAddSinglePackRequest) GetUrlPath() string { + return "/order/logisticsAddSinglePack" +} + +func New() *OrderLogisticsAddSinglePackRequest { + request := &OrderLogisticsAddSinglePackRequest{ + Param: &OrderLogisticsAddSinglePackParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderLogisticsAddSinglePackRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_logisticsAddSinglePack_response.OrderLogisticsAddSinglePackResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_logisticsAddSinglePack_response.OrderLogisticsAddSinglePackResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderLogisticsAddSinglePackRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderLogisticsAddSinglePackRequest) GetParams() *OrderLogisticsAddSinglePackParam { + return c.Param +} + +type ShippedOrderInfoItem struct { + // 需要发货的子订单号 + ShippedOrderId string `json:"shipped_order_id"` + // 上述子订单的待发货数 + ShippedNum int64 `json:"shipped_num"` + // 已废弃 + ShippedItemIds []string `json:"shipped_item_ids"` +} +type OrderSerialNumberItem struct { + // 父订单号 + OrderId string `json:"order_id"` + // 商品序列号,单个序列号长度不能超过30位字符,其中手机序列号仅支持填写15~17位数字 + SerialNumberList []string `json:"serial_number_list"` +} +type OrderLogisticsAddSinglePackParam struct { + // 父订单ID列表 + OrderIdList []string `json:"order_id_list"` + // 需要发货的子订单信息 + ShippedOrderInfo []ShippedOrderInfoItem `json:"shipped_order_info"` + // 运单号 + LogisticsCode string `json:"logistics_code"` + // 物流公司名字 + Company string `json:"company"` + // 请求唯一标识,相同request_id多次请求,第一次请求成功后,后续的请求会触发幂等,会直接返回第一次请求成功的结果,不会实际触发发货。 + RequestId string `json:"request_id"` + // 是否拒绝退款申请(true表示拒绝退款,并继续发货;不传或为false表示有退款需要处理,拒绝发货),is_refund_reject和is_reject_refund随机使用一个即可 + IsRejectRefund bool `json:"is_reject_refund"` + // 已废弃。物流公司ID。请使用company_code字段。 + LogisticsId string `json:"logistics_id"` + // 物流公司Code,由接口/order/logisticsCompanyLis查询物流公司列表获得,必填 + CompanyCode string `json:"company_code"` + // 发货地址id + AddressId string `json:"address_id"` + // 是否拒绝退款申请(true表示拒绝退款,并继续发货;不传或为false表示有退款需要处理,拒绝发货),is_refund_reject和is_reject_refund随机使用一个即可 + IsRefundReject bool `json:"is_refund_reject"` + // 订单序列号 + OrderSerialNumber []OrderSerialNumberItem `json:"order_serial_number"` + // 门店ID + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddSinglePack/response/order_logisticsAddSinglePack_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddSinglePack/response/order_logisticsAddSinglePack_response.go new file mode 100644 index 00000000..6ed75d50 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsAddSinglePack/response/order_logisticsAddSinglePack_response.go @@ -0,0 +1,10 @@ +package order_logisticsAddSinglePack_response + +type OrderLogisticsAddSinglePackResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderLogisticsAddSinglePackData `json:"data"` +} +type OrderLogisticsAddSinglePackData struct { + // 包裹id + PackId string `json:"pack_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsCompanyList/request/order_logisticsCompanyList_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsCompanyList/request/order_logisticsCompanyList_request.go new file mode 100644 index 00000000..b1c3cd2d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsCompanyList/request/order_logisticsCompanyList_request.go @@ -0,0 +1,46 @@ +package order_logisticsCompanyList_request + +import ( + "encoding/json" +) + +type OrderLogisticsCompanyListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderLogisticsCompanyListParam +} + +func (c *OrderLogisticsCompanyListRequest) GetUrlPath() string { + return "/order/logisticsCompanyList" +} + +func New() *OrderLogisticsCompanyListRequest { + request := &OrderLogisticsCompanyListRequest{ + Param: &OrderLogisticsCompanyListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderLogisticsCompanyListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_logisticsCompanyList_response.OrderLogisticsCompanyListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_logisticsCompanyList_response.OrderLogisticsCompanyListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderLogisticsCompanyListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderLogisticsCompanyListRequest) GetParams() *OrderLogisticsCompanyListParam { + return c.Param +} + +type OrderLogisticsCompanyListParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsCompanyList/response/order_logisticsCompanyList_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsCompanyList/response/order_logisticsCompanyList_response.go new file mode 100644 index 00000000..e63b5d0d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsCompanyList/response/order_logisticsCompanyList_response.go @@ -0,0 +1,18 @@ +package order_logisticsCompanyList_response + +type OrderLogisticsCompanyListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderLogisticsCompanyListData `json:"data"` +} +type DataItem struct { + // 物流公司id + Id int64 `json:"id"` + // 物流公司名字 + Name string `json:"name"` + // 物流公司code + Code string `json:"code"` +} +type OrderLogisticsCompanyListData struct { + // 物流公司信息 + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEdit/request/order_logisticsEdit_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEdit/request/order_logisticsEdit_request.go new file mode 100644 index 00000000..18faa5ee --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEdit/request/order_logisticsEdit_request.go @@ -0,0 +1,58 @@ +package order_logisticsEdit_request + +import ( + "encoding/json" +) + +type OrderLogisticsEditRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderLogisticsEditParam +} + +func (c *OrderLogisticsEditRequest) GetUrlPath() string { + return "/order/logisticsEdit" +} + +func New() *OrderLogisticsEditRequest { + request := &OrderLogisticsEditRequest{ + Param: &OrderLogisticsEditParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderLogisticsEditRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_logisticsEdit_response.OrderLogisticsEditResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_logisticsEdit_response.OrderLogisticsEditResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderLogisticsEditRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderLogisticsEditRequest) GetParams() *OrderLogisticsEditParam { + return c.Param +} + +type OrderLogisticsEditParam struct { + // 订单ID + OrderId string `json:"order_id"` + // 已废弃。物流公司ID。请使用company_code字段。 + LogisticsId int64 `json:"logistics_id"` + // 物流公司code,由接口/order/logisticsCompanyList返回的物流公司列表获得,必填 + CompanyCode string `json:"company_code"` + // 快递单号 + LogisticsCode string `json:"logistics_code"` + // 已废弃。物流公司名称 + Company string `json:"company"` + // 门店ID + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEdit/response/order_logisticsEdit_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEdit/response/order_logisticsEdit_response.go new file mode 100644 index 00000000..9edbea71 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEdit/response/order_logisticsEdit_response.go @@ -0,0 +1,8 @@ +package order_logisticsEdit_response + +type OrderLogisticsEditResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderLogisticsEditData `json:"data"` +} +type OrderLogisticsEditData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEditByPack/request/order_logisticsEditByPack_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEditByPack/request/order_logisticsEditByPack_request.go new file mode 100644 index 00000000..8a1c97d6 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEditByPack/request/order_logisticsEditByPack_request.go @@ -0,0 +1,58 @@ +package order_logisticsEditByPack_request + +import ( + "encoding/json" +) + +type OrderLogisticsEditByPackRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderLogisticsEditByPackParam +} + +func (c *OrderLogisticsEditByPackRequest) GetUrlPath() string { + return "/order/logisticsEditByPack" +} + +func New() *OrderLogisticsEditByPackRequest { + request := &OrderLogisticsEditByPackRequest{ + Param: &OrderLogisticsEditByPackParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderLogisticsEditByPackRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_logisticsEditByPack_response.OrderLogisticsEditByPackResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_logisticsEditByPack_response.OrderLogisticsEditByPackResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderLogisticsEditByPackRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderLogisticsEditByPackRequest) GetParams() *OrderLogisticsEditByPackParam { + return c.Param +} + +type OrderLogisticsEditByPackParam struct { + // 父订单ID,由orderList接口返回 + OrderId string `json:"order_id"` + // 包裹ID + PackId string `json:"pack_id"` + // 运单号 + LogisticsCode string `json:"logistics_code"` + // 物流公司ID,由接口/order/logisticsCompanyList返回的物流公司列表获得,必填 + CompanyCode string `json:"company_code"` + // 已废弃。物流公司ID。请使用company_code字段。 + LogisticsId string `json:"logistics_id"` + // 门店ID + StoreId int64 `json:"store_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEditByPack/response/order_logisticsEditByPack_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEditByPack/response/order_logisticsEditByPack_response.go new file mode 100644 index 00000000..f2cd626b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_logisticsEditByPack/response/order_logisticsEditByPack_response.go @@ -0,0 +1,8 @@ +package order_logisticsEditByPack_response + +type OrderLogisticsEditByPackResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderLogisticsEditByPackData `json:"data"` +} +type OrderLogisticsEditByPackData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_ordeReportList/request/order_ordeReportList_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_ordeReportList/request/order_ordeReportList_request.go new file mode 100644 index 00000000..9cb7f57f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_ordeReportList/request/order_ordeReportList_request.go @@ -0,0 +1,58 @@ +package order_ordeReportList_request + +import ( + "encoding/json" +) + +type OrderOrdeReportListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderOrdeReportListParam +} + +func (c *OrderOrdeReportListRequest) GetUrlPath() string { + return "/order/ordeReportList" +} + +func New() *OrderOrdeReportListRequest { + request := &OrderOrdeReportListRequest{ + Param: &OrderOrdeReportListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderOrdeReportListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_ordeReportList_response.OrderOrdeReportListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_ordeReportList_response.OrderOrdeReportListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderOrdeReportListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderOrdeReportListRequest) GetParams() *OrderOrdeReportListParam { + return c.Param +} + +type AddRealMobileWhitesItem struct { + // 订单号,订单号和售后单号只需选择一个传入即可 + OrderId string `json:"order_id"` + // 售后单号,订单号和售后单号只需选择一个传入即可 + AfterSaleId string `json:"after_sale_id"` + // 报备原因编码:1-无法发货,2-无法处理售后,3-无法处理客诉,4-无法处理物流包裹,5-其他原因 + ReasonNo int64 `json:"reason_no"` + // 报备备注 + Remark string `json:"remark"` +} +type OrderOrdeReportListParam struct { + // 报备请求 + AddRealMobileWhites []AddRealMobileWhitesItem `json:"add_real_mobile_whites"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_ordeReportList/response/order_ordeReportList_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_ordeReportList/response/order_ordeReportList_response.go new file mode 100644 index 00000000..2f1446fc --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_ordeReportList/response/order_ordeReportList_response.go @@ -0,0 +1,18 @@ +package order_ordeReportList_response + +type OrderOrdeReportListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderOrdeReportListData `json:"data"` +} +type AddRealMobileWhitesItem struct { + // 订单号 + OrderId string `json:"order_id"` + // 售后单号 + AfterSaleId string `json:"after_sale_id"` + // 报备失败原因 + Msg string `json:"msg"` +} +type OrderOrdeReportListData struct { + // 报备响应 + AddRealMobileWhites []AddRealMobileWhitesItem `json:"add_real_mobile_whites"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/request/order_orderDetail_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/request/order_orderDetail_request.go new file mode 100644 index 00000000..1aacf76f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/request/order_orderDetail_request.go @@ -0,0 +1,49 @@ +package order_orderDetail_request + +import ( + "encoding/json" +) + +type OrderOrderDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderOrderDetailParam +} + +func (c *OrderOrderDetailRequest) GetUrlPath() string { + return "/order/orderDetail" +} + +func New() *OrderOrderDetailRequest { + request := &OrderOrderDetailRequest{ + Param: &OrderOrderDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderOrderDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_orderDetail_response.OrderOrderDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_orderDetail_response.OrderOrderDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderOrderDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderOrderDetailRequest) GetParams() *OrderOrderDetailParam { + return c.Param +} + +type OrderOrderDetailParam struct { + // 店铺父订单号,抖店平台生成,平台下唯一; + ShopOrderId string `json:"shop_order_id"` + IsSearchable bool `json:"is_searchable"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response/order_orderDetail_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response/order_orderDetail_response.go new file mode 100644 index 00000000..e37d3517 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_orderDetail/response/order_orderDetail_response.go @@ -0,0 +1,866 @@ +package order_orderDetail_response + +type OrderOrderDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderOrderDetailData `json:"data"` +} +type Province struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type ShopDiscountDetail struct { + // 优惠总金额(单位:分) + TotalAmount int64 `json:"total_amount"` + // 券优惠金额(单位:分) + CouponAmount int64 `json:"coupon_amount"` + // 活动优惠金额(单位:分) + FullDiscountAmount int64 `json:"full_discount_amount"` + // 优惠券信息 + CouponInfo []CouponInfoItem `json:"coupon_info"` + // 优惠活动信息 + FullDiscountInfo []FullDiscountInfoItem `json:"full_discount_info"` +} +type UserTagUiItem struct { + // 标签key + Key string `json:"key"` + // 标签名称 + Text string `json:"text"` +} +type UserCoordinate struct { + // 经度 + UserCoordinateLongitude string `json:"user_coordinate_longitude"` + // 纬度 + UserCoordinateLatitude string `json:"user_coordinate_latitude"` +} +type OrderOrderDetailData struct { + // 订单信息 + ShopOrderDetail *ShopOrderDetail `json:"shop_order_detail"` +} +type SkuCustomizationInfoItem struct { + // 定制详情 + Detail *Detail `json:"detail"` +} +type Street struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type ShareDiscountCost struct { + // 平台承担金额(单位:分) + PlatformCost int64 `json:"platform_cost"` + // 商家承担金额(单位:分) + ShopCost int64 `json:"shop_cost"` + // 作者承担金额(单位:分) + AuthorCost int64 `json:"author_cost"` +} +type CouponInfoItem struct { + // 订单优惠券ID + CouponId int64 `json:"coupon_id"` + // 券类型;21-商家折扣券;22-商家直减券;23-商家满减券 ;41-单品折扣券;42-单品直减券;43 单品满减券; + CouponType int64 `json:"coupon_type"` + // 券批次ID + CouponMetaId string `json:"coupon_meta_id"` + // 券优惠金额(单位:分) + CouponAmount int64 `json:"coupon_amount"` + // 券名称 + CouponName string `json:"coupon_name"` + // 成本分摊 + ShareDiscountCost *ShareDiscountCost `json:"share_discount_cost"` +} +type RedpackInfoItem struct { + // 红包汇总ID + RedpackTransId string `json:"redpack_trans_id"` + // 红包金额(单位:分) + RedpackAmount int64 `json:"redpack_amount"` + // 成本分摊 + ShareDiscountCost *ShareDiscountCost `json:"share_discount_cost"` +} +type PromotionDetail struct { + // 店铺优惠信息 + ShopDiscountDetail *ShopDiscountDetail `json:"shop_discount_detail"` + // 平台优惠信息 + PlatformDiscountDetail *PlatformDiscountDetail `json:"platform_discount_detail"` + // 达人优惠信息 + KolDiscountDetail *KolDiscountDetail `json:"kol_discount_detail"` +} +type CampaignInfoItem struct { + // 活动ID + CampaignId int64 `json:"campaign_id"` + // 活动类型:7-限时特卖 10-定金预售 11-定金预售尾款部分 13-达人专属价 14-限时限量限人 120-拼团 + CampaignType int64 `json:"campaign_type"` + // 成本分摊 + ShareDiscountCost *ShareDiscountCost `json:"share_discount_cost"` + // 活动名称 + CampaignName string `json:"campaign_name"` + // 活动金额(单位:分) + CampaignAmount int64 `json:"campaign_amount"` + // 活动子类型:0 店铺活动,1 平台活动 + CampaignSubType int64 `json:"campaign_sub_type"` +} +type BundleSkuInfoItem struct { + // 子商品图片 + PictureUrl string `json:"picture_url"` + // 子商品在抖店的ID + ProductId string `json:"product_id"` + // 子商品名称 + ProductName string `json:"product_name"` + // 子商品在抖店的SkuId + SkuId string `json:"sku_id"` + // 子商品数量 + ItemNum int64 `json:"item_num"` + // 组套子商品外部编码 + Code string `json:"code"` +} +type StoreAddress struct { + // 省 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 县/区 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细信息 + Detail string `json:"detail"` +} +type ShopOrderDetail struct { + // 抖店平台生成,平台下唯一; + ShopId int64 `json:"shop_id"` + // 商户名称 + ShopName string `json:"shop_name"` + // 抖音小程序ID + OpenId string `json:"open_id"` + // 店铺父订单号,抖店平台生成,平台下唯一; + OrderId string `json:"order_id"` + // 订单层级,主订单是2级 + OrderLevel int64 `json:"order_level"` + // 【业务来源】 1 -鲁班 2 -小店 3 -好好学习 4 -ev 5 -虚拟 6 -建站 7 -核销 8 -玉石 9 -ez 10 -ep 11 -虚拟卡券 12 -服务市场 13 - EP 视频课 14 - EP 直播课 21 -跨境BBC 22 -跨境BC 23 -跨境CC|UPU 24 -手机充值 25 -拍卖保证金 26 -懂车帝抵扣券 27 -懂车帝返现券 28 -离岛免税 29 -海南会员购 30 -抽奖 31 -清北-企业代付 32 -抖+券 33 -联盟寄样 49 -刀剑 53 -通信卡 66 -加油包 76 -大闸蟹 99 -保险 102-小店海外 108-上门取件收款 + Biz int64 `json:"biz"` + // 业务来源描述 + BizDesc string `json:"biz_desc"` + // 【订单类型】 0、普通订单 2、虚拟商品订单 4、电子券(poi核销) 5、三方核销 + OrderType int64 `json:"order_type"` + // 订单类型描述 + OrderTypeDesc string `json:"order_type_desc"` + // 不推荐使用,已废弃。关注sku_order_list下即可。【交易类型】 0、普通 1、拼团 2、定金预售 3、订金找贷 4、拍卖 5、0元单 6、回收 7、寄卖 10、样品 + TradeType int64 `json:"trade_type"` + // 不推荐使用,已废弃。关注sku_order_list下即可。交易类型描述 + TradeTypeDesc string `json:"trade_type_desc"` + // 订单状态1 待确认/待支付(订单创建完毕)105 已支付 2 备货中 101 部分发货 3 已发货(全部发货)4 已取消5 已完成(已收货) + OrderStatus int64 `json:"order_status"` + // 订单状态描述 + OrderStatusDesc string `json:"order_status_desc"` + // 主流程状态,1 待确认/待支付(订单创建完毕)103 部分支付105 已支付2 备货中101 部分发货3 已发货(全部发货)4 已取消5 已完成(已收货)21 发货前退款完结22 发货后退款完结39 收货后退款完结 + MainStatus int64 `json:"main_status"` + // 主流程状态描述 + MainStatusDesc string `json:"main_status_desc"` + // 支付时间,时间戳,秒 + PayTime int64 `json:"pay_time"` + // 订单过期时间,时间戳,秒 + OrderExpireTime int64 `json:"order_expire_time"` + // 订单完成时间,时间戳,秒 + FinishTime int64 `json:"finish_time"` + // 下单时间,时间戳,秒 + CreateTime int64 `json:"create_time"` + // 订单更新时间,时间戳,秒 + UpdateTime int64 `json:"update_time"` + // 取消原因 + CancelReason string `json:"cancel_reason"` + // 买家留言 + BuyerWords string `json:"buyer_words"` + // 商家备注 + SellerWords string `json:"seller_words"` + // 【下单端】 0、站外 1、火山 2、抖音 3、头条 4、西瓜 5、微信 6、值点app 7、头条lite 8、懂车帝 9、皮皮虾 11、抖音极速版 12、TikTok 13、musically 14、穿山甲 15、火山极速版 16、服务市场 26、番茄小说 27、UG教育营销电商平台 28、Jumanji 29、电商SDK + BType int64 `json:"b_type"` + // 下单端描述 + BTypeDesc string `json:"b_type_desc"` + // 【下单场景】 0、未知 1、app内-原生 2、app内-小程序 3、H5 13、电商SDK-头条 35、电商SDK-头条lite + SubBType int64 `json:"sub_b_type"` + // 下单场景描述 + SubBTypeDesc string `json:"sub_b_type_desc"` + // 具体某个小程序的ID + AppId int64 `json:"app_id"` + // 【支付类型】 0、货到付款 1 、微信 2、支付宝 3、小程序 4、银行卡 5、余额 7、无需支付(0元单) 8、DOU分期(信用支付) 9、新卡支付 12、先用后付 + PayType int64 `json:"pay_type"` + // 支付渠道的流水号 + ChannelPaymentNo string `json:"channel_payment_no"` + // 订单金额(单位:分) + OrderAmount int64 `json:"order_amount"` + // 支付金额(单位:分) + PayAmount int64 `json:"pay_amount"` + // 快递费(单位:分) + PostAmount int64 `json:"post_amount"` + // 运费险金额(单位:分) + PostInsuranceAmount int64 `json:"post_insurance_amount"` + // 改价金额变化量(单位:分) + ModifyAmount int64 `json:"modify_amount"` + // 改价运费金额变化量(单位:分) + ModifyPostAmount int64 `json:"modify_post_amount"` + // 订单优惠总金额(单位:分) = 店铺优惠金额 + 平台优惠金额 + 达人优惠金额 + PromotionAmount int64 `json:"promotion_amount"` + // 店铺优惠金额(单位:分),属于店铺的优惠活动、优惠券、红包的总优惠金额 + PromotionShopAmount int64 `json:"promotion_shop_amount"` + // 平台优惠金额(单位:分),属于平台的优惠活动、优惠券、红包的总优惠金额 + PromotionPlatformAmount int64 `json:"promotion_platform_amount"` + // 商家承担金额(单位:分),订单参与活动和优惠中商家承担部分的总金额 + ShopCostAmount int64 `json:"shop_cost_amount"` + // 平台承担金额(单位:分),订单参与活动和优惠中平台+作者(达人)承担部分的总金额,包含作者(达人)承担金额:platform_cost_amount = only_platform_cost_amount + author_cost_amount + PlatformCostAmount int64 `json:"platform_cost_amount"` + // 达人优惠金额(单位:分),属于达人的优惠活动、优惠券、红包的总优惠金额 + PromotionTalentAmount int64 `json:"promotion_talent_amount"` + // 支付优惠金额(单位:分),支付渠道上的优惠金额 + PromotionPayAmount int64 `json:"promotion_pay_amount"` + // 收件人电话 + PostTel string `json:"post_tel"` + encryptPostTel string `json:"encrypt_post_tel"` + // 收件人姓名 + PostReceiver string `json:"post_receiver"` + encryptPostReceiver string `json:"encrypt_post_receiver"` + // 收件人地址 + PostAddr *PostAddr `json:"post_addr"` + // 预计发货时间,时间戳,秒 + ExpShipTime int64 `json:"exp_ship_time"` + // 发货时间,时间戳,秒 + ShipTime int64 `json:"ship_time"` + // 物流信息 + LogisticsInfo []LogisticsInfoItem `json:"logistics_info"` + // 优惠信息,用户下单过程中享受到的优惠 + PromotionDetail *PromotionDetail `json:"promotion_detail"` + // 订单详情信息,一个主订单下有可以最大返回40个子订单 + SkuOrderList []SkuOrderListItem `json:"sku_order_list"` + // 插旗信息:0:灰 1:紫 2: 青 3:绿 4: 橙 5: 红 + SellerRemarkStars int64 `json:"seller_remark_stars"` + // 定金预售阶段单 + OrderPhaseList []OrderPhaseListItem `json:"order_phase_list"` + // 加密用户ID串 + DoudianOpenId string `json:"doudian_open_id"` + // 商品序列号(IMEI码或SN码) + SerialNumberList []string `json:"serial_number_list"` + // 红包优惠金额(单位:分) + PromotionRedpackAmount int64 `json:"promotion_redpack_amount"` + // 平台红包优惠金额(单位:分),属于平台的红包的优惠金额 + PromotionRedpackPlatformAmount int64 `json:"promotion_redpack_platform_amount"` + // 达人红包优惠金额(单位:分),属于达人的红包的优惠金额 + PromotionRedpackTalentAmount int64 `json:"promotion_redpack_talent_amount"` + // 用户证件信息 + UserIdInfo *UserIdInfo `json:"user_id_info"` + // 预约发货时间 + AppointmentShipTime int64 `json:"appointment_ship_time"` + // 懂车帝购车信息 + DCarShopBizData *DCarShopBizData `json:"d_car_shop_biz_data"` + // 店铺单标签 + ShopOrderTagUi []ShopOrderTagUiItem `json:"shop_order_tag_ui"` + // 总优惠金额(单位:分),total_promotion_amount = promotion_amount + post_promotion_amount + TotalPromotionAmount int64 `json:"total_promotion_amount"` + // 运费原价(单位:分),post_origin_amount = post_amount + post_promotion_amount + PostOriginAmount int64 `json:"post_origin_amount"` + // 运费优惠金额(单位:分) + PostPromotionAmount int64 `json:"post_promotion_amount"` + // 用户特征标签 + UserTagUi []UserTagUiItem `json:"user_tag_ui"` + // 作者(达人)承担金额(单位:分),订单参与活动和优惠中作者(达人)承担部分的总金额 + AuthorCostAmount int64 `json:"author_cost_amount"` + // 仅平台承担金额(单位:分),订单参与活动和优惠中平台承担部分的总金额 + OnlyPlatformCostAmount int64 `json:"only_platform_cost_amount"` + // 履约时效信息(json串) + PromiseInfo string `json:"promise_info"` + // 收件人姓名(脱敏后) + MaskPostReceiver string `json:"mask_post_receiver"` + // 收件人电话(脱敏后) + MaskPostTel string `json:"mask_post_tel"` + // 收件人地址(脱敏后) + MaskPostAddr *MaskPostAddr `json:"mask_post_addr"` + // 用户经纬度信息 + UserCoordinate *UserCoordinate `json:"user_coordinate"` + // 预计最早送达时间(小时达) + EarliestReceiptTime int64 `json:"earliest_receipt_time"` + // 预计最晚送达时间(小时达) + LatestReceiptTime int64 `json:"latest_receipt_time"` + // 是否尽快送达(小时达) + EarlyArrival bool `json:"early_arrival"` + // 尽快送达的时间点(小时达) + TargetArrivalTime int64 `json:"target_arrival_time"` +} +type PostAddr struct { + // 省/直辖市 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 区县 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细地址 + Detail string `json:"detail"` + encryptDetail string `json:"encrypt_detail"` +} +type SkuSpecsItem struct { + // 规格名称 + Name string `json:"name"` + // 规格值 + Value string `json:"value"` +} +type AddedServicesItem struct { + // 标签key + Key string `json:"key"` + // 物流服务名称 + Text string `json:"text"` + // 抖音大学介绍地址 + HelpDoc string `json:"help_doc"` + // 业务跳转地址 + Url string `json:"url"` +} +type AccountInfoItem struct { + // 买家账号名称 + AccountName string `json:"account_name"` + // 买家账号类型;账号类型;枚举值:Mobile :手机号;Email :邮箱 ; IdCard :身份证; Passport :护照; BankCard :银行卡; Number :纯数学; NumberLetter :数字字母混合; + AccountType string `json:"account_type"` + // 账号值 + AccountId string `json:"account_id"` + encryptAccountId string `json:"encrypt_account_id"` +} +type LogisticsInfoItem struct { + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司 + Company string `json:"company"` + // 发货时间,时间戳,秒 + ShipTime int64 `json:"ship_time"` + // 包裹id + DeliveryId string `json:"delivery_id"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 商品信息 + ProductInfo []ProductInfoItem `json:"product_info"` + // 物流增值服务列表 + AddedServices []AddedServicesItem `json:"added_services"` +} +type InventoryListItem struct { + // 仓id + WarehouseId string `json:"warehouse_id"` + // 外部仓id + OutWarehouseId string `json:"out_warehouse_id"` + // 库存类型,普通库存/区域库存 + InventoryType int64 `json:"inventory_type"` + // 库存类型描述 + InventoryTypeDesc string `json:"inventory_type_desc"` + // 库存变更数量 + Count int64 `json:"count"` + // 仓类型:0-商家仓,1-跨境仓,2-云仓 + WarehouseType int64 `json:"warehouse_type"` +} +type AfterSaleInfo struct { + // 售后状态;6-售后申请;27-拒绝售后申请;12-售后成功;7-售后退货中;11-售后已发货;29-售后退货拒绝;13-【换货返回:换货售后换货商家发货】,【补寄返回:补寄待用户收货】; 14-【换货返回:(换货)售后换货用户收货】,【补寄返回:(补寄)用户已收货】 ;28-售后失败;51-订单取消成功;53-逆向交易已完成; + AfterSaleStatus int64 `json:"after_sale_status"` + // 售后类型 ;0-退货退款;1-已发货仅退款;2-未发货仅退款;3-换货;4-系统取消;5-用户取消;6-价保;7-补寄; + AfterSaleType int64 `json:"after_sale_type"` + // 退款状态:0-无需退款 1-待退款 2-退款中 3-退款成功 4-退款失败 + RefundStatus int64 `json:"refund_status"` +} +type PicItem struct { + // id + Id int64 `json:"id"` + // url + Url string `json:"url"` +} +type TextItem struct { + // id + Id int64 `json:"id"` + // key + Key string `json:"key"` + // content + Content string `json:"content"` +} +type StoreInfo struct { + // 门店id + StoreId string `json:"store_id"` + // 门店名称 + StoreName string `json:"store_name"` + // 门店电话 + StoreTel string `json:"store_tel"` + // 门店地址 + StoreAddress *StoreAddress `json:"store_address"` + // 扩展字段 + Extra string `json:"extra"` +} +type DCarShopBizData struct { + // 选择的门店ID + PoiId string `json:"poi_id"` + // 选择的门店名称 + PoiName string `json:"poi_name"` + // 选择的门店地址 + PoiAddr string `json:"poi_addr"` + // 选择的门店电话 + PoiTel string `json:"poi_tel"` + // 权益信息 + CouponRight []CouponRightItem `json:"coupon_right"` + // 选择的门店所在省 + PoiPname string `json:"poi_pname"` + // 选择的门店所在市 + PoiCityName string `json:"poi_city_name"` + // 选择的门店所在区县 + PoiAdname string `json:"poi_adname"` +} +type ProductInfoItem struct { + // 商品名称 + ProductName string `json:"product_name"` + // 商品价格 + Price int64 `json:"price"` + // 商家编码 + OuterSkuId string `json:"outer_sku_id"` + // 商品skuId + SkuId int64 `json:"sku_id"` + // 规格信息 + SkuSpecs []SkuSpecsItem `json:"sku_specs"` + // 发货商品数量 + ProductCount int64 `json:"product_count"` + // 商品ID + ProductId int64 `json:"product_id"` + // 店铺子订单号,抖店平台生成,平台下唯一;注意:一笔订单下有一个子订单和父订单单号相同。 + SkuOrderId string `json:"sku_order_id"` + // 商品ID,字符串类型 + ProductIdStr string `json:"product_id_str"` +} +type RelationOrder struct { + // 核销券码 + WriteOffNo string `json:"write_off_no"` + // 关联店铺单订单id + RelationOrderId string `json:"relation_order_id"` +} +type Detail struct { + // 定制图片信息 + Pic []PicItem `json:"pic"` + // 定制文案信息 + Text []TextItem `json:"text"` + // 额外信息 + Extra string `json:"extra"` +} +type SkuOrderListItem struct { + // 店铺子订单号,抖店平台生成,平台下唯一;注意:一笔订单下有一个子订单和父订单单号相同。 + OrderId string `json:"order_id"` + // 店铺父订单号,抖店平台生成,平台下唯一; + ParentOrderId string `json:"parent_order_id"` + // 订单层级 + OrderLevel int64 `json:"order_level"` + // 【业务来源】 1、鲁班 2、小店 3、好好学习 4、ev 5、虚拟 6、建站 7、核销 8、玉石 9、ez 10、ep 11、虚拟卡券 12、服务市场 13、EP视频课 14、EP直播课 21、跨境BBC 22、跨境BC 23、跨境CC,UPC 24、手机充值 25、拍卖保证金 26、懂车帝抵扣券 27、懂车帝返现券 28、离岛免税 29、海南会员购 30、抽奖 32、dou+券 76、大闸蟹 99、保险 102、小店海外 + Biz int64 `json:"biz"` + // 业务来源描述 + BizDesc string `json:"biz_desc"` + // 【订单类型】 0、普通订单 2、虚拟商品订单 4、电子券(poi核销) 5、三方核销 + OrderType int64 `json:"order_type"` + // 订单类型描述 + OrderTypeDesc string `json:"order_type_desc"` + // 【交易类型】 0、普通 1、拼团 2、定金预售 3、订金找贷 4、拍卖 5、0元单 6、回收 7、寄卖 + TradeType int64 `json:"trade_type"` + // 交易类型描述 + TradeTypeDesc string `json:"trade_type_desc"` + // 订单状态 + OrderStatus int64 `json:"order_status"` + // 订单状态描述 + OrderStatusDesc string `json:"order_status_desc"` + // 主流程状态 + MainStatus int64 `json:"main_status"` + // 主流程状态描述 + MainStatusDesc string `json:"main_status_desc"` + // 支付时间,时间戳,秒 + PayTime int64 `json:"pay_time"` + // 订单过期时间,时间戳,秒 + OrderExpireTime int64 `json:"order_expire_time"` + // 订单完成时间,时间戳,秒 + FinishTime int64 `json:"finish_time"` + // 下单时间,时间戳,秒 + CreateTime int64 `json:"create_time"` + // 订单更新时间,时间戳,秒 + UpdateTime int64 `json:"update_time"` + // 取消原因 + CancelReason string `json:"cancel_reason"` + // 【下单端】 0、站外 1、火山 2、抖音 3、头条 4、西瓜 5、微信 6、值点app 7、头条lite 8、懂车帝 9、皮皮虾 11、抖音极速版 12、TikTok 13、musically 14、穿山甲 15、火山极速版 16、服务市场 26、番茄小说 27、UG教育营销电商平台 28、Jumanji 29、电商SDK + BType int64 `json:"b_type"` + // 下单端描述 + BTypeDesc string `json:"b_type_desc"` + // 【下单场景】 0、未知 1、app内-原生 2、app内-小程序 3、H5 13、电商SDK-头条 35、电商SDK-头条lite + SubBType int64 `json:"sub_b_type"` + // 下单场景描述 + SubBTypeDesc string `json:"sub_b_type_desc"` + // 已废弃,不推荐使用。流量来源:1-鲁班广告 2-联盟 3-商城 4-自主经营 5-线索通支付表单 6-抖音门店 7-抖+ 8-穿山甲 + SendPay int64 `json:"send_pay"` + // 已废弃,不推荐使用。流量来源描述 + SendPayDesc string `json:"send_pay_desc"` + // 直播主播id(达人);仅直播间和橱窗产生的订单会有值返回; + AuthorId int64 `json:"author_id"` + // 直播主播名称;仅直播间和橱窗产生的订单会有值返回 + AuthorName string `json:"author_name"` + // 【下单来源】 0、其他 1、直播间(废弃) + ThemeType string `json:"theme_type"` + // 下单来源描述(废弃) + ThemeTypeDesc string `json:"theme_type_desc"` + // 具体某个小程序的ID + AppId int64 `json:"app_id"` + // 直播间id,有值则代表订单来自直播间 + RoomId int64 `json:"room_id"` + // 内容id。(该字段无实际意义,已废弃) + ContentId string `json:"content_id"` + // 视频id,有值则代表订单来自短视频 + VideoId string `json:"video_id"` + // 已废弃,流量来源id + OriginId string `json:"origin_id"` + // 已废弃,广告id + Cid int64 `json:"cid"` + // 【C端流量来源】 0、unknown 2、精选联盟 8、小店自卖 + CBiz int64 `json:"c_biz"` + // C端流量来源业务类型描述 + CBizDesc string `json:"c_biz_desc"` + // 鲁班广告落地页ID + PageId int64 `json:"page_id"` + // 【支付类型】 0、货到付款 1 、微信 2、支付宝 3、小程序 4、银行卡 5、余额 7、无需支付(0元单) 8、DOU分期(信用支付) 9、新卡支付 + PayType int64 `json:"pay_type"` + // 支付渠道的流水号 + ChannelPaymentNo string `json:"channel_payment_no"` + // 订单金额(单位:分) + OrderAmount int64 `json:"order_amount"` + // 支付金额(单位:分) + PayAmount int64 `json:"pay_amount"` + // 运费险金额(单位:分) + PostInsuranceAmount int64 `json:"post_insurance_amount"` + // 改价金额变化量(单位:分) + ModifyAmount int64 `json:"modify_amount"` + // 改价运费金额变化量(单位:分) + ModifyPostAmount int64 `json:"modify_post_amount"` + // 订单优惠总金额(单位:分) = 店铺优惠金额 + 平台优惠金额 + 达人优惠金额 + PromotionAmount int64 `json:"promotion_amount"` + // 店铺优惠金额(单位:分),属于店铺的优惠活动、优惠券、红包的总优惠金额 + PromotionShopAmount int64 `json:"promotion_shop_amount"` + // 平台优惠金额(单位:分),属于平台的优惠活动、优惠券、红包的总优惠金额 + PromotionPlatformAmount int64 `json:"promotion_platform_amount"` + // 商家承担金额(单位:分),订单参与活动和优惠中商家承担部分的总金额 + ShopCostAmount int64 `json:"shop_cost_amount"` + // 平台承担金额(单位:分),订单参与活动和优惠中平台+作者(达人)承担部分的总金额,包含作者(达人)承担金额:platform_cost_amount = only_platform_cost_amount + author_cost_amount + PlatformCostAmount int64 `json:"platform_cost_amount"` + // 达人优惠金额(单位:分),属于达人的优惠活动、优惠券、红包的总优惠金额 + PromotionTalentAmount int64 `json:"promotion_talent_amount"` + // 支付优惠金额(单位:分),支付渠道上的优惠金额 + PromotionPayAmount int64 `json:"promotion_pay_amount"` + // 商家后台商品编码 + Code string `json:"code"` + // 收件人电话 + PostTel string `json:"post_tel"` + encryptPostTel string `json:"encrypt_post_tel"` + // 收件人姓名 + PostReceiver string `json:"post_receiver"` + encryptPostReceiver string `json:"encrypt_post_receiver"` + // 收件人地址 + PostAddr *PostAddr `json:"post_addr"` + // 预计发货时间 + ExpShipTime int64 `json:"exp_ship_time"` + // 发货时间 + ShipTime int64 `json:"ship_time"` + // 物流收货时间 + LogisticsReceiptTime int64 `json:"logistics_receipt_time"` + // 用户确认收货时间 + ConfirmReceiptTime int64 `json:"confirm_receipt_time"` + // 【商品类型】 0、实体 1、虚拟 + GoodsType int64 `json:"goods_type"` + // 商品ID + ProductId int64 `json:"product_id"` + // 商品skuId + SkuId int64 `json:"sku_id"` + // 规格信息 + Spec []SpecItem `json:"spec"` + // 一级类目 + FirstCid int64 `json:"first_cid"` + // 二级类目 + SecondCid int64 `json:"second_cid"` + // 三级类目 + ThirdCid int64 `json:"third_cid"` + // 四级类目 + FourthCid int64 `json:"fourth_cid"` + // 外部Skuid + OutSkuId string `json:"out_sku_id"` + // sku外部供应商编码 + SupplierId string `json:"supplier_id"` + // 商品外部编码 + OutProductId string `json:"out_product_id"` + // 仓id,废弃,使用inventory_list + WarehouseIds []string `json:"warehouse_ids"` + // 外部仓id,废弃,使用inventory_list + OutWarehouseIds []string `json:"out_warehouse_ids"` + // 库存类型,普通库存/区域库存,废弃,使用inventory_list + InventoryType string `json:"inventory_type"` + // 库存类型描述,废弃,使用inventory_list + InventoryTypeDesc string `json:"inventory_type_desc"` + // 【库存扣减方式】 1、下单减库存 2、支付减库存 + ReduceStockType int64 `json:"reduce_stock_type"` + // 库存扣减方式名称 + ReduceStockTypeDesc string `json:"reduce_stock_type_desc"` + // 商品现价(单位:分) + OriginAmount int64 `json:"origin_amount"` + // 是否包税 + HasTax bool `json:"has_tax"` + // 订单商品数量 + ItemNum int64 `json:"item_num"` + // 商品现价*件数 + SumAmount int64 `json:"sum_amount"` + // 商品来源平台 + SourcePlatform string `json:"source_platform"` + // 优惠信息 + PromotionDetail *PromotionDetail `json:"promotion_detail"` + // 活动信息,其中活动金额会体现到商品价格中(比如商品原价是100元,参加活动优惠20元,那商品现价就为80元) + CampaignInfo []CampaignInfoItem `json:"campaign_info"` + // 商品单标签 + SkuOrderTagUi []SkuOrderTagUiItem `json:"sku_order_tag_ui"` + // 商品图片 + ProductPic string `json:"product_pic"` + // 是否评价 :1已评价,0未评价,2 表示追评 + IsComment int64 `json:"is_comment"` + // 商品名称 + ProductName string `json:"product_name"` + // 仓库信息 + InventoryList []InventoryListItem `json:"inventory_list"` + // 运费(单位:分) + PostAmount int64 `json:"post_amount"` + // 预售类型 ,0 现货类型,1 全款预售 2 阶梯发货 + PreSaleType int64 `json:"pre_sale_type"` + // 售后信息 + AfterSaleInfo *AfterSaleInfo `json:"after_sale_info"` + // 核销信息 + WriteoffInfo []WriteoffInfoItem `json:"writeoff_info"` + // 关联订单 + RelationOrder *RelationOrder `json:"relation_order"` + // 红包优惠金额(单位:分) + PromotionRedpackAmount int64 `json:"promotion_redpack_amount"` + // 平台红包优惠金额(单位:分),属于平台的红包的优惠金额 + PromotionRedpackPlatformAmount int64 `json:"promotion_redpack_platform_amount"` + // 达人红包优惠金额(单位:分),属于达人的红包的优惠金额 + PromotionRedpackTalentAmount int64 `json:"promotion_redpack_talent_amount"` + // 1:邮寄,2:自提 + ReceiveType int64 `json:"receive_type"` + // 是否需要上传序列号,用于判断发货时是否需要上传商品序列号(IMEI码或SN码),true 表示是3C数码商品,需要上传序列号 + NeedSerialNumber bool `json:"need_serial_number"` + // 广告来源,video: 短视频 live:直播 + AdEnvType string `json:"ad_env_type"` + // 商品ID,字符串类型 + ProductIdStr string `json:"product_id_str"` + // 预约发货时间 + AppointmentShipTime int64 `json:"appointment_ship_time"` + // 直播房间ID,字符串类型 + RoomIdStr string `json:"room_id_str"` + // 绑定类型 MASTER-主品单 FREE-免费赠品 + GivenProductType string `json:"given_product_type"` + // 绑定的主品sku单单号 如果GivenProductType =FREE 则MasterSkuOrderId内容为主品sku单单号 + MasterSkuOrderId string `json:"master_sku_order_id"` + // 商品卡券基本信息 + CardVoucher *CardVoucher `json:"card_voucher"` + // 组套商品子商品列表 + BundleSkuInfo []BundleSkuInfoItem `json:"bundle_sku_info"` + // 当order_type=2,order_type_desc为虚拟订单时该参数会返回信息 + AccountList *AccountList `json:"account_list"` + // 定制商品信息 + SkuCustomizationInfo []SkuCustomizationInfoItem `json:"sku_customization_info"` + // 是否是补贴品订单 + IsActivity bool `json:"is_activity"` + // 作者(达人)承担金额(单位:分),订单参与活动和优惠中作者(达人)承担部分的总金额 + AuthorCostAmount int64 `json:"author_cost_amount"` + // 仅平台承担金额(单位:分),订单参与活动和优惠中平台承担部分的总金额 + OnlyPlatformCostAmount int64 `json:"only_platform_cost_amount"` + // 履约时效信息(json串) + PromiseInfo string `json:"promise_info"` + // 门店信息 + StoreInfo *StoreInfo `json:"store_info"` + // 收件人姓名(脱敏后) + MaskPostReceiver string `json:"mask_post_receiver"` + // 收件人电话(脱敏后) + MaskPostTel string `json:"mask_post_tel"` + // 收件人地址(脱敏后) + MaskPostAddr *MaskPostAddr `json:"mask_post_addr"` +} +type FullDiscountInfoItem struct { + // 活动ID + CampaignId int64 `json:"campaign_id"` + // 活动类型:100-店铺满减活动 110-平台满减活动 150-立减活动 + CampaignType int64 `json:"campaign_type"` + // 成本分摊 + ShareDiscountCost *ShareDiscountCost `json:"share_discount_cost"` + // 活动名称 + CampaignName string `json:"campaign_name"` + // 活动优惠金额(单位:分) + CampaignAmount int64 `json:"campaign_amount"` + // 活动子类型:0 店铺活动,1 平台活动 + CampaignSubType int64 `json:"campaign_sub_type"` +} +type AccountList struct { + // 买家账号信息 + AccountInfo []AccountInfoItem `json:"account_info"` +} +type OrderPhaseListItem struct { + // 阶段单id + PhaseOrderId string `json:"phase_order_id"` + // 总共有几阶段 + TotalPhase int64 `json:"total_phase"` + // 第几阶段 + CurrentPhase int64 `json:"current_phase"` + // sku单价,单位:分 + SkuPrice int64 `json:"sku_price"` + // 是否支付成功 + PaySuccess bool `json:"pay_success"` + // 店铺子订单号,抖店平台生成,平台下唯一;注意:一笔订单下有一个子订单和父订单单号相同。 + SkuOrderId string `json:"sku_order_id"` + // 活动id + CampaignId string `json:"campaign_id"` + // 阶段价格:定金单价、尾款单价,单位:分 + PhasePayablePrice int64 `json:"phase_payable_price"` + // 支付类型:0-货到付款, 1-微信, 2-支付宝, 3-小程序, 4-银行卡, 5-余额, 7-无需支付, 8-放心花(信用支付), 9-新卡支付 + PhasePayType int64 `json:"phase_pay_type"` + // 阶段单开始开启支付时间,时间戳 + PhaseOpenTime int64 `json:"phase_open_time"` + // 阶段单支付成功时间,时间戳 + PhasePayTime int64 `json:"phase_pay_time"` + // 阶段单关闭时间,时间戳 + PhaseCloseTime int64 `json:"phase_close_time"` + // 渠道支付订单号 + ChannelPaymentNo string `json:"channel_payment_no"` + // 阶段单总金额,单位分,为订单金额phase_sum_amount+运费phase_post_amount,为支付金额phase_pay_amount+优惠金额phase_promotion_amoun + PhaseOrderAmount int64 `json:"phase_order_amount"` + // 阶段单订单金额,单位分 + PhaseSumAmount int64 `json:"phase_sum_amount"` + // 阶段单运费金额,单位分 + PhasePostAmount int64 `json:"phase_post_amount"` + // 阶段单用户实际支付金额,单位分 + PhasePayAmount int64 `json:"phase_pay_amount"` + // 阶段单总优惠金额,单位分 + PhasePromotionAmount int64 `json:"phase_promotion_amount"` + // 阶段状态描述 + CurrentPhaseStatusDesc string `json:"current_phase_status_desc"` +} +type UserIdInfo struct { + // 证件号 + IdCardNo string `json:"id_card_no"` + encryptIdCardNo string `json:"encrypt_id_card_no"` + // 证件姓名 + IdCardName string `json:"id_card_name"` + encryptIdCardName string `json:"encrypt_id_card_name"` +} +type ShopOrderTagUiItem struct { + // 标签key + Key string `json:"key"` + // 标签名称 + Text string `json:"text"` + // 帮助文档 + HelpDoc string `json:"help_doc"` +} +type PlatformDiscountDetail struct { + // 优惠总金额(单位:分) + TotalAmount int64 `json:"total_amount"` + // 券优惠金额(单位:分) + CouponAmount int64 `json:"coupon_amount"` + // 活动优惠金额(单位:分) + FullDiscountAmount int64 `json:"full_discount_amount"` + // 优惠券信息 + CouponInfo []CouponInfoItem `json:"coupon_info"` + // 优惠活动信息 + FullDiscountInfo []FullDiscountInfoItem `json:"full_discount_info"` + // 红包金额(单位:分) + RedpackAmount int64 `json:"redpack_amount"` + // 红包信息 + RedpackInfo []RedpackInfoItem `json:"redpack_info"` +} +type SpecItem struct { + // 规格名称 + Name string `json:"name"` + // 规格值 + Value string `json:"value"` +} +type SkuOrderTagUiItem struct { + // 标签key + Key string `json:"key"` + // 标签文案 + Text string `json:"text"` + // 标签备注文案 + HoverText string `json:"hover_text"` + // 标签类型,如颜色 + TagType string `json:"tag_type"` + // 帮助文档 + HelpDoc string `json:"help_doc"` + // 排序 + Sort int64 `json:"sort"` + // 标签其他信息 + Extra string `json:"extra"` +} +type CardVoucher struct { + // 自领取之日起有效天数(如果存在优先使用) + ValidDays int64 `json:"valid_days"` + // 卡券开始时间 + ValidStart int64 `json:"valid_start"` + // 卡券截止时间 + ValidEnd int64 `json:"valid_end"` +} +type MaskPostAddr struct { + // 省 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 县/区 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细信息(脱敏后) + Detail string `json:"detail"` +} +type CouponRightItem struct { + // 权益类型 + RightType int64 `json:"right_type"` + // 权益名称 + RightName string `json:"right_name"` + // 权益面值 + Quota int64 `json:"quota"` +} +type City struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type Town struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type KolDiscountDetail struct { + // 优惠总金额(单位:分) + TotalAmount int64 `json:"total_amount"` + // 券优惠金额(单位:分) + CouponAmount int64 `json:"coupon_amount"` + // 活动优惠金额(单位:分) + FullDiscountAmount int64 `json:"full_discount_amount"` + // 优惠券信息 + CouponInfo []CouponInfoItem `json:"coupon_info"` + // 优惠活动信息 + FullDiscountInfo []FullDiscountInfoItem `json:"full_discount_info"` + // 红包金额(单位:分) + RedpackAmount int64 `json:"redpack_amount"` + // 红包信息 + RedpackInfo []RedpackInfoItem `json:"redpack_info"` +} +type WriteoffInfoItem struct { + // 核销券码 + WriteoffNo string `json:"writeoff_no"` + // 核销有效开始时间 + WriteoffStartTime int64 `json:"writeoff_start_time"` + // 核销过期时间 + WriteoffExpireTime int64 `json:"writeoff_expire_time"` + // 核销状态 + WriteoffStatus int64 `json:"writeoff_status"` + // 核销状态文案 + WriteoffStatusDesc string `json:"writeoff_status_desc"` + // 核销店铺订单id + VerifyOrderId string `json:"verify_order_id"` + // 脱敏核销券码 + WriteoffNoMask string `json:"writeoff_no_mask"` + // 已核销次数 + WrittenoffCount int64 `json:"writtenoff_count"` + // 总核销次数 + WriteoffTotalCount int64 `json:"writeoff_total_count"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_policy/request/order_policy_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_policy/request/order_policy_request.go new file mode 100644 index 00000000..51b9b301 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_policy/request/order_policy_request.go @@ -0,0 +1,50 @@ +package order_policy_request + +import ( + "encoding/json" +) + +type OrderPolicyRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderPolicyParam +} + +func (c *OrderPolicyRequest) GetUrlPath() string { + return "/order/policy" +} + +func New() *OrderPolicyRequest { + request := &OrderPolicyRequest{ + Param: &OrderPolicyParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderPolicyRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_policy_response.OrderPolicyResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_policy_response.OrderPolicyResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderPolicyRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderPolicyRequest) GetParams() *OrderPolicyParam { + return c.Param +} + +type OrderPolicyParam struct { + // 订单id + OrderId string `json:"order_id"` + // 运费险:returnfreight2020v1 过敏险:allergyinsurance2021 绿植养死包赔7天: plant7dinsurance2021 绿植养死包赔15天: plant15dinsurance2021 + InsProductId string `json:"ins_product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_policy/response/order_policy_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_policy/response/order_policy_response.go new file mode 100644 index 00000000..deab1e11 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_policy/response/order_policy_response.go @@ -0,0 +1,78 @@ +package order_policy_response + +type OrderPolicyResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderPolicyData `json:"data"` +} +type PolicyInfo struct { + // 保单号 + InsPolicyNo string `json:"ins_policy_no"` + // 预计退保费用,单位分 + Amount int64 `json:"amount"` + // 总保费,单位分 + Premium int64 `json:"premium"` + // 用户支付的保费,单位分 + UserPremium int64 `json:"user_premium"` + // 商家支付的保费,单位分 + MerchantPremium int64 `json:"merchant_premium"` + // 平台承担的保费,单位分 + PlatformPremium int64 `json:"platform_premium"` + // 保单状态 0: 初始化 1: 待生效 2: 保障中 3: 赔付完成 4: 保单失效 5: 已经取消 + Status int32 `json:"status"` + // 理赔状态 0: 初始化 1: 理赔中 2: 理赔成功 3: 理赔失败 绿植险该字段没用 + ClaimStatus int32 `json:"claim_status"` + // 申述状态 0: 初始化 1: 申诉处理中 2: 申诉成功 3: 申诉失败 绿植险该字段没用 + AppealStatus int32 `json:"appeal_status"` + // 商品列表 + GoodsInfoList []GoodsInfoListItem `json:"goods_info_list"` + // 出保时间 + InsEnsuredTimeBegin int64 `json:"ins_ensured_time_begin"` + // 保险过期时间 + InsEnsuredTimeEnd int64 `json:"ins_ensured_time_end"` + // 只有在保单状态为赔付失败的时候并允许申诉 true,其他情况 false + IsAllowAppeal bool `json:"is_allow_appeal"` + // 理赔或申述失败原因 + RefusedMsg string `json:"refused_msg"` + // 保险客服电话 + InsHotline string `json:"ins_hotline"` + // 投保人 2:商家 3:平台 + PayerType int32 `json:"payer_type"` +} +type ClaimInfoListItem struct { + // 理赔状态 + Status int32 `json:"status"` + // 预计理赔金额:分 + Amount int64 `json:"amount"` + // 实际理赔金额 + Premium int64 `json:"premium"` + // 理赔时间 + ClaimTime int64 `json:"claim_time"` + // 理赔单号 + InsClaimNo string `json:"ins_claim_no"` + // 申请原因 + ClaimMsg string `json:"claim_msg"` + // 拒绝原因 + RefusedMsg string `json:"refused_msg"` + // 聚合后的理赔状态:绿植险有用 + AggClaimStatus int64 `json:"agg_claim_status"` + // 理赔次数 + ClaimAppliedTimes int32 `json:"claim_applied_times"` +} +type OrderPolicyData struct { + // 保单详情列表 + PolicyInfo *PolicyInfo `json:"policy_info"` + // 理赔列表 + ClaimInfoList []ClaimInfoListItem `json:"claim_info_list"` +} +type GoodsInfoListItem struct { + // 商品名称 + Name string `json:"name"` + // 商品id + ProductId int64 `json:"product_id"` + // 类目 + CategoryId string `json:"category_id"` + // url + ShowPageUrl string `json:"show_page_url"` + // 数量 + Count int32 `json:"count"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_replyService/request/order_replyService_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_replyService/request/order_replyService_request.go new file mode 100644 index 00000000..4ab03762 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_replyService/request/order_replyService_request.go @@ -0,0 +1,52 @@ +package order_replyService_request + +import ( + "encoding/json" +) + +type OrderReplyServiceRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderReplyServiceParam +} + +func (c *OrderReplyServiceRequest) GetUrlPath() string { + return "/order/replyService" +} + +func New() *OrderReplyServiceRequest { + request := &OrderReplyServiceRequest{ + Param: &OrderReplyServiceParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderReplyServiceRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_replyService_response.OrderReplyServiceResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_replyService_response.OrderReplyServiceResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderReplyServiceRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderReplyServiceRequest) GetParams() *OrderReplyServiceParam { + return c.Param +} + +type OrderReplyServiceParam struct { + // 服务请求列表中获取的id + Id int64 `json:"id"` + // 回复内容 + Reply string `json:"reply"` + // 回复凭证,通过/order/serviceDetail获取是否当前服务单
是否必须上传凭证。多张图片用竖线分开。不超过4张 + Evidence string `json:"evidence"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_replyService/response/order_replyService_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_replyService/response/order_replyService_response.go new file mode 100644 index 00000000..b9673cfb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_replyService/response/order_replyService_response.go @@ -0,0 +1,8 @@ +package order_replyService_response + +type OrderReplyServiceResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderReplyServiceData `json:"data"` +} +type OrderReplyServiceData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_review/request/order_review_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_review/request/order_review_request.go new file mode 100644 index 00000000..0fb96f6c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_review/request/order_review_request.go @@ -0,0 +1,52 @@ +package order_review_request + +import ( + "encoding/json" +) + +type OrderReviewRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderReviewParam +} + +func (c *OrderReviewRequest) GetUrlPath() string { + return "/order/review" +} + +func New() *OrderReviewRequest { + request := &OrderReviewRequest{ + Param: &OrderReviewParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderReviewRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_review_response.OrderReviewResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_review_response.OrderReviewResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderReviewRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderReviewRequest) GetParams() *OrderReviewParam { + return c.Param +} + +type OrderReviewParam struct { + // 表示订单审核的类型 3001 通信卡审核 + TaskType int64 `json:"task_type"` + // 0 审核通过 200001 下单身份信息180天内在该卡品运营商处重复下单,未通过审核 200002 下单身份信息已在该卡品运营商处办理了5张电话卡,未通过审核 200003 下单身份信息年龄不在16-60岁(部分卡品16-30岁),未通过审核 200004 下单地址为该卡品运营商禁售地区,未通过审核 200005 因其他原因,未能通过运营商审核,具体可联系商家 + RejectCode int64 `json:"reject_code"` + // 审核的单id取决于什么审核 通信卡审核 店铺单id + ObjectId string `json:"object_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_review/response/order_review_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_review/response/order_review_response.go new file mode 100644 index 00000000..f56fa315 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_review/response/order_review_response.go @@ -0,0 +1,8 @@ +package order_review_response + +type OrderReviewResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderReviewData `json:"data"` +} +type OrderReviewData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_searchList/request/order_searchList_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_searchList/request/order_searchList_request.go new file mode 100644 index 00000000..1e8b88b1 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_searchList/request/order_searchList_request.go @@ -0,0 +1,89 @@ +package order_searchList_request + +import ( + "encoding/json" + order_searchList_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/order_searchList/response" + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" +) + +type OrderSearchListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderSearchListParam +} + +func (c *OrderSearchListRequest) GetUrlPath() string { + return "/order/searchList" +} + +func New() *OrderSearchListRequest { + request := &OrderSearchListRequest{ + Param: &OrderSearchListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderSearchListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_searchList_response.OrderSearchListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_searchList_response.OrderSearchListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderSearchListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderSearchListRequest) GetParams() *OrderSearchListParam { + return c.Param +} + +type CombineStatusItem struct { + // 订单状态,","分隔多个状态 + OrderStatus string `json:"order_status"` + // 主流程状态,","分隔多个状态 + MainStatus string `json:"main_status"` +} +type OrderSearchListParam struct { + // 商品,number型代表商品ID,其它代表商品名称 + Product string `json:"product"` + // 【下单端】 0、站外 1、火山 2、抖音 3、头条 4、西瓜 5、微信 6、值点app 7、头条lite 8、懂车帝 9、皮皮虾 11、抖音极速版 12、TikTok 13、musically 14、穿山甲 15、火山极速版 16、服务市场 26、番茄小说 27、UG教育营销电商平台 28、Jumanji 29、电商SDK + BType int64 `json:"b_type"` + // 售后状态:all-全部,in_aftersale-售后中,refund-退款中,refund_success-退款成功,refund_fail-退款失败,exchange_success-换货成功 aftersale_close-售后关闭 + AfterSaleStatusDesc string `json:"after_sale_status_desc"` + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 预售类型:1 全款预售 + PresellType int64 `json:"presell_type"` + // 【订单类型】 0、普通订单 2、虚拟商品订单 4、电子券(poi核销) 5、三方核销 + OrderType int64 `json:"order_type"` + // 下单时间:开始,秒级时间戳 + CreateTimeStart int64 `json:"create_time_start"` + // 下单时间:截止,秒级时间戳 + CreateTimeEnd int64 `json:"create_time_end"` + // 异常订单,1-异常取消,2-风控审核中 + AbnormalOrder int64 `json:"abnormal_order"` + // 【交易类型】 0、普通 1、拼团 2、定金预售 3、订金找贷 4、拍卖 5、0元单 6、回收 7、寄卖 10、样品 + TradeType int64 `json:"trade_type"` + // 状态组合查询,直接输入状态码(只支持一个元素) + CombineStatus []CombineStatusItem `json:"combine_status"` + // 更新时间:开始 + UpdateTimeStart int64 `json:"update_time_start"` + // 更新时间:截止 + UpdateTimeEnd int64 `json:"update_time_end"` + // 单页大小,限制100以内 + Size int64 `json:"size"` + // 页码,0页开始 + Page int64 `json:"page"` + // 排序条件(create_time 订单创建时间;update_time 订单更新时间;默认create_time;) + OrderBy string `json:"order_by"` + // 排序类型,小到大或大到小,默认大到小 + OrderAsc bool `json:"order_asc"` + IsSearchable bool `json:"is_searchable"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_searchList/response/order_searchList_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_searchList/response/order_searchList_response.go new file mode 100644 index 00000000..edda27a6 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_searchList/response/order_searchList_response.go @@ -0,0 +1,714 @@ +package order_searchList_response + +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + +type OrderSearchListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderSearchListData `json:"data"` +} +type PicItem struct { + // id + Id int64 `json:"id"` + // url + Url string `json:"url"` +} +type ShopOrderTagUiItem struct { + // 标签Key + Key string `json:"key"` + // 标签说明 + Text string `json:"text"` + // 帮助文档地址 + HelpDoc string `json:"help_doc"` +} +type AfterSaleInfo struct { + // 售后状态,0-售后初始化, 6-售后申请, 7-售后退货中, 27-拒绝售后申请, 12-售后成功, 28-售后失败, 11-售后已发货, 29-退货后拒绝退款, 13-售后换货商家发货, 14-售后换货用户收货, 51-取消成功, 53-逆向交易完成 + AfterSaleStatus int64 `json:"after_sale_status"` + // 售后类型:0 售后退货退款:1-售后退款 2-售前退款 3-换货 4-系统取消 5-用户取消 + AfterSaleType int64 `json:"after_sale_type"` + // 退款状态:0-无需退款 1-待退款 2-退款中 3-退款成功 4-退款失败 + RefundStatus int64 `json:"refund_status"` +} +type CouponRightItem struct { + // 权益类型 + RightType int64 `json:"right_type"` + // 权益名称 + RightName string `json:"right_name"` + // 权益面值 + Quota int64 `json:"quota"` +} +type UserCoordinate struct { + // 经度 + UserCoordinateLongitude string `json:"user_coordinate_longitude"` + // 纬度 + UserCoordinateLatitude string `json:"user_coordinate_latitude"` +} +type ShopOrderListItem struct { + // 店铺ID + ShopId int64 `json:"shop_id"` + // 商户名称 + ShopName string `json:"shop_name"` + // 抖音小程序ID + OpenId string `json:"open_id"` + // 店铺订单号 + OrderId string `json:"order_id"` + // 订单层级 + OrderLevel int64 `json:"order_level"` + // 【业务来源】 1、鲁班 2、小店 3、好好学习 4、ev 5、虚拟 6、建站 7、核销 8、玉石 9、ez 10、ep 11、虚拟卡券 12、服务市场 13、EP视频课 14、EP直播课 21、跨境BBC 22、跨境BC 23、跨境CC,UPC 24、手机充值 25、拍卖保证金 26、懂车帝抵扣券 27、懂车帝返现券 28、离岛免税 29、海南会员购 30、抽奖 32、dou+券 76、大闸蟹 99、保险 102、小店海外 + Biz int64 `json:"biz"` + // 业务来源描述 + BizDesc string `json:"biz_desc"` + // 【订单类型】 0、普通订单 2、虚拟商品订单 4、电子券(poi核销) 5、三方核销 + OrderType int64 `json:"order_type"` + // 订单类型描述 + OrderTypeDesc string `json:"order_type_desc"` + // 不推荐使用,已废弃;关注sku_order_list下即可。【交易类型】 0、普通 1、拼团 2、定金预售 3、订金找贷 4、拍卖 5、0元单 6、回收 7、寄卖 + TradeType int64 `json:"trade_type"` + // 不推荐使用,已废弃,关注sku_order_list下即可。交易类型描述 + TradeTypeDesc string `json:"trade_type_desc"` + // 订单状态;1 待确认/待支付-订单创建完毕;105-已支付; 2-备货中; 101-部分发货; 3-已发货(全部发货);4- 已取消;5 已完成(已收货); + OrderStatus int64 `json:"order_status"` + // 订单状态描述 + OrderStatusDesc string `json:"order_status_desc"` + // 主流程状态 + MainStatus int64 `json:"main_status"` + // 主流程状态描述 + MainStatusDesc string `json:"main_status_desc"` + // 支付时间 + PayTime int64 `json:"pay_time"` + // 订单过期时间 + OrderExpireTime int64 `json:"order_expire_time"` + // 订单完成时间 + FinishTime int64 `json:"finish_time"` + // 下单时间 + CreateTime int64 `json:"create_time"` + // 订单更新时间 + UpdateTime int64 `json:"update_time"` + // 取消原因 + CancelReason string `json:"cancel_reason"` + // 买家留言 + BuyerWords string `json:"buyer_words"` + // 商家备注 + SellerWords string `json:"seller_words"` + // 【下单端】 0、站外 1、火山 2、抖音 3、头条 4、西瓜 5、微信 6、值点app 7、头条lite 8、懂车帝 9、皮皮虾 11、抖音极速版 12、TikTok 13、musically 14、穿山甲 15、火山极速版 16、服务市场 26、番茄小说 27、UG教育营销电商平台 28、Jumanji 29、电商SDK + BType int64 `json:"b_type"` + // 下单端描述 + BTypeDesc string `json:"b_type_desc"` + // 【下单场景】 0、未知 1、app内-原生 2、app内-小程序 3、H5 13、电商SDK-头条 35、电商SDK-头条lite + SubBType int64 `json:"sub_b_type"` + // 下单场景描述 + SubBTypeDesc string `json:"sub_b_type_desc"` + // 具体某个小程序的ID + AppId int64 `json:"app_id"` + // 【支付类型】 0、货到付款 1 、微信 2、支付宝 3、小程序 4、银行卡 5、余额 7、无需支付(0元单) 8、DOU分期(信用支付) 9、新卡支付 12、先用后付 + PayType int64 `json:"pay_type"` + // 支付渠道的流水号 + ChannelPaymentNo string `json:"channel_payment_no"` + // 订单金额(单位:分) + OrderAmount int64 `json:"order_amount"` + // 支付金额(单位:分) + PayAmount int64 `json:"pay_amount"` + // 快递费(单位:分) + PostAmount int64 `json:"post_amount"` + // 运费险金额(单位:分) + PostInsuranceAmount int64 `json:"post_insurance_amount"` + // 改价金额变化量(单位:分) + ModifyAmount int64 `json:"modify_amount"` + // 改价运费金额变化量(单位:分) + ModifyPostAmount int64 `json:"modify_post_amount"` + // 订单优惠总金额(单位:分)= 店铺优惠金额+ 平台优惠金额+ 达人优惠金额 + PromotionAmount int64 `json:"promotion_amount"` + // 店铺优惠金额(单位:分),属于店铺的优惠活动、优惠券、红包的总优惠金额 + PromotionShopAmount int64 `json:"promotion_shop_amount"` + // 平台优惠金额(单位:分),属于平台的优惠活动、优惠券、红包的总优惠金额 + PromotionPlatformAmount int64 `json:"promotion_platform_amount"` + // 商家承担金额(单位:分),订单参与活动和优惠中商家承担部分的总金额 + ShopCostAmount int64 `json:"shop_cost_amount"` + // 平台承担金额(单位:分),订单参与活动和优惠中平台+作者(达人)承担部分的总金额,包含作者(达人)承担金额:platform_cost_amount = only_platform_cost_amount + author_cost_amount + PlatformCostAmount int64 `json:"platform_cost_amount"` + // 达人优惠金额(单位:分),属于达人的优惠活动、优惠券、红包的总优惠金额 + PromotionTalentAmount int64 `json:"promotion_talent_amount"` + // 支付优惠金额(单位:分),支付渠道上的优惠金额 + PromotionPayAmount int64 `json:"promotion_pay_amount"` + // 收件人电话 + PostTel string `json:"post_tel"` + encryptPostTel string `json:"encrypt_post_tel"` + // 收件人姓名 + PostReceiver string `json:"post_receiver"` + encryptPostReceiver string `json:"encrypt_post_receiver"` + // 收件人地址 + PostAddr *PostAddr `json:"post_addr"` + // 预计发货时间 + ExpShipTime int64 `json:"exp_ship_time"` + // 发货时间 + ShipTime int64 `json:"ship_time"` + // 物流信息 + LogisticsInfo []LogisticsInfoItem `json:"logistics_info"` + // 商品单信息 + SkuOrderList []SkuOrderListItem `json:"sku_order_list"` + // 卖家订单标记 小旗子star取值0~5,分别表示 灰紫青绿橙红 + SellerRemarkStars int64 `json:"seller_remark_stars"` + // 定金预售阶段单 + OrderPhaseList []OrderPhaseListItem `json:"order_phase_list"` + // 用户加密串 + DoudianOpenId string `json:"doudian_open_id"` + // 商品序列号(IMEI码或SN码) + SerialNumberList []string `json:"serial_number_list"` + // 红包优惠金额(单位:分) + PromotionRedpackAmount int64 `json:"promotion_redpack_amount"` + // 平台红包优惠金额(单位:分),属于平台的红包的优惠金额 + PromotionRedpackPlatformAmount int64 `json:"promotion_redpack_platform_amount"` + // 达人红包优惠金额(单位:分),属于达人的红包的优惠金额 + PromotionRedpackTalentAmount int64 `json:"promotion_redpack_talent_amount"` + // 用户证件信息 + UserIdInfo *UserIdInfo `json:"user_id_info"` + // 预约发货时间 + AppointmentShipTime int64 `json:"appointment_ship_time"` + // 懂车帝购车信息 + DCarShopBizData *DCarShopBizData `json:"d_car_shop_biz_data"` + // 店铺单标签 + ShopOrderTagUi []ShopOrderTagUiItem `json:"shop_order_tag_ui"` + // 总优惠金额(单位:分),total_promotion_amount = promotion_amount + post_promotion_amount + TotalPromotionAmount int64 `json:"total_promotion_amount"` + // 运费原价(单位:分),post_origin_amount = post_amount + post_promotion_amount + PostOriginAmount int64 `json:"post_origin_amount"` + // 运费优惠金额(单位:分) + PostPromotionAmount int64 `json:"post_promotion_amount"` + // 用户特征标签 + UserTagUi []UserTagUiItem `json:"user_tag_ui"` + // 作者(达人)承担金额(单位:分),订单参与活动和优惠中作者(达人)承担部分的总金额 + AuthorCostAmount int64 `json:"author_cost_amount"` + // 仅平台承担金额(单位:分),订单参与活动和优惠中平台承担部分的总金额 + OnlyPlatformCostAmount int64 `json:"only_platform_cost_amount"` + // 履约时效信息(json串) + PromiseInfo string `json:"promise_info"` + // 收件人姓名(脱敏后) + MaskPostReceiver string `json:"mask_post_receiver"` + // 收件人电话(脱敏后) + MaskPostTel string `json:"mask_post_tel"` + // 收件人地址(脱敏后) + MaskPostAddr *MaskPostAddr `json:"mask_post_addr"` + // 用户经纬度信息 + UserCoordinate *UserCoordinate `json:"user_coordinate"` + // 预计最早送达时间(小时达) + EarliestReceiptTime int64 `json:"earliest_receipt_time"` + // 预计最晚送达时间(小时达) + LatestReceiptTime int64 `json:"latest_receipt_time"` + // 是否尽快送达(小时达) + EarlyArrival bool `json:"early_arrival"` + // 尽快送达的时间点(小时达) + TargetArrivalTime int64 `json:"target_arrival_time"` +} +type OrderSearchListData struct { + // 页数,从0开始 + Page int64 `json:"page"` + // 总订单数 + Total int64 `json:"total"` + // 单页大小 + Size int64 `json:"size"` + // 订单信息 + ShopOrderList []ShopOrderListItem `json:"shop_order_list"` +} +type SkuOrderTagUiItem struct { + // 标签key + Key string `json:"key"` + // 标签文案 + Text string `json:"text"` + // 标签备注文案 + HoverText string `json:"hover_text"` + // 标签类型,如颜色 + TagType string `json:"tag_type"` + // 帮助文档 + HelpDoc string `json:"help_doc"` + // 排序 + Sort int64 `json:"sort"` + // 标签其他信息 + Extra string `json:"extra"` +} +type AccountList struct { + // 账号信息 + AccountInfo []AccountInfoItem `json:"account_info"` +} +type SkuOrderListItem struct { + // 商品订单号 + OrderId string `json:"order_id"` + // 父订单号(店铺订单号) + ParentOrderId string `json:"parent_order_id"` + // 订单层级 + OrderLevel int64 `json:"order_level"` + // 【业务来源】 1、鲁班 2、小店 3、好好学习 4、ev 5、虚拟 6、建站 7、核销 8、玉石 9、ez 10、ep 11、虚拟卡券 12、服务市场 13、EP视频课 14、EP直播课 21、跨境BBC 22、跨境BC 23、跨境CC,UPC 24、手机充值 25、拍卖保证金 26、懂车帝抵扣券 27、懂车帝返现券 28、离岛免税 29、海南会员购 30、抽奖 32、dou+券 76、大闸蟹 99、保险 102、小店海外 + Biz int64 `json:"biz"` + // 业务来源描述 + BizDesc string `json:"biz_desc"` + // 【订单类型】 0、普通订单 2、虚拟商品订单 4、电子券(poi核销) 5、三方核销 + OrderType int64 `json:"order_type"` + // 订单类型描述 + OrderTypeDesc string `json:"order_type_desc"` + // 【交易类型】 0、普通 1、拼团 2、定金预售 3、订金找贷 4、拍卖 5、0元单 6、回收 7、寄卖 + TradeType int64 `json:"trade_type"` + // 交易类型描述 + TradeTypeDesc string `json:"trade_type_desc"` + // 订单状态 + OrderStatus int64 `json:"order_status"` + // 订单状态描述 + OrderStatusDesc string `json:"order_status_desc"` + // 主流程状态 + MainStatus int64 `json:"main_status"` + // 主流程状态描述 + MainStatusDesc string `json:"main_status_desc"` + // 支付时间 + PayTime int64 `json:"pay_time"` + // 订单过期时间 + OrderExpireTime int64 `json:"order_expire_time"` + // 订单完成时间 + FinishTime int64 `json:"finish_time"` + // 下单时间 + CreateTime int64 `json:"create_time"` + // 订单更新时间 + UpdateTime int64 `json:"update_time"` + // 取消原因 + CancelReason string `json:"cancel_reason"` + // 【下单端】 0、站外 1、火山 2、抖音 3、头条 4、西瓜 5、微信 6、值点app 7、头条lite 8、懂车帝 9、皮皮虾 11、抖音极速版 12、TikTok 13、musically 14、穿山甲 15、火山极速版 16、服务市场 26、番茄小说 27、UG教育营销电商平台 28、Jumanji 29、电商SDK + BType int64 `json:"b_type"` + // 下单端描述 + BTypeDesc string `json:"b_type_desc"` + // 【下单场景】 0、未知 1、app内-原生 2、app内-小程序 3、H5 13、电商SDK-头条 35、电商SDK-头条lite + SubBType int64 `json:"sub_b_type"` + // 下单场景描述 + SubBTypeDesc string `json:"sub_b_type_desc"` + // 已废弃,不推荐使用。流量来源:1-鲁班广告 2-联盟 3-商城 4-自主经营 5-线索通支付表单 6-抖音门店 7-抖+ 8-穿山甲 + SendPay int64 `json:"send_pay"` + // 已废弃,不推荐使用。流量来源描述 + SendPayDesc string `json:"send_pay_desc"` + // 直播主播id(达人) + AuthorId int64 `json:"author_id"` + // 直播主播名称 + AuthorName string `json:"author_name"` + // 【下单来源】 0、其他 1、直播间 + ThemeType string `json:"theme_type"` + // 下单来源描述 + ThemeTypeDesc string `json:"theme_type_desc"` + // 小程序id + AppId int64 `json:"app_id"` + // 直播间id + RoomId int64 `json:"room_id"` + // 内容id + ContentId string `json:"content_id"` + // 视频id + VideoId string `json:"video_id"` + // 流量来源id + OriginId string `json:"origin_id"` + // 创意id(creative_id) + Cid int64 `json:"cid"` + // 【C端流量来源】 0、unknown 2、精选联盟 8、小店自卖 + CBiz int64 `json:"c_biz"` + // C端流量来源业务类型描述 + CBizDesc string `json:"c_biz_desc"` + // 鲁班广告落地页ID + PageId int64 `json:"page_id"` + // 【支付类型】 0、货到付款 1 、微信 2、支付宝 3、小程序 4、银行卡 5、余额 7、无需支付(0元单) 8、DOU分期(信用支付) 9、新卡支付 + PayType int64 `json:"pay_type"` + // 支付渠道的流水号 + ChannelPaymentNo string `json:"channel_payment_no"` + // 订单金额(单位:分) + OrderAmount int64 `json:"order_amount"` + // 支付金额(单位:分) + PayAmount int64 `json:"pay_amount"` + // 运费险金额(单位:分) + PostInsuranceAmount int64 `json:"post_insurance_amount"` + // 改价金额变化量(单位:分) + ModifyAmount int64 `json:"modify_amount"` + // 改价运费金额变化量(单位:分) + ModifyPostAmount int64 `json:"modify_post_amount"` + // 订单优惠总金额(单位:分)= 店铺优惠金额+ 平台优惠金额+ 达人优惠金额 + PromotionAmount int64 `json:"promotion_amount"` + // 店铺优惠金额(单位:分),属于店铺的优惠活动、优惠券、红包的总优惠金额 + PromotionShopAmount int64 `json:"promotion_shop_amount"` + // 平台优惠金额(单位:分),属于平台的优惠活动、优惠券、红包的总优惠金额 + PromotionPlatformAmount int64 `json:"promotion_platform_amount"` + // 商家承担金额(单位:分),订单参与活动和优惠中商家承担部分的总金额 + ShopCostAmount int64 `json:"shop_cost_amount"` + // 平台承担金额(单位:分),订单参与活动和优惠中平台+作者(达人)承担部分的总金额,包含作者(达人)承担金额:platform_cost_amount = only_platform_cost_amount + author_cost_amount + PlatformCostAmount int64 `json:"platform_cost_amount"` + // 达人优惠金额(单位:分),属于达人的优惠活动、优惠券、红包的总优惠金额 + PromotionTalentAmount int64 `json:"promotion_talent_amount"` + // 支付优惠金额(单位:分),支付渠道上的优惠金额 + PromotionPayAmount int64 `json:"promotion_pay_amount"` + // 商家后台商品编码 + Code string `json:"code"` + // 收件人电话 + PostTel string `json:"post_tel"` + encryptPostTel string `json:"encrypt_post_tel"` + // 收件人姓名 + PostReceiver string `json:"post_receiver"` + encryptPostReceiver string `json:"encrypt_post_receiver"` + // 收件人地址 + PostAddr *PostAddr `json:"post_addr"` + // 预计发货时间 + ExpShipTime int64 `json:"exp_ship_time"` + // 发货时间 + ShipTime int64 `json:"ship_time"` + // 物流收货时间 + LogisticsReceiptTime int64 `json:"logistics_receipt_time"` + // 用户确认收货时间 + ConfirmReceiptTime int64 `json:"confirm_receipt_time"` + // 【商品类型】 0、实体 1、虚拟 + GoodsType int64 `json:"goods_type"` + // 商品ID + ProductId int64 `json:"product_id"` + // 商品skuId + SkuId int64 `json:"sku_id"` + // 规格信息 + Spec []SpecItem `json:"spec"` + // 一级类目 + FirstCid int64 `json:"first_cid"` + // 二级类目 + SecondCid int64 `json:"second_cid"` + // 三级类目 + ThirdCid int64 `json:"third_cid"` + // 四级类目 + FourthCid int64 `json:"fourth_cid"` + // 外部Skuid + OutSkuId string `json:"out_sku_id"` + // sku外部供应商编码 + SupplierId string `json:"supplier_id"` + // 商品外部编码 + OutProductId string `json:"out_product_id"` + // 仓id,废弃,使用inventory_list + WarehouseIds []string `json:"warehouse_ids"` + // 外部仓id,废弃,使用inventory_list + OutWarehouseIds []string `json:"out_warehouse_ids"` + // 库存类型,普通库存/区域库存,废弃,使用inventory_list + InventoryType string `json:"inventory_type"` + // 库存类型描述,废弃,使用inventory_list + InventoryTypeDesc string `json:"inventory_type_desc"` + // 【库存扣减方式】 1、下单减库存 2、支付减库存 + ReduceStockType int64 `json:"reduce_stock_type"` + // 库存扣减方式名称 + ReduceStockTypeDesc string `json:"reduce_stock_type_desc"` + // 商品现价(单位:分) + OriginAmount int64 `json:"origin_amount"` + // 是否包税 + HasTax bool `json:"has_tax"` + // 订单商品数量 + ItemNum int64 `json:"item_num"` + // 商品现价*件数 + SumAmount int64 `json:"sum_amount"` + // 商品来源平台 + SourcePlatform string `json:"source_platform"` + // 商品图片 + ProductPic string `json:"product_pic"` + // 是否评价 :1已评价,0未评价,2表示追评 + IsComment int64 `json:"is_comment"` + // 商品名称 + ProductName string `json:"product_name"` + // 仓库信息 + InventoryList []InventoryListItem `json:"inventory_list"` + // 运费(单位:分) + PostAmount int64 `json:"post_amount"` + // 预售类型 ,0 现货类型,1 全款预售 2 阶梯发货 + PreSaleType int64 `json:"pre_sale_type"` + // 售后信息 + AfterSaleInfo *AfterSaleInfo `json:"after_sale_info"` + // 红包优惠金额(单位:分) + PromotionRedpackAmount int64 `json:"promotion_redpack_amount"` + // 平台红包优惠金额(单位:分),属于平台的红包的优惠金额 + PromotionRedpackPlatformAmount int64 `json:"promotion_redpack_platform_amount"` + // 达人红包优惠金额(单位:分),属于达人的红包的优惠金额 + PromotionRedpackTalentAmount int64 `json:"promotion_redpack_talent_amount"` + // 1:邮寄,2:自提 + ReceiveType int64 `json:"receive_type"` + // 是否需要上传序列号,用于判断发货时是否需要上传商品序列号(IMEI码或SN码),true 表示是3C数码商品,需要上传序列号 + NeedSerialNumber bool `json:"need_serial_number"` + // 广告来源,video:短视频 live:直播 + AdEnvType string `json:"ad_env_type"` + // 商品单标签 + SkuOrderTagUi []SkuOrderTagUiItem `json:"sku_order_tag_ui"` + // 商品ID,字符串型 + ProductIdStr string `json:"product_id_str"` + // 预约发货时间 + AppointmentShipTime int64 `json:"appointment_ship_time"` + // 直播房间ID,字符串类型 + RoomIdStr string `json:"room_id_str"` + // 绑定类型 MASTER-主品单 FREE-免费赠品 + GivenProductType string `json:"given_product_type"` + // 绑定的主品sku单单号 如果GivenProductType =FREE 则MasterSkuOrderId内容为主品sku单单号 + MasterSkuOrderId string `json:"master_sku_order_id"` + // 商品卡券基本信息 + CardVoucher *CardVoucher `json:"card_voucher"` + // 组套商品子商品列表 + BundleSkuInfo []BundleSkuInfoItem `json:"bundle_sku_info"` + // 账号信息list + AccountList *AccountList `json:"account_list"` + // 定制商品信息 + SkuCustomizationInfo []SkuCustomizationInfoItem `json:"sku_customization_info"` + // 作者(达人)承担金额(单位:分),订单参与活动和优惠中作者(达人)承担部分的总金额 + AuthorCostAmount int64 `json:"author_cost_amount"` + // 仅平台承担金额(单位:分),订单参与活动和优惠中平台承担部分的总金额 + OnlyPlatformCostAmount int64 `json:"only_platform_cost_amount"` + // 履约时效信息(json串) + PromiseInfo string `json:"promise_info"` + // 门店信息 + StoreInfo *StoreInfo `json:"store_info"` + // 收件人姓名(脱敏后) + MaskPostReceiver string `json:"mask_post_receiver"` + // 收件人电话(脱敏后) + MaskPostTel string `json:"mask_post_tel"` + // 收件人地址(脱敏后) + MaskPostAddr *MaskPostAddr `json:"mask_post_addr"` +} +type UserIdInfo struct { + // 证件号 + IdCardNo string `json:"id_card_no"` + encryptIdCardNo string `json:"encrypt_id_card_no"` + // 证件姓名 + IdCardName string `json:"id_card_name"` + encryptIdCardName string `json:"encrypt_id_card_name"` +} +type BundleSkuInfoItem struct { + // 组套商品子商品ID + ProductId string `json:"product_id"` + // 组套商品子商品SKU_ID + SkuId string `json:"sku_id"` + // 组套商品子商品名称 + ProductName string `json:"product_name"` + // 组套商品子商品数量 + ItemNum int64 `json:"item_num"` + // 组商品子商品图片 + PictureUrl string `json:"picture_url"` + // 组套子商品外部编码 + Code string `json:"code"` +} +type TextItem struct { + // id + Id int64 `json:"id"` + // key + Key string `json:"key"` + // content + Content string `json:"content"` +} +type MaskPostAddr struct { + // 省 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 县/区 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细地址 + Detail string `json:"detail"` +} +type SkuCustomizationInfoItem struct { + // 定制详情 + Detail *Detail `json:"detail"` +} +type DCarShopBizData struct { + // 选择的门店ID + PoiId string `json:"poi_id"` + // 选择的门店名称 + PoiName string `json:"poi_name"` + // 选择的门店地址 + PoiAddr string `json:"poi_addr"` + // 选择的门店电话 + PoiTel string `json:"poi_tel"` + // 权益信息 + CouponRight []CouponRightItem `json:"coupon_right"` + // 选择的门店所在省 + PoiPname string `json:"poi_pname"` + // 选择的门店所在市 + PoiCityName string `json:"poi_city_name"` + // 选择的门店所在区县 + PoiAdname string `json:"poi_adname"` +} +type City struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type Town struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type SkuSpecsItem struct { + // 规格名称 + Name string `json:"name"` + // 规格值 + Value string `json:"value"` +} +type InventoryListItem struct { + // 仓id + WarehouseId string `json:"warehouse_id"` + // 外部仓id + OutWarehouseId string `json:"out_warehouse_id"` + // 库存类型,普通库存/区域库存 + InventoryType int64 `json:"inventory_type"` + // 库存类型描述 + InventoryTypeDesc string `json:"inventory_type_desc"` + // 库存变更数量 + Count int64 `json:"count"` + // 仓类型:0-商家仓,1-跨境仓,2-云仓 + WarehouseType int64 `json:"warehouse_type"` +} +type Detail struct { + // 定制图片信息 + Pic []PicItem `json:"pic"` + // 定制文案信息 + Text []TextItem `json:"text"` + // 额外信息 + Extra string `json:"extra"` +} +type StoreInfo struct { + // 门店id + StoreId string `json:"store_id"` + // 门店名称 + StoreName string `json:"store_name"` + // 门店电话 + StoreTel string `json:"store_tel"` + // 门店地址 + StoreAddress *StoreAddress `json:"store_address"` + // 扩展字段 + Extra string `json:"extra"` +} +type Province struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type Street struct { + // 名称 + Name string `json:"name"` + // 地区ID + Id string `json:"id"` +} +type PostAddr struct { + // 省/直辖市 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 区县 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细地址 + Detail string `json:"detail"` + encryptDetail string `json:"encrypt_detail"` +} +type ProductInfoItem struct { + // 商品名称 + ProductName string `json:"product_name"` + // 商品价格 + Price int64 `json:"price"` + // 商家编码 + OuterSkuId string `json:"outer_sku_id"` + // 商品skuId + SkuId int64 `json:"sku_id"` + // 规格信息 + SkuSpecs []SkuSpecsItem `json:"sku_specs"` + // 发货商品数量 + ProductCount int64 `json:"product_count"` + // 商品ID + ProductId int64 `json:"product_id"` + // 商品单ID + SkuOrderId string `json:"sku_order_id"` + // 商品ID,字符串型 + ProductIdStr string `json:"product_id_str"` +} +type SpecItem struct { + // 规格名称 + Name string `json:"name"` + // 规格值 + Value string `json:"value"` +} +type CardVoucher struct { + // 自领取之日起有效天数(如果有值优先使用该字段) + ValidDays int64 `json:"valid_days"` + // 卡券开始时间 + ValidStart int64 `json:"valid_start"` + // 卡券截止日期 + ValidEnd int64 `json:"valid_end"` +} +type StoreAddress struct { + // 省 + Province *Province `json:"province"` + // 市 + City *City `json:"city"` + // 县/区 + Town *Town `json:"town"` + // 街道 + Street *Street `json:"street"` + // 详细信息 + Detail string `json:"detail"` +} +type UserTagUiItem struct { + // 标签key + Key string `json:"key"` + // 标签名称 + Text string `json:"text"` +} +type LogisticsInfoItem struct { + // 物流单号 + TrackingNo string `json:"tracking_no"` + // 物流公司 + Company string `json:"company"` + // 发货时间 + ShipTime int64 `json:"ship_time"` + // 包裹id + DeliveryId string `json:"delivery_id"` + // 物流公司名称 + CompanyName string `json:"company_name"` + // 商品信息 + ProductInfo []ProductInfoItem `json:"product_info"` +} +type AccountInfoItem struct { + // 账号名称 + AccountName string `json:"account_name"` + // 账号类型;枚举值:Mobile :手机号;Email :邮箱 ; IdCard :身份证; Passport :护照; BankCard :银行卡; Number :纯数学; NumberLetter :数字字母混合; + AccountType string `json:"account_type"` + // 账号值 + AccountId string `json:"account_id"` + encryptAccountId string `json:"encrypt_account_id"` +} +type OrderPhaseListItem struct { + // 阶段单id + PhaseOrderId string `json:"phase_order_id"` + // 总共有几阶段 + TotalPhase int64 `json:"total_phase"` + // 第几阶段 + CurrentPhase int64 `json:"current_phase"` + // 是否支付成功 + PaySuccess bool `json:"pay_success"` + // 商品单ID + SkuOrderId string `json:"sku_order_id"` + // 活动id + CampaignId int64 `json:"campaign_id"` + // 阶段价格:定金单价、尾款单价,单位:分 + PhasePayablePrice int64 `json:"phase_payable_price"` + // 支付类型:0-货到付款, 1-微信, 2-支付宝, 3-小程序, 4-银行卡, 5-余额, 7-无需支付, 8-放心花(信用支付), 9-新卡支付 + PhasePayType int64 `json:"phase_pay_type"` + // 阶段单开始开启支付时间,时间戳 + PhaseOpenTime int64 `json:"phase_open_time"` + // 阶段单支付成功时间,时间戳 + PhasePayTime int64 `json:"phase_pay_time"` + // 阶段单关闭时间,时间戳 + PhaseCloseTime int64 `json:"phase_close_time"` + // 渠道支付订单号 + ChannelPaymentNo string `json:"channel_payment_no"` + // 阶段单总金额,单位分,为订单金额phase_sum_amount+运费phase_post_amount,为支付金额phase_pay_amount+优惠金额phase_promotion_amount + PhaseOrderAmount int64 `json:"phase_order_amount"` + // 阶段单订单金额,单位分 + PhaseSumAmount int64 `json:"phase_sum_amount"` + // 阶段单运费金额,单位分 + PhasePostAmount int64 `json:"phase_post_amount"` + // 阶段单用户实际支付金额,单位分 + PhasePayAmount int64 `json:"phase_pay_amount"` + // 阶段单总优惠金额,单位分 + PhasePromotionAmount int64 `json:"phase_promotion_amount"` + // 阶段状态描述 + CurrentPhaseStatusDesc string `json:"current_phase_status_desc"` + // sku单价,单位:分 + SkuPrice int64 `json:"sku_price"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_serviceDetail/request/order_serviceDetail_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_serviceDetail/request/order_serviceDetail_request.go new file mode 100644 index 00000000..02114b41 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_serviceDetail/request/order_serviceDetail_request.go @@ -0,0 +1,48 @@ +package order_serviceDetail_request + +import ( + "encoding/json" +) + +type OrderServiceDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderServiceDetailParam +} + +func (c *OrderServiceDetailRequest) GetUrlPath() string { + return "/order/serviceDetail" +} + +func New() *OrderServiceDetailRequest { + request := &OrderServiceDetailRequest{ + Param: &OrderServiceDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderServiceDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_serviceDetail_response.OrderServiceDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_serviceDetail_response.OrderServiceDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderServiceDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderServiceDetailRequest) GetParams() *OrderServiceDetailParam { + return c.Param +} + +type OrderServiceDetailParam struct { + // 服务请求列表中获取的id + ServiceId int64 `json:"service_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_serviceDetail/response/order_serviceDetail_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_serviceDetail/response/order_serviceDetail_response.go new file mode 100644 index 00000000..5671ccfe --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_serviceDetail/response/order_serviceDetail_response.go @@ -0,0 +1,78 @@ +package order_serviceDetail_response + +type OrderServiceDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderServiceDetailData `json:"data"` +} +type Detail struct { + // 服务请求ID + Id int64 `json:"id"` + // 订单号 + OrderId int64 `json:"order_id"` + // 操作状态,增加审核中状态码 + OperateStatus int32 `json:"operate_status"` + // 服务单详情 + Detail string `json:"detail"` + // 商家答复内容 + Reply string `json:"reply"` + // 服务单创建时间 + CreateTime string `json:"create_time"` + // 服务单类型,枚举 + ServiceType int64 `json:"service_type"` + // 最新回复时间 + ReplyTime string `json:"reply_time"` + // 操作状态含义,增加审核中状态 + OperateStatusDesc string `json:"operate_status_desc"` + // 店铺id + ShopId int64 `json:"shop_id"` + // 是否为被审核驳回的服务单 + IsReject int64 `json:"is_reject"` + // 驳回内容 + RejectDetail string `json:"reject_detail"` + // 驳回时间 + RejectTime string `json:"reject_time"` + // 驳回时间 + RejectTime string `json:"reject_time"` + // 凭证demo url + ProofDemo string `json:"proof_demo"` + // 是否必须上传凭证 + EvidenceRequired int64 `json:"evidence_required"` + // 图片url 数组json + ImgList []string `json:"img_list"` + // 超时时间 + ExpirationTime string `json:"expiration_time"` + // 关闭时间 + CloseTime string `json:"close_time"` + // 关闭原因 + CloseDetail string `json:"close_detail"` + // 首次回复时间 + FirstReplyTime string `json:"first_reply_time"` + // 服务单更新时间时间 + UpdateTime string `json:"update_time"` +} +type LogsItem struct { + // 内容 + Content string `json:"content"` + // 图片列表 + ImgList []string `json:"img_list"` + // 日志类型 + ServiceLogType int32 `json:"service_log_type"` + // 平台客服 + OperateName string `json:"operate_name"` + // 服务详情 + ServiceDetail string `json:"service_detail"` + // 回复内容 + ReplyDetail string `json:"reply_detail"` + // 关闭原因 + CloseDetail string `json:"close_detail"` + // 驳回内容 + RejectDetail string `json:"reject_detail"` + // 24小时 + DealTime string `json:"deal_time"` +} +type OrderServiceDetailData struct { + // 详情 + Detail *Detail `json:"detail"` + // 日志 + Logs []LogsItem `json:"logs"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_updateOrderAmount/request/order_updateOrderAmount_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_updateOrderAmount/request/order_updateOrderAmount_request.go new file mode 100644 index 00000000..032aca21 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_updateOrderAmount/request/order_updateOrderAmount_request.go @@ -0,0 +1,52 @@ +package order_updateOrderAmount_request + +import ( + "encoding/json" +) + +type OrderUpdateOrderAmountRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderUpdateOrderAmountParam +} + +func (c *OrderUpdateOrderAmountRequest) GetUrlPath() string { + return "/order/updateOrderAmount" +} + +func New() *OrderUpdateOrderAmountRequest { + request := &OrderUpdateOrderAmountRequest{ + Param: &OrderUpdateOrderAmountParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderUpdateOrderAmountRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_updateOrderAmount_response.OrderUpdateOrderAmountResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_updateOrderAmount_response.OrderUpdateOrderAmountResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderUpdateOrderAmountRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderUpdateOrderAmountRequest) GetParams() *OrderUpdateOrderAmountParam { + return c.Param +} + +type UpdateDetailItem struct { + OrderId string `json:"order_id"` + DiscountAmount int64 `json:"discount_amount"` +} +type OrderUpdateOrderAmountParam struct { + Pid string `json:"pid"` + UpdateDetail []UpdateDetailItem `json:"update_detail"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_updateOrderAmount/response/order_updateOrderAmount_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_updateOrderAmount/response/order_updateOrderAmount_response.go new file mode 100644 index 00000000..0bed5a45 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_updateOrderAmount/response/order_updateOrderAmount_response.go @@ -0,0 +1,8 @@ +package order_updateOrderAmount_response + +type OrderUpdateOrderAmountResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderUpdateOrderAmountData `json:"data"` +} +type OrderUpdateOrderAmountData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_updatePostAmount/request/order_updatePostAmount_request.go b/platformapi/tiktok_shop/sdk-golang/api/order_updatePostAmount/request/order_updatePostAmount_request.go new file mode 100644 index 00000000..db3ada98 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_updatePostAmount/request/order_updatePostAmount_request.go @@ -0,0 +1,49 @@ +package order_updatePostAmount_request + +import ( + "encoding/json" +) + +type OrderUpdatePostAmountRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *OrderUpdatePostAmountParam +} + +func (c *OrderUpdatePostAmountRequest) GetUrlPath() string { + return "/order/updatePostAmount" +} + +func New() *OrderUpdatePostAmountRequest { + request := &OrderUpdatePostAmountRequest{ + Param: &OrderUpdatePostAmountParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *OrderUpdatePostAmountRequest) Execute(accessToken *doudian_sdk.AccessToken) (*order_updatePostAmount_response.OrderUpdatePostAmountResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &order_updatePostAmount_response.OrderUpdatePostAmountResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *OrderUpdatePostAmountRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *OrderUpdatePostAmountRequest) GetParams() *OrderUpdatePostAmountParam { + return c.Param +} + +type OrderUpdatePostAmountParam struct { + OrderId string `json:"order_id"` + PostAmount int64 `json:"post_amount"` + PostAmount int64 `json:"post_amount"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/order_updatePostAmount/response/order_updatePostAmount_response.go b/platformapi/tiktok_shop/sdk-golang/api/order_updatePostAmount/response/order_updatePostAmount_response.go new file mode 100644 index 00000000..4ce072b9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/order_updatePostAmount/response/order_updatePostAmount_response.go @@ -0,0 +1,8 @@ +package order_updatePostAmount_response + +type OrderUpdatePostAmountResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *OrderUpdatePostAmountData `json:"data"` +} +type OrderUpdatePostAmountData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_CategoryDimList/request/product_CategoryDimList_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_CategoryDimList/request/product_CategoryDimList_request.go new file mode 100644 index 00000000..19035d60 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_CategoryDimList/request/product_CategoryDimList_request.go @@ -0,0 +1,52 @@ +package product_CategoryDimList_request + +import ( + "encoding/json" +) + +type ProductCategoryDimListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductCategoryDimListParam +} + +func (c *ProductCategoryDimListRequest) GetUrlPath() string { + return "/product/CategoryDimList" +} + +func New() *ProductCategoryDimListRequest { + request := &ProductCategoryDimListRequest{ + Param: &ProductCategoryDimListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductCategoryDimListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_CategoryDimList_response.ProductCategoryDimListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_CategoryDimList_response.ProductCategoryDimListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductCategoryDimListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductCategoryDimListRequest) GetParams() *ProductCategoryDimListParam { + return c.Param +} + +type ProductCategoryDimListParam struct { + // 类目层级 + Level int32 `json:"level"` + // 类目名, 模糊搜索 + Name string `json:"name"` + // 上级类目ID,一级类目上级类目ID为0,可选 + ParentId int64 `json:"parent_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_CategoryDimList/response/product_CategoryDimList_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_CategoryDimList/response/product_CategoryDimList_response.go new file mode 100644 index 00000000..780dedae --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_CategoryDimList/response/product_CategoryDimList_response.go @@ -0,0 +1,26 @@ +package product_CategoryDimList_response + +type ProductCategoryDimListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductCategoryDimListData `json:"data"` +} +type DataItem struct { + // 类目ID + Id int64 `json:"id"` + // 类目名 + Name string `json:"name"` + // 类目层级 + Level int32 `json:"level"` + // 上级ID,一级类目上级ID为0 + ParentId int64 `json:"parent_id"` + // 是否叶子类目 + IsLeaf int32 `json:"is_leaf"` + // 行业名 + VerticalCategoryNew string `json:"vertical_category_new"` + // 行业英文名 + VerticalCategoryCodeNew string `json:"vertical_category_code_new"` +} +type ProductCategoryDimListData struct { + // 返回结果 + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_GetRecommendCategory/request/product_GetRecommendCategory_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_GetRecommendCategory/request/product_GetRecommendCategory_request.go new file mode 100644 index 00000000..0731d82f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_GetRecommendCategory/request/product_GetRecommendCategory_request.go @@ -0,0 +1,68 @@ +package product_GetRecommendCategory_request + +import ( + "encoding/json" +) + +type ProductGetRecommendCategoryRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductGetRecommendCategoryParam +} + +func (c *ProductGetRecommendCategoryRequest) GetUrlPath() string { + return "/product/GetRecommendCategory" +} + +func New() *ProductGetRecommendCategoryRequest { + request := &ProductGetRecommendCategoryRequest{ + Param: &ProductGetRecommendCategoryParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductGetRecommendCategoryRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_GetRecommendCategory_response.ProductGetRecommendCategoryResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_GetRecommendCategory_response.ProductGetRecommendCategoryResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductGetRecommendCategoryRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductGetRecommendCategoryRequest) GetParams() *ProductGetRecommendCategoryParam { + return c.Param +} + +type PicItem struct { + // 图片链接 + Url string `json:"url"` +} +type ProductFormatNewItem struct { + // 属性id + Value int64 `json:"value"` + // 属性名称 + Name string `json:"name"` +} +type ProductGetRecommendCategoryParam struct { + // 两种枚举:1、product_info,表示基于商品内容进行类目预测,需要传入商品类目、属性等;2、smart_publish 表示图片预测类目,需要传入商品主图 + Scene string `json:"scene"` + // 商品主图图片url,scene为smart_publish时必传 + Pic []PicItem `json:"pic"` + // 商品类目id,scene为product_info时必传 + CategoryLeafId int64 `json:"category_leaf_id"` + // 商品标题,scene为product_info时选填 + Name string `json:"name"` + // 商品类目属性 + ProductFormatNew map[int64]ProductFormatNewItem `json:"product_format_new"` + // 品牌id + StandardBrandId int64 `json:"standard_brand_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_GetRecommendCategory/response/product_GetRecommendCategory_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_GetRecommendCategory/response/product_GetRecommendCategory_response.go new file mode 100644 index 00000000..b178783a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_GetRecommendCategory/response/product_GetRecommendCategory_response.go @@ -0,0 +1,34 @@ +package product_GetRecommendCategory_response + +type ProductGetRecommendCategoryResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductGetRecommendCategoryData `json:"data"` +} +type CategoryDetail struct { + // 一级类目id + FirstCid int64 `json:"first_cid"` + // 一级类目名称 + FirstCname string `json:"first_cname"` + // 二级类目id + SecondCid int64 `json:"second_cid"` + // 二级类目名称 + SecondCname string `json:"second_cname"` + // 三级类目id + ThirdCid int64 `json:"third_cid"` + // 三级类目名称 + ThirdCname string `json:"third_cname"` + // 四级类目id + FourthCid int64 `json:"fourth_cid"` + // 四级类目名称 + FourthCname string `json:"fourth_cname"` +} +type CategoryDetailsItem struct { + // 类目详情 + CategoryDetail *CategoryDetail `json:"category_detail"` + // 类目资质状态,0有资质;1资质过期;2无资质 + QualificationStatus int64 `json:"qualification_status"` +} +type ProductGetRecommendCategoryData struct { + // 推荐类目结果 + CategoryDetails []CategoryDetailsItem `json:"categoryDetails"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_addCbProduct/request/product_addCbProduct_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_addCbProduct/request/product_addCbProduct_request.go new file mode 100644 index 00000000..1d11d5a8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_addCbProduct/request/product_addCbProduct_request.go @@ -0,0 +1,200 @@ +package product_addCbProduct_request + +import ( + "encoding/json" +) + +type ProductAddCbProductRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductAddCbProductParam +} + +func (c *ProductAddCbProductRequest) GetUrlPath() string { + return "/product/addCbProduct" +} + +func New() *ProductAddCbProductRequest { + request := &ProductAddCbProductRequest{ + Param: &ProductAddCbProductParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductAddCbProductRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_addCbProduct_response.ProductAddCbProductResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_addCbProduct_response.ProductAddCbProductResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductAddCbProductRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductAddCbProductRequest) GetParams() *ProductAddCbProductParam { + return c.Param +} + +type PoiResource struct { + // 有效时间段,从领取日开始计算,优先级高于ValidStart-ValidEnd + ValidDays int64 `json:"valid_days"` + // 卡券有效开始时间,秒单位时间戳 + ValidStart int64 `json:"valid_start"` + // 卡券有效截止时间,秒单位时间戳 + ValidEnd int64 `json:"valid_end"` + // 客服电话 + ServiceNum string `json:"service_num"` + // 领取须知 + Notification string `json:"notification"` + // 平台产生券码: 1 ; 合作方api实时传入的券码: 4 + CodeType int64 `json:"code_type"` + // 券码总量,0/-1表示不限制,平台券时须\u003e0 + Count int64 `json:"count"` + // 0-不支持二次兑换,1-支持二次兑换 + CouponSecondExchange int64 `json:"couponSecondExchange"` + // 可核销总次数 + TotalCanUseCount int32 `json:"total_can_use_count"` + // 兑换链接 + Link string `json:"link"` + // 券码使用条件 + Condition string `json:"condition"` +} +type ProductAddCbProductParam struct { + // 推荐使用,外部商家编码,支持字符串 + OuterProductId string `json:"outer_product_id"` + // 0-普通,3-虚拟,6玉石闪购,7云闪购 + ProductType int64 `json:"product_type"` + // 叶子类目ID通过/shop/getShopCategory接口获取 + CategoryLeafId int64 `json:"category_leaf_id"` + // 属性名称|属性值 之间用|分隔, 多组之间用^分开 + ProductFormat string `json:"product_format"` + // 商品名称,最多60个字符(30个汉字),不能含emoj表情 + Name string `json:"name"` + // 商家推荐语,不能含emoj表情 + RecommendRemark string `json:"recommend_remark"` + // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 + Pic string `json:"pic"` + // 商品描述,目前只支持图片。多张图片用 \"|\" 分开。不能用其他网站的文本粘贴,这样会出现css样式不兼容 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 + Description string `json:"description"` + // 支付方式,0货到付款 1在线支付,2,货到付款+在线支付 + PayType int64 `json:"pay_type"` + // 海南免税生效。 0:离岛免税、1:邮寄、2:离岛自提+邮寄 + DeliveryMethod int32 `json:"delivery_method"` + // 海南免税:海关限购分类编码 + CdfCategory string `json:"cdf_category"` + // 1 减库存类型:1-拍下减库存 2-付款减库存 + ReduceType int64 `json:"reduce_type"` + // 同店商品推荐:为空表示使用系统推荐;多个product_id使用“|”分开 + AssocIds string `json:"assoc_ids"` + // 运费模板id,传0表示包邮,通过/freightTemplate/list接口获取 + FreightId int64 `json:"freight_id"` + // 重量 + Weight float64 `json:"weight"` + // 重量单位,0-kg, 1-g + WeightUnit int64 `json:"weight_unit"` + // delivery_delay_day: 承诺发货时间,单位是天,不传则默认为2天。现货发货(presell_type=0)和阶梯发货模式(presell_type=2)时必填,支持传入9999 、1、 2 (分别表示当日发、次日发、48小时发),具体支持传入的参数范围/product/getProductUpdateRule + DeliveryDelayDay int64 `json:"delivery_delay_day"` + // 发货模式,0-现货发货,1-预售发货,2-阶梯发货,默认0 + PresellType int64 `json:"presell_type"` + // 全款预售模式时的发货时间/阶梯模式下阶梯发货时间,具体支持传入的参数范围/product/getProductUpdateRule + PresellDelay int64 `json:"presell_delay"` + // 预售结束时间,格式2020-02-21 18:54:27,最多支持设置距离当前30天 + PresellEndTime string `json:"presell_end_time"` + // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持) + Supply7dayReturn int64 `json:"supply_7day_return"` + // 客服电话号码 + Mobile string `json:"mobile"` + // false仅保存,true保存+提审 + Commit bool `json:"commit"` + // 品牌id (请求店铺授权品牌接口获取) (效果即为商品详情页面中的品牌字段) + BrandId int64 `json:"brand_id"` + // 商家可见备注 + Remark string `json:"remark"` + // 外部product_id + OutProductId int64 `json:"out_product_id"` + // 资质,可通过/product/qualificationConfig获取 + QualityList []QualityListItem `json:"quality_list"` + // 如果不填,则规格名为各级规格名用 \"-\" 自动生成 + SpecName string `json:"spec_name"` + // 店铺通用规格,能被同类商品通用。多规格用^分隔,规格与规格值用|分隔,多个规格值用,分隔。如果创建或编辑现货+预售商品或新预售商品时,须包含发货时效,如:颜色|黑色,白色,黄色^尺码|S,M,L^发货时效|5天内发货,15天内发货 + Specs string `json:"specs"` + // sku详情,数量应该等于规格1规格2规格3,sku数量和规格组合数必须一致 sku不可售时,库存可设置为0 + SpecPrices string `json:"spec_prices"` + // 如颜色-尺寸, 颜色就是主规格, 颜色如黑,白,黄,它们图片url以逗号分隔 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张 + SpecPic string `json:"spec_pic"` + // 每个用户每次下单限购件数 + MaximumPerOrder int64 `json:"maximum_per_order"` + // 每个用户累计限购件数 + LimitPerBuyer int64 `json:"limit_per_buyer"` + // 每个用户每次下单至少购买的件数 + MinimumPerOrder int64 `json:"minimum_per_order"` + // 通过/product/getCatePropertyV2获取 格式:{"property_id":[{"value":value,"name":"property_name","diy_type":0}]} name的类型是string,value和diy_type的类型是number + ProductFormatNew string `json:"product_format_new"` + // spu_id + SpuId int64 `json:"spu_id"` + // 可预约发货天数 + AppointDeliveryDay int64 `json:"appoint_delivery_day"` + // third_url + ThirdUrl string `json:"third_url"` + // extra + Extra string `json:"extra"` + // src + Src string `json:"src"` + // 卡券类型需要传true + NeedCheckOut bool `json:"need_check_out"` + // 卡券信息 + PoiResource *PoiResource `json:"poi_resource"` + // 汽车vin码 + CarVinCode string `json:"car_vin_code"` + // 充值模式 + NeedRechargeMode bool `json:"need_recharge_mode"` + // 0:全款预售,1:sku预售,2:现货+预售 ,3:新预售 + PresellConfigLevel int64 `json:"presell_config_level"` + // 账号模板id + AccountTemplateId string `json:"account_template_id"` + // 全款预售和sku预售时传递,其他不传: 0 预售结束后发货 1支付完成后发货 + PresellDeliveryType int64 `json:"presell_delivery_type"` + // 白底图url(仅素材中心url有效) + WhiteBackGroundPicUrl string `json:"white_back_ground_pic_url"` + // 3:4长图url(仅素材中心url有效) + LongPicUrl string `json:"long_pic_url"` + // 售后服务参数,key:value格式 ,supply_7day_return(7天无理由): 0不支持,1支持,2支持(拆封后不支持) supply_day_return_selector(7天无理由标签):N天-政策代号,N只支持7和15 supply_red_ass_return(红屁屁无忧):0不支持,1支持 supply_allergy_return(过敏无忧,仅跨境可选):0不支持,1支持 damaged_order_return(坏损包退):0不支持,1支持 support_allergy_returnV2(过敏包退,境内可选):0不支持,1支持 + AfterSaleService map[string]string `json:"after_sale_service"` + // 售卖方式;0:全渠道售卖,1:仅指定直播间售卖 + SellChannel []int64 `json:"sell_channel"` + // 审核通过后上架售卖时间配置:0-立即上架售卖 1-放入仓库 + StartSaleType int64 `json:"start_sale_type"` + // {"customs_clear_type":4,"origin_region_id": 3573511,"source_region_id": 3573511,"brand_region_id": 174982,"net_weight_qty":13.4,"tax_payer":0} + LogisticsInfo string `json:"logistics_info"` + // 商品价格是否含税 + PriceHasTax string `json:"price_has_tax"` + // 商品是否跨境、教育等(跨境/海南商品填写2)) + BizKind int64 `json:"biz_kind"` + // standard_brand_id,通过/brand/list获取,无品牌id则传596120136 + StandardBrandId int64 `json:"standard_brand_id"` + // 售价,单位分,含税价 + DiscountPrice int64 `json:"discount_price"` + // 划线价,单位分,含税价(在spec_prices设置) + MarketPrice int64 `json:"market_price"` +} +type QualityAttachmentsItem struct { + // 1-图片,2-pdf + MediaType int64 `json:"media_type"` + // 凭证url + Url string `json:"url"` +} +type QualityListItem struct { + // 资质key + QualityKey string `json:"quality_key"` + // 资质名称 + QualityName string `json:"quality_name"` + // 资质 + QualityAttachments []QualityAttachmentsItem `json:"quality_attachments"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_addCbProduct/response/product_addCbProduct_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_addCbProduct/response/product_addCbProduct_response.go new file mode 100644 index 00000000..52338efb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_addCbProduct/response/product_addCbProduct_response.go @@ -0,0 +1,34 @@ +package product_addCbProduct_response + +type ProductAddCbProductResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductAddCbProductData `json:"data"` +} +type SkuItem struct { + // 1 + SkuId int64 `json:"sku_id"` + // 1 + OutSkuId int64 `json:"out_sku_id"` + // 1 + OuterSkuId string `json:"outer_sku_id"` + // 1 + Code string `json:"code"` + // 1 + SpecDetailId1 int64 `json:"spec_detail_id1"` + // 1 + SpecDetailId2 int64 `json:"spec_detail_id2"` + // 1 + SpecDetailId3 int64 `json:"spec_detail_id3"` +} +type ProductAddCbProductData struct { + // product_id + ProductId int64 `json:"product_id"` + // out_product_id + OutProductId int64 `json:"out_product_id"` + // outer_product_id + OuterProductId string `json:"outer_product_id"` + // create_time + CreateTime string `json:"create_time"` + // 1 + Sku []SkuItem `json:"sku"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request/product_addV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request/product_addV2_request.go new file mode 100644 index 00000000..a2311e01 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_addV2/request/product_addV2_request.go @@ -0,0 +1,232 @@ +package product_addV2_request + +import ( + "encoding/json" +) + +type ProductAddV2Request struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductAddV2Param +} + +func (c *ProductAddV2Request) GetUrlPath() string { + return "/product/addV2" +} + +func New() *ProductAddV2Request { + request := &ProductAddV2Request{ + Param: &ProductAddV2Param{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductAddV2Request) Execute(accessToken *doudian_sdk.AccessToken) (*product_addV2_response.ProductAddV2Response, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_addV2_response.ProductAddV2Response{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductAddV2Request) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductAddV2Request) GetParams() *ProductAddV2Param { + return c.Param +} + +type QualityAttachmentsItem struct { + // 1-图片,2-pdf + MediaType int64 `json:"media_type"` + // 凭证url + Url string `json:"url"` +} +type QualityListItem struct { + // 资质key + QualityKey string `json:"quality_key"` + // 资质名称 + QualityName string `json:"quality_name"` + // 资质 + QualityAttachments []QualityAttachmentsItem `json:"quality_attachments"` +} +type PoiResource struct { + // 有效时间段,从领取日开始计算,优先级高于ValidStart-ValidEnd + ValidDays int64 `json:"valid_days"` + // 卡券有效开始时间,秒单位时间戳 + ValidStart int64 `json:"valid_start"` + // 卡券有效截止时间,秒单位时间戳 + ValidEnd int64 `json:"valid_end"` + // 客服电话 + ServiceNum string `json:"service_num"` + // 领取须知 + Notification string `json:"notification"` + // 平台产生券码: 1 ; 合作方api实时传入的券码: 4 + CodeType int64 `json:"code_type"` + // 券码总量,0/-1表示不限制,平台券时须\u003e0 + Count int64 `json:"count"` + // 0-不支持二次兑换,1-支持二次兑换 + CouponSecondExchange int64 `json:"couponSecondExchange"` + // 可核销总次数 + TotalCanUseCount int32 `json:"total_can_use_count"` + // 兑换链接 + Link string `json:"link"` + // 券码使用条件 + Condition string `json:"condition"` + // 数组当前只支持一个元素且只可为 1或2,其中 1 表示随时退+过期自动退,2 表示不支持退 + CouponReturnMethods []int64 `json:"coupon_return_methods"` +} +type DelayRule struct { + // 是否开启特殊日期延迟发货 + Enable bool `json:"enable"` + // 1 时间点;2 时间范围 + ConfigType int32 `json:"config_type"` + // 特殊日期延迟发货时间最晚发货时间,时间戳,单位秒:当config_type=1时,传时间戳,代表最晚x发货;当config_type=2时,传天数,代表延迟x天发货 + ConfigValue int64 `json:"config_value"` + // 特殊日期延迟发货时间下单开始时间,时间戳,单位秒 + StartTime int64 `json:"start_time"` + // 特殊日期延迟发货时间下单结束时间,时间戳,单位秒 + EndTime int64 `json:"end_time"` +} +type RecruitInfo struct { + // 线索ID + RecruitFollowId string `json:"recruit_follow_id"` + // 招商类型 + RecruitType string `json:"recruit_type"` +} +type ProductAddV2Param struct { + // 推荐使用,外部商家编码,支持字符串 + OuterProductId string `json:"outer_product_id"` + // 0-普通,3-虚拟,6玉石闪购,7云闪购 + ProductType int64 `json:"product_type"` + // 叶子类目ID通过/shop/getShopCategory接口获取 + CategoryLeafId int64 `json:"category_leaf_id"` + // (已废弃,用新字段product_format_new)属性名称|属性值 之间用|分隔, 多组之间用^分开 + ProductFormat string `json:"product_format"` + // 商品名称,最多60个字符(30个汉字),不能含emoj表情 + Name string `json:"name"` + // 商家推荐语,不能含emoj表情 + RecommendRemark string `json:"recommend_remark"` + // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M。 + Pic string `json:"pic"` + // 商品描述,目前只支持图片。多张图片用 \"|\" 分开。不能用其他网站的文本粘贴,这样会出现css样式不兼容。 + Description string `json:"description"` + // 支付方式,0货到付款 1在线支付,2,货到付款+在线支付 + PayType int64 `json:"pay_type"` + // 海南免税生效。 0:离岛免税、1:邮寄、2:离岛自提+邮寄 + DeliveryMethod int32 `json:"delivery_method"` + // 海南免税:海关限购分类编码 + CdfCategory string `json:"cdf_category"` + // 1 减库存类型:1-拍下减库存 2-付款减库存 + ReduceType int64 `json:"reduce_type"` + // 同店商品推荐:为空表示使用系统推荐;多个product_id使用“|”分开 + AssocIds string `json:"assoc_ids"` + // 运费模板id,传0表示包邮,通过/freightTemplate/list接口获取 + FreightId int64 `json:"freight_id"` + // 重量 + Weight float64 `json:"weight"` + // 重量单位,0-kg, 1-g + WeightUnit int64 `json:"weight_unit"` + // delivery_delay_day: 承诺发货时间,单位是天,不传则默认为2天。现货发货(presell_type=0)和阶梯发货模式(presell_type=2)时必填,支持传入9999 、1、 2 (分别表示当日发、次日发、48小时发),具体支持传入的参数范围/product/getProductUpdateRule + DeliveryDelayDay int64 `json:"delivery_delay_day"` + // 发货模式,0-现货发货,1-预售发货,2-阶梯发货,默认0 + PresellType int64 `json:"presell_type"` + // 全款预售模式时的发货时间/阶梯模式下阶梯发货时间,具体支持传入的参数范围/product/getProductUpdateRule。 + PresellDelay int64 `json:"presell_delay"` + // 预售结束时间,格式2020-02-21 18:54:27,最多支持设置距离当前30天 + PresellEndTime string `json:"presell_end_time"` + // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持) + Supply7dayReturn int64 `json:"supply_7day_return"` + // 客服电话号码 + Mobile string `json:"mobile"` + // false仅保存,true保存+提审 + Commit bool `json:"commit"` + // (brand_id已废弃,用新字段standard_brand_id)品牌id (请求店铺授权品牌接口获取) (效果即为商品详情页面中的品牌字段) + BrandId int64 `json:"brand_id"` + // 商家可见备注 + Remark string `json:"remark"` + // 外部product_id + OutProductId int64 `json:"out_product_id"` + // 资质,可通过/product/qualificationConfig获取 + QualityList []QualityListItem `json:"quality_list"` + // 如果不填,则规格名为各级规格名用 \"-\" 自动生成 + SpecName string `json:"spec_name"` + // 店铺通用规格,能被同类商品通用。多规格用^分隔,规格与规格值用|分隔,多个规格值用,分隔。如果创建或编辑现货+预售商品或新预售商品时,须包含发货时效,如:颜色|黑色,白色,黄色^尺码|S,M,L^发货时效|5天内发货,15天内发货 + Specs string `json:"specs"` + // sku详情,数量应该等于规格1规格2规格3,sku数量和规格组合数必须一致 sku不可售时,库存可设置为0。 delivery_infos为SKU物流信息,info_value为字符串类型(示例:"12"),info_type填weight,info_unit支持mg,g,kg,超市小时达场景主品用普通库存,子品用区域库存("sku_type": 1 // 区域库存,"stock_num_map": {"123": 99999 // 门店ID:库存数量}) + SpecPrices string `json:"spec_prices"` + // 如颜色-尺寸, 颜色就是主规格, 颜色如黑,白,黄,它们图片url以逗号分隔 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 + SpecPic string `json:"spec_pic"` + // 每个用户每次下单限购件数 + MaximumPerOrder int64 `json:"maximum_per_order"` + // 每个用户累计限购件数 + LimitPerBuyer int64 `json:"limit_per_buyer"` + // 每个用户每次下单至少购买的件数 + MinimumPerOrder int64 `json:"minimum_per_order"` + // 属性,通过/product/getCatePropertyV2获取 格式:{"property_id":[{"value":value,"name":"property_name","diy_type":0}]} name的类型是string,value和diy_type的类型是number + ProductFormatNew string `json:"product_format_new"` + // spu_id + SpuId int64 `json:"spu_id"` + // 可预约发货天数 + AppointDeliveryDay int64 `json:"appoint_delivery_day"` + // third_url + ThirdUrl string `json:"third_url"` + // extra + Extra string `json:"extra"` + // src + Src string `json:"src"` + // 品牌id,通过/brand/list获取,无品牌id则传596120136 + StandardBrandId int64 `json:"standard_brand_id"` + // 卡券类型需要传true + NeedCheckOut bool `json:"need_check_out"` + // 卡券信息 + PoiResource *PoiResource `json:"poi_resource"` + // 汽车vin码 + CarVinCode string `json:"car_vin_code"` + // 0:全款预售,1:sku预售,2:现货+预售 ,3:新预售 + PresellConfigLevel int64 `json:"presell_config_level"` + // 充值模式 + NeedRechargeMode bool `json:"need_recharge_mode"` + // 账号模板id + AccountTemplateId string `json:"account_template_id"` + // 全款预售和sku预售时传递,其他不传: 0 预售结束后发货 1支付完成后发货 + PresellDeliveryType int64 `json:"presell_delivery_type"` + // 白底图url(仅素材中心url有效) + WhiteBackGroundPicUrl string `json:"white_back_ground_pic_url"` + // 3:4长图url(仅素材中心url有效) + LongPicUrl string `json:"long_pic_url"` + // 推荐传入,售后服务参数,key:value格式。supply_day_return_selector(7天无理由选项):N天-政策代号,N只支持7和15,政策代号枚举https://bytedance.feishu.cn/docs/doccnF946oh1c98e7mo9DlYZtig 。 supply_red_ass_return(红屁屁无忧):0不支持,1支持。supply_allergy_return(过敏无忧,仅跨境可选):0不支持,1支持。 damaged_order_return(坏损包退):0不支持,1支持。 support_allergy_returnV2(过敏包退,境内可选):0不支持,1支持 + AfterSaleService map[string]string `json:"after_sale_service"` + // 售卖方式;0:全渠道手售卖,1:仅指定直播间售卖 + SellChannel []int64 `json:"sell_channel"` + // 审核通过后上架售卖时间配置:0-立即上架售卖 1-放入仓库 + StartSaleType int64 `json:"start_sale_type"` + // 特殊日期延迟发货规则 + DelayRule *DelayRule `json:"delay_rule"` + // 主图视频ID,可以先通过https://op.jinritemai.com/docs/api-docs/69/1617接口上传视频,获取审核通过的视频素材ID进行传入 任务需要验证 + MaterialVideoId string `json:"material_video_id"` + // 提取方式新字段,推荐使用。"0": 普通商品-使用物流发货, "1": 虚拟商品-无需物流与电子交易凭证, "2": 虚拟商品-使用电子交易凭证, "3": 虚拟商品-充值直连 + PickupMethod string `json:"pickup_method"` + // 尺码模板ID + SizeInfoTemplateId int64 `json:"size_info_template_id"` + // 外部商品url + SubstituteGoodsUrl string `json:"substitute_goods_url"` + // 销售渠道类型,可选onlineOnly(纯电商,仅在线上售卖)或sameAsOffline(专柜同款,线上线下都有售卖),云零售商家(https://fxg.jinritemai.com/ffa/merchant-growth/cloud-retail)可以设置 + SaleChannelType string `json:"sale_channel_type"` + // 招商信息 + RecruitInfo *RecruitInfo `json:"recruit_info"` + // 门店ID + StoreId int64 `json:"store_id"` + // 主商品ID + MainProductId int64 `json:"main_product_id"` + // 限售模板ID + SaleLimitId int64 `json:"sale_limit_id"` + // 通过/product/getRecommendName接口推荐的商品标题前缀(注意系统根据类目属性生成前缀字符串时,末尾有一个空格) + NamePrefix string `json:"name_prefix"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_addV2/response/product_addV2_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_addV2/response/product_addV2_response.go new file mode 100644 index 00000000..943ff524 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_addV2/response/product_addV2_response.go @@ -0,0 +1,34 @@ +package product_addV2_response + +type ProductAddV2Response struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductAddV2Data `json:"data"` +} +type SkuItem struct { + // sku_id + SkuId int64 `json:"sku_id"` + // 外部sku id + OutSkuId int64 `json:"out_sku_id"` + // 字符串形式外部sku id + OuterSkuId string `json:"outer_sku_id"` + // sku code + Code string `json:"code"` + // 子规格id + SpecDetailId1 int64 `json:"spec_detail_id1"` + // 子规格id + SpecDetailId2 int64 `json:"spec_detail_id2"` + // 子规格id + SpecDetailId3 int64 `json:"spec_detail_id3"` +} +type ProductAddV2Data struct { + // product_id + ProductId int64 `json:"product_id"` + // out_product_id + OutProductId int64 `json:"out_product_id"` + // outer_product_id + OuterProductId string `json:"outer_product_id"` + // create_time + CreateTime string `json:"create_time"` + // 1 + Sku []SkuItem `json:"sku"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_auditList/request/product_auditList_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_auditList/request/product_auditList_request.go new file mode 100644 index 00000000..025ee10e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_auditList/request/product_auditList_request.go @@ -0,0 +1,54 @@ +package product_auditList_request + +import ( + "encoding/json" +) + +type ProductAuditListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductAuditListParam +} + +func (c *ProductAuditListRequest) GetUrlPath() string { + return "/product/auditList" +} + +func New() *ProductAuditListRequest { + request := &ProductAuditListRequest{ + Param: &ProductAuditListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductAuditListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_auditList_response.ProductAuditListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_auditList_response.ProductAuditListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductAuditListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductAuditListRequest) GetParams() *ProductAuditListParam { + return c.Param +} + +type ProductAuditListParam struct { + // 指定审核状态返回商品列表:0-审核中 1-审核通过 2-审核拒绝 + PublishStatus int64 `json:"publish_status"` + // 第几页(第一页为0,最大为99) + Page int64 `json:"page"` + // 每页返回条数,最多支持100条 + Size int64 `json:"size"` + // 商品id + ProductId int64 `json:"product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_auditList/response/product_auditList_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_auditList/response/product_auditList_response.go new file mode 100644 index 00000000..e3fe6825 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_auditList/response/product_auditList_response.go @@ -0,0 +1,28 @@ +package product_auditList_response + +type ProductAuditListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductAuditListData `json:"data"` +} +type ProductAuditListData struct { + // 审核记录列表 + Records []RecordsItem `json:"records"` + // 总数量 + Total int64 `json:"total"` +} +type RecordsItem struct { + // 商品id + ProductId int64 `json:"product_id"` + // 商品名称 + Title string `json:"title"` + // 商品主图 + ImgUrl string `json:"img_url"` + // 0-审核中 1-审核通过 2-审核拒绝 + PublishStatus int64 `json:"publish_status"` + // 提审时间,单位为秒 + PublishTime int64 `json:"publish_time"` + // 审核通过/拒绝时间,单位为秒 + AuditTime int64 `json:"audit_time"` + // 审核未通过理由 + AuditReason map[string][]string `json:"audit_reason"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_createComponentTemplateV2/request/product_createComponentTemplateV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_createComponentTemplateV2/request/product_createComponentTemplateV2_request.go new file mode 100644 index 00000000..93355f57 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_createComponentTemplateV2/request/product_createComponentTemplateV2_request.go @@ -0,0 +1,58 @@ +package product_createComponentTemplateV2_request + +import ( + "encoding/json" +) + +type ProductCreateComponentTemplateV2Request struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductCreateComponentTemplateV2Param +} + +func (c *ProductCreateComponentTemplateV2Request) GetUrlPath() string { + return "/product/createComponentTemplateV2" +} + +func New() *ProductCreateComponentTemplateV2Request { + request := &ProductCreateComponentTemplateV2Request{ + Param: &ProductCreateComponentTemplateV2Param{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductCreateComponentTemplateV2Request) Execute(accessToken *doudian_sdk.AccessToken) (*product_createComponentTemplateV2_response.ProductCreateComponentTemplateV2Response, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_createComponentTemplateV2_response.ProductCreateComponentTemplateV2Response{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductCreateComponentTemplateV2Request) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductCreateComponentTemplateV2Request) GetParams() *ProductCreateComponentTemplateV2Param { + return c.Param +} + +type ProductCreateComponentTemplateV2Param struct { + // 模板类型:尺码模板 + TemplateType string `json:"template_type"` + // 模板子类型: clothing(服装)、undies(内衣)、shoes(鞋靴类)、children_clothing(童装) + TemplateSubType string `json:"template_sub_type"` + // 模板名称 + TemplateName string `json:"template_name"` + // 商品组件数据 json,表格行列顺序以selectedSize和selectedSpecs的顺序为准 + ComponentFrontData string `json:"component_front_data"` + // 是否为公有模板(多个商品可共用) + Shareable bool `json:"shareable"` + // 类目id,用来确定模板类型 + CategoryId int64 `json:"category_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_createComponentTemplateV2/response/product_createComponentTemplateV2_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_createComponentTemplateV2/response/product_createComponentTemplateV2_response.go new file mode 100644 index 00000000..bca85877 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_createComponentTemplateV2/response/product_createComponentTemplateV2_response.go @@ -0,0 +1,10 @@ +package product_createComponentTemplateV2_response + +type ProductCreateComponentTemplateV2Response struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductCreateComponentTemplateV2Data `json:"data"` +} +type ProductCreateComponentTemplateV2Data struct { + // 模板ID + TemplateId int64 `json:"template_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_datchDelComponentTemplate/request/product_datchDelComponentTemplate_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_datchDelComponentTemplate/request/product_datchDelComponentTemplate_request.go new file mode 100644 index 00000000..cbf91dc4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_datchDelComponentTemplate/request/product_datchDelComponentTemplate_request.go @@ -0,0 +1,48 @@ +package product_datchDelComponentTemplate_request + +import ( + "encoding/json" +) + +type ProductDatchDelComponentTemplateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductDatchDelComponentTemplateParam +} + +func (c *ProductDatchDelComponentTemplateRequest) GetUrlPath() string { + return "/product/datchDelComponentTemplate" +} + +func New() *ProductDatchDelComponentTemplateRequest { + request := &ProductDatchDelComponentTemplateRequest{ + Param: &ProductDatchDelComponentTemplateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductDatchDelComponentTemplateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_datchDelComponentTemplate_response.ProductDatchDelComponentTemplateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_datchDelComponentTemplate_response.ProductDatchDelComponentTemplateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductDatchDelComponentTemplateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductDatchDelComponentTemplateRequest) GetParams() *ProductDatchDelComponentTemplateParam { + return c.Param +} + +type ProductDatchDelComponentTemplateParam struct { + // 模板ID + TemplateId []int64 `json:"template_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_datchDelComponentTemplate/response/product_datchDelComponentTemplate_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_datchDelComponentTemplate/response/product_datchDelComponentTemplate_response.go new file mode 100644 index 00000000..0aca678c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_datchDelComponentTemplate/response/product_datchDelComponentTemplate_response.go @@ -0,0 +1,8 @@ +package product_datchDelComponentTemplate_response + +type ProductDatchDelComponentTemplateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductDatchDelComponentTemplateData `json:"data"` +} +type ProductDatchDelComponentTemplateData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_del/request/product_del_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_del/request/product_del_request.go new file mode 100644 index 00000000..c21ed673 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_del/request/product_del_request.go @@ -0,0 +1,52 @@ +package product_del_request + +import ( + "encoding/json" +) + +type ProductDelRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductDelParam +} + +func (c *ProductDelRequest) GetUrlPath() string { + return "/product/del" +} + +func New() *ProductDelRequest { + request := &ProductDelRequest{ + Param: &ProductDelParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductDelRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_del_response.ProductDelResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_del_response.ProductDelResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductDelRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductDelRequest) GetParams() *ProductDelParam { + return c.Param +} + +type ProductDelParam struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 外部商品ID + OutProductId int64 `json:"out_product_id"` + // 是否彻底删除 + DeleteForever bool `json:"delete_forever"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_del/response/product_del_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_del/response/product_del_response.go new file mode 100644 index 00000000..27b709d5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_del/response/product_del_response.go @@ -0,0 +1,8 @@ +package product_del_response + +type ProductDelResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductDelData `json:"data"` +} +type ProductDelData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_detail/request/product_detail_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_detail/request/product_detail_request.go new file mode 100644 index 00000000..f90ff7ce --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_detail/request/product_detail_request.go @@ -0,0 +1,52 @@ +package product_detail_request + +import ( + "encoding/json" +) + +type ProductDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductDetailParam +} + +func (c *ProductDetailRequest) GetUrlPath() string { + return "/product/detail" +} + +func New() *ProductDetailRequest { + request := &ProductDetailRequest{ + Param: &ProductDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_detail_response.ProductDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_detail_response.ProductDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductDetailRequest) GetParams() *ProductDetailParam { + return c.Param +} + +type ProductDetailParam struct { + // 商品ID,抖店系统生成,店铺下唯一;长度19位。 + ProductId string `json:"product_id"` + // 外部商家编码,商家自定义字段 + OutProductId string `json:"out_product_id"` + // true:读取草稿数据;false:读取线上数据;不传默认为false + ShowDraft string `json:"show_draft"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_detail/response/product_detail_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_detail/response/product_detail_response.go new file mode 100644 index 00000000..7c1dbd18 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_detail/response/product_detail_response.go @@ -0,0 +1,318 @@ +package product_detail_response + +type ProductDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductDetailData `json:"data"` +} +type TaxExemptionSkuInfo struct { + // 是否套装(0 否 1 是) + IsSuit int32 `json:"is_suit"` + // 套装数量 + SuitNum int64 `json:"suit_num"` + // 净含量 + Volume int64 `json:"volume"` +} +type SpecPricesItem struct { + // 规格id;抖店系统生成,商品id下唯一。 + SkuId int64 `json:"sku_id"` + // 外部商家skui_id编码,商家自定义字段;推荐使用outer_sku_id字段 + OutSkuId int64 `json:"out_sku_id"` + // 外部商家skui_id编码,商家自定义字段 + OuterSkuId string `json:"outer_sku_id"` + // 规格id列表,多规格以”,“分隔; + SpecDetailIds []int64 `json:"spec_detail_ids"` + // 可售库存;当前现货可售库存; + StockNum int64 `json:"stock_num"` + // 商品价格;单位:分 + Price int64 `json:"price"` + // 编码 + Code string `json:"code"` + // 阶梯库存,规则详见名称解释:https://op.jinritemai.com/docs/guide-docs/202/170 + StepStockNum int64 `json:"step_stock_num"` + // 活动库存,,规则详见名称解释:https://op.jinritemai.com/docs/guide-docs/202/170 + PromStockNum int64 `json:"prom_stock_num"` + // 活动阶梯库存,,规则详见名称解释:https://op.jinritemai.com/docs/guide-docs/202/170 + PromStepStockNum int64 `json:"prom_step_stock_num"` + // 【已废弃,无需使用】规格ID + SpecDetailId1 int64 `json:"spec_detail_id1"` + // 【已废弃,无需使用】规格ID + SpecDetailId2 int64 `json:"spec_detail_id2"` + // 【已废弃,无需使用】规格ID + SpecDetailId3 int64 `json:"spec_detail_id3"` + // sku类型;0-普通库存 1-区域库存 10-阶梯库存 + SkuType int64 `json:"sku_type"` + // 供应商编码 + SupplierId string `json:"supplier_id"` + // 活动现货库存 + PromotionStockNum int64 `json:"promotion_stock_num"` + // 活动阶梯库存 + PromotionStepStockNum int64 `json:"promotion_step_stock_num"` + // 海关申报要素(仅海淘商品返回信息) + CustomsReportInfo *CustomsReportInfo `json:"customs_report_info"` + // 现货订单锁定库存 + LockStockNum int64 `json:"lock_stock_num"` + // 阶梯订单锁定库存 + LockStepStockNum int64 `json:"lock_step_stock_num"` + // 仓ID->库存映射 + StockNumMap map[string]int64 `json:"stock_num_map"` + // 海南免税sku信息(仅海淘商品返回信息) + TaxExemptionSkuInfo *TaxExemptionSkuInfo `json:"tax_exemption_sku_info"` + // 发货时间(全款预售模式时的发货时间/阶梯模式下阶梯发货时间),9999是当日发、1次日发、2 是48小时发、5、15、45天等。发货时间规则可使用【product/getProductUpdateRule】获取 + PresellDelay int64 `json:"presell_delay"` + // SKU物流信息 + DeliveryInfos []DeliveryInfosItem `json:"delivery_infos"` +} +type ValuesItem struct { + // 销售属性值ID + Id int64 `json:"id"` + // 规格ID + SpecId int64 `json:"spec_id"` + // 销售属性值 + Name string `json:"name"` + // 销售属性ID + Pid int64 `json:"pid"` + // 是否是销售属性值 + IsLeaf int16 `json:"is_leaf"` + // 在线状态,-2彻底删除、0在线、1下线、2删除 + Status int16 `json:"status"` +} +type SpecsItem struct { + // 【无需使用】销售属性id + Id int64 `json:"id"` + // 【无需使用】规格id + SpecId int64 `json:"spec_id"` + // 销售属性 + Name string `json:"name"` + // 【无需使用】销售属性id + Pid int64 `json:"pid"` + // 是否是销售属性值 + IsLeaf int16 `json:"is_leaf"` + // 销售属性值 + Values []ValuesItem `json:"values"` +} +type QualityListItem struct { + // 资质key + QualityKey string `json:"quality_key"` + // 资质名称 + QualityName string `json:"quality_name"` + // 资质链接 + QualityAttachments []QualityAttachmentsItem `json:"quality_attachments"` +} +type CustomsReportInfo struct { + // 海关代码 + HsCode string `json:"hs_code"` + // 法定第一计量数量 + FirstMeasureQty float64 `json:"first_measure_qty"` + // 法定第二计量数量 + SecondMeasureQty float64 `json:"second_measure_qty"` + // 法定第一计量单位 + FirstMeasureUnit string `json:"first_measure_unit"` + // 法定第二计量单位 + SecondMeasureUnit string `json:"second_measure_unit"` + // 售卖单位 + Unit string `json:"unit"` + // 品名 + ReportName string `json:"report_name"` + // 品牌 + ReportBrandName string `json:"report_brand_name"` + // 用途 + Usage string `json:"usage"` + // 规格型号 + GModel string `json:"g_model"` + // 条形码 + BarCode string `json:"bar_code"` +} +type DeliveryInfosItem struct { + // 信息类型 + InfoType string `json:"info_type"` + // 信息值 + InfoValue string `json:"info_value"` + // 信息计量单位 + InfoUnit string `json:"info_unit"` +} +type CategoryDetail struct { + // 一级类目id + FirstCid int64 `json:"first_cid"` + // 二级类目id + SecondCid int64 `json:"second_cid"` + // 三级类目id + ThirdCid int64 `json:"third_cid"` + // 四级类目id + FourthCid int64 `json:"fourth_cid"` + // 一级类目名 + FirstCname string `json:"first_cname"` + // 二级类目名 + SecondCname string `json:"second_cname"` + // 三级类目名 + ThirdCname string `json:"third_cname"` + // 四级类目名 + FourthCname string `json:"fourth_cname"` +} +type LogisticsInfo struct { + // 通关模式,1BBC 2BC 3邮关 + CustomsClearType int64 `json:"customs_clear_type"` + // 原产国id + OriginCountryId int64 `json:"origin_country_id"` + // 货源国id + SourceCountryId int64 `json:"source_country_id"` + // 品牌所在地id + BrandCountryId int64 `json:"brand_country_id"` + // 税金承担方,0商家承担,1用户承担 + TaxPayer int64 `json:"tax_payer"` + // 商品净重 + NetWeightQty float64 `json:"net_weight_qty"` +} +type SpecPicsItem struct { + // id + SpecDetailId int64 `json:"spec_detail_id"` + // 规格图片uri + Pic string `json:"pic"` +} +type QualityAttachmentsItem struct { + // 1-图片,2-pdf + MediaType int64 `json:"media_type"` + // 资质url + Url string `json:"url"` +} +type PoiResource struct { + // 1 随时退+过期自动退,2 不支持退 + CouponReturnMethods []int64 `json:"coupon_return_methods"` +} +type DelayRule struct { + // 是否开启特殊日期延迟发货 + Enable bool `json:"enable"` + // 1 时间点;2 时间范围 + ConfigType int32 `json:"config_type"` + // 特殊日期延迟发货时间最晚发货时间,时间戳,单位秒 + ConfigValue int64 `json:"config_value"` + // 特殊日期延迟发货时间下单开始时间,时间戳,单位秒 + StartTime int64 `json:"start_time"` + // 特殊日期延迟发货时间下单结束时间,时间戳,单位秒 + EndTime int64 `json:"end_time"` +} +type ProductDetailData struct { + // 商品ID,抖店系统生成,店铺下唯一;长度19位。 + ProductId int64 `json:"product_id"` + // 商品ID(字符串类型),抖店系统生成,店铺下唯一;长度19位。 + ProductIdStr string `json:"product_id_str"` + // 【即将废弃】外部商家编码,商家自定义字段。推荐使用,outer_product_id字段 + OutProductId int64 `json:"out_product_id"` + // 外部商家编码,商家自定义字段,支持最多 255个字符 + OuterProductId string `json:"outer_product_id"` + // 【已废弃】open应用id + OpenUserId int64 `json:"open_user_id"` + // 商品标题,规则:至少输入8个字(16个字符)以上~输入30个字(60个字符)以内。;标题不规范会引起商品下架,影响您的正常销售,详见商品发布规范:https://school.jinritemai.com/doudian/web/article/101800?from=shop_article + Name string `json:"name"` + // 商品详情,最大支持50张图片,单张详情图宽高比不超2000*2000px,大小5M内,仅支持jpg/jpeg/png格式,返回HTML格式;注意:商品详情不规范,会引起商品下架,影响您的正常销售:https://school.jinritemai.com/doudian/web/article/101800?from=shop_article + Description string `json:"description"` + // 承诺发货时间,单位是天; 不传则默认为2天,当presell_type为0或2均只支持传入2;当presell_type为1时支持可选值为: 2、3、5、7、10、15; + DeliveryMethod int32 `json:"delivery_method"` + // 海南免税,海关限购分类编码,仅海淘商品有值返回。 + CdfCategory string `json:"cdf_category"` + // 商品在店铺中状态: 0-在线;1-下线;2-删除;详见商品状态机:https://op.jinritemai.com/docs/question-docs/92/2070 + Status int64 `json:"status"` + // 商品规格,新增商品是全局唯一,注意:有部分历史存量商品可能存在规格复用 + SpecId int64 `json:"spec_id"` + // 商品审核状态: 1-未提交;2-待审核;3-审核通过;4-审核未通过;5-封禁;7-审核通过待上架;详见商品状态机:https://op.jinritemai.com/docs/question-docs/92/2070 + CheckStatus int64 `json:"check_status"` + // 【已废弃】手机号 + Mobile string `json:"mobile"` + // 【已废弃】品牌id,推荐使用standard_brand_id字段,通过【/brand/list】获取,无品牌id商品返回默认值:596120136; + BrandId int64 `json:"brand_id"` + // 是否是组合商品的子商品;true-是,false-不是; + IsSubProduct bool `json:"is_sub_product"` + // 草稿状态;0-无草稿,1-未提审,2-待审核,3-审核通过,4-审核未通过。详见:https://op.jinritemai.com/docs/question-docs/92/2070 + DraftStatus int64 `json:"draft_status"` + // 类目详情;商品类目id可使用【/shop/getShopCategory】查询 + CategoryDetail *CategoryDetail `json:"category_detail"` + // 【已废弃】支持的支付方式:0货到付款 1在线支付 2两者都支持 + PayType int64 `json:"pay_type"` + // 【已废弃】商家推荐语 + RecommendRemark string `json:"recommend_remark"` + // 额外信息,如资质 + Extra string `json:"extra"` + // 【已废弃】无业务意义 + IsCreate int64 `json:"is_create"` + // 商品创建时间,时间格式:yyyy-mm-dd hh:mm:ss + CreateTime string `json:"create_time"` + // 商品更新时间,时间格式:yyyy-mm-dd hh:mm:ss + UpdateTime string `json:"update_time"` + // 商品主图;最多支持5张图片;仅支持png,jpg,jpeg格式,宽高比例为1:1(至少600*600px),大小5M内 + Pic []string `json:"pic"` + // 【即将废弃】推荐使用product_format_new;属性名称|属性值 之间用|分隔, 多组之间用^分开 + ProductFormat string `json:"product_format"` + // 规格图片 + SpecPics []SpecPicsItem `json:"spec_pics"` + // 商品sku详情 + SpecPrices []SpecPricesItem `json:"spec_prices"` + // 销售属性 + Specs []SpecsItem `json:"specs"` + // 头图,主图第一张 + Img string `json:"img"` + // 预售类型,1-全款预售,0-非预售,2-阶梯库存 + PresellType int64 `json:"presell_type"` + // 单用户下单限购件数 + MaximumPerOrder int64 `json:"maximum_per_order"` + // 单用户累计限购件数 + LimitPerBuyer int64 `json:"limit_per_buyer"` + // 用户每次下单至少购买的件数 + MinimumPerOrder int64 `json:"minimum_per_order"` + // 资质信息 + QualityList []QualityListItem `json:"quality_list"` + // 跨境物流信息(仅海淘商品返回) + LogisticsInfo *LogisticsInfo `json:"logistics_info"` + // 售后服务 + AfterSaleService string `json:"after_sale_service"` + // 商品价格是否含税 + PriceHasTax int64 `json:"price_has_tax"` + // 可预约发货天数 + AppointDeliveryDay int64 `json:"appoint_delivery_day"` + // 类目属性 + ProductFormatNew string `json:"product_format_new"` + // 品牌库brand id,原brand_id代表商标关系id + StandardBrandId int64 `json:"standard_brand_id"` + // 划线价 单位分 + MarketPrice int64 `json:"market_price"` + // 售卖价 单位分 + DiscountPrice int64 `json:"discount_price"` + // 汽车vin码 + CarVinCode string `json:"car_vin_code"` + // 生活娱乐充值模式 + NeedRechargeMode bool `json:"need_recharge_mode"` + // 多账号充值账号模板 + AccountTemplateId string `json:"account_template_id"` + // 发货模式:presell_type = 0 现货;presell_type = 2 阶梯;presell_type = 1 && presell_config_level = 0 全款预售;presell_type = 1 && presell_config_level = 1 sku预售;presell_type = 1 && presell_config_level = 2 现货+预售;presell_type = 1 && presell_config_level = 3 新预售 + PresellConfigLevel int64 `json:"presell_config_level"` + // 现货模式的发货天数;阶梯模式现货部分的发货天数,9999=当日发、1=次日发 + DeliveryDelayDay int64 `json:"delivery_delay_day"` + // 阶梯模式阶梯部分的发货天数;商品全款预售模式,预售天数 + PresellDelay int64 `json:"presell_delay"` + // 卡券信息 + PoiResource *PoiResource `json:"poi_resource"` + // 特殊日期延迟发货规则 + DelayRule *DelayRule `json:"delay_rule"` + // 3:4长图url(仅素材中心url有效) + LongPicUrl string `json:"long_pic_url"` + // 售卖方式;0:全渠道手售卖,1:仅指定直播间售卖 + SellChannel []int64 `json:"sell_channel"` + // 运费模版ID + FreightId int64 `json:"freight_id"` + // 主图视频ID + MaterialVideoId string `json:"material_video_id"` + // 提取方式新字段,推荐使用。"0": 普通商品-使用物流发货, "1": 虚拟商品-无需物流与电子交易凭证, "2": 虚拟商品-使用电子交易凭证, "3": 虚拟商品-充值直连 + PickupMethod string `json:"pickup_method"` + // 尺码模板ID + SizeInfoTemplateId int64 `json:"size_info_template_id"` + // 白底图url(仅素材中心url有效) + WhiteBackGroundPicUrl string `json:"white_back_ground_pic_url"` + // 销售渠道类型,包括纯电商(onlineOnly)、专柜同款(sameAsOffline),云零售商家(https://fxg.jinritemai.com/ffa/merchant-growth/cloud-retail)可以设置 + SaleChannelType string `json:"sale_channel_type"` + // 门店ID + StoreId int64 `json:"store_id"` + // 主商品ID + MainProductId int64 `json:"main_product_id"` + // 限售模板ID + SaleLimitId int64 `json:"sale_limit_id"` + // 系统推荐的标题前缀 + NamePrefix string `json:"name_prefix"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editBuyerLimit/request/product_editBuyerLimit_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_editBuyerLimit/request/product_editBuyerLimit_request.go new file mode 100644 index 00000000..2c17808c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editBuyerLimit/request/product_editBuyerLimit_request.go @@ -0,0 +1,54 @@ +package product_editBuyerLimit_request + +import ( + "encoding/json" +) + +type ProductEditBuyerLimitRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductEditBuyerLimitParam +} + +func (c *ProductEditBuyerLimitRequest) GetUrlPath() string { + return "/product/editBuyerLimit" +} + +func New() *ProductEditBuyerLimitRequest { + request := &ProductEditBuyerLimitRequest{ + Param: &ProductEditBuyerLimitParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductEditBuyerLimitRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_editBuyerLimit_response.ProductEditBuyerLimitResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_editBuyerLimit_response.ProductEditBuyerLimitResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductEditBuyerLimitRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductEditBuyerLimitRequest) GetParams() *ProductEditBuyerLimitParam { + return c.Param +} + +type ProductEditBuyerLimitParam struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 每个用户每次下单限购件数 + MaximumPerOrder int64 `json:"maximum_per_order"` + // 每个用户累计限购件数 + LimitPerBuyer int64 `json:"limit_per_buyer"` + // 每个用户每次下单至少购买的件数 + MinimumPerOrder int64 `json:"minimum_per_order"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editBuyerLimit/response/product_editBuyerLimit_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_editBuyerLimit/response/product_editBuyerLimit_response.go new file mode 100644 index 00000000..1969ccf8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editBuyerLimit/response/product_editBuyerLimit_response.go @@ -0,0 +1,8 @@ +package product_editBuyerLimit_response + +type ProductEditBuyerLimitResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductEditBuyerLimitData `json:"data"` +} +type ProductEditBuyerLimitData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editCbProduct/request/product_editCbProduct_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_editCbProduct/request/product_editCbProduct_request.go new file mode 100644 index 00000000..b67639a3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editCbProduct/request/product_editCbProduct_request.go @@ -0,0 +1,198 @@ +package product_editCbProduct_request + +import ( + "encoding/json" +) + +type ProductEditCbProductRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductEditCbProductParam +} + +func (c *ProductEditCbProductRequest) GetUrlPath() string { + return "/product/editCbProduct" +} + +func New() *ProductEditCbProductRequest { + request := &ProductEditCbProductRequest{ + Param: &ProductEditCbProductParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductEditCbProductRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_editCbProduct_response.ProductEditCbProductResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_editCbProduct_response.ProductEditCbProductResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductEditCbProductRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductEditCbProductRequest) GetParams() *ProductEditCbProductParam { + return c.Param +} + +type QualityAttachmentsItem struct { + // 1-图片,2-pdf + MediaType int64 `json:"media_type"` + // 凭证url + Url string `json:"url"` +} +type QualityListItem struct { + // 资质key + QualityKey string `json:"quality_key"` + // 资质名称 + QualityName string `json:"quality_name"` + // 资质 + QualityAttachments []QualityAttachmentsItem `json:"quality_attachments"` +} +type PoiResource struct { + // 券码使用条件 + Condition string `json:"condition"` + // 有效时间段,从领取日开始计算,优先级高于ValidStart-ValidEnd + ValidDays int64 `json:"valid_days"` + // 卡券有效开始时间,秒单位时间戳 + ValidStart int64 `json:"valid_start"` + // 卡券有效截止时间,秒单位时间戳 + ValidEnd int64 `json:"valid_end"` + // 客服电话 + ServiceNum string `json:"service_num"` + // 领取须知 + Notification string `json:"notification"` + // 平台产生券码: 1 ; 合作方api实时传入的券码: 4 + CodeType int64 `json:"code_type"` + // 可核销总次数 + TotalCanUseCount int32 `json:"total_can_use_count"` + // 0-不支持二次兑换,1-支持二次兑换 + CouponSecondExchange int64 `json:"coupon_second_exchange"` + // 兑换链接 + Link string `json:"link"` + // 券码总量,0/-1表示不限制,平台券时须\u003e0 + Count int64 `json:"count"` +} +type ProductEditCbProductParam struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 0-普通,3-虚拟,6玉石闪购,7云闪购 + ProductType int64 `json:"product_type"` + // 叶子类目ID通过/shop/getShopCategory接口获取 + CategoryLeafId int64 `json:"category_leaf_id"` + // 属性名称|属性值 之间用|分隔, 多组之间用^分开 + ProductFormat string `json:"product_format"` + // 商品名称,最多60个字符(30个汉字),不能含emoj表情 + Name string `json:"name"` + // 商家推荐语,不能含emoj表情 + RecommendRemark string `json:"recommend_remark"` + // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张 + Pic string `json:"pic"` + // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张 + Description string `json:"description"` + // 支付方式,0货到付款 1在线支付,2,货到付款+在线支付 + PayType int64 `json:"pay_type"` + // 海南免税生效。 0:离岛免税、1:邮寄、2:离岛自提+邮寄 + DeliveryMethod int32 `json:"delivery_method"` + // 海南免税:海关限购分类编码 + CdfCategory string `json:"cdf_category"` + // 1 减库存类型:1-拍下减库存 2-付款减库存 + ReduceType int64 `json:"reduce_type"` + // 同店商品推荐:为空表示使用系统推荐;多个product_id使用“|”分开 + AssocIds string `json:"assoc_ids"` + // 运费模板id,传0表示包邮,通过/freightTemplate/list接口获取 + FreightId int64 `json:"freight_id"` + // 重量 + Weight float64 `json:"weight"` + // 重量单位,0-kg, 1-g + WeightUnit int64 `json:"weight_unit"` + // delivery_delay_day: 承诺发货时间,单位是天,不传则默认为2天。现货发货(presell_type=0)和阶梯发货模式(presell_type=2)时必填,支持传入9999 、1、 2 (分别表示当日发、次日发、48小时发),具体支持传入的参数范围/product/getProductUpdateRule + DeliveryDelayDay int64 `json:"delivery_delay_day"` + // 发货模式,0-现货发货,1-预售发货,2-阶梯发货,默认0 + PresellType int64 `json:"presell_type"` + // 全款预售模式时的发货时间/阶梯模式下阶梯发货时间,具体支持传入的参数范围/product/getProductUpdateRule + PresellDelay int64 `json:"presell_delay"` + // 预售结束时间,格式2020-02-21 18:54:27,最多支持设置距离当前30天 + PresellEndTime string `json:"presell_end_time"` + // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持) + Supply7dayReturn int64 `json:"supply_7day_return"` + // 客服电话号码 + Mobile string `json:"mobile"` + // false仅保存,true保存+提审 + Commit bool `json:"commit"` + // 品牌id (请求店铺授权品牌接口获取) (效果即为商品详情页面中的品牌字段) + BrandId int64 `json:"brand_id"` + // 商家可见备注 + Remark string `json:"remark"` + // 123 + OutProductId int64 `json:"out_product_id"` + // 资质信息,可通过/product/qualificationConfig获取 + QualityList []QualityListItem `json:"quality_list"` + // 如果不填,则规格名为各级规格名用 \"-\" 自动生成 + SpecName string `json:"spec_name"` + // 店铺通用规格,能被同类商品通用。多规格用^分隔,规格与规格值用|分隔,多个规格值用,分隔。如果创建或编辑现货+预售商品或新预售商品时,须包含发货时效,如:颜色|黑色,白色,黄色^尺码|S,M,L^发货时效|5天内发货,15天内发货 + Specs string `json:"specs"` + // sku详情,数量应该等于规格1规格2规格3,sku数量和规格组合数必须一致 sku不可售时,库存可设置为0 + SpecPrices string `json:"spec_prices"` + // 如颜色-尺寸, 颜色就是主规格, 颜色如黑,白,黄,它们图片url以逗号分隔 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张 + SpecPic string `json:"spec_pic"` + // 每个用户每次下单限购件数 + MaximumPerOrder int64 `json:"maximum_per_order"` + // 每个用户累计限购件数 + LimitPerBuyer int64 `json:"limit_per_buyer"` + // 每个用户每次下单至少购买的件数 + MinimumPerOrder int64 `json:"minimum_per_order"` + // 通过/product/getCatePropertyV2获取 格式:{"property_id":[{"value":value,"name":"property_name","diy_type":0}]}, name的类型是string,value和diy_type的类型是number + ProductFormatNew string `json:"product_format_new"` + // spu id + SpuId int64 `json:"spu_id"` + // 可预约发货天数 + AppointDeliveryDay int64 `json:"appoint_delivery_day"` + // third_url + ThirdUrl string `json:"third_url"` + // extra + Extra string `json:"extra"` + // src + Src string `json:"src"` + // 外部product id + OuterProductId string `json:"outer_product_id"` + // standard_brand_id,通过/brand/list获取,无品牌id则传596120136 + StandardBrandId int64 `json:"standard_brand_id"` + // 卡券类型需要传true + NeedCheckOut bool `json:"need_check_out"` + // 卡券信息 + PoiResource *PoiResource `json:"poi_resource"` + // 使用qualityList覆盖当前商品资质,qualityList传空代表清空 + ForceUseQualityList bool `json:"force_use_quality_list"` + // VIN11111111111111 + CarVinCode string `json:"car_vin_code"` + // 充值模式 + NeedRechargeMode bool `json:"need_recharge_mode"` + // 0:全款预售,1:sku预售,2:现货+预售 ,3:新预售 + PresellConfigLevel int64 `json:"presell_config_level"` + // 多账号模板 + AccountTemplateId string `json:"account_template_id"` + // 全款预售和sku预售时传递,其他不传: 0 预售结束后发货 1支付完成后发货 + PresellDeliveryType int64 `json:"presell_delivery_type"` + // 白底图url(仅素材中心url有效) + WhiteBackGroundPicUrl string `json:"white_back_ground_pic_url"` + // 3:4长图url(仅素材中心url有效) + LongPicUrl string `json:"long_pic_url"` + // 售后服务参数,key:value格式,supply_7day_return(7天无理由): 0不支持,1支持,2支持(拆封后不支持) supply_day_return_selector(7天无理由标签):N天-政策代号,N只支持7和15,supply_red_ass_return(红屁屁无忧):0不支持,1支持 supply_allergy_return(过敏无忧,仅跨境可选):0不支持,1支持 damaged_order_return(坏损包退):0不支持,1支持 support_allergy_returnV2(过敏包退,境内可选):0不支持,1支持 + AfterSaleService map[string]string `json:"after_sale_service"` + // 售卖方式;0:全渠道手售卖,1:仅指定直播间售卖 + SellChannel []int64 `json:"sell_channel"` + // 审核通过后上架售卖时间配置:0-立即上架售卖 1-放入仓库 + StartSaleType int64 `json:"start_sale_type"` + // 跨境物流相关信息 + LogisticsInfo string `json:"logistics_info"` + // 1 + PriceHasTax string `json:"price_has_tax"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editCbProduct/response/product_editCbProduct_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_editCbProduct/response/product_editCbProduct_response.go new file mode 100644 index 00000000..4d002d60 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editCbProduct/response/product_editCbProduct_response.go @@ -0,0 +1,8 @@ +package product_editCbProduct_response + +type ProductEditCbProductResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductEditCbProductData `json:"data"` +} +type ProductEditCbProductData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editComponentTemplate/request/product_editComponentTemplate_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_editComponentTemplate/request/product_editComponentTemplate_request.go new file mode 100644 index 00000000..75c6557c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editComponentTemplate/request/product_editComponentTemplate_request.go @@ -0,0 +1,54 @@ +package product_editComponentTemplate_request + +import ( + "encoding/json" +) + +type ProductEditComponentTemplateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductEditComponentTemplateParam +} + +func (c *ProductEditComponentTemplateRequest) GetUrlPath() string { + return "/product/editComponentTemplate" +} + +func New() *ProductEditComponentTemplateRequest { + request := &ProductEditComponentTemplateRequest{ + Param: &ProductEditComponentTemplateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductEditComponentTemplateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_editComponentTemplate_response.ProductEditComponentTemplateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_editComponentTemplate_response.ProductEditComponentTemplateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductEditComponentTemplateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductEditComponentTemplateRequest) GetParams() *ProductEditComponentTemplateParam { + return c.Param +} + +type ProductEditComponentTemplateParam struct { + // 模板ID + TemplateId int64 `json:"template_id"` + // 模板名称 + TemplateName string `json:"template_name"` + // 模板数据json + ComponentData string `json:"component_data"` + // 是否为公有模板(多个商品可共用) + Shareable bool `json:"shareable"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editComponentTemplate/response/product_editComponentTemplate_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_editComponentTemplate/response/product_editComponentTemplate_response.go new file mode 100644 index 00000000..f7e525ba --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editComponentTemplate/response/product_editComponentTemplate_response.go @@ -0,0 +1,8 @@ +package product_editComponentTemplate_response + +type ProductEditComponentTemplateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductEditComponentTemplateData `json:"data"` +} +type ProductEditComponentTemplateData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request/product_editV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request/product_editV2_request.go new file mode 100644 index 00000000..5ffcb50e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editV2/request/product_editV2_request.go @@ -0,0 +1,228 @@ +package product_editV2_request + +import ( + "encoding/json" +) + +type ProductEditV2Request struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductEditV2Param +} + +func (c *ProductEditV2Request) GetUrlPath() string { + return "/product/editV2" +} + +func New() *ProductEditV2Request { + request := &ProductEditV2Request{ + Param: &ProductEditV2Param{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductEditV2Request) Execute(accessToken *doudian_sdk.AccessToken) (*product_editV2_response.ProductEditV2Response, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_editV2_response.ProductEditV2Response{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductEditV2Request) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductEditV2Request) GetParams() *ProductEditV2Param { + return c.Param +} + +type QualityAttachmentsItem struct { + // 1-图片,2-pdf + MediaType int64 `json:"media_type"` + // 凭证url + Url string `json:"url"` +} +type QualityListItem struct { + // 资质key + QualityKey string `json:"quality_key"` + // 资质名称 + QualityName string `json:"quality_name"` + // 资质 + QualityAttachments []QualityAttachmentsItem `json:"quality_attachments"` +} +type PoiResource struct { + // 有效时间段,从领取日开始计算,优先级高于ValidStart-ValidEnd + ValidDays int64 `json:"valid_days"` + // 卡券有效开始时间,秒单位时间戳 + ValidStart int64 `json:"valid_start"` + // 卡券有效截止时间,秒单位时间戳 + ValidEnd int64 `json:"valid_end"` + // 客服电话 + ServiceNum string `json:"service_num"` + // 领取须知 + Notification string `json:"notification"` + // 平台产生券码: 1 ; 合作方api实时传入的券码: 4 + CodeType int64 `json:"code_type"` + // 券码总量,0/-1表示不限制,平台券时须\u003e0 + Count int64 `json:"count"` + // 0-不支持二次兑换,1-支持二次兑换 + CouponSecondExchange int64 `json:"couponSecondExchange"` + // 可核销总次数 + TotalCanUseCount int32 `json:"total_can_use_count"` + // 兑换链接 + Link string `json:"link"` + // 券码使用条件 + Condition string `json:"condition"` + // 数组当前只支持一个元素且只可为 1或2,其中 1 表示随时退+过期自动退,2 表示不支持退 + CouponReturnMethods []int64 `json:"coupon_return_methods"` +} +type DelayRule struct { + // 是否开启特殊日期延迟发货 + Enable bool `json:"enable"` + // 1 时间点;2 时间范围 + ConfigType int32 `json:"config_type"` + // 特殊日期延迟发货时间最晚发货时间,时间戳,单位秒:当config_type=1时,传时间戳,代表最晚x发货;当config_type=2时,传天数,代表延迟x天发货 + ConfigValue int64 `json:"config_value"` + // 特殊日期延迟发货时间下单开始时间,时间戳,单位秒 + StartTime int64 `json:"start_time"` + // 特殊日期延迟发货时间下单结束时间,时间戳,单位秒 + EndTime int64 `json:"end_time"` +} +type ProductEditV2Param struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 0-普通,3-虚拟,6玉石闪购,7云闪购 + ProductType int64 `json:"product_type"` + // 叶子类目ID通过/shop/getShopCategory接口获取 + CategoryLeafId int64 `json:"category_leaf_id"` + // 属性名称|属性值 之间用|分隔, 多组之间用^分开 + ProductFormat string `json:"product_format"` + // 商品名称,最多60个字符(30个汉字),不能含emoj表情 + Name string `json:"name"` + // 商家推荐语,不能含emoj表情 + RecommendRemark string `json:"recommend_remark"` + // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 + Pic string `json:"pic"` + // 商品轮播图,多张图片用 \"|\" 分开,第一张图为主图,最多5张,至少600x600,大小不超过1M 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 + Description string `json:"description"` + // 已废弃,支付方式,0货到付款 1在线支付,2,货到付款+在线支付 + PayType int64 `json:"pay_type"` + // 海南免税生效。 0:离岛免税、1:邮寄、2:离岛自提+邮寄 + DeliveryMethod int32 `json:"delivery_method"` + // 海南免税:海关限购分类编码 + CdfCategory string `json:"cdf_category"` + // 1 减库存类型:1-拍下减库存 2-付款减库存 + ReduceType int64 `json:"reduce_type"` + // 同店商品推荐:为空表示使用系统推荐;多个product_id使用“|”分开 + AssocIds string `json:"assoc_ids"` + // 运费模板id,传0表示包邮,通过/freightTemplate/list接口获取 + FreightId int64 `json:"freight_id"` + // 重量 + Weight float64 `json:"weight"` + // 重量单位,0-kg, 1-g + WeightUnit int64 `json:"weight_unit"` + // delivery_delay_day: 承诺发货时间,单位是天,不传则默认为2天。现货发货(presell_type=0)和阶梯发货模式(presell_type=2)时必填,支持传入9999 、1、 2 (分别表示当日发、次日发、48小时发),具体支持传入的参数范围/product/getProductUpdateRule + DeliveryDelayDay int64 `json:"delivery_delay_day"` + // 发货模式,0-现货发货,1-预售发货,2-阶梯发货,默认0 + PresellType int64 `json:"presell_type"` + // 全款预售模式时的发货时间/阶梯模式下阶梯发货时间,具体支持传入的参数范围/product/getProductUpdateRule + PresellDelay int64 `json:"presell_delay"` + // 预售结束时间,格式2020-02-21 18:54:27,最多支持设置距离当前30天 + PresellEndTime string `json:"presell_end_time"` + // 是否支持7天无理由,0不支持,1支持,2支持(拆封后不支持) + Supply7dayReturn int64 `json:"supply_7day_return"` + // 客服电话号码 + Mobile string `json:"mobile"` + // false仅保存,true保存+提审 + Commit bool `json:"commit"` + // 品牌id (请求店铺授权品牌接口获取) (效果即为商品详情页面中的品牌字段) + BrandId int64 `json:"brand_id"` + // 商家可见备注 + Remark string `json:"remark"` + // 外部product_id + OutProductId int64 `json:"out_product_id"` + // 资质信息,可通过/product/qualificationConfig获取 + QualityList []QualityListItem `json:"quality_list"` + // 如果不填,则规格名为各级规格名用 \"-\" 自动生成 + SpecName string `json:"spec_name"` + // 店铺通用规格,能被同类商品通用。多规格用^分隔,规格与规格值用|分隔,多个规格值用,分隔。如果创建或编辑现货+预售商品或新预售商品时,须包含发货时效,如:颜色|黑色,白色,黄色^尺码|S,M,L^发货时效|5天内发货,15天内发货 + Specs string `json:"specs"` + // sku详情,数量应该等于规格1规格2规格3,sku数量和规格组合数必须一致 sku不可售时,库存可设置为0。 delivery_infos为SKU物流信息,info_value为字符串类型(示例:"12"),info_type填weight,info_unit支持mg,g,kg + SpecPrices string `json:"spec_prices"` + // 如颜色-尺寸, 颜色就是主规格, 颜色如黑,白,黄,它们图片url以逗号分隔 注:\"pic\"、\"description\"、\"spec_pic\"这三个字段里的传入的图片数量总和,不得超过50张。 + SpecPic string `json:"spec_pic"` + // 每个用户每次下单限购件数 + MaximumPerOrder int64 `json:"maximum_per_order"` + // 每个用户累计限购件数 + LimitPerBuyer int64 `json:"limit_per_buyer"` + // 每个用户每次下单至少购买的件数 + MinimumPerOrder int64 `json:"minimum_per_order"` + // 通过/product/getCatePropertyV2获取 格式:{"property_id":[{"value":value,"name":"property_name","diy_type":0}]}, name的类型是string,value和diy_type的类型是number + ProductFormatNew string `json:"product_format_new"` + // spu id + SpuId int64 `json:"spu_id"` + // 可预约发货天数 + AppointDeliveryDay int64 `json:"appoint_delivery_day"` + // third_url + ThirdUrl string `json:"third_url"` + // extra + Extra string `json:"extra"` + // src + Src string `json:"src"` + // 外部product id + OuterProductId string `json:"outer_product_id"` + // standard_brand_id,通过/brand/list获取,无品牌id则传596120136 + StandardBrandId int64 `json:"standard_brand_id"` + // 卡券类型需要传true + NeedCheckOut bool `json:"need_check_out"` + // 卡券信息 + PoiResource *PoiResource `json:"poi_resource"` + // 使用qualityList覆盖当前商品资质,qualityList传空代表清空 + ForceUseQualityList bool `json:"force_use_quality_list"` + // 汽车Vin码 + CarVinCode string `json:"car_vin_code"` + // 0:全款预售,1:sku预售,2:现货+预售 ,3:新预售 + PresellConfigLevel int64 `json:"presell_config_level"` + // 充值模式 + NeedRechargeMode bool `json:"need_recharge_mode"` + // 多账号模板 + AccountTemplateId string `json:"account_template_id"` + // 全款预售和sku预售时传递,其他不传: 0 预售结束后发货 1支付完成后发货 + PresellDeliveryType int64 `json:"presell_delivery_type"` + // 白底图url(仅素材中心url有效) + WhiteBackGroundPicUrl string `json:"white_back_ground_pic_url"` + // 3:4长图url(仅素材中心url有效) + LongPicUrl string `json:"long_pic_url"` + // 售后服务参数,key:value格式 supply_day_return_selector(7天无理由选项):N天-政策代号,N只支持7和15 supply_red_ass_return(红屁屁无忧):0不支持,1支持 supply_allergy_return(过敏无忧,仅跨境可选):0不支持,1支持 damaged_order_return(坏损包退):0不支持,1支持 support_allergy_returnV2(过敏包退,境内可选):0不支持,1支持 + AfterSaleService map[string]string `json:"after_sale_service"` + // 售卖方式;0:全渠道手售卖,1:仅指定直播间售卖 + SellChannel []int64 `json:"sell_channel"` + // 审核通过后上架售卖时间配置:0-立即上架售卖 1-放入仓库 + StartSaleType int64 `json:"start_sale_type"` + // 特殊日期延迟发货规则 + DelayRule *DelayRule `json:"delay_rule"` + // 主图视频ID,可以先通过https://op.jinritemai.com/docs/api-docs/69/1617接口上传视频,获取审核通过的视频素材ID进行传入 + MaterialVideoId string `json:"material_video_id"` + // 提取方式新字段,推荐使用。"0": 普通商品-使用物流发货, "1": 虚拟商品-无需物流与电子交易凭证, "2": 虚拟商品-使用电子交易凭证, "3": 虚拟商品-充值直连 + PickupMethod string `json:"pickup_method"` + // 尺码模板ID + SizeInfoTemplateId int64 `json:"size_info_template_id"` + // 外部商品url + SubstituteGoodsUrl string `json:"substitute_goods_url"` + // 销售渠道类型,可选onlineOnly(纯电商,仅在线上售卖)或sameAsOffline(专柜同款,线上线下都有售卖),云零售商家(https://fxg.jinritemai.com/ffa/merchant-growth/cloud-retail)可以设置 + SaleChannelType string `json:"sale_channel_type"` + // 通过/product/getRecommendName接口推荐的商品标题前缀(注意系统根据类目属性生成前缀字符串时,末尾有一个空格) + NamePrefix string `json:"name_prefix"` + // 门店ID + StoreId int64 `json:"store_id"` + // 主商品ID + MainProductId int64 `json:"main_product_id"` + // 限售模板ID + SaleLimitId int64 `json:"sale_limit_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_editV2/response/product_editV2_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_editV2/response/product_editV2_response.go new file mode 100644 index 00000000..e29fb66d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_editV2/response/product_editV2_response.go @@ -0,0 +1,8 @@ +package product_editV2_response + +type ProductEditV2Response struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductEditV2Data `json:"data"` +} +type ProductEditV2Data struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/request/product_getCatePropertyV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/request/product_getCatePropertyV2_request.go new file mode 100644 index 00000000..368ff00f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/request/product_getCatePropertyV2_request.go @@ -0,0 +1,48 @@ +package product_getCatePropertyV2_request + +import ( + "encoding/json" +) + +type ProductGetCatePropertyV2Request struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductGetCatePropertyV2Param +} + +func (c *ProductGetCatePropertyV2Request) GetUrlPath() string { + return "/product/getCatePropertyV2" +} + +func New() *ProductGetCatePropertyV2Request { + request := &ProductGetCatePropertyV2Request{ + Param: &ProductGetCatePropertyV2Param{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductGetCatePropertyV2Request) Execute(accessToken *doudian_sdk.AccessToken) (*product_getCatePropertyV2_response.ProductGetCatePropertyV2Response, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_getCatePropertyV2_response.ProductGetCatePropertyV2Response{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductGetCatePropertyV2Request) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductGetCatePropertyV2Request) GetParams() *ProductGetCatePropertyV2Param { + return c.Param +} + +type ProductGetCatePropertyV2Param struct { + // 叶子类目id 1、传category_leaf_id ,则不需要传first_cid、second_cid、third_cid这三个字段 2、如果没传category_leaf_id,走之前的逻辑,需要传first_cid、second_cid、third_cid这三个字段 + CategoryLeafId int64 `json:"category_leaf_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/response/product_getCatePropertyV2_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/response/product_getCatePropertyV2_response.go new file mode 100644 index 00000000..6654d058 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getCatePropertyV2/response/product_getCatePropertyV2_response.go @@ -0,0 +1,52 @@ +package product_getCatePropertyV2_response + +type ProductGetCatePropertyV2Response struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductGetCatePropertyV2Data `json:"data"` +} +type OptionsItem struct { + // 可选值名称 + Name string `json:"name"` + // 可选值 + Value string `json:"value"` + // 值的id + ValueId int64 `json:"value_id"` + // 属性值顺序 + Sequence int64 `json:"sequence"` +} +type DataItem struct { + // 老类目id + Cid int64 `json:"cid"` + // 属性名称 + PropertyName string `json:"property_name"` + // 属性可选值列表,为空时需要手动填写 + Options []OptionsItem `json:"options"` + // 1:创建商品时该属性字段必填 0:创建商品时该属性字段选填 + Required int64 `json:"required"` + // 属性状态,0:有效,1:失效 + Status int64 `json:"status"` + // 输入text、单选select、多选multi_select、时间戳timestamp、时间段timerange + Type string `json:"type"` + // 新版类目id(优先使用) + CategoryId int64 `json:"category_id"` + // 最大多选数 + MultiSelectMax int64 `json:"multi_select_max"` + // 属性类型,0 绑定属性 1关键属性 2售卖属性 3 商品属性 + PropertyType int64 `json:"property_type"` + // 属性id + PropertyId int64 `json:"property_id"` + // 属性顺序 + Sequence int64 `json:"sequence"` + // 关系id,SPU类目使用,表示自己的上一个关键属性ID + RelationId int64 `json:"relation_id"` + // 是否支持枚举可输入,0表示不支持,1表示支持,支持枚举可输入的属性,在发布/编辑接口的类目属性参数中可以传入自定义的属性值,自定义属性值value为0,diy_type为1 + DiyType int64 `json:"diy_type"` + // 0:非重要属性,1:重要属性 + ImportantType int64 `json:"important_type"` +} +type ProductGetCatePropertyV2Data struct { + // 返回参数列表 + Data []DataItem `json:"data"` + // 模板类型,SPU为1,结构化为2,默认为0(无特殊需求忽略该字段即可) + TplType int64 `json:"tpl_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getComponentTemplate/request/product_getComponentTemplate_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_getComponentTemplate/request/product_getComponentTemplate_request.go new file mode 100644 index 00000000..14934dea --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getComponentTemplate/request/product_getComponentTemplate_request.go @@ -0,0 +1,58 @@ +package product_getComponentTemplate_request + +import ( + "encoding/json" +) + +type ProductGetComponentTemplateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductGetComponentTemplateParam +} + +func (c *ProductGetComponentTemplateRequest) GetUrlPath() string { + return "/product/getComponentTemplate" +} + +func New() *ProductGetComponentTemplateRequest { + request := &ProductGetComponentTemplateRequest{ + Param: &ProductGetComponentTemplateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductGetComponentTemplateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_getComponentTemplate_response.ProductGetComponentTemplateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_getComponentTemplate_response.ProductGetComponentTemplateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductGetComponentTemplateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductGetComponentTemplateRequest) GetParams() *ProductGetComponentTemplateParam { + return c.Param +} + +type ProductGetComponentTemplateParam struct { + // 模板类型: size_info(尺码表) + TemplateType string `json:"template_type"` + // 组件模板子类型;clothing -饰;undies-内衣;shoes 鞋靴;children_clothing-童装 + TemplateSubType string `json:"template_sub_type"` + // 模板ID + TemplateId int64 `json:"template_id"` + // 是否为公有模板(多个商品可共用) + Shareable bool `json:"shareable"` + // 页码,从0开始,最大支持100 + PageNum int64 `json:"page_num"` + // 每页条数,最大支持20;page_size和template_id二选一入参 + PageSize int64 `json:"page_size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getComponentTemplate/response/product_getComponentTemplate_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_getComponentTemplate/response/product_getComponentTemplate_response.go new file mode 100644 index 00000000..3c37abee --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getComponentTemplate/response/product_getComponentTemplate_response.go @@ -0,0 +1,44 @@ +package product_getComponentTemplate_response + +type ProductGetComponentTemplateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductGetComponentTemplateData `json:"data"` +} +type Image struct { + // 图片url + Url string `json:"url"` + // 图片宽度 + Width int16 `json:"width"` + // 图片长度 + Height int16 `json:"height"` +} +type ComponentTemplateInfoListItem struct { + // 模板ID + TemplateId int64 `json:"template_id"` + // 模板类型: size_info(尺码表) + TemplateType string `json:"template_type"` + // 组件模板子类型:clothing、undies、shoes、children_clothing + TemplateSubType string `json:"template_sub_type"` + // 模板名称 + TemplateName string `json:"template_name"` + // 模板数据 + ComponentData string `json:"component_data"` + // 尺码模板图片 + Image *Image `json:"image"` + // 是否可共享 是-false 否-true + Shareable bool `json:"shareable"` + // 类目ID + CategoryId int64 `json:"category_id"` + // 创建时间 + CreateTime int64 `json:"create_time"` + // 更新时间 + UpdateTime int64 `json:"update_time"` + // 模板配置数据 + ComponentFrontData string `json:"component_front_data"` +} +type ProductGetComponentTemplateData struct { + // 尺码模板列表 + ComponentTemplateInfoList []ComponentTemplateInfoListItem `json:"component_template_info_list"` + // 总页数 + TotalNum int64 `json:"total_num"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getProductUpdateRule/request/product_getProductUpdateRule_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_getProductUpdateRule/request/product_getProductUpdateRule_request.go new file mode 100644 index 00000000..bc24fc7c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getProductUpdateRule/request/product_getProductUpdateRule_request.go @@ -0,0 +1,50 @@ +package product_getProductUpdateRule_request + +import ( + "encoding/json" +) + +type ProductGetProductUpdateRuleRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductGetProductUpdateRuleParam +} + +func (c *ProductGetProductUpdateRuleRequest) GetUrlPath() string { + return "/product/getProductUpdateRule" +} + +func New() *ProductGetProductUpdateRuleRequest { + request := &ProductGetProductUpdateRuleRequest{ + Param: &ProductGetProductUpdateRuleParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductGetProductUpdateRuleRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_getProductUpdateRule_response.ProductGetProductUpdateRuleResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_getProductUpdateRule_response.ProductGetProductUpdateRuleResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductGetProductUpdateRuleRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductGetProductUpdateRuleRequest) GetParams() *ProductGetProductUpdateRuleParam { + return c.Param +} + +type ProductGetProductUpdateRuleParam struct { + // 类目id + CategoryId int64 `json:"category_id"` + // 闪购定制参数,普通发品忽略 + Senses []int32 `json:"senses"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getProductUpdateRule/response/product_getProductUpdateRule_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_getProductUpdateRule/response/product_getProductUpdateRule_response.go new file mode 100644 index 00000000..dbde9778 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getProductUpdateRule/response/product_getProductUpdateRule_response.go @@ -0,0 +1,134 @@ +package product_getProductUpdateRule_response + +type ProductGetProductUpdateRuleResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductGetProductUpdateRuleData `json:"data"` +} +type StepRule struct { + // 是否支持 + Support bool `json:"support"` + // 阶梯现货部分延迟返货时间范围 + DelayOptions []int64 `json:"delay_options"` + // 是特殊时间延迟发货,可忽略 + IsSpecialDelayOption bool `json:"is_special_delay_option"` + // 阶梯发货阶梯部分发货时间最小值 + StepMinDelay int64 `json:"step_min_delay"` + // 阶梯发货阶梯部分发货时间最大值 + StepMaxDelay int64 `json:"step_max_delay"` +} +type DeliveryAfterPayConfig struct { + // 延迟发货时间最小值 + MinDeliveryDays int64 `json:"min_delivery_days"` + // 延迟发货时间最大值 + MaxDeliveryDays int64 `json:"max_delivery_days"` + // 最长预售结束时间 + MaxPresellEndDays int64 `json:"max_presell_end_days"` + // 是否需要人审,可忽略 + NeedAudit bool `json:"need_audit"` +} +type DeliveryAfterPresellConfig struct { + // 延迟发货时间最小值 + MinDeliveryDays int64 `json:"min_delivery_days"` + // 延迟发货时间最大值 + MaxDeliveryDays int64 `json:"max_delivery_days"` + // 最长预售结束时间 + MaxPresellEndDays int64 `json:"max_presell_end_days"` + // 是否需要人审,可忽略 + NeedAudit bool `json:"need_audit"` +} +type ProductPresellRule struct { + // 是否支持全款预售 + Support bool `json:"support"` + // 预售门槛价 + MinPresellPrice int64 `json:"min_presell_price"` + // 是否支持支付成功后发货 + SupportDeliveryAfterPay bool `json:"support_delivery_after_pay"` + // 是否支持预售结束后发货 + SupportDeliveryAfterPresell bool `json:"support_delivery_after_presell"` + // 支付结束后规则 + DeliveryAfterPayConfig *DeliveryAfterPayConfig `json:"delivery_after_pay_config"` + // 预售结束后规则 + DeliveryAfterPresellConfig *DeliveryAfterPresellConfig `json:"delivery_after_presell_config"` +} +type SkuPresellRule struct { + // 是否支持 + Support bool `json:"support"` + // 预售门槛价 + MinPresellPrice int64 `json:"min_presell_price"` + // 是否支持支付结束后发货 + SupportDeliveryAfterPay bool `json:"support_delivery_after_pay"` + // 是否支持预售结束后发货 + SupportDeliveryAfterPresell bool `json:"support_delivery_after_presell"` + // 支付结束后规则 + DeliveryAfterPayConfig *DeliveryAfterPayConfig `json:"delivery_after_pay_config"` + // 预售结束后规则 + DeliveryAfterPresellConfig *DeliveryAfterPresellConfig `json:"delivery_after_presell_config"` +} +type TimeSkuSpecDetialItem struct { + // 规格值 + SpecValue string `json:"spec_value"` + // 是否预售时效 + IsPresellSpec bool `json:"is_presell_spec"` + // product_time_spec_same_day 当日发 product_time_spec_next_day 次日发 product_time_spec_48h 48小时内发货 product_time_spec_5d 5天内发货 product_time_spec_15d 15天内发货 product_time_spec_45d 45天内发货 + SpecCode string `json:"spec_code"` +} +type TimeSkuPresellWithNormalRule struct { + // 是否支持 + Support bool `json:"support"` + // 发货时效规格名称 + TimeSkuSpecName string `json:"time_sku_spec_name"` + // 发货时效规格选项 + TimeSkuSpecDetial []TimeSkuSpecDetialItem `json:"time_sku_spec_detial"` + // 预售门槛价,单位分 + MinPresellPrice int64 `json:"min_presell_price"` +} +type TimeSkuSpecDetialItem_4_4 struct { + // 规格值 + SpecValue string `json:"spec_value"` + // 是否预售时效 + IsPresellSpec bool `json:"is_presell_spec"` +} +type TimeSkuPurePresellRule struct { + // 是否支持 + Support bool `json:"support"` + // 发货时效规格名称 + TimeSkuSpecName string `json:"time_sku_spec_name"` + // 发货时效规格选项 + TimeSkuSpecDetial []TimeSkuSpecDetialItem_4_4 `json:"time_sku_spec_detial"` + // 预售门槛价,单位分 + MinPresellPrice int64 `json:"min_presell_price"` +} +type RecommendNameRule struct { + // 当前类目id是否命中前缀推荐规则 + SatisfyPrefix bool `json:"satisfy_prefix"` + // 命中规则的属性id详情 + PropertyIds []int64 `json:"property_ids"` +} +type NormalRule struct { + // 是否支持 + Support bool `json:"support"` + // 发货时效选项,如当日发、次日发、48小时 + DelayOptions []int64 `json:"delay_options"` + // 是否特殊时间延迟发货,可忽略 + IsSpecialDelayOption bool `json:"is_special_delay_option"` +} +type FulfillmentRule struct { + // 现货发货模式规则 + NormalRule *NormalRule `json:"normal_rule"` + // 阶梯发货模式规则 + StepRule *StepRule `json:"step_rule"` + // 全款预售发货模式规则 + ProductPresellRule *ProductPresellRule `json:"product_presell_rule"` + // SKU预售发货模式规则 + SkuPresellRule *SkuPresellRule `json:"sku_presell_rule"` + // 现货+预售发货规则 + TimeSkuPresellWithNormalRule *TimeSkuPresellWithNormalRule `json:"time_sku_presell_with_normal_rule"` + // 新预售发货模式规则 + TimeSkuPurePresellRule *TimeSkuPurePresellRule `json:"time_sku_pure_presell_rule"` +} +type ProductGetProductUpdateRuleData struct { + // 履约规则 + FulfillmentRule *FulfillmentRule `json:"fulfillment_rule"` + // 商品标题推荐规则 + RecommendNameRule *RecommendNameRule `json:"recommend_name_rule"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getRecommendName/request/product_getRecommendName_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_getRecommendName/request/product_getRecommendName_request.go new file mode 100644 index 00000000..0264c711 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getRecommendName/request/product_getRecommendName_request.go @@ -0,0 +1,70 @@ +package product_getRecommendName_request + +import ( + "encoding/json" +) + +type ProductGetRecommendNameRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductGetRecommendNameParam +} + +func (c *ProductGetRecommendNameRequest) GetUrlPath() string { + return "/product/getRecommendName" +} + +func New() *ProductGetRecommendNameRequest { + request := &ProductGetRecommendNameRequest{ + Param: &ProductGetRecommendNameParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductGetRecommendNameRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_getRecommendName_response.ProductGetRecommendNameResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_getRecommendName_response.ProductGetRecommendNameResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductGetRecommendNameRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductGetRecommendNameRequest) GetParams() *ProductGetRecommendNameParam { + return c.Param +} + +type SelectPropertyItem struct { + // 属性id + Value int64 `json:"value"` + // 属性名称 + Name string `json:"name"` +} +type ProductGetRecommendNameParam struct { + // 暂时仅开放一种场景:1. product_name_prefix,表示基于 命中的商品类目属性 推荐 商品标题前缀 + Scene []string `json:"scene"` + // 商品叶子类目id,scene为product_name_prefix时必传 + CategoryLeafId int64 `json:"category_leaf_id"` + // 一级类目id,scene为product_name_prefix时必传,没有时传0 + FirstCid int64 `json:"first_cid"` + // 一级类目名,scene为product_name_prefix时必传 + FirstCidName string `json:"first_cid_name"` + // 二级类目id,scene为product_name_prefix时必传,没有时传0 + SecondCid int64 `json:"second_cid"` + // 二级类目名,scene为product_name_prefix时必传 + SecondCidName string `json:"second_cid_name"` + // 三级类目id,scene为product_name_prefix时必传,没有时传0 + ThirdCid int64 `json:"third_cid"` + // 三级类目名,scene为product_name_prefix时必传 + ThirdCidName string `json:"third_cid_name"` + // 商品类目属性 + SelectProperty map[int64][]SelectPropertyItem `json:"select_property"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_getRecommendName/response/product_getRecommendName_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_getRecommendName/response/product_getRecommendName_response.go new file mode 100644 index 00000000..b2bc32ea --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_getRecommendName/response/product_getRecommendName_response.go @@ -0,0 +1,16 @@ +package product_getRecommendName_response + +type ProductGetRecommendNameResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductGetRecommendNameData `json:"data"` +} +type RecommendNameItem struct { + // 推荐场景 + RecommendScene string `json:"recommend_scene"` + // 推荐结果 + RecommendValue string `json:"recommend_value"` +} +type ProductGetRecommendNameData struct { + // 商品标题推荐结果 + RecommendName []RecommendNameItem `json:"recommend_name"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request/product_listV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request/product_listV2_request.go new file mode 100644 index 00000000..ca33b9a0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_listV2/request/product_listV2_request.go @@ -0,0 +1,66 @@ +package product_listV2_request + +import ( + "encoding/json" +) + +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 +} + +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"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_listV2/response/product_listV2_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_listV2/response/product_listV2_response.go new file mode 100644 index 00000000..3f4762cb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_listV2/response/product_listV2_response.go @@ -0,0 +1,82 @@ +package product_listV2_response + +type ProductListV2Response struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductListV2Data `json:"data"` +} +type CategoryDetail struct { + // 一级类目 + FirstCid int64 `json:"first_cid"` + // 二级类目 + SecondCid int64 `json:"second_cid"` + // 三级类目 + ThirdCid int64 `json:"third_cid"` + // 四级类目 + FourthCid int64 `json:"fourth_cid"` + // 一级类目名称 + FirstCname string `json:"first_cname"` + // 二级类目名称 + SecondCname string `json:"second_cname"` + // 三级类目名称 + ThirdCname string `json:"third_cname"` + // 四级类目名称 + FourthCname string `json:"fourth_cname"` +} +type DataItem struct { + // 商品ID,抖店系统生成,店铺下唯一 + ProductId int64 `json:"product_id"` + // 商品在店铺中状态: 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"` + // 【已废弃】划线价,单位分 + MarketPrice int64 `json:"market_price"` + // 【已废弃】售价,单位分 + DiscountPrice int64 `json:"discount_price"` + // 商品图片url,返回商品主图的第一张图 (主要用来辅助页面展示) + Img string `json:"img"` + // 商品标题,规则:至少输入8个字(16个字符)以上~输入30个字(60个字符)以内。;标题不规范会引起商品下架,影响您的正常销售,详见商品发布规范:https://school.jinritemai.com/doudian/web/article/101800?from=shop_article + Name string `json:"name"` + // 【已废弃】支持的支付方式:0货到付款 1在线支付 2两者都支持 + PayType int64 `json:"pay_type"` + // 商品类型;0-普通;1-新客商品;3-虚拟;6-玉石闪购;7-云闪购 ;127-其他类型; + ProductType int64 `json:"product_type"` + // 商品规格,新增商品是全局唯一,注意:有部分历史存量商品可能存在规格复用 + SpecId int64 `json:"spec_id"` + // 【已废弃】佣金比例 + CosRatio int64 `json:"cos_ratio"` + // 商品创建时间,unix时间戳,单位:秒; + CreateTime int64 `json:"create_time"` + // 商品更新时间,unix时间戳,单位:秒; + UpdateTime int64 `json:"update_time"` + // 【即将废弃】外部商家编码,商家自定义字段。推荐使用,outer_product_id字段 + OutProductId int64 `json:"out_product_id"` + // 商品详情,最大支持50张图片,单张详情图宽高比不超2000*2000px,大小5M内,仅支持jpg/jpeg/png格式;注意:商品详情不规范,会引起商品下架,影响您的正常销售:https://school.jinritemai.com/doudian/web/article/101800?from=shop_article + Description string `json:"description"` + // 【已废弃】手机号 + Mobile string `json:"mobile"` + // 额外信息,如资质 + Extra string `json:"extra"` + // 【已废弃】商家推荐语 + RecommendRemark string `json:"recommend_remark"` + // 类目详情;商品类目id可使用【/shop/getShopCategory】查询 + CategoryDetail *CategoryDetail `json:"category_detail"` + // 外部商家编码,商家自定义字段,支持最多 255个字符 + OuterProductId string `json:"outer_product_id"` + // 是否是组合商品,true-是,false-不是; + IsPackageProduct bool `json:"is_package_product"` + // 商品关联的组合主商品ID;当is_package_product=true,返回的是组套商品的product_id; 当is_package_product=false,返回当前商品的product_id;补充返回规则:参与的组套商品,下线会展示,目前组合商品支持下线的商品作为子品进行组套,删除会展示,但重新上架组套商品时,会被从列表中删除。 + PackageProductList []int64 `json:"package_product_list"` + // 商品关联的组合商品sku_id;商品关联的组套主sku_id;当is_package_product=true,返回的是组套商品的sku_id; 当is_package_product=false,返回当前商品的sku_id;补充返回规则:参与的组套商品sku_id,下线会展示,目前组合商品支持下线的商品作为子品进行组套,删除会展示,但重新上架组套商品时,会被从列表中删除。 + SubProductList []int64 `json:"sub_product_list"` +} +type ProductListV2Data struct { + // 商品数据 + Data []DataItem `json:"data"` + // 本次查询返回的商品总数 + Total int64 `json:"total"` + // 当前页码 + Page int64 `json:"page"` + // 页数(每页数量) + Size int64 `json:"size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualificationConfig/request/product_qualificationConfig_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualificationConfig/request/product_qualificationConfig_request.go new file mode 100644 index 00000000..49b20027 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualificationConfig/request/product_qualificationConfig_request.go @@ -0,0 +1,48 @@ +package product_qualificationConfig_request + +import ( + "encoding/json" +) + +type ProductQualificationConfigRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductQualificationConfigParam +} + +func (c *ProductQualificationConfigRequest) GetUrlPath() string { + return "/product/qualificationConfig" +} + +func New() *ProductQualificationConfigRequest { + request := &ProductQualificationConfigRequest{ + Param: &ProductQualificationConfigParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductQualificationConfigRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_qualificationConfig_response.ProductQualificationConfigResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_qualificationConfig_response.ProductQualificationConfigResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductQualificationConfigRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductQualificationConfigRequest) GetParams() *ProductQualificationConfigParam { + return c.Param +} + +type ProductQualificationConfigParam struct { + // 类目ID + CategoryId int64 `json:"category_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualificationConfig/response/product_qualificationConfig_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualificationConfig/response/product_qualificationConfig_response.go new file mode 100644 index 00000000..9a4ea179 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualificationConfig/response/product_qualificationConfig_response.go @@ -0,0 +1,22 @@ +package product_qualificationConfig_response + +type ProductQualificationConfigResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductQualificationConfigData `json:"data"` +} +type ConfigListItem struct { + // 资质ID + Key string `json:"key"` + // 资质名 + Name string `json:"name"` + // 填写提示 + TextList []string `json:"text_list"` + // 是否必填 + IsRequired bool `json:"is_required"` + // 支持的网页url类型,0:不支持;1:二手车质检报告url + SupportWebUrlType string `json:"support_web_url_type"` +} +type ProductQualificationConfigData struct { + // 资质列表 + ConfigList []ConfigListItem `json:"config_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualityDetail/request/product_qualityDetail_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualityDetail/request/product_qualityDetail_request.go new file mode 100644 index 00000000..b1559860 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualityDetail/request/product_qualityDetail_request.go @@ -0,0 +1,48 @@ +package product_qualityDetail_request + +import ( + "encoding/json" +) + +type ProductQualityDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductQualityDetailParam +} + +func (c *ProductQualityDetailRequest) GetUrlPath() string { + return "/product/qualityDetail" +} + +func New() *ProductQualityDetailRequest { + request := &ProductQualityDetailRequest{ + Param: &ProductQualityDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductQualityDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_qualityDetail_response.ProductQualityDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_qualityDetail_response.ProductQualityDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductQualityDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductQualityDetailRequest) GetParams() *ProductQualityDetailParam { + return c.Param +} + +type ProductQualityDetailParam struct { + // 商品ID + ProductId int64 `json:"product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualityDetail/response/product_qualityDetail_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualityDetail/response/product_qualityDetail_response.go new file mode 100644 index 00000000..a405a5ad --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualityDetail/response/product_qualityDetail_response.go @@ -0,0 +1,28 @@ +package product_qualityDetail_response + +type ProductQualityDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductQualityDetailData `json:"data"` +} +type ProductQualityDetailData struct { + // 可优化问题项 + FieldProblem []FieldProblemItem `json:"field_problem"` + // 商品ID + ProductId int64 `json:"product_id"` + // 商品名字 + ProductName string `json:"product_name"` +} +type FieldProblemItem struct { + // 字段key,category-类目、props-属性、product_name-标题、pic-主图、desc_pic-详情图片、desc_text-详情文字 + FieldKey string `json:"field_key"` + // 字段名 + FieldName string `json:"field_name"` + // 问题编码 + ProblemKey int64 `json:"problem_key"` + // 问题名 + ProblemName string `json:"problem_name"` + // 问题建议 + Suggestion string `json:"suggestion"` + // 问题类型编码 + ProblemType int64 `json:"problem_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualityList/request/product_qualityList_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualityList/request/product_qualityList_request.go new file mode 100644 index 00000000..81a79004 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualityList/request/product_qualityList_request.go @@ -0,0 +1,60 @@ +package product_qualityList_request + +import ( + "encoding/json" +) + +type ProductQualityListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductQualityListParam +} + +func (c *ProductQualityListRequest) GetUrlPath() string { + return "/product/qualityList" +} + +func New() *ProductQualityListRequest { + request := &ProductQualityListRequest{ + Param: &ProductQualityListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductQualityListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_qualityList_response.ProductQualityListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_qualityList_response.ProductQualityListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductQualityListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductQualityListRequest) GetParams() *ProductQualityListParam { + return c.Param +} + +type ProductQualityListParam struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 商品名字 + ProductName string `json:"product_name"` + // 排序方式,降序“desc”,升序“asc”, 不传默认降序 + OrderBy string `json:"order_by"` + // 分页参数,页数从1开始 + Page int64 `json:"page"` + // 分页参数,每页大小 + PageSize int64 `json:"page_size"` + // 店铺每日诊断任务id + TaskId int64 `json:"task_id"` + // 商品诊断状态,0-待诊断;1-待优化;2-已修改审核中;3-已优化;以前的status 字段因为配置错误已经删除,请使用此新字段 + DiagnoseStatus []int64 `json:"diagnose_status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualityList/response/product_qualityList_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualityList/response/product_qualityList_response.go new file mode 100644 index 00000000..02c44f8e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualityList/response/product_qualityList_response.go @@ -0,0 +1,32 @@ +package product_qualityList_response + +type ProductQualityListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductQualityListData `json:"data"` +} +type ProblemTypeDistributionItem struct { + // 待优化问题类型 + TypeName string `json:"type_name"` + // 问题数量 + Num int64 `json:"num"` +} +type QualityListItem struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 商品名字 + ProductName string `json:"product_name"` + // 待优化问题数量 + ProblemNumToImprove int64 `json:"problem_num_to_improve"` + // 待优化问题分布列表 + ProblemTypeDistribution []ProblemTypeDistributionItem `json:"problem_type_distribution"` + // 商品是否达标,1达标,2不达标 + MeetStandard int64 `json:"meet_standard"` + // 商品基础分 + BaseScore int64 `json:"base_score"` +} +type ProductQualityListData struct { + // 商品质量列表 + QualityList []QualityListItem `json:"quality_list"` + // 店铺待优化商品总量 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualityTask/request/product_qualityTask_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualityTask/request/product_qualityTask_request.go new file mode 100644 index 00000000..fc441929 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualityTask/request/product_qualityTask_request.go @@ -0,0 +1,48 @@ +package product_qualityTask_request + +import ( + "encoding/json" +) + +type ProductQualityTaskRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductQualityTaskParam +} + +func (c *ProductQualityTaskRequest) GetUrlPath() string { + return "/product/qualityTask" +} + +func New() *ProductQualityTaskRequest { + request := &ProductQualityTaskRequest{ + Param: &ProductQualityTaskParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductQualityTaskRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_qualityTask_response.ProductQualityTaskResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_qualityTask_response.ProductQualityTaskResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductQualityTaskRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductQualityTaskRequest) GetParams() *ProductQualityTaskParam { + return c.Param +} + +type ProductQualityTaskParam struct { + // 是否只返回简要信息,不写默认false + BriefOnly bool `json:"brief_only"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_qualityTask/response/product_qualityTask_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_qualityTask/response/product_qualityTask_response.go new file mode 100644 index 00000000..a3ced874 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_qualityTask/response/product_qualityTask_response.go @@ -0,0 +1,40 @@ +package product_qualityTask_response + +type ProductQualityTaskResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductQualityTaskData `json:"data"` +} +type ProblemTypeDistributionItem struct { + // 优化项代号,1-商品信息不规范,2-关键信息待优化,3-商品素材缺失 + TypeKey int64 `json:"type_key"` + // 优化项具体名字 + TypeName string `json:"type_name"` + // 具体问题数量 + Num int64 `json:"num"` +} +type ProductQualityTaskData struct { + // 总共需要诊断的商品数 + ProductNumTotal int64 `json:"product_num_total"` + // 已经诊断过的商品数 + ProductNumFinished int64 `json:"product_num_finished"` + // 任务状态,0-初始化,1-进行中,2-已完成 + TaskStatus int64 `json:"task_status"` + // 待优化商品数,仅brief_only为false返回 + ProductNumToImproveTotal int64 `json:"product_num_to_improve_total"` + // 可优化项总数,仅brief_only为false返回 + ProblemNumTotal int64 `json:"problem_num_total"` + // 待优化项数量,仅brief_only为false返回 + ProblemNumToImprove int64 `json:"problem_num_to_improve"` + // 任务完成时间,仅brief_only为false返回 + TaskFinishTime string `json:"task_finish_time"` + // 问题类型分布,仅brief_only为false返回 + ProblemTypeDistribution []ProblemTypeDistributionItem `json:"problem_type_distribution"` + // 任务ID + TaskId int64 `json:"task_id"` + // 达标率,百分比 + StandardRate float64 `json:"standard_rate"` + // 是否达标 + IsStandard bool `json:"is_standard"` + // 达标商品数 + MeetStandardNum int64 `json:"meet_standard_num"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_setOffline/request/product_setOffline_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_setOffline/request/product_setOffline_request.go new file mode 100644 index 00000000..1c87abe5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_setOffline/request/product_setOffline_request.go @@ -0,0 +1,48 @@ +package product_setOffline_request + +import ( + "encoding/json" +) + +type ProductSetOfflineRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductSetOfflineParam +} + +func (c *ProductSetOfflineRequest) GetUrlPath() string { + return "/product/setOffline" +} + +func New() *ProductSetOfflineRequest { + request := &ProductSetOfflineRequest{ + Param: &ProductSetOfflineParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductSetOfflineRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_setOffline_response.ProductSetOfflineResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_setOffline_response.ProductSetOfflineResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductSetOfflineRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductSetOfflineRequest) GetParams() *ProductSetOfflineParam { + return c.Param +} + +type ProductSetOfflineParam struct { + // 商品ID + ProductId int64 `json:"product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_setOffline/response/product_setOffline_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_setOffline/response/product_setOffline_response.go new file mode 100644 index 00000000..38b9724f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_setOffline/response/product_setOffline_response.go @@ -0,0 +1,8 @@ +package product_setOffline_response + +type ProductSetOfflineResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductSetOfflineData `json:"data"` +} +type ProductSetOfflineData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_setOnline/request/product_setOnline_request.go b/platformapi/tiktok_shop/sdk-golang/api/product_setOnline/request/product_setOnline_request.go new file mode 100644 index 00000000..0d049059 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_setOnline/request/product_setOnline_request.go @@ -0,0 +1,48 @@ +package product_setOnline_request + +import ( + "encoding/json" +) + +type ProductSetOnlineRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ProductSetOnlineParam +} + +func (c *ProductSetOnlineRequest) GetUrlPath() string { + return "/product/setOnline" +} + +func New() *ProductSetOnlineRequest { + request := &ProductSetOnlineRequest{ + Param: &ProductSetOnlineParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ProductSetOnlineRequest) Execute(accessToken *doudian_sdk.AccessToken) (*product_setOnline_response.ProductSetOnlineResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &product_setOnline_response.ProductSetOnlineResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ProductSetOnlineRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ProductSetOnlineRequest) GetParams() *ProductSetOnlineParam { + return c.Param +} + +type ProductSetOnlineParam struct { + // 商品id + ProductId int64 `json:"product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/product_setOnline/response/product_setOnline_response.go b/platformapi/tiktok_shop/sdk-golang/api/product_setOnline/response/product_setOnline_response.go new file mode 100644 index 00000000..18b303b1 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/product_setOnline/response/product_setOnline_response.go @@ -0,0 +1,8 @@ +package product_setOnline_response + +type ProductSetOnlineResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ProductSetOnlineData `json:"data"` +} +type ProductSetOnlineData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/promise_deliveryList/request/promise_deliveryList_request.go b/platformapi/tiktok_shop/sdk-golang/api/promise_deliveryList/request/promise_deliveryList_request.go new file mode 100644 index 00000000..5d734b52 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/promise_deliveryList/request/promise_deliveryList_request.go @@ -0,0 +1,52 @@ +package promise_deliveryList_request + +import ( + "encoding/json" +) + +type PromiseDeliveryListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *PromiseDeliveryListParam +} + +func (c *PromiseDeliveryListRequest) GetUrlPath() string { + return "/promise/deliveryList" +} + +func New() *PromiseDeliveryListRequest { + request := &PromiseDeliveryListRequest{ + Param: &PromiseDeliveryListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *PromiseDeliveryListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*promise_deliveryList_response.PromiseDeliveryListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &promise_deliveryList_response.PromiseDeliveryListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *PromiseDeliveryListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *PromiseDeliveryListRequest) GetParams() *PromiseDeliveryListParam { + return c.Param +} + +type PromiseDeliveryListParam struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 页码,从1开始 + Page int64 `json:"page"` + // 每页数量 + Size int64 `json:"size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/promise_deliveryList/response/promise_deliveryList_response.go b/platformapi/tiktok_shop/sdk-golang/api/promise_deliveryList/response/promise_deliveryList_response.go new file mode 100644 index 00000000..e3e36ba3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/promise_deliveryList/response/promise_deliveryList_response.go @@ -0,0 +1,18 @@ +package promise_deliveryList_response + +type PromiseDeliveryListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *PromiseDeliveryListData `json:"data"` +} +type ProductsItem struct { + // 商品ID + ProductId int64 `json:"product_id"` + // 1:当日发;2:次日发 + ShipMode int32 `json:"ship_mode"` +} +type PromiseDeliveryListData struct { + // 商品返回结构 + Products []ProductsItem `json:"products"` + // 总数 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/promise_setSkuShipTime/request/promise_setSkuShipTime_request.go b/platformapi/tiktok_shop/sdk-golang/api/promise_setSkuShipTime/request/promise_setSkuShipTime_request.go new file mode 100644 index 00000000..00281e63 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/promise_setSkuShipTime/request/promise_setSkuShipTime_request.go @@ -0,0 +1,60 @@ +package promise_setSkuShipTime_request + +import ( + "encoding/json" +) + +type PromiseSetSkuShipTimeRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *PromiseSetSkuShipTimeParam +} + +func (c *PromiseSetSkuShipTimeRequest) GetUrlPath() string { + return "/promise/setSkuShipTime" +} + +func New() *PromiseSetSkuShipTimeRequest { + request := &PromiseSetSkuShipTimeRequest{ + Param: &PromiseSetSkuShipTimeParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *PromiseSetSkuShipTimeRequest) Execute(accessToken *doudian_sdk.AccessToken) (*promise_setSkuShipTime_response.PromiseSetSkuShipTimeResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &promise_setSkuShipTime_response.PromiseSetSkuShipTimeResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *PromiseSetSkuShipTimeRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *PromiseSetSkuShipTimeRequest) GetParams() *PromiseSetSkuShipTimeParam { + return c.Param +} + +type RulesItem struct { + // skuid + SkuId string `json:"sku_id"` + // 外部仓库id + OutWarehouseId string `json:"out_warehouse_id"` + // 0表示现货模式,1表示全款预售模式 + PreSellType int16 `json:"pre_sell_type"` + // 发货延迟时间:0表示当天发货,1表示24小时发货;当全款预售时,需传入值为(2,15),即2-15中的任意值 + DelayDay int16 `json:"delay_day"` + // 全款预售截止时间,和PreSellType=1时组合使用 + PreSellEndTime int64 `json:"pre_sell_end_time"` +} +type PromiseSetSkuShipTimeParam struct { + // sku发货时效规则 + Rules []RulesItem `json:"rules"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/promise_setSkuShipTime/response/promise_setSkuShipTime_response.go b/platformapi/tiktok_shop/sdk-golang/api/promise_setSkuShipTime/response/promise_setSkuShipTime_response.go new file mode 100644 index 00000000..ab86cb35 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/promise_setSkuShipTime/response/promise_setSkuShipTime_response.go @@ -0,0 +1,8 @@ +package promise_setSkuShipTime_response + +type PromiseSetSkuShipTimeResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *PromiseSetSkuShipTimeData `json:"data"` +} +type PromiseSetSkuShipTimeData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/rights_info/request/rights_info_request.go b/platformapi/tiktok_shop/sdk-golang/api/rights_info/request/rights_info_request.go new file mode 100644 index 00000000..93b01415 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/rights_info/request/rights_info_request.go @@ -0,0 +1,48 @@ +package rights_info_request + +import ( + "encoding/json" +) + +type RightsInfoRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *RightsInfoParam +} + +func (c *RightsInfoRequest) GetUrlPath() string { + return "/rights/info" +} + +func New() *RightsInfoRequest { + request := &RightsInfoRequest{ + Param: &RightsInfoParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *RightsInfoRequest) Execute(accessToken *doudian_sdk.AccessToken) (*rights_info_response.RightsInfoResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &rights_info_response.RightsInfoResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *RightsInfoRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *RightsInfoRequest) GetParams() *RightsInfoParam { + return c.Param +} + +type RightsInfoParam struct { + // 授权主体类型,不传参默认查询店铺,2-ebill用户;3-供应商 + BizType int32 `json:"biz_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/rights_info/response/rights_info_response.go b/platformapi/tiktok_shop/sdk-golang/api/rights_info/response/rights_info_response.go new file mode 100644 index 00000000..2688380a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/rights_info/response/rights_info_response.go @@ -0,0 +1,16 @@ +package rights_info_response + +type RightsInfoResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *RightsInfoData `json:"data"` +} +type RightsInfoData struct { + // 权益到期时间 + ExpireTime string `json:"expire_time"` + // 0-试用版,1-正式版 + RightsType int32 `json:"rights_type"` + // 规格类型,0-版本,其他待定 + SpecType int32 `json:"spec_type"` + // 规格名称 + SpecVal string `json:"spec_val"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/security_batchReportOrderSecurityEvent/request/security_batchReportOrderSecurityEvent_request.go b/platformapi/tiktok_shop/sdk-golang/api/security_batchReportOrderSecurityEvent/request/security_batchReportOrderSecurityEvent_request.go new file mode 100644 index 00000000..4eda3d1c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/security_batchReportOrderSecurityEvent/request/security_batchReportOrderSecurityEvent_request.go @@ -0,0 +1,90 @@ +package security_batchReportOrderSecurityEvent_request + +import ( + "encoding/json" +) + +type SecurityBatchReportOrderSecurityEventRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SecurityBatchReportOrderSecurityEventParam +} + +func (c *SecurityBatchReportOrderSecurityEventRequest) GetUrlPath() string { + return "/security/batchReportOrderSecurityEvent" +} + +func New() *SecurityBatchReportOrderSecurityEventRequest { + request := &SecurityBatchReportOrderSecurityEventRequest{ + Param: &SecurityBatchReportOrderSecurityEventParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SecurityBatchReportOrderSecurityEventRequest) Execute(accessToken *doudian_sdk.AccessToken) (*security_batchReportOrderSecurityEvent_response.SecurityBatchReportOrderSecurityEventResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &security_batchReportOrderSecurityEvent_response.SecurityBatchReportOrderSecurityEventResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SecurityBatchReportOrderSecurityEventRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SecurityBatchReportOrderSecurityEventRequest) GetParams() *SecurityBatchReportOrderSecurityEventParam { + return c.Param +} + +type IdentifyInfoListItem struct { + // 代表订单某个信息的字段名 (可直接取抖店开放平台返回的订单信息中的字段名) + Name string `json:"name"` + // 代表此字段在发送给第三方时是否为加密状态 + Encrypted bool `json:"encrypted"` +} +type EventsItem struct { + // 商户的账户ID,每个ISV下需要保证唯一。独立生成的账户唯一标识 + AccountId string `json:"account_id"` + // 选填 ,account_id 关联的店铺 ID 列表 + ShopIds []string `json:"shop_ids"` + // 订单 ids, 单次最大数量 50, 超过 50 需分批上传 + OrderIds []string `json:"order_ids"` + // 操作类型.支持操作类型: 1:view_order (查看订单) 2:view_order_list (查看订单列表) 3:download_order (下载订单) 4:download_order_list (下载订单列表) 5:print_order (打印订单) 6:print_order_list (打印订单列表) 7:export_order (导出订单) 8:export_order_list (导出订单列表) 9:delete_order (删除订单) + OperationType int32 `json:"operation_type"` + // 精确到秒的操作时间戳,格林威治时间,如1522555200 + OperateTime string `json:"operate_time"` + // isv请求url + Url string `json:"url"` + // 客户端IP,须为用户操作时真实客户端外网IP 若使用SLB,客户端IP添加在HTTP请求的X-Forwarded-For末尾;若使用CWAF,客户端IP放在 X-Real-Ip 属性 + Ip string `json:"ip"` + // 登录设备的mac地址 + Mac string `json:"mac"` + // 对外发送的订单信息明细格式 场景:商家来调解密接口,同时解密接口里面包含了敏感信息 + IdentifyInfoList []IdentifyInfoListItem `json:"identify_info_list"` + // iOS / Android / Windows 商户在什么设备上使用 ISV 的软件 + DeviceType string `json:"device_type"` + // 设备id,标识唯一设备 + DeviceId string `json:"device_id"` + // HTTP 请求头里referer对应的值,参考链接 + Referer string `json:"referer"` + // HTTP 请求头里的 userAgent对应的值 + UserAgent string `json:"user_agent"` + // orderIds 实际归属的店铺id + OrderRelatedShopId string `json:"order_related_shop_id"` + // main_account 服务商账号体系中的主账号、子账号 main_account/sub_account + AccountType string `json:"account_type"` + // HTTP 请求头里的 doudian-event-id 对应的值 + EventId string `json:"event_id"` +} +type SecurityBatchReportOrderSecurityEventParam struct { + // 订单事件类型 1:订单访问事件, 2:订单流出事件 + EventType int32 `json:"event_type"` + // 订单事件列表 + Events []EventsItem `json:"events"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/security_batchReportOrderSecurityEvent/response/security_batchReportOrderSecurityEvent_response.go b/platformapi/tiktok_shop/sdk-golang/api/security_batchReportOrderSecurityEvent/response/security_batchReportOrderSecurityEvent_response.go new file mode 100644 index 00000000..88b07d65 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/security_batchReportOrderSecurityEvent/response/security_batchReportOrderSecurityEvent_response.go @@ -0,0 +1,16 @@ +package security_batchReportOrderSecurityEvent_response + +type SecurityBatchReportOrderSecurityEventResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SecurityBatchReportOrderSecurityEventData `json:"data"` +} +type CustomError struct { + // 错误码 + ErrNo int64 `json:"ErrNo"` + // 错误原因 + ErrMsg string `json:"ErrMsg"` +} +type SecurityBatchReportOrderSecurityEventData struct { + // 错误信息 + CustomError *CustomError `json:"CustomError"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/shop_brandList/request/shop_brandList_request.go b/platformapi/tiktok_shop/sdk-golang/api/shop_brandList/request/shop_brandList_request.go new file mode 100644 index 00000000..61412eb7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/shop_brandList/request/shop_brandList_request.go @@ -0,0 +1,46 @@ +package shop_brandList_request + +import ( + "encoding/json" +) + +type ShopBrandListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ShopBrandListParam +} + +func (c *ShopBrandListRequest) GetUrlPath() string { + return "/shop/brandList" +} + +func New() *ShopBrandListRequest { + request := &ShopBrandListRequest{ + Param: &ShopBrandListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ShopBrandListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*shop_brandList_response.ShopBrandListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &shop_brandList_response.ShopBrandListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ShopBrandListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ShopBrandListRequest) GetParams() *ShopBrandListParam { + return c.Param +} + +type ShopBrandListParam struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/shop_brandList/response/shop_brandList_response.go b/platformapi/tiktok_shop/sdk-golang/api/shop_brandList/response/shop_brandList_response.go new file mode 100644 index 00000000..b37f5d35 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/shop_brandList/response/shop_brandList_response.go @@ -0,0 +1,20 @@ +package shop_brandList_response + +type ShopBrandListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ShopBrandListData `json:"data"` +} +type DataItem struct { + // 品牌ID + Id int64 `json:"id"` + // 品牌中文名 + BrandChineseName string `json:"brand_chinese_name"` + // 品牌英文名 + BrandEnglishName string `json:"brand_english_name"` + // 商标注册号 + BrandRegNum string `json:"brand_reg_num"` +} +type ShopBrandListData struct { + // 返回值 + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/shop_getShopCategory/request/shop_getShopCategory_request.go b/platformapi/tiktok_shop/sdk-golang/api/shop_getShopCategory/request/shop_getShopCategory_request.go new file mode 100644 index 00000000..bf7477c5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/shop_getShopCategory/request/shop_getShopCategory_request.go @@ -0,0 +1,48 @@ +package shop_getShopCategory_request + +import ( + "encoding/json" +) + +type ShopGetShopCategoryRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *ShopGetShopCategoryParam +} + +func (c *ShopGetShopCategoryRequest) GetUrlPath() string { + return "/shop/getShopCategory" +} + +func New() *ShopGetShopCategoryRequest { + request := &ShopGetShopCategoryRequest{ + Param: &ShopGetShopCategoryParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *ShopGetShopCategoryRequest) Execute(accessToken *doudian_sdk.AccessToken) (*shop_getShopCategory_response.ShopGetShopCategoryResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &shop_getShopCategory_response.ShopGetShopCategoryResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *ShopGetShopCategoryRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *ShopGetShopCategoryRequest) GetParams() *ShopGetShopCategoryParam { + return c.Param +} + +type ShopGetShopCategoryParam struct { + // 父类目id,根据父id可以获取子类目。首次请求传值为0 可以获取所有一级类目。循环调用接口获取最小层级类目id,根据响应参数判断is_leaf=true或false。is_leaf=true表示是叶子节点,获取最小层级类目id,is_leaf=false表示不是子节点,请求参数cid=上一次响应参数id,直到获取最小层级类目id。 + Cid int64 `json:"cid"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/shop_getShopCategory/response/shop_getShopCategory_response.go b/platformapi/tiktok_shop/sdk-golang/api/shop_getShopCategory/response/shop_getShopCategory_response.go new file mode 100644 index 00000000..c368c38f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/shop_getShopCategory/response/shop_getShopCategory_response.go @@ -0,0 +1,24 @@ +package shop_getShopCategory_response + +type ShopGetShopCategoryResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *ShopGetShopCategoryData `json:"data"` +} +type ShopGetShopCategoryData struct { + // 返回参数列表 + Data []DataItem `json:"data"` +} +type DataItem struct { + // 类目id,用于商品发布和更新,对应请求参数category_leaf_id字段 + Id int64 `json:"id"` + // 类目名称 + Name string `json:"name"` + // 类目级别:1,2,3级类目 + Level int64 `json:"level"` + // 类目父级父类目id + ParentId int64 `json:"parent_id"` + // 是否是叶子节点;is_leaf=true表示是叶子节点,最小层级类目id。is_leaf=false表示不是子节点,请求参数cid=上一次响应参数id,直到获取最小层级类目id + IsLeaf bool `json:"is_leaf"` + // 类目使用有效;enable=true有效,如果enable=false表示该类目已经失效,请勿使用 + Enable bool `json:"enable"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_detail/request/sku_detail_request.go b/platformapi/tiktok_shop/sdk-golang/api/sku_detail/request/sku_detail_request.go new file mode 100644 index 00000000..f1ed4388 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_detail/request/sku_detail_request.go @@ -0,0 +1,50 @@ +package sku_detail_request + +import ( + "encoding/json" +) + +type SkuDetailRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SkuDetailParam +} + +func (c *SkuDetailRequest) GetUrlPath() string { + return "/sku/detail" +} + +func New() *SkuDetailRequest { + request := &SkuDetailRequest{ + Param: &SkuDetailParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SkuDetailRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sku_detail_response.SkuDetailResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sku_detail_response.SkuDetailResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SkuDetailRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SkuDetailRequest) GetParams() *SkuDetailParam { + return c.Param +} + +type SkuDetailParam struct { + // sku id + SkuId int64 `json:"sku_id"` + // sku code + Code string `json:"code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_detail/response/sku_detail_response.go b/platformapi/tiktok_shop/sdk-golang/api/sku_detail/response/sku_detail_response.go new file mode 100644 index 00000000..e21c8169 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_detail/response/sku_detail_response.go @@ -0,0 +1,88 @@ +package sku_detail_response + +type SkuDetailResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SkuDetailData `json:"data"` +} +type CustomsReportInfo struct { + // 海关代码 + HsCode string `json:"hs_code"` + // 法定第一计量数量 + FirstMeasureQty float64 `json:"first_measure_qty"` + // 法定第二计量数量 + SecondMeasureQty float64 `json:"second_measure_qty"` + // 法定第一计量单位 + FirstMeasureUnit string `json:"first_measure_unit"` + // 法定第二计量单位 + SecondMeasureUnit string `json:"second_measure_unit"` + // 售卖单位 + Unit string `json:"unit"` + // 品名 + ReportName string `json:"report_name"` + // 品牌 + ReportBrandName string `json:"report_brand_name"` + // 用途 + Usage string `json:"usage"` + // 规格型号 + GModel string `json:"g_model"` + // 条形码 + BarCode string `json:"bar_code"` +} +type SkuDetailData struct { + // sku id + Id int64 `json:"id"` + // app_key + OpenUserId int64 `json:"open_user_id"` + // 外部的skuId + OutSkuId int64 `json:"out_sku_id"` + // 商品ID + ProductId int64 `json:"product_id"` + // 第一级子规格 + SpecDetailId1 int64 `json:"spec_detail_id1"` + // 第二级子规格 + SpecDetailId2 int64 `json:"spec_detail_id2"` + // 第三级子规格 + SpecDetailId3 int64 `json:"spec_detail_id3"` + // 第一级子规格名 + SpecDetailName1 string `json:"spec_detail_name1"` + // 第二级子规格名 + SpecDetailName2 string `json:"spec_detail_name2"` + // 第三级子规格名 + SpecDetailName3 string `json:"spec_detail_name3"` + // 海关申报要素 + CustomsReportInfo *CustomsReportInfo `json:"customs_report_info"` + // 价格 + Price int64 `json:"price"` + // 结算价格 + SettlementPrice int64 `json:"settlement_price"` + // 规格ID + SpecId int64 `json:"spec_id"` + // 创建时间 + CreateTime int64 `json:"create_time"` + // sku外部编码 + Code string `json:"code"` + // 0-普通 1-区域库存 + SkuType int64 `json:"sku_type"` + // 供应商ID + SupplierId string `json:"supplier_id"` + // sku_type=0时,表示库存数量 sku_type=1时,使用stock_map + StockNum int64 `json:"stock_num"` + // sku_type=0时,表示预占库存数量 sku_type=1时,使用prehold_stock_map + PreholdStockNum int64 `json:"prehold_stock_num"` + // 活动库存 + PromStockNum int64 `json:"prom_stock_num"` + // 阶梯库存 + StepStockNum int64 `json:"step_stock_num"` + // 预占阶梯库存 + PreholdStepStockNum int64 `json:"prehold_step_stock_num"` + // 活动阶梯库存 + PromStepStockNum int64 `json:"prom_step_stock_num"` + // 商品 ID 字符串 + ProductIdStr string `json:"product_id_str"` + // 是否套装,0 否,1 是 + IsSuit int32 `json:"is_suit"` + // 套装内数量 + SuitNum int64 `json:"suit_num"` + // 容量单位ml,酒类专有 + Volume int64 `json:"volume"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_editCode/request/sku_editCode_request.go b/platformapi/tiktok_shop/sdk-golang/api/sku_editCode/request/sku_editCode_request.go new file mode 100644 index 00000000..c3d44f71 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_editCode/request/sku_editCode_request.go @@ -0,0 +1,56 @@ +package sku_editCode_request + +import ( + "encoding/json" +) + +type SkuEditCodeRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SkuEditCodeParam +} + +func (c *SkuEditCodeRequest) GetUrlPath() string { + return "/sku/editCode" +} + +func New() *SkuEditCodeRequest { + request := &SkuEditCodeRequest{ + Param: &SkuEditCodeParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SkuEditCodeRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sku_editCode_response.SkuEditCodeResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sku_editCode_response.SkuEditCodeResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SkuEditCodeRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SkuEditCodeRequest) GetParams() *SkuEditCodeParam { + return c.Param +} + +type SkuEditCodeParam struct { + // 编码 + Code string `json:"code"` + // skuid + SkuId int64 `json:"sku_id"` + // 外部skuid + OutSkuId int64 `json:"out_sku_id"` + // 商品id + ProductId int64 `json:"product_id"` + // 外部商品id + OutProductId int64 `json:"out_product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_editCode/response/sku_editCode_response.go b/platformapi/tiktok_shop/sdk-golang/api/sku_editCode/response/sku_editCode_response.go new file mode 100644 index 00000000..908e4668 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_editCode/response/sku_editCode_response.go @@ -0,0 +1,8 @@ +package sku_editCode_response + +type SkuEditCodeResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SkuEditCodeData `json:"data"` +} +type SkuEditCodeData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request/sku_editPrice_request.go b/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request/sku_editPrice_request.go new file mode 100644 index 00000000..65778b46 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/request/sku_editPrice_request.go @@ -0,0 +1,58 @@ +package sku_editPrice_request + +import ( + "encoding/json" +) + +type SkuEditPriceRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SkuEditPriceParam +} + +func (c *SkuEditPriceRequest) GetUrlPath() string { + return "/sku/editPrice" +} + +func New() *SkuEditPriceRequest { + request := &SkuEditPriceRequest{ + Param: &SkuEditPriceParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SkuEditPriceRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sku_editPrice_response.SkuEditPriceResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sku_editPrice_response.SkuEditPriceResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SkuEditPriceRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SkuEditPriceRequest) GetParams() *SkuEditPriceParam { + return c.Param +} + +type SkuEditPriceParam struct { + // 售价 (单位 分) + Price int64 `json:"price"` + // sku编码 + Code string `json:"code"` + // skuid + SkuId int64 `json:"sku_id"` + // 外部skuid + OutSkuId int64 `json:"out_sku_id"` + // 商品id + ProductId int64 `json:"product_id"` + // 外部商品id + OutProductId int64 `json:"out_product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/response/sku_editPrice_response.go b/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/response/sku_editPrice_response.go new file mode 100644 index 00000000..664b21c4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_editPrice/response/sku_editPrice_response.go @@ -0,0 +1,8 @@ +package sku_editPrice_response + +type SkuEditPriceResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SkuEditPriceData `json:"data"` +} +type SkuEditPriceData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_list/request/sku_list_request.go b/platformapi/tiktok_shop/sdk-golang/api/sku_list/request/sku_list_request.go new file mode 100644 index 00000000..1aaaac40 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_list/request/sku_list_request.go @@ -0,0 +1,50 @@ +package sku_list_request + +import ( + "encoding/json" +) + +type SkuListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SkuListParam +} + +func (c *SkuListRequest) GetUrlPath() string { + return "/sku/list" +} + +func New() *SkuListRequest { + request := &SkuListRequest{ + Param: &SkuListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SkuListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sku_list_response.SkuListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sku_list_response.SkuListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SkuListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SkuListRequest) GetParams() *SkuListParam { + return c.Param +} + +type SkuListParam struct { + // 商品ID;抖店系统生成。 + ProductId int64 `json:"product_id"` + // 外部商品ID;商家创建商品时自定义。 + OutProductId int64 `json:"out_product_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_list/response/sku_list_response.go b/platformapi/tiktok_shop/sdk-golang/api/sku_list/response/sku_list_response.go new file mode 100644 index 00000000..1d2a339b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_list/response/sku_list_response.go @@ -0,0 +1,110 @@ +package sku_list_response + +type SkuListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SkuListData `json:"data"` +} +type CustomsReportInfo struct { + // 海关代码 + HsCode string `json:"hs_code"` + // 法定第一计量数量 + FirstMeasureQty float64 `json:"first_measure_qty"` + // 法定第二计量数量 + SecondMeasureQty float64 `json:"second_measure_qty"` + // 法定第一计量单位 + FirstMeasureUnit string `json:"first_measure_unit"` + // 法定第二计量单位 + SecondMeasureUnit string `json:"second_measure_unit"` + // 售卖单位 + Unit string `json:"unit"` + // 品名 + ReportName string `json:"report_name"` + // 品牌 + ReportBrandName string `json:"report_brand_name"` + // 用途 + Usage string `json:"usage"` + // 规格型号 + GModel string `json:"g_model"` + // 条形码 + BarCode string `json:"bar_code"` +} +type ShipRuleMapItem struct { + // 0 现货模式 1 全款预售模式 + PresellType int64 `json:"presell_type"` + // 发货延迟时间;0表示当天发货; + DelayDay int64 `json:"delay_day"` + // 全款预售截止时间 presell_type = 1时有用 + PresellEndTime int64 `json:"presell_end_time"` +} +type DataItem struct { + // 商品sku_id;抖店系统生成。 + Id int64 `json:"id"` + // app_key + OpenUserId int64 `json:"open_user_id"` + // 外部的skuId;商家自定义;未设置返回为0。 + OutSkuId int64 `json:"out_sku_id"` + // 商品ID;抖店系统生成。 + ProductId int64 `json:"product_id"` + // 第一级子规格 + SpecDetailId1 int64 `json:"spec_detail_id1"` + // 第二级子规格 + SpecDetailId2 int64 `json:"spec_detail_id2"` + // 第三级子规格 + SpecDetailId3 int64 `json:"spec_detail_id3"` + // 第一级子规格名 + SpecDetailName1 string `json:"spec_detail_name1"` + // 第二级子规格名 + SpecDetailName2 string `json:"spec_detail_name2"` + // 第三级子规格名 + SpecDetailName3 string `json:"spec_detail_name3"` + // 海关申报要素 + CustomsReportInfo *CustomsReportInfo `json:"customs_report_info"` + // 商品价格,单位:分 + Price int64 `json:"price"` + // 结算价格,【已废弃】价格字段是price + SettlementPrice int64 `json:"settlement_price"` + // 规格ID + SpecId int64 `json:"spec_id"` + // 创建时间,时间戳:单位秒; + CreateTime int64 `json:"create_time"` + // sku外部编码 + Code string `json:"code"` + // 库存类型;0-普通;1-区域库存;10-阶梯库存; + SkuType int64 `json:"sku_type"` + // 供应商ID + SupplierId string `json:"supplier_id"` + // sku_type=0时,表示普通库存数量 ;sku_type=1时,使用stock_map,表示区域库存数量 + StockNum int64 `json:"stock_num"` + // sku_type=0时,表示预占库存数量; sku_type=1时,表示区域库存数量,使用prehold_stock_map + PreholdStockNum int64 `json:"prehold_stock_num"` + // 活动库存 + PromStockNum int64 `json:"prom_stock_num"` + // 阶梯库存 + StepStockNum int64 `json:"step_stock_num"` + // 预占阶梯库存 + PreholdStepStockNum int64 `json:"prehold_step_stock_num"` + // 活动阶梯库存 + PromStepStockNum int64 `json:"prom_step_stock_num"` + // 如果sku_type=0,为空 如果sku_type=1,则为区域仓库存映射表,key为out_warehouse_id(区域仓库id使用【/warehouse/list】查询),value为库存 + StockMap map[string]int64 `json:"stock_map"` + // 如果sku_type=0,为空 如果sku_type=1,则为区域仓库存映射表,key为out_warehouse_id(区域仓库id使用【/warehouse/list】查询),value为占用库存 + PreholdStockMap map[string]int64 `json:"prehold_stock_map"` + // 商品 ID字符串类型 + ProductIdStr string `json:"product_id_str"` + // 如果sku_type=0,为空 如果sku_type=1,则为区域仓库存映射表,key为out_warehouse_id(区域仓库id使用【/warehouse/list】查询),value为sku 在对应仓中的发货时效 + ShipRuleMap map[string]ShipRuleMapItem `json:"ship_rule_map"` + // 海南免税:是否套装,0 否,1 是 + IsSuit int32 `json:"is_suit"` + // 海南免税:套装数量 + SuitNum int64 `json:"suit_num"` + // 海南免税:净含量 + Volume int64 `json:"volume"` + // 库存模型V2新增 普通库存 非活动可售 + NormalStockNum int64 `json:"normal_stock_num"` + // 库存模型V2新增 渠道库存 + ChannelStockNum int64 `json:"channel_stock_num"` +} +type SkuListData struct { + // sku列表 + Data []DataItem `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_stockNum/request/sku_stockNum_request.go b/platformapi/tiktok_shop/sdk-golang/api/sku_stockNum/request/sku_stockNum_request.go new file mode 100644 index 00000000..0bf73ce7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_stockNum/request/sku_stockNum_request.go @@ -0,0 +1,52 @@ +package sku_stockNum_request + +import ( + "encoding/json" +) + +type SkuStockNumRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SkuStockNumParam +} + +func (c *SkuStockNumRequest) GetUrlPath() string { + return "/sku/stockNum" +} + +func New() *SkuStockNumRequest { + request := &SkuStockNumRequest{ + Param: &SkuStockNumParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SkuStockNumRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sku_stockNum_response.SkuStockNumResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sku_stockNum_response.SkuStockNumResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SkuStockNumRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SkuStockNumRequest) GetParams() *SkuStockNumParam { + return c.Param +} + +type SkuStockNumParam struct { + // 商品规格id,店铺商品id下唯一,抖店平台生成 + SkuId int64 `json:"sku_id"` + // sku商家编码,对应抖店后台商品sku商家编码。外部开发者自定义商品规格id,会校验在店铺下唯一性 + Code string `json:"code"` + // 仓库编码(供应商编码) + OutWarehouseId string `json:"out_warehouse_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_stockNum/response/sku_stockNum_response.go b/platformapi/tiktok_shop/sdk-golang/api/sku_stockNum/response/sku_stockNum_response.go new file mode 100644 index 00000000..fcd2674f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_stockNum/response/sku_stockNum_response.go @@ -0,0 +1,40 @@ +package sku_stockNum_response + +type SkuStockNumResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SkuStockNumData `json:"data"` +} +type ShipRuleMapItem struct { +} +type SkuStockNumData struct { + // 商品规格id,店铺商品id下唯一,抖店平台生成 + SkuId int64 `json:"sku_id"` + // 外部开发者自定义商品规格id,会校验再店铺下唯一性 + OutSkuId int64 `json:"out_sku_id"` + // sku商家编码,对应抖店后台商品sku商家编码 + Code string `json:"code"` + // sku库存类型,0-普通库存;1-区域库存;10-阶梯库存; + SkuType int64 `json:"sku_type"` + // 商品规格库存;如果sku_type=0,表示全国库存; 如果sku_type=1,且入参有out_warehouse_id,则表示该仓库的库存; 如果sku_type=1,且入参无out_warehouse_id,则为空; + StockNum int64 `json:"stock_num"` + // 占用库存 + PreholdStockNum int64 `json:"prehold_stock_num"` + // 活动库存 + PromStockNum int64 `json:"prom_stock_num"` + // 阶梯库存 + StepStockNum int64 `json:"step_stock_num"` + // 阶梯占用库存 + PreholdStepStockNum int64 `json:"prehold_step_stock_num"` + // 活动阶梯库存 + PromStepStockNum int64 `json:"prom_step_stock_num"` + // 如果sku_type=0,为空 如果sku_type=1,则为区域仓库存映射表,key为out_warehouse_id,value为库存 + StockNumMap map[string]int64 `json:"stock_num_map"` + // 如果sku_type=0,为空 如果sku_type=1,则为区域仓库存映射表,key为out_warehouse_id,value为占用库存 + PreholdStockMap map[string]int64 `json:"prehold_stock_map"` + // 如果sku_type=0,为空 如果sku_type=1,则为区域仓库存映射表,key为out_warehouse_id,value为sku在仓中的发货时效 + ShipRuleMap map[string]ShipRuleMapItem `json:"ship_rule_map"` + // 普通库存,非活动可售 + NormalStockNum int64 `json:"normal_stock_num"` + // 渠道库存 + ChannelStockNum int64 `json:"channel_stock_num"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request/sku_syncStock_request.go b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request/sku_syncStock_request.go new file mode 100644 index 00000000..45b28c6f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/request/sku_syncStock_request.go @@ -0,0 +1,68 @@ +package sku_syncStock_request + +import ( + "encoding/json" +) + +type SkuSyncStockRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SkuSyncStockParam +} + +func (c *SkuSyncStockRequest) GetUrlPath() string { + return "/sku/syncStock" +} + +func New() *SkuSyncStockRequest { + request := &SkuSyncStockRequest{ + Param: &SkuSyncStockParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SkuSyncStockRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sku_syncStock_response.SkuSyncStockResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sku_syncStock_response.SkuSyncStockResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SkuSyncStockRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SkuSyncStockRequest) GetParams() *SkuSyncStockParam { + return c.Param +} + +type SkuSyncStockParam struct { + // sku编码 + Code string `json:"code"` + // 规格id;抖店系统生成,商品id下唯一。 + SkuId int64 `json:"sku_id"` + // 外部skuid,开发者在创建或更新商品时设置。 + OutSkuId int64 `json:"out_sku_id"` + // 商品ID,抖店系统生成,店铺下唯一;长度19位。 + ProductId int64 `json:"product_id"` + // 外部商品id;开发者在创建或更新商品时设置的。 + OutProductId int64 `json:"out_product_id"` + // 外部仓库id编码,开发者自定义;如传入传值表示更新区域库存,不传默认更新普通库存。可以使用【/warehouse/list】接口响应参数【out_warehouse_id】字段获取。超市小时达店铺类型,需传入store_id字段,store_id可以使用【/shop/batchCreateStore】创建成功后获取 + OutWarehouseId string `json:"out_warehouse_id"` + // 供应商ID + SupplierId string `json:"supplier_id"` + // 库存更新方式;true-增量更新,同时idempotent_id字段必填;false-全量更新;默认为false + Incremental bool `json:"incremental"` + // 幂等ID,当incremental=true时该参数必传 + IdempotentId string `json:"idempotent_id"` + // 库存值;可以设置为0; + StockNum int64 `json:"stock_num"` + // 阶梯库存 + StepStockNum int64 `json:"step_stock_num"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/response/sku_syncStock_response.go b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/response/sku_syncStock_response.go new file mode 100644 index 00000000..8a8f946c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStock/response/sku_syncStock_response.go @@ -0,0 +1,8 @@ +package sku_syncStock_response + +type SkuSyncStockResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SkuSyncStockData `json:"data"` +} +type SkuSyncStockData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_syncStockBatch/request/sku_syncStockBatch_request.go b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStockBatch/request/sku_syncStockBatch_request.go new file mode 100644 index 00000000..3901ca82 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStockBatch/request/sku_syncStockBatch_request.go @@ -0,0 +1,74 @@ +package sku_syncStockBatch_request + +import ( + "encoding/json" +) + +type SkuSyncStockBatchRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SkuSyncStockBatchParam +} + +func (c *SkuSyncStockBatchRequest) GetUrlPath() string { + return "/sku/syncStockBatch" +} + +func New() *SkuSyncStockBatchRequest { + request := &SkuSyncStockBatchRequest{ + Param: &SkuSyncStockBatchParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SkuSyncStockBatchRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sku_syncStockBatch_response.SkuSyncStockBatchResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sku_syncStockBatch_response.SkuSyncStockBatchResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SkuSyncStockBatchRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SkuSyncStockBatchRequest) GetParams() *SkuSyncStockBatchParam { + return c.Param +} + +type StockMapItem struct { + // 仓id,超市小时达子品传storeId + OutWarehouseId string `json:"out_warehouse_id"` + // 库存数量 + StockNum int64 `json:"stock_num"` +} +type SkuSyncListItem struct { + // skuid + SkuId int64 `json:"sku_id"` + // 库存类型:0普通库存,1区域库存,10阶梯库存。 超市小时达子品传区域库存 + SkuType int64 `json:"sku_type"` + // 普通库存数量 + StockNum int64 `json:"stock_num"` + // 阶梯库存数量 + StepStockNum int64 `json:"step_stock_num"` + // 区域库存配置 + StockMap []StockMapItem `json:"stock_map"` + // 供应商ID + SupplierId string `json:"supplier_id"` +} +type SkuSyncStockBatchParam struct { + // 商品ID,整型格式 + ProductId int64 `json:"product_id"` + // 幂等ID,仅incremental=true时有用 + IdempotentId string `json:"idempotent_id"` + // true表示增量库存,false表示全量库存,默认为false + Incremental bool `json:"incremental"` + // 需要批量提交的skuid及对应的库存和仓 + SkuSyncList []SkuSyncListItem `json:"sku_sync_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sku_syncStockBatch/response/sku_syncStockBatch_response.go b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStockBatch/response/sku_syncStockBatch_response.go new file mode 100644 index 00000000..c369d598 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sku_syncStockBatch/response/sku_syncStockBatch_response.go @@ -0,0 +1,8 @@ +package sku_syncStockBatch_response + +type SkuSyncStockBatchResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SkuSyncStockBatchData `json:"data"` +} +type SkuSyncStockBatchData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_batchSend/request/sms_batchSend_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_batchSend/request/sms_batchSend_request.go new file mode 100644 index 00000000..fce62758 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_batchSend/request/sms_batchSend_request.go @@ -0,0 +1,64 @@ +package sms_batchSend_request + +import ( + "encoding/json" +) + +type SmsBatchSendRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsBatchSendParam +} + +func (c *SmsBatchSendRequest) GetUrlPath() string { + return "/sms/batchSend" +} + +func New() *SmsBatchSendRequest { + request := &SmsBatchSendRequest{ + Param: &SmsBatchSendParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsBatchSendRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_batchSend_response.SmsBatchSendResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_batchSend_response.SmsBatchSendResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsBatchSendRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsBatchSendRequest) GetParams() *SmsBatchSendParam { + return c.Param +} + +type SmsMessageListItem struct { + // 既支持手机号明文,又支持手机号密文 + PostTel string `json:"post_tel"` + // 参数 + TemplateParam string `json:"template_param"` +} +type SmsBatchSendParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信签名 + Sign string `json:"sign"` + // 短信列表 + SmsMessageList []SmsMessageListItem `json:"sms_message_list"` + // 短信模板id + TemplateId string `json:"template_id"` + // 透传字段,回执的时候原样返回给调用方,最大长度512字符 + Tag string `json:"tag"` + // 用户自定义扩展码,仅当允许自定义扩展码的时候生效 + UserExtCode string `json:"user_ext_code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_batchSend/response/sms_batchSend_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_batchSend/response/sms_batchSend_response.go new file mode 100644 index 00000000..53c228e5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_batchSend/response/sms_batchSend_response.go @@ -0,0 +1,18 @@ +package sms_batchSend_response + +type SmsBatchSendResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsBatchSendData `json:"data"` +} +type SmsBatchSendData struct { + // 发送结果列表 + SendResultList []SendResultListItem `json:"send_result_list"` +} +type SendResultListItem struct { + // 错误码,0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` + // 消息的唯一标识,可以用于查询短信到达等 + MessageId string `json:"message_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_public_template/request/sms_public_template_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_public_template/request/sms_public_template_request.go new file mode 100644 index 00000000..d954d36c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_public_template/request/sms_public_template_request.go @@ -0,0 +1,52 @@ +package sms_public_template_request + +import ( + "encoding/json" +) + +type SmsPublicTemplateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsPublicTemplateParam +} + +func (c *SmsPublicTemplateRequest) GetUrlPath() string { + return "/sms/public/template" +} + +func New() *SmsPublicTemplateRequest { + request := &SmsPublicTemplateRequest{ + Param: &SmsPublicTemplateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsPublicTemplateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_public_template_response.SmsPublicTemplateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_public_template_response.SmsPublicTemplateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsPublicTemplateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsPublicTemplateRequest) GetParams() *SmsPublicTemplateParam { + return c.Param +} + +type SmsPublicTemplateParam struct { + // 每页数据大小 + Size int64 `json:"size"` + // 第几页,从0开始 + Page int64 `json:"page"` + // 模版id + TemplateId string `json:"template_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_public_template/response/sms_public_template_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_public_template/response/sms_public_template_response.go new file mode 100644 index 00000000..df2c45fb --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_public_template/response/sms_public_template_response.go @@ -0,0 +1,22 @@ +package sms_public_template_response + +type SmsPublicTemplateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsPublicTemplateData `json:"data"` +} +type PublicTemplateListItem struct { + // 模版id + TemplateId string `json:"template_id"` + // 模版名称 + TemplateName string `json:"template_name"` + // 模版内容 + TemplateContent string `json:"template_content"` + // 模版类型 + ChannelType string `json:"channel_type"` +} +type SmsPublicTemplateData struct { + // 数据总量 + Total int64 `json:"total"` + // 列表页数据 + PublicTemplateList []PublicTemplateListItem `json:"public_template_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_send/request/sms_send_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_send/request/sms_send_request.go new file mode 100644 index 00000000..5141f3c8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_send/request/sms_send_request.go @@ -0,0 +1,60 @@ +package sms_send_request + +import ( + "encoding/json" +) + +type SmsSendRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsSendParam +} + +func (c *SmsSendRequest) GetUrlPath() string { + return "/sms/send" +} + +func New() *SmsSendRequest { + request := &SmsSendRequest{ + Param: &SmsSendParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsSendRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_send_response.SmsSendResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_send_response.SmsSendResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsSendRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsSendRequest) GetParams() *SmsSendParam { + return c.Param +} + +type SmsSendParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 签名 + Sign string `json:"sign"` + // 短信模版id + TemplateId string `json:"template_id"` + // 短信模板占位符要替换的值 + TemplateParam string `json:"template_param"` + // 透传字段,回执的时候原样返回给调用方,最大长度512字符 + Tag string `json:"tag"` + // 既支持手机号明文,又支持手机号密文 + PostTel string `json:"post_tel"` + // 用户自定义扩展码,仅当允许自定义扩展码的时候生效 + UserExtCode string `json:"user_ext_code"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_send/response/sms_send_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_send/response/sms_send_response.go new file mode 100644 index 00000000..9d9375e4 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_send/response/sms_send_response.go @@ -0,0 +1,14 @@ +package sms_send_response + +type SmsSendResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsSendData `json:"data"` +} +type SmsSendData struct { + // 错误码,0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` + // 消息的唯一标识,可以用于查询短信到达等 + MessageId string `json:"message_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sendResult/request/sms_sendResult_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sendResult/request/sms_sendResult_request.go new file mode 100644 index 00000000..d3f73aef --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sendResult/request/sms_sendResult_request.go @@ -0,0 +1,66 @@ +package sms_sendResult_request + +import ( + "encoding/json" +) + +type SmsSendResultRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsSendResultParam +} + +func (c *SmsSendResultRequest) GetUrlPath() string { + return "/sms/sendResult" +} + +func New() *SmsSendResultRequest { + request := &SmsSendResultRequest{ + Param: &SmsSendResultParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsSendResultRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_sendResult_response.SmsSendResultResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_sendResult_response.SmsSendResultResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsSendResultRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsSendResultRequest) GetParams() *SmsSendResultParam { + return c.Param +} + +type SmsSendResultParam struct { + // 开始时间-时间戳,单位秒 + FromTime int64 `json:"from_time"` + // 结束时间-时间戳,单位秒 + ToTime int64 `json:"to_time"` + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 模版id + TemplateId string `json:"template_id"` + // 发送状态: 未回执:1 发送失败:2 发送成功:3 + Status int64 `json:"status"` + // 查询结果大小,默认是10 + Size int64 `json:"size"` + // 查询结果页数,从0开始,默认是0 + Page int64 `json:"page"` + // 签名内容 + Sign string `json:"sign"` + // 既支持明文,又支持密文 + PostTel string `json:"post_tel"` + // 消息的唯一标识,可以用于查询短信到达等 + MessageId string `json:"message_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sendResult/response/sms_sendResult_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sendResult/response/sms_sendResult_response.go new file mode 100644 index 00000000..59f89ed2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sendResult/response/sms_sendResult_response.go @@ -0,0 +1,30 @@ +package sms_sendResult_response + +type SmsSendResultResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsSendResultData `json:"data"` +} +type SmsSendResultListItem struct { + // 发送时间-时间戳,单位秒 + SendTime int64 `json:"send_time"` + // 短信内容 + SmsContent string `json:"sms_content"` + // 未回执:1 发送失败:2 发送成功:3 + Status int64 `json:"status"` + // 计费条数,如果短信过长,会分多次计费 + Count int64 `json:"count"` + // 错误码 + Code int64 `json:"code"` + // 错误说明 + Message string `json:"message"` + // 消息ID + MessageId string `json:"message_id"` + // 透传字段,回执的时候原样返回给调用方。 + Tag string `json:"tag"` +} +type SmsSendResultData struct { + // 数量 + Total int64 `json:"total"` + // 短信结果列表 + SmsSendResultList []SmsSendResultListItem `json:"sms_send_result_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply/request/sms_sign_apply_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply/request/sms_sign_apply_request.go new file mode 100644 index 00000000..6b29e58b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply/request/sms_sign_apply_request.go @@ -0,0 +1,50 @@ +package sms_sign_apply_request + +import ( + "encoding/json" +) + +type SmsSignApplyRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsSignApplyParam +} + +func (c *SmsSignApplyRequest) GetUrlPath() string { + return "/sms/sign/apply" +} + +func New() *SmsSignApplyRequest { + request := &SmsSignApplyRequest{ + Param: &SmsSignApplyParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsSignApplyRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_sign_apply_response.SmsSignApplyResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_sign_apply_response.SmsSignApplyResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsSignApplyRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsSignApplyRequest) GetParams() *SmsSignApplyParam { + return c.Param +} + +type SmsSignApplyParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 签名 + Sign string `json:"sign"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply/response/sms_sign_apply_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply/response/sms_sign_apply_response.go new file mode 100644 index 00000000..0b9f4a6e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply/response/sms_sign_apply_response.go @@ -0,0 +1,20 @@ +package sms_sign_apply_response + +type SmsSignApplyResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsSignApplyData `json:"data"` +} +type SmsSignApplyData struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信签名申请单id + SmsSignApplyId string `json:"sms_sign_apply_id"` + // 是否成功 0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` + // 签名 + Sign string `json:"sign"` + // 审核状态: 1:审核中 2:未通过 3:已开通 4:已关闭 5:免审核(店铺名和签名完全一致时返回) + Status int64 `json:"status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_list/request/sms_sign_apply_list_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_list/request/sms_sign_apply_list_request.go new file mode 100644 index 00000000..e2526230 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_list/request/sms_sign_apply_list_request.go @@ -0,0 +1,56 @@ +package sms_sign_apply_list_request + +import ( + "encoding/json" +) + +type SmsSignApplyListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsSignApplyListParam +} + +func (c *SmsSignApplyListRequest) GetUrlPath() string { + return "/sms/sign/apply/list" +} + +func New() *SmsSignApplyListRequest { + request := &SmsSignApplyListRequest{ + Param: &SmsSignApplyListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsSignApplyListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_sign_apply_list_response.SmsSignApplyListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_sign_apply_list_response.SmsSignApplyListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsSignApplyListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsSignApplyListRequest) GetParams() *SmsSignApplyListParam { + return c.Param +} + +type SmsSignApplyListParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 搜索 + Like string `json:"like"` + // 页码,默认0 + Page int64 `json:"page"` + // 每页大小,默认10 + Size int64 `json:"size"` + // 申请单id + SmsSignApplyId string `json:"sms_sign_apply_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_list/response/sms_sign_apply_list_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_list/response/sms_sign_apply_list_response.go new file mode 100644 index 00000000..e41f82bf --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_list/response/sms_sign_apply_list_response.go @@ -0,0 +1,24 @@ +package sms_sign_apply_list_response + +type SmsSignApplyListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsSignApplyListData `json:"data"` +} +type ApplyListItem struct { + // 申请单id + SmsSignApplyId string `json:"sms_sign_apply_id"` + // 签名 + Sign string `json:"sign"` + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 审核状态: 1:审核中 2:未通过 3:已开通 4:已关闭 5:免审核(店铺名和签名完全一致时返回) + Status int64 `json:"status"` + // 说明 + StatusRemark string `json:"status_remark"` +} +type SmsSignApplyListData struct { + // 总数 + Total int64 `json:"total"` + // 短信签名申请单列表 + ApplyList []ApplyListItem `json:"apply_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_revoke/request/sms_sign_apply_revoke_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_revoke/request/sms_sign_apply_revoke_request.go new file mode 100644 index 00000000..e5d76c47 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_revoke/request/sms_sign_apply_revoke_request.go @@ -0,0 +1,50 @@ +package sms_sign_apply_revoke_request + +import ( + "encoding/json" +) + +type SmsSignApplyRevokeRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsSignApplyRevokeParam +} + +func (c *SmsSignApplyRevokeRequest) GetUrlPath() string { + return "/sms/sign/apply/revoke" +} + +func New() *SmsSignApplyRevokeRequest { + request := &SmsSignApplyRevokeRequest{ + Param: &SmsSignApplyRevokeParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsSignApplyRevokeRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_sign_apply_revoke_response.SmsSignApplyRevokeResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_sign_apply_revoke_response.SmsSignApplyRevokeResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsSignApplyRevokeRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsSignApplyRevokeRequest) GetParams() *SmsSignApplyRevokeParam { + return c.Param +} + +type SmsSignApplyRevokeParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 申请单id + SmsSignApplyId string `json:"sms_sign_apply_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_revoke/response/sms_sign_apply_revoke_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_revoke/response/sms_sign_apply_revoke_response.go new file mode 100644 index 00000000..31c7a705 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_apply_revoke/response/sms_sign_apply_revoke_response.go @@ -0,0 +1,12 @@ +package sms_sign_apply_revoke_response + +type SmsSignApplyRevokeResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsSignApplyRevokeData `json:"data"` +} +type SmsSignApplyRevokeData struct { + // 是否成功 0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_delete/request/sms_sign_delete_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_delete/request/sms_sign_delete_request.go new file mode 100644 index 00000000..44ec703e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_delete/request/sms_sign_delete_request.go @@ -0,0 +1,50 @@ +package sms_sign_delete_request + +import ( + "encoding/json" +) + +type SmsSignDeleteRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsSignDeleteParam +} + +func (c *SmsSignDeleteRequest) GetUrlPath() string { + return "/sms/sign/delete" +} + +func New() *SmsSignDeleteRequest { + request := &SmsSignDeleteRequest{ + Param: &SmsSignDeleteParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsSignDeleteRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_sign_delete_response.SmsSignDeleteResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_sign_delete_response.SmsSignDeleteResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsSignDeleteRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsSignDeleteRequest) GetParams() *SmsSignDeleteParam { + return c.Param +} + +type SmsSignDeleteParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 签名 + Sign string `json:"sign"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_delete/response/sms_sign_delete_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_delete/response/sms_sign_delete_response.go new file mode 100644 index 00000000..36b4ac03 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_delete/response/sms_sign_delete_response.go @@ -0,0 +1,12 @@ +package sms_sign_delete_response + +type SmsSignDeleteResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsSignDeleteData `json:"data"` +} +type SmsSignDeleteData struct { + // 是否成功 0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_search/request/sms_sign_search_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_search/request/sms_sign_search_request.go new file mode 100644 index 00000000..02c49bba --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_search/request/sms_sign_search_request.go @@ -0,0 +1,54 @@ +package sms_sign_search_request + +import ( + "encoding/json" +) + +type SmsSignSearchRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsSignSearchParam +} + +func (c *SmsSignSearchRequest) GetUrlPath() string { + return "/sms/sign/search" +} + +func New() *SmsSignSearchRequest { + request := &SmsSignSearchRequest{ + Param: &SmsSignSearchParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsSignSearchRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_sign_search_response.SmsSignSearchResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_sign_search_response.SmsSignSearchResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsSignSearchRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsSignSearchRequest) GetParams() *SmsSignSearchParam { + return c.Param +} + +type SmsSignSearchParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 模糊搜索串 + Like string `json:"like"` + // 每页大小,默认10 + Size int64 `json:"size"` + // 页码,默认0 + Page int64 `json:"page"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_sign_search/response/sms_sign_search_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_search/response/sms_sign_search_response.go new file mode 100644 index 00000000..fe5d1c4a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_sign_search/response/sms_sign_search_response.go @@ -0,0 +1,18 @@ +package sms_sign_search_response + +type SmsSignSearchResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsSignSearchData `json:"data"` +} +type SignSearchListItem struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 签名 + Sign string `json:"sign"` +} +type SmsSignSearchData struct { + // 签名列表 + SignSearchList []SignSearchListItem `json:"sign_search_list"` + // 总数 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply/request/sms_template_apply_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply/request/sms_template_apply_request.go new file mode 100644 index 00000000..d98ba55f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply/request/sms_template_apply_request.go @@ -0,0 +1,54 @@ +package sms_template_apply_request + +import ( + "encoding/json" +) + +type SmsTemplateApplyRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsTemplateApplyParam +} + +func (c *SmsTemplateApplyRequest) GetUrlPath() string { + return "/sms/template/apply" +} + +func New() *SmsTemplateApplyRequest { + request := &SmsTemplateApplyRequest{ + Param: &SmsTemplateApplyParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsTemplateApplyRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_template_apply_response.SmsTemplateApplyResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_template_apply_response.SmsTemplateApplyResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsTemplateApplyRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsTemplateApplyRequest) GetParams() *SmsTemplateApplyParam { + return c.Param +} + +type SmsTemplateApplyParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // CN_NTC 国内通知短信 CN_MKT 国内营销短信(营销短信将自带退订功能) CN_OTP 国内验证码 + TemplateType string `json:"template_type"` + // 短信模板名称 + TemplateName string `json:"template_name"` + // 短信模板内容: 英文短信:整条短信(包括签名+模板+变量中的内容)最多支持140个英文字符,超出将按140个字符截取为多条短信进行发送,费用按截取的条数收费; 非英文短信:整条短信(包括签名+模板+变量中的内容)最多支持70字符,超出将按70个字符截取为多条短信进行发送,费用按截取的条数收费; + TemplateContent string `json:"template_content"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply/response/sms_template_apply_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply/response/sms_template_apply_response.go new file mode 100644 index 00000000..a78df119 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply/response/sms_template_apply_response.go @@ -0,0 +1,22 @@ +package sms_template_apply_response + +type SmsTemplateApplyResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsTemplateApplyData `json:"data"` +} +type SmsTemplateApplyData struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信模板内容: 英文短信:最多支持140个英文字符,超出将按140个字符截取为多条短信进行发送,费用按截取的条数收费; 非英文短信:最多支持140个英文字符,超出将按140个字符截取为多条短信进行发送,费用按截取的条数收费; + TemplateContent string `json:"template_content"` + // 短信模版名称 + TemplateName string `json:"template_name"` + // 模版id + SmsTemplateId string `json:"sms_template_id"` + // 短信模板申请单id + SmsTemplateApplyId string `json:"sms_template_apply_id"` + // 是否成功 0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply_list/request/sms_template_apply_list_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply_list/request/sms_template_apply_list_request.go new file mode 100644 index 00000000..517381c7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply_list/request/sms_template_apply_list_request.go @@ -0,0 +1,58 @@ +package sms_template_apply_list_request + +import ( + "encoding/json" +) + +type SmsTemplateApplyListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsTemplateApplyListParam +} + +func (c *SmsTemplateApplyListRequest) GetUrlPath() string { + return "/sms/template/apply/list" +} + +func New() *SmsTemplateApplyListRequest { + request := &SmsTemplateApplyListRequest{ + Param: &SmsTemplateApplyListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsTemplateApplyListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_template_apply_list_response.SmsTemplateApplyListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_template_apply_list_response.SmsTemplateApplyListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsTemplateApplyListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsTemplateApplyListRequest) GetParams() *SmsTemplateApplyListParam { + return c.Param +} + +type SmsTemplateApplyListParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信模板内容: 英文短信:整条短信(包括签名+模板+变量中的内容)最多支持140个英文字符,超出将按140个字符截取为多条短信进行发送,费用按截取的条数收费; 非英文短信:整条短信(包括签名+模板+变量中的内容)最多支持70字符,超出将按70个字符截取为多条短信进行发送,费用按截取的条数收费; + TemplateContent string `json:"template_content"` + // 短信模板申请单id + SmsTemplateApplyId string `json:"sms_template_apply_id"` + // 每页数量,默认10 + Size int64 `json:"size"` + // 页码,默认0 + Page int64 `json:"page"` + // 审核状态: 1:审核中 2:未通过 3:已开通 4:已关闭 + Status int64 `json:"status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply_list/response/sms_template_apply_list_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply_list/response/sms_template_apply_list_response.go new file mode 100644 index 00000000..89cc198b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_apply_list/response/sms_template_apply_list_response.go @@ -0,0 +1,28 @@ +package sms_template_apply_list_response + +type SmsTemplateApplyListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsTemplateApplyListData `json:"data"` +} +type TemplateApplyListItem struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信模板申请单id + SmsTemplateApplyId string `json:"sms_template_apply_id"` + // 短信模版名称 + TemplateName string `json:"template_name"` + // 短信模版内容 + TemplateContent string `json:"template_content"` + // CN_NTC 国内通知短信 CN_MKT 国内营销短信(营销短信将自带退订功能) CN_OTP 国内验证码 + ChannelType string `json:"channel_type"` + // 审核状态: 1:审核中 2:未通过 3:已开通 4:已关闭 + Status int64 `json:"status"` + // 状态说明 + StatusRemark string `json:"status_remark"` +} +type SmsTemplateApplyListData struct { + // 短信模板申请单列表 + TemplateApplyList []TemplateApplyListItem `json:"template_apply_list"` + // 总数 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_delete/request/sms_template_delete_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_delete/request/sms_template_delete_request.go new file mode 100644 index 00000000..9bcca221 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_delete/request/sms_template_delete_request.go @@ -0,0 +1,50 @@ +package sms_template_delete_request + +import ( + "encoding/json" +) + +type SmsTemplateDeleteRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsTemplateDeleteParam +} + +func (c *SmsTemplateDeleteRequest) GetUrlPath() string { + return "/sms/template/delete" +} + +func New() *SmsTemplateDeleteRequest { + request := &SmsTemplateDeleteRequest{ + Param: &SmsTemplateDeleteParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsTemplateDeleteRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_template_delete_response.SmsTemplateDeleteResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_template_delete_response.SmsTemplateDeleteResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsTemplateDeleteRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsTemplateDeleteRequest) GetParams() *SmsTemplateDeleteParam { + return c.Param +} + +type SmsTemplateDeleteParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信模板id + TemplateId string `json:"template_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_delete/response/sms_template_delete_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_delete/response/sms_template_delete_response.go new file mode 100644 index 00000000..7f4a06df --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_delete/response/sms_template_delete_response.go @@ -0,0 +1,12 @@ +package sms_template_delete_response + +type SmsTemplateDeleteResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsTemplateDeleteData `json:"data"` +} +type SmsTemplateDeleteData struct { + // 是否成功 0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_revoke/request/sms_template_revoke_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_revoke/request/sms_template_revoke_request.go new file mode 100644 index 00000000..ba69e27d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_revoke/request/sms_template_revoke_request.go @@ -0,0 +1,50 @@ +package sms_template_revoke_request + +import ( + "encoding/json" +) + +type SmsTemplateRevokeRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsTemplateRevokeParam +} + +func (c *SmsTemplateRevokeRequest) GetUrlPath() string { + return "/sms/template/revoke" +} + +func New() *SmsTemplateRevokeRequest { + request := &SmsTemplateRevokeRequest{ + Param: &SmsTemplateRevokeParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsTemplateRevokeRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_template_revoke_response.SmsTemplateRevokeResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_template_revoke_response.SmsTemplateRevokeResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsTemplateRevokeRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsTemplateRevokeRequest) GetParams() *SmsTemplateRevokeParam { + return c.Param +} + +type SmsTemplateRevokeParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信模板申请单id + SmsTemplateApplyId string `json:"sms_template_apply_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_revoke/response/sms_template_revoke_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_revoke/response/sms_template_revoke_response.go new file mode 100644 index 00000000..4c8dcd7b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_revoke/response/sms_template_revoke_response.go @@ -0,0 +1,12 @@ +package sms_template_revoke_response + +type SmsTemplateRevokeResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsTemplateRevokeData `json:"data"` +} +type SmsTemplateRevokeData struct { + // 是否成功 0表示成功 + Code int64 `json:"code"` + // 说明 + Message string `json:"message"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_search/request/sms_template_search_request.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_search/request/sms_template_search_request.go new file mode 100644 index 00000000..6ee9c381 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_search/request/sms_template_search_request.go @@ -0,0 +1,58 @@ +package sms_template_search_request + +import ( + "encoding/json" +) + +type SmsTemplateSearchRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SmsTemplateSearchParam +} + +func (c *SmsTemplateSearchRequest) GetUrlPath() string { + return "/sms/template/search" +} + +func New() *SmsTemplateSearchRequest { + request := &SmsTemplateSearchRequest{ + Param: &SmsTemplateSearchParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SmsTemplateSearchRequest) Execute(accessToken *doudian_sdk.AccessToken) (*sms_template_search_response.SmsTemplateSearchResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &sms_template_search_response.SmsTemplateSearchResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SmsTemplateSearchRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SmsTemplateSearchRequest) GetParams() *SmsTemplateSearchParam { + return c.Param +} + +type SmsTemplateSearchParam struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信模板id + TemplateId string `json:"template_id"` + // 短信模版内容 + TemplateContent string `json:"template_content"` + // 每页大小,默认10 + Page int64 `json:"page"` + // 页码,默认0 + Size int64 `json:"size"` + // 短信模版名称 + TemplateName string `json:"template_name"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/sms_template_search/response/sms_template_search_response.go b/platformapi/tiktok_shop/sdk-golang/api/sms_template_search/response/sms_template_search_response.go new file mode 100644 index 00000000..2c146ad2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/sms_template_search/response/sms_template_search_response.go @@ -0,0 +1,24 @@ +package sms_template_search_response + +type SmsTemplateSearchResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SmsTemplateSearchData `json:"data"` +} +type TemplateSearchListItem struct { + // 短信发送渠道,主要做资源隔离 + SmsAccount string `json:"sms_account"` + // 短信模版内容 + TemplateContent string `json:"template_content"` + // 短信模板id + TemplateId string `json:"template_id"` + // CN_NTC 国内通知短信 CN_MKT 国内营销短信(免审模版营销短信将自带退订功能,非免审模版需自行添加退订描述) CN_OTP 国内验证码 + ChannelType string `json:"channel_type"` + // 短信模版名称 + TemplateName string `json:"template_name"` +} +type SmsTemplateSearchData struct { + // 模板列表 + TemplateSearchList []TemplateSearchListItem `json:"template_search_list"` + // 总条数 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_addShopSpu/request/spu_addShopSpu_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_addShopSpu/request/spu_addShopSpu_request.go new file mode 100644 index 00000000..f1a01b84 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_addShopSpu/request/spu_addShopSpu_request.go @@ -0,0 +1,68 @@ +package spu_addShopSpu_request + +import ( + "encoding/json" +) + +type SpuAddShopSpuRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuAddShopSpuParam +} + +func (c *SpuAddShopSpuRequest) GetUrlPath() string { + return "/spu/addShopSpu" +} + +func New() *SpuAddShopSpuRequest { + request := &SpuAddShopSpuRequest{ + Param: &SpuAddShopSpuParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuAddShopSpuRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_addShopSpu_response.SpuAddShopSpuResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_addShopSpu_response.SpuAddShopSpuResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuAddShopSpuRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuAddShopSpuRequest) GetParams() *SpuAddShopSpuParam { + return c.Param +} + +type PropertyInfosItem struct { + // 属性id + PropertyId int64 `json:"property_id"` + // 属性值id,可输入类型的属性valueId为0 + ValueId int64 `json:"value_id"` + // 父属性值id + ParentValueId int64 `json:"parent_value_id"` + // 属性层级 + Level int64 `json:"level"` + // 属性值名称,非可输入类型时不用传 + ValueName string `json:"value_name"` +} +type SpuAddShopSpuParam struct { + // spuName + SpuName string `json:"spu_name"` + // 产品唯一标识,没有填写空字符串 + UpcCode string `json:"upc_code"` + // 类目id + CategoryId int64 `json:"category_id"` + // 品牌id + BrandId int64 `json:"brand_id"` + // 属性信息 + PropertyInfos []PropertyInfosItem `json:"property_infos"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_addShopSpu/response/spu_addShopSpu_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_addShopSpu/response/spu_addShopSpu_response.go new file mode 100644 index 00000000..119817a0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_addShopSpu/response/spu_addShopSpu_response.go @@ -0,0 +1,10 @@ +package spu_addShopSpu_response + +type SpuAddShopSpuResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuAddShopSpuData `json:"data"` +} +type SpuAddShopSpuData struct { + // spuId + SpuId string `json:"spu_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_batchUploadImg/request/spu_batchUploadImg_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_batchUploadImg/request/spu_batchUploadImg_request.go new file mode 100644 index 00000000..f2e1062c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_batchUploadImg/request/spu_batchUploadImg_request.go @@ -0,0 +1,54 @@ +package spu_batchUploadImg_request + +import ( + "encoding/json" +) + +type SpuBatchUploadImgRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuBatchUploadImgParam +} + +func (c *SpuBatchUploadImgRequest) GetUrlPath() string { + return "/spu/batchUploadImg" +} + +func New() *SpuBatchUploadImgRequest { + request := &SpuBatchUploadImgRequest{ + Param: &SpuBatchUploadImgParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuBatchUploadImgRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_batchUploadImg_response.SpuBatchUploadImgResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_batchUploadImg_response.SpuBatchUploadImgResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuBatchUploadImgRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuBatchUploadImgRequest) GetParams() *SpuBatchUploadImgParam { + return c.Param +} + +type ImageUrlListItem struct { + // 图片名 + Name string `json:"name"` + // 公网可访问URL + Url string `json:"url"` +} +type SpuBatchUploadImgParam struct { + // 图片列表 + ImageUrlList []ImageUrlListItem `json:"image_url_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_batchUploadImg/response/spu_batchUploadImg_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_batchUploadImg/response/spu_batchUploadImg_response.go new file mode 100644 index 00000000..9703063f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_batchUploadImg/response/spu_batchUploadImg_response.go @@ -0,0 +1,30 @@ +package spu_batchUploadImg_response + +type SpuBatchUploadImgResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuBatchUploadImgData `json:"data"` +} +type SuccessListItem struct { + // 图片名称 + Name string `json:"name"` + // 入参URL + OriginUrl string `json:"origin_url"` + // 抖店SPU专用URL + SpuUrl string `json:"spu_url"` +} +type FailedListItem struct { + // 图片名 + Name string `json:"name"` + // 入参URL + OriginUrl string `json:"origin_url"` + // 失败错误码 + ErrCode int32 `json:"err_code"` + // 失败原因 + ErrMsg string `json:"err_msg"` +} +type SpuBatchUploadImgData struct { + // 成功列表 + SuccessList []SuccessListItem `json:"success_list"` + // 失败列表 + FailedList []FailedListItem `json:"failed_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_createSpu/request/spu_createSpu_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_createSpu/request/spu_createSpu_request.go new file mode 100644 index 00000000..5705208f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_createSpu/request/spu_createSpu_request.go @@ -0,0 +1,66 @@ +package spu_createSpu_request + +import ( + "encoding/json" +) + +type SpuCreateSpuRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuCreateSpuParam +} + +func (c *SpuCreateSpuRequest) GetUrlPath() string { + return "/spu/createSpu" +} + +func New() *SpuCreateSpuRequest { + request := &SpuCreateSpuRequest{ + Param: &SpuCreateSpuParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuCreateSpuRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_createSpu_response.SpuCreateSpuResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_createSpu_response.SpuCreateSpuResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuCreateSpuRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuCreateSpuRequest) GetParams() *SpuCreateSpuParam { + return c.Param +} + +type ValuesItem struct { + // 属性值ID + ValueId int64 `json:"value_id"` + // 属性值 + ValueName string `json:"value_name"` +} +type PropertyInfosItem struct { + // 属性ID + PropertyId int64 `json:"property_id"` + // 属性值 + Values []ValuesItem `json:"values"` +} +type SpuCreateSpuParam struct { + // 叶子类目ID + CategoryLeafId int64 `json:"category_leaf_id"` + // SPU图片(/spu/batchUploadImg返回的URL) + SpuImages []string `json:"spu_images"` + // 属性信息(/spu/getSpuRule接口可获取) + PropertyInfos []PropertyInfosItem `json:"property_infos"` + // SPU实物图,用于证明SPU存在,比如包装图,版权页图(/spu/batchUploadImg返回的URL) + SpuActualImages []string `json:"spu_actual_images"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_createSpu/response/spu_createSpu_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_createSpu/response/spu_createSpu_response.go new file mode 100644 index 00000000..8cc24cb8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_createSpu/response/spu_createSpu_response.go @@ -0,0 +1,10 @@ +package spu_createSpu_response + +type SpuCreateSpuResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuCreateSpuData `json:"data"` +} +type SpuCreateSpuData struct { + // SPU的ID + SpuId string `json:"spu_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getKeyPropertyByCid/request/spu_getKeyPropertyByCid_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getKeyPropertyByCid/request/spu_getKeyPropertyByCid_request.go new file mode 100644 index 00000000..c840b894 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getKeyPropertyByCid/request/spu_getKeyPropertyByCid_request.go @@ -0,0 +1,52 @@ +package spu_getKeyPropertyByCid_request + +import ( + "encoding/json" +) + +type SpuGetKeyPropertyByCidRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuGetKeyPropertyByCidParam +} + +func (c *SpuGetKeyPropertyByCidRequest) GetUrlPath() string { + return "/spu/getKeyPropertyByCid" +} + +func New() *SpuGetKeyPropertyByCidRequest { + request := &SpuGetKeyPropertyByCidRequest{ + Param: &SpuGetKeyPropertyByCidParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuGetKeyPropertyByCidRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_getKeyPropertyByCid_response.SpuGetKeyPropertyByCidResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_getKeyPropertyByCid_response.SpuGetKeyPropertyByCidResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuGetKeyPropertyByCidRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuGetKeyPropertyByCidRequest) GetParams() *SpuGetKeyPropertyByCidParam { + return c.Param +} + +type SpuGetKeyPropertyByCidParam struct { + // 类目id + CategoryId int64 `json:"category_id"` + // 页码 + Page int64 `json:"page"` + // 每页大小 + Size int64 `json:"size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getKeyPropertyByCid/response/spu_getKeyPropertyByCid_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getKeyPropertyByCid/response/spu_getKeyPropertyByCid_response.go new file mode 100644 index 00000000..e69ff17b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getKeyPropertyByCid/response/spu_getKeyPropertyByCid_response.go @@ -0,0 +1,38 @@ +package spu_getKeyPropertyByCid_response + +type SpuGetKeyPropertyByCidResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuGetKeyPropertyByCidData `json:"data"` +} +type BrandInfoItem struct { + // 关联属性值id,没有为0 + RelValueId int64 `json:"rel_value_id"` + // 属性id + PropertyId int64 `json:"property_id"` + // 属性名 + PropertyName string `json:"property_name"` + // 属性值id + ValueId int64 `json:"value_id"` + // 属性值名 + ValueName string `json:"value_name"` +} +type SpuGetKeyPropertyByCidData struct { + // 属性信息 + PropertyInfo []PropertyInfoItem `json:"property_info"` + // 品牌信息(品牌单独处理) + BrandInfo []BrandInfoItem `json:"brand_info"` + // 总数 + Total int64 `json:"total"` +} +type PropertyInfoItem struct { + // 关联属性值id,例如手机类目,型号关联属性值id就是品牌的品牌id + RelValueId int64 `json:"rel_value_id"` + // 属性id + PropertyId int64 `json:"property_id"` + // 属性名 + PropertyName string `json:"property_name"` + // 属性值id + ValueId int64 `json:"value_id"` + // 属性值名称 + ValueName string `json:"value_name"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpu/request/spu_getSpu_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpu/request/spu_getSpu_request.go new file mode 100644 index 00000000..74b19ed0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpu/request/spu_getSpu_request.go @@ -0,0 +1,64 @@ +package spu_getSpu_request + +import ( + "encoding/json" +) + +type SpuGetSpuRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuGetSpuParam +} + +func (c *SpuGetSpuRequest) GetUrlPath() string { + return "/spu/getSpu" +} + +func New() *SpuGetSpuRequest { + request := &SpuGetSpuRequest{ + Param: &SpuGetSpuParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuGetSpuRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_getSpu_response.SpuGetSpuResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_getSpu_response.SpuGetSpuResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuGetSpuRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuGetSpuRequest) GetParams() *SpuGetSpuParam { + return c.Param +} + +type PropertyValuesItem struct { + // 属性值ID + ValueId int64 `json:"value_id"` + // 属性值 + ValueName string `json:"value_name"` +} +type KeyPropertiesItem struct { + // 属性ID + PropertyId int64 `json:"property_id"` + // 属性值 + PropertyValues []PropertyValuesItem `json:"property_values"` +} +type SpuGetSpuParam struct { + // 叶子类目ID + CategoryLeafId int64 `json:"category_leaf_id"` + // 关键属性 + KeyProperties []KeyPropertiesItem `json:"key_properties"` + // SPU ID(传SPUID时,关键属性不用传,传关键属性时,SPU ID不用传,两个都传的情况下,会以SPU ID为准,查询SPU) + SpuId int64 `json:"spu_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpu/response/spu_getSpu_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpu/response/spu_getSpu_response.go new file mode 100644 index 00000000..6b8668a8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpu/response/spu_getSpu_response.go @@ -0,0 +1,54 @@ +package spu_getSpu_response + +type SpuGetSpuResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuGetSpuData `json:"data"` +} +type PropertyValuesItem struct { + // 属性值ID + ValueId int64 `json:"value_id"` + // 属性值 + ValueName string `json:"value_name"` +} +type PropertyInfosItem struct { + // 属性ID + PropertyId int64 `json:"property_id"` + // 属性值 + PropertyValues []PropertyValuesItem `json:"property_values"` + // 属性名 + PropertyName string `json:"property_name"` + // 属性类型,0 绑定属性 1关键属性 2销售属性 + PropertyType int64 `json:"property_type"` +} +type SalePropertiesItem struct { + // 属性ID + PropertyId int64 `json:"property_id"` + // 属性名 + PropertyName string `json:"property_name"` + // 属性值ID + ValueId int64 `json:"value_id"` + // 属性值 + ValueName string `json:"value_name"` +} +type CspusItem struct { + // CSPU ID + CspuId int64 `json:"cspu_id"` + // SPU ID + SpuId int64 `json:"spu_id"` + // 销售属性 + SaleProperties []SalePropertiesItem `json:"sale_properties"` +} +type SpuGetSpuData struct { + // SPU ID + SpuId int64 `json:"spu_id"` + // SPU名 + SpuName string `json:"spu_name"` + // 类目ID + CategoryLeafId int64 `json:"category_leaf_id"` + // 属性信息 + PropertyInfos []PropertyInfosItem `json:"property_infos"` + // CSPU信息 + Cspus []CspusItem `json:"cspus"` + // 1:上线,2:下线,3:审核中,4:审核不通过 + Status int64 `json:"status"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuInfoBySpuId/request/spu_getSpuInfoBySpuId_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuInfoBySpuId/request/spu_getSpuInfoBySpuId_request.go new file mode 100644 index 00000000..a00aacb2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuInfoBySpuId/request/spu_getSpuInfoBySpuId_request.go @@ -0,0 +1,48 @@ +package spu_getSpuInfoBySpuId_request + +import ( + "encoding/json" +) + +type SpuGetSpuInfoBySpuIdRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuGetSpuInfoBySpuIdParam +} + +func (c *SpuGetSpuInfoBySpuIdRequest) GetUrlPath() string { + return "/spu/getSpuInfoBySpuId" +} + +func New() *SpuGetSpuInfoBySpuIdRequest { + request := &SpuGetSpuInfoBySpuIdRequest{ + Param: &SpuGetSpuInfoBySpuIdParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuGetSpuInfoBySpuIdRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_getSpuInfoBySpuId_response.SpuGetSpuInfoBySpuIdResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_getSpuInfoBySpuId_response.SpuGetSpuInfoBySpuIdResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuGetSpuInfoBySpuIdRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuGetSpuInfoBySpuIdRequest) GetParams() *SpuGetSpuInfoBySpuIdParam { + return c.Param +} + +type SpuGetSpuInfoBySpuIdParam struct { + // spuId + SpuId int64 `json:"spu_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuInfoBySpuId/response/spu_getSpuInfoBySpuId_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuInfoBySpuId/response/spu_getSpuInfoBySpuId_response.go new file mode 100644 index 00000000..392af524 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuInfoBySpuId/response/spu_getSpuInfoBySpuId_response.go @@ -0,0 +1,54 @@ +package spu_getSpuInfoBySpuId_response + +type SpuGetSpuInfoBySpuIdResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuGetSpuInfoBySpuIdData `json:"data"` +} +type SpuGetSpuInfoBySpuIdData struct { + // spu属性信息 + SpuPropertyInfos []SpuPropertyInfosItem `json:"spu_property_infos"` + // spu信息 + SpuInfo *SpuInfo `json:"spu_info"` +} +type SpuPropertyValueInfoItem struct { + // 属性值id + ValueId int64 `json:"value_id"` + // 属性值名称 + ValueName string `json:"value_name"` + // 属性值别名 + ValueAlias string `json:"value_alias"` +} +type SpuPropertyInfosItem struct { + // 属性id + PropertyId int64 `json:"property_id"` + // 属性名 + PropertyName string `json:"property_name"` + // 属性类型,0 绑定属性 1关键属性 2售卖属性 3 商品属性 + Type int64 `json:"type"` + // 属性别名 + PropertyAlias string `json:"property_alias"` + // 属性值信息 + SpuPropertyValueInfo []SpuPropertyValueInfoItem `json:"spu_property_value_info"` +} +type SpuInfo struct { + // spuName + SpuName string `json:"spu_name"` + // 产品编码 + UpcCode string `json:"upc_code"` + // 类目id + CategoryId int64 `json:"category_id"` + // 品牌id + BrandId int64 `json:"brand_id"` + // 在线状态 1-生效(默认) 2-失效 + Status int64 `json:"status"` + // 更新时间 + UpdateTime string `json:"update_time"` + // 创建时间 + CreateTime string `json:"create_time"` + // spuId + SpuId string `json:"spu_id"` + // 审核状态 -1-删除 0-待审核,1-审核中,2-审核不通过 ,3-审核通过4-撤销 + OpStatus int64 `json:"op_status"` + // 审核时间 + AuditTime string `json:"audit_time"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuRule/request/spu_getSpuRule_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuRule/request/spu_getSpuRule_request.go new file mode 100644 index 00000000..08bd3ac6 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuRule/request/spu_getSpuRule_request.go @@ -0,0 +1,48 @@ +package spu_getSpuRule_request + +import ( + "encoding/json" +) + +type SpuGetSpuRuleRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuGetSpuRuleParam +} + +func (c *SpuGetSpuRuleRequest) GetUrlPath() string { + return "/spu/getSpuRule" +} + +func New() *SpuGetSpuRuleRequest { + request := &SpuGetSpuRuleRequest{ + Param: &SpuGetSpuRuleParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuGetSpuRuleRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_getSpuRule_response.SpuGetSpuRuleResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_getSpuRule_response.SpuGetSpuRuleResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuGetSpuRuleRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuGetSpuRuleRequest) GetParams() *SpuGetSpuRuleParam { + return c.Param +} + +type SpuGetSpuRuleParam struct { + // 类目ID + CategoryId int64 `json:"category_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuRule/response/spu_getSpuRule_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuRule/response/spu_getSpuRule_response.go new file mode 100644 index 00000000..8e83dba9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuRule/response/spu_getSpuRule_response.go @@ -0,0 +1,60 @@ +package spu_getSpuRule_response + +type SpuGetSpuRuleResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuGetSpuRuleData `json:"data"` +} +type SpuPropertyRuleItem struct { + // 属性名 + PropertyName string `json:"property_name"` + // 属性ID + PropertyId int64 `json:"property_id"` + // 是否必填,0:非必填,1:必填 + IsRequired int64 `json:"is_required"` + // 输入类型 1单选 2多选, 3输入框,4时间戳,5时间区间,6成分属性 + ValueType string `json:"value_type"` + // 属性类型,0 绑定属性 1关键属性 2销售属性 + PropertyType int64 `json:"property_type"` + // 是否支持枚举可输入 + DiyType int64 `json:"diy_type"` + // 最大可选数量,多选时需要用 + MaxSelectNum int64 `json:"max_select_num"` + // 属性值 + Values []ValuesItem `json:"values"` +} +type SpuImagesRule struct { + // 是否必填 + IsRequired int64 `json:"is_required"` + // 最大数量 + MaxNum int64 `json:"max_num"` + // 最小数量 + MinNum int64 `json:"min_num"` +} +type SpuActualImagesRule struct { + // 是否必填 + IsRequired int64 `json:"is_required"` + // 最大数量 + MaxNum int64 `json:"max_num"` + // 最小数量 + MinNum int64 `json:"min_num"` +} +type SpuGetSpuRuleData struct { + // SPU属性规则 + SpuPropertyRule []SpuPropertyRuleItem `json:"spu_property_rule"` + // SPU图片规则 + SpuImagesRule *SpuImagesRule `json:"spu_images_rule"` + // SPU实物图规则(实物图:证明SPU存在的图片,如版权页、包装图) + SpuActualImagesRule *SpuActualImagesRule `json:"spu_actual_images_rule"` + // 0-不管控,商家在该类目下发布商品时,不强制要求命中SPU。 - 1-弱管控,商家在该类目下发布商品时,强制要求命中SPU(即关键属性必须一致),但绑定属性不强制要求一致。 - 2-强管控,商家在该类目下发布商品时,强制要求命中SPU,且绑定属性必须一致。 + ControlType int64 `json:"control_type"` + // - true 表示商家在该类目基于SPU发布商品,发商品的管控策略见管控类型。 - false 表示商家在该类目不需要基于SPU发布商品。不用发布SPU,直接发布商品即可。 + SupportSpuProduct bool `json:"support_spu_product"` + // true-可以发布SPU,false-不能发布SPU + SupportCreateSpu bool `json:"support_create_spu"` +} +type ValuesItem struct { + // 属性值ID,对于输入框类型,填0即可 + ValueId int64 `json:"value_id"` + // 属性值,属性值的中文 + ValueName string `json:"value_name"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuTpl/request/spu_getSpuTpl_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuTpl/request/spu_getSpuTpl_request.go new file mode 100644 index 00000000..402d51f9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuTpl/request/spu_getSpuTpl_request.go @@ -0,0 +1,48 @@ +package spu_getSpuTpl_request + +import ( + "encoding/json" +) + +type SpuGetSpuTplRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuGetSpuTplParam +} + +func (c *SpuGetSpuTplRequest) GetUrlPath() string { + return "/spu/getSpuTpl" +} + +func New() *SpuGetSpuTplRequest { + request := &SpuGetSpuTplRequest{ + Param: &SpuGetSpuTplParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuGetSpuTplRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_getSpuTpl_response.SpuGetSpuTplResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_getSpuTpl_response.SpuGetSpuTplResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuGetSpuTplRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuGetSpuTplRequest) GetParams() *SpuGetSpuTplParam { + return c.Param +} + +type SpuGetSpuTplParam struct { + // 类目id + CategoryId int64 `json:"category_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuTpl/response/spu_getSpuTpl_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuTpl/response/spu_getSpuTpl_response.go new file mode 100644 index 00000000..ab895231 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_getSpuTpl/response/spu_getSpuTpl_response.go @@ -0,0 +1,38 @@ +package spu_getSpuTpl_response + +type SpuGetSpuTplResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuGetSpuTplData `json:"data"` +} +type OptionsItem struct { + // 属性值名称 + Name string `json:"name"` + // 属性值id + ValueId int64 `json:"value_id"` + // 属性值顺序 + Sequence int64 `json:"sequence"` +} +type ProductFormatItem struct { + // 属性名 + Name string `json:"name"` + // 选项 + Options []OptionsItem `json:"options"` + // 是否必填 1是 + Require int64 `json:"require"` + // 类型 text:可输入,select:单选,multi_select: 多选 + Type string `json:"type"` + // 类目id + CategoryId int64 `json:"category_id"` + // 多选最大选项 + MultiSelectMax int64 `json:"multi_select_max"` + // 属性类型 0 绑定类型。1关键属性 + PropertyType int64 `json:"property_type"` + // 属性id + PropertyId int64 `json:"property_id"` + // 顺序 + Sequence int64 `json:"sequence"` +} +type SpuGetSpuTplData struct { + // 属性信息 + ProductFormat []ProductFormatItem `json:"product_format"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_queryBookNameByISBN/request/spu_queryBookNameByISBN_request.go b/platformapi/tiktok_shop/sdk-golang/api/spu_queryBookNameByISBN/request/spu_queryBookNameByISBN_request.go new file mode 100644 index 00000000..911c7eb1 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_queryBookNameByISBN/request/spu_queryBookNameByISBN_request.go @@ -0,0 +1,54 @@ +package spu_queryBookNameByISBN_request + +import ( + "encoding/json" +) + +type SpuQueryBookNameByISBNRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *SpuQueryBookNameByISBNParam +} + +func (c *SpuQueryBookNameByISBNRequest) GetUrlPath() string { + return "/spu/queryBookNameByISBN" +} + +func New() *SpuQueryBookNameByISBNRequest { + request := &SpuQueryBookNameByISBNRequest{ + Param: &SpuQueryBookNameByISBNParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *SpuQueryBookNameByISBNRequest) Execute(accessToken *doudian_sdk.AccessToken) (*spu_queryBookNameByISBN_response.SpuQueryBookNameByISBNResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &spu_queryBookNameByISBN_response.SpuQueryBookNameByISBNResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *SpuQueryBookNameByISBNRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *SpuQueryBookNameByISBNRequest) GetParams() *SpuQueryBookNameByISBNParam { + return c.Param +} + +type SpuQueryBookNameByISBNParam struct { + // 类目ID + CategoryLeafId int64 `json:"category_leaf_id"` + // ISBN编号 + Isbn string `json:"isbn"` + // 当前页数。默认从0开始 + PageNo int64 `json:"page_no"` + // 页大小。范围1-100 + PageSize int64 `json:"page_size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/spu_queryBookNameByISBN/response/spu_queryBookNameByISBN_response.go b/platformapi/tiktok_shop/sdk-golang/api/spu_queryBookNameByISBN/response/spu_queryBookNameByISBN_response.go new file mode 100644 index 00000000..c071b91b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/spu_queryBookNameByISBN/response/spu_queryBookNameByISBN_response.go @@ -0,0 +1,20 @@ +package spu_queryBookNameByISBN_response + +type SpuQueryBookNameByISBNResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *SpuQueryBookNameByISBNData `json:"data"` +} +type DataItem struct { + // spu id + SpuId string `json:"spu_id"` + // 图书的书名 + BookName string `json:"book_name"` + // 类目ID + CategoryLeafId int64 `json:"category_leaf_id"` +} +type SpuQueryBookNameByISBNData struct { + // 查询到的数据 + Data []DataItem `json:"data"` + // 总数 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/token_create/request/token_create_request.go b/platformapi/tiktok_shop/sdk-golang/api/token_create/request/token_create_request.go new file mode 100644 index 00000000..e6e9fcb6 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/token_create/request/token_create_request.go @@ -0,0 +1,58 @@ +package token_create_request + +import ( + "encoding/json" +) + +type TokenCreateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *TokenCreateParam +} + +func (c *TokenCreateRequest) GetUrlPath() string { + return "/token/create" +} + +func New() *TokenCreateRequest { + request := &TokenCreateRequest{ + Param: &TokenCreateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *TokenCreateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*token_create_response.TokenCreateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &token_create_response.TokenCreateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *TokenCreateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *TokenCreateRequest) GetParams() *TokenCreateParam { + return c.Param +} + +type TokenCreateParam struct { + // 授权码;参数必传,工具型应用: 传code值;自用型应用:传"" + Code string `json:"code"` + // 授权类型 ;【工具型应用:authorization_code 自用型应用:authorization_self】 + GrantType string `json:"grant_type"` + // 判断测试店铺标识 ,非必传,若新增测试店铺传1,若不是则不必传 + TestShop string `json:"test_shop"` + // 店铺ID + ShopId string `json:"shop_id"` + // 授权id,用于替换shopId + AuthId string `json:"auth_id"` + // 授权主体类型 + AuthSubjectType string `json:"auth_subject_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/token_create/response/token_create_response.go b/platformapi/tiktok_shop/sdk-golang/api/token_create/response/token_create_response.go new file mode 100644 index 00000000..707ef8be --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/token_create/response/token_create_response.go @@ -0,0 +1,22 @@ +package token_create_response + +type TokenCreateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *TokenCreateData `json:"data"` +} +type TokenCreateData struct { + // token值。 Tips: 1. 在 access_token 过期前1h之前,ISV使用 refresh_token 刷新时,会返回原来的 access_token 和 refresh_token,但是二者有效期不会变; 2. 在 access_token 过期前1h之内,ISV使用 refresh_token 刷新时,会返回新的 access_token 和 refresh_token,但是原来的 access_token 和 refresh_token 继续有效一个小时; 3. 在 access_token 过期后,ISV使用 refresh_token 刷新时,将获得新的 acces_token 和 refresh_token,同时原来的 acces_token 和 refresh_token 失效; + AccessToken string `json:"access_token"` + // 过期时间(秒级时间戳) + ExpiresIn int64 `json:"expires_in"` + // 刷新token值。用于刷新access_token的刷新令牌(有效期:14 天) + RefreshToken string `json:"refresh_token"` + // 范围 + Scope string `json:"scope"` + // 店铺ID + ShopId int64 `json:"shop_id"` + // 店铺名称 + ShopName string `json:"shop_name"` + // 授权ID + AuthorityId string `json:"authority_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/token_refresh/request/token_refresh_request.go b/platformapi/tiktok_shop/sdk-golang/api/token_refresh/request/token_refresh_request.go new file mode 100644 index 00000000..8a47ef81 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/token_refresh/request/token_refresh_request.go @@ -0,0 +1,50 @@ +package token_refresh_request + +import ( + "encoding/json" +) + +type TokenRefreshRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *TokenRefreshParam +} + +func (c *TokenRefreshRequest) GetUrlPath() string { + return "/token/refresh" +} + +func New() *TokenRefreshRequest { + request := &TokenRefreshRequest{ + Param: &TokenRefreshParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *TokenRefreshRequest) Execute(accessToken *doudian_sdk.AccessToken) (*token_refresh_response.TokenRefreshResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &token_refresh_response.TokenRefreshResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *TokenRefreshRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *TokenRefreshRequest) GetParams() *TokenRefreshParam { + return c.Param +} + +type TokenRefreshParam struct { + // 刷新token的值 + RefreshToken string `json:"refresh_token"` + // 授权类型 + GrantType string `json:"grant_type"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/token_refresh/response/token_refresh_response.go b/platformapi/tiktok_shop/sdk-golang/api/token_refresh/response/token_refresh_response.go new file mode 100644 index 00000000..af39f3f5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/token_refresh/response/token_refresh_response.go @@ -0,0 +1,22 @@ +package token_refresh_response + +type TokenRefreshResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *TokenRefreshData `json:"data"` +} +type TokenRefreshData struct { + // token值 + AccessToken string `json:"access_token"` + // 过期时间(秒级时间戳) + ExpiresIn int64 `json:"expires_in"` + // 刷新token值 + RefreshToken string `json:"refresh_token"` + // 范围 + Scope string `json:"scope"` + // 店铺ID + ShopId int64 `json:"shop_id"` + // 店铺名称 + ShopName string `json:"shop_name"` + // 授权ID + AuthorityId string `json:"authority_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/request/warehouse_create_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/request/warehouse_create_request.go new file mode 100644 index 00000000..af2e660a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/request/warehouse_create_request.go @@ -0,0 +1,52 @@ +package warehouse_create_request + +import ( + "encoding/json" +) + +type WarehouseCreateRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseCreateParam +} + +func (c *WarehouseCreateRequest) GetUrlPath() string { + return "/warehouse/create" +} + +func New() *WarehouseCreateRequest { + request := &WarehouseCreateRequest{ + Param: &WarehouseCreateParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseCreateRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_create_response.WarehouseCreateResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_create_response.WarehouseCreateResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseCreateRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseCreateRequest) GetParams() *WarehouseCreateParam { + return c.Param +} + +type WarehouseCreateParam struct { + // 外部仓库ID,一个店铺下,同一个外部ID只能创建一个仓库 + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库名称 + Name string `json:"name"` + // 仓库介绍 + Intro string `json:"intro"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/response/warehouse_create_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/response/warehouse_create_response.go new file mode 100644 index 00000000..209b91e9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/response/warehouse_create_response.go @@ -0,0 +1,10 @@ +package warehouse_create_response + +type WarehouseCreateResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseCreateData `json:"data"` +} +type WarehouseCreateData struct { + // 仓库id + Data int64 `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/request/warehouse_createBatch_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/request/warehouse_createBatch_request.go new file mode 100644 index 00000000..a93d4f1c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/request/warehouse_createBatch_request.go @@ -0,0 +1,70 @@ +package warehouse_createBatch_request + +import ( + "encoding/json" +) + +type WarehouseCreateBatchRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseCreateBatchParam +} + +func (c *WarehouseCreateBatchRequest) GetUrlPath() string { + return "/warehouse/createBatch" +} + +func New() *WarehouseCreateBatchRequest { + request := &WarehouseCreateBatchRequest{ + Param: &WarehouseCreateBatchParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseCreateBatchRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_createBatch_response.WarehouseCreateBatchResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_createBatch_response.WarehouseCreateBatchResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseCreateBatchRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseCreateBatchRequest) GetParams() *WarehouseCreateBatchParam { + return c.Param +} + +type WarehouseLocation struct { + // 省地址编码 + AddressId1 int64 `json:"address_id1"` + // 市地址编码 + AddressId2 int64 `json:"address_id2"` + // 区地址编码 + AddressId3 int64 `json:"address_id3"` + // 街道地址编码 + AddressId4 int64 `json:"address_id4"` +} +type OutWarehouseListItem struct { + // 外部仓库ID,一个店铺下,同一个外部ID只能创建一个仓库 + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库名称 + Name string `json:"name"` + // 仓库介绍 + Intro string `json:"intro"` + // 仓地址详细地址,苹果门店店铺、超市小时达店铺建仓必传 + AddressDetail string `json:"address_detail"` + // 仓地址编码 苹果门店店铺、超市小时达店铺建仓必传 + WarehouseLocation *WarehouseLocation `json:"warehouse_location"` +} +type WarehouseCreateBatchParam struct { + // 外部仓信息列表 + OutWarehouseList []OutWarehouseListItem `json:"out_warehouse_list"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/response/warehouse_createBatch_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/response/warehouse_createBatch_response.go new file mode 100644 index 00000000..1d28c28f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/response/warehouse_createBatch_response.go @@ -0,0 +1,10 @@ +package warehouse_createBatch_response + +type WarehouseCreateBatchResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseCreateBatchData `json:"data"` +} +type WarehouseCreateBatchData struct { + // key是outWarehouseId,value代表成功/失败 + Data map[string]bool `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_createV2/request/warehouse_createV2_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createV2/request/warehouse_createV2_request.go new file mode 100644 index 00000000..32f8c7d0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createV2/request/warehouse_createV2_request.go @@ -0,0 +1,70 @@ +package warehouse_createV2_request + +import ( + "encoding/json" +) + +type WarehouseCreateV2Request struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseCreateV2Param +} + +func (c *WarehouseCreateV2Request) GetUrlPath() string { + return "/warehouse/createV2" +} + +func New() *WarehouseCreateV2Request { + request := &WarehouseCreateV2Request{ + Param: &WarehouseCreateV2Param{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseCreateV2Request) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_createV2_response.WarehouseCreateV2Response, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_createV2_response.WarehouseCreateV2Response{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseCreateV2Request) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseCreateV2Request) GetParams() *WarehouseCreateV2Param { + return c.Param +} + +type WarehouseLocation struct { + // 地址1级编码 + AddressId1 int64 `json:"address_id1"` + // 地址2级编码 + AddressId2 int64 `json:"address_id2"` + // 地址3级编码 + AddressId3 int64 `json:"address_id3"` + // 地址4级编码 + AddressId4 int64 `json:"address_id4"` +} +type Warehouse struct { + // 仓的地址编码 + WarehouseLocation *WarehouseLocation `json:"warehouse_location"` + // 仓的地址详情 + AddressDetail string `json:"address_detail"` +} +type WarehouseCreateV2Param struct { + // 仓相关信息 + Warehouse *Warehouse `json:"warehouse"` + // 外部仓ID + OutWarehouseId string `json:"out_warehouse_id"` + // 仓名称 + Name string `json:"name"` + // 仓介绍 + Intro string `json:"intro"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_createV2/response/warehouse_createV2_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createV2/response/warehouse_createV2_response.go new file mode 100644 index 00000000..4a3a5dec --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_createV2/response/warehouse_createV2_response.go @@ -0,0 +1,10 @@ +package warehouse_createV2_response + +type WarehouseCreateV2Response struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseCreateV2Data `json:"data"` +} +type WarehouseCreateV2Data struct { + // 内部仓id + WarehouseId string `json:"warehouse_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_edit/request/warehouse_edit_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_edit/request/warehouse_edit_request.go new file mode 100644 index 00000000..288643c0 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_edit/request/warehouse_edit_request.go @@ -0,0 +1,62 @@ +package warehouse_edit_request + +import ( + "encoding/json" +) + +type WarehouseEditRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseEditParam +} + +func (c *WarehouseEditRequest) GetUrlPath() string { + return "/warehouse/edit" +} + +func New() *WarehouseEditRequest { + request := &WarehouseEditRequest{ + Param: &WarehouseEditParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseEditRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_edit_response.WarehouseEditResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_edit_response.WarehouseEditResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseEditRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseEditRequest) GetParams() *WarehouseEditParam { + return c.Param +} + +type WarehouseEditParam struct { + // 外部仓库id + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库名称 + Name string `json:"name"` + // 仓库介绍 + Intro string `json:"intro"` + // 省地址编码 + AddressId1 int64 `json:"address_id1"` + // 市地址编码 + AddressId2 int64 `json:"address_id2"` + // 区地址编码 + AddressId3 int64 `json:"address_id3"` + // 街道地址编码 + AddressId4 int64 `json:"address_id4"` + // 详细地址 + AddressDetail string `json:"address_detail"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_edit/response/warehouse_edit_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_edit/response/warehouse_edit_response.go new file mode 100644 index 00000000..5c5cdfa9 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_edit/response/warehouse_edit_response.go @@ -0,0 +1,10 @@ +package warehouse_edit_response + +type WarehouseEditResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseEditData `json:"data"` +} +type WarehouseEditData struct { + // 修改结果 + Data bool `json:"data"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_info/request/warehouse_info_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_info/request/warehouse_info_request.go new file mode 100644 index 00000000..b23788a3 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_info/request/warehouse_info_request.go @@ -0,0 +1,48 @@ +package warehouse_info_request + +import ( + "encoding/json" +) + +type WarehouseInfoRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseInfoParam +} + +func (c *WarehouseInfoRequest) GetUrlPath() string { + return "/warehouse/info" +} + +func New() *WarehouseInfoRequest { + request := &WarehouseInfoRequest{ + Param: &WarehouseInfoParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseInfoRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_info_response.WarehouseInfoResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_info_response.WarehouseInfoResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseInfoRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseInfoRequest) GetParams() *WarehouseInfoParam { + return c.Param +} + +type WarehouseInfoParam struct { + // 仓库编码 + OutWarehouseId string `json:"out_warehouse_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_info/response/warehouse_info_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_info/response/warehouse_info_response.go new file mode 100644 index 00000000..fe21aa9f --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_info/response/warehouse_info_response.go @@ -0,0 +1,66 @@ +package warehouse_info_response + +type WarehouseInfoResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseInfoData `json:"data"` +} +type WarehouseInfoData struct { + // 仓库信息 + Data *Data `json:"data"` +} +type AddrItem struct { + // 一级地址id + AddrId1 int64 `json:"addr_id1"` + // 二级地址id + AddrId2 int64 `json:"addr_id2"` + // 三级地址id + AddrId3 int64 `json:"addr_id3"` + // 四级地址id + AddrId4 int64 `json:"addr_id4"` + // 地址更新时间 + UpdateTime int64 `json:"update_time"` + // 地址创建时间 + CreateTime int64 `json:"create_time"` +} +type WarehouseLocation struct { + // 省地址编码 + AddressId1 int64 `json:"address_id1"` + // 市地址编码 + AddressId2 int64 `json:"address_id2"` + // 区地址编码 + AddressId3 int64 `json:"address_id3"` + // 街道地址编码 + AddressId4 int64 `json:"address_id4"` + // 省地址中文 + AddressName1 string `json:"address_name1"` + // 市地址中文 + AddressName2 string `json:"address_name2"` + // 街道地址中文 + AddressName3 string `json:"address_name3"` + // 街道地址中文 + AddressName4 string `json:"address_name4"` +} +type Data struct { + // 仓库id + WarehouseId int64 `json:"warehouse_id"` + // 仓库外部id + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库名称 + Name string `json:"name"` + // 仓库介绍 + Intro string `json:"intro"` + // 覆盖区域列表 + Addr []AddrItem `json:"addr"` + // 更新时间 + UpdateTime int64 `json:"update_time"` + // 创建时间 + CreateTime int64 `json:"create_time"` + // 店铺id + ShopId int64 `json:"shop_id"` + // 仓库地址 + WarehouseLocation *WarehouseLocation `json:"warehouse_location"` + // 详细地址 + AddressDetail string `json:"address_detail"` + // 外部围栏ID列表 + OutFenceIds []string `json:"out_fence_ids"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_list/request/warehouse_list_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_list/request/warehouse_list_request.go new file mode 100644 index 00000000..31e4cc0a --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_list/request/warehouse_list_request.go @@ -0,0 +1,72 @@ +package warehouse_list_request + +import ( + "encoding/json" +) + +type WarehouseListRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseListParam +} + +func (c *WarehouseListRequest) GetUrlPath() string { + return "/warehouse/list" +} + +func New() *WarehouseListRequest { + request := &WarehouseListRequest{ + Param: &WarehouseListParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseListRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_list_response.WarehouseListResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_list_response.WarehouseListResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseListRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseListRequest) GetParams() *WarehouseListParam { + return c.Param +} + +type Addr struct { + // 一级地址 + AddrId1 int64 `json:"addr_id1"` + // 二级地址 + AddrId2 int64 `json:"addr_id2"` + // 三级地址 + AddrId3 int64 `json:"addr_id3"` + // 四级地址 + AddrId4 int64 `json:"addr_id4"` +} +type WarehouseListParam struct { + // 外部仓库ID + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库名称 + WarehouseName string `json:"warehouse_name"` + // 仓库覆盖地址 + Addr *Addr `json:"addr"` + // 外部仓库ID列表 + OutWarehouseIds []string `json:"out_warehouse_ids"` + // 排序方式,可选create_time、update_time + OrderBy string `json:"order_by"` + // 顺序,可选desc、asc,与order_by同时生效 + Rank string `json:"rank"` + // 页码,从0开始,最大到100 + Page int64 `json:"page"` + // 每页数量,最大100,超过100会限制到100 + Size int64 `json:"size"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_list/response/warehouse_list_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_list/response/warehouse_list_response.go new file mode 100644 index 00000000..df4cab20 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_list/response/warehouse_list_response.go @@ -0,0 +1,60 @@ +package warehouse_list_response + +type WarehouseListResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseListData `json:"data"` +} +type AddrItem struct { + // 一级地址id + AddrId1 int64 `json:"addr_id1"` + // 二级地址id + AddrId2 int64 `json:"addr_id2"` + // 三级地址id + AddrId3 int64 `json:"addr_id3"` + // 四级地址id + AddrId4 int64 `json:"addr_id4"` + // 更新时间 + UpdateTime int64 `json:"update_time"` + // 创建时间 + CreateTime int64 `json:"create_time"` +} +type WarehouseLocation struct { + // 省地址编码 + AddressId1 int64 `json:"address_id1"` + // 市地址编码 + AddressId2 int64 `json:"address_id2"` + // 区地址编码 + AddressId3 int64 `json:"address_id3"` + // 街道地址编码 + AddressId4 int64 `json:"address_id4"` +} +type WarehousesItem struct { + // 仓库id + WarehouseId int64 `json:"warehouse_id"` + // 仓库名字 + Name string `json:"name"` + // 仓库介绍 + Intro string `json:"intro"` + // 更新时间 + UpdateTime int64 `json:"update_time"` + // 创建时间 + CreateTime int64 `json:"create_time"` + // 仓库外部id + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库覆盖范围列表 + Addr []AddrItem `json:"addr"` + // 店铺id + ShopId int64 `json:"shop_id"` + // 外部电子围栏id列表 + OutFenceIds []string `json:"out_fence_ids"` + // 仓的详细地址 + AddressDetail string `json:"address_detail"` + // 仓的地址编码 + WarehouseLocation *WarehouseLocation `json:"warehouse_location"` +} +type WarehouseListData struct { + // 仓库信息 + Warehouses []WarehousesItem `json:"warehouses"` + // 总数 + Total int64 `json:"total"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_removeAddr/request/warehouse_removeAddr_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_removeAddr/request/warehouse_removeAddr_request.go new file mode 100644 index 00000000..f06e685d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_removeAddr/request/warehouse_removeAddr_request.go @@ -0,0 +1,60 @@ +package warehouse_removeAddr_request + +import ( + "encoding/json" +) + +type WarehouseRemoveAddrRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseRemoveAddrParam +} + +func (c *WarehouseRemoveAddrRequest) GetUrlPath() string { + return "/warehouse/removeAddr" +} + +func New() *WarehouseRemoveAddrRequest { + request := &WarehouseRemoveAddrRequest{ + Param: &WarehouseRemoveAddrParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseRemoveAddrRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_removeAddr_response.WarehouseRemoveAddrResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_removeAddr_response.WarehouseRemoveAddrResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseRemoveAddrRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseRemoveAddrRequest) GetParams() *WarehouseRemoveAddrParam { + return c.Param +} + +type Addr struct { + // 一级地址id + AddrId1 int64 `json:"addr_id1"` + // 二级地址id + AddrId2 int64 `json:"addr_id2"` + // 三级地址id + AddrId3 int64 `json:"addr_id3"` + // 四级地址id + AddrId4 int64 `json:"addr_id4"` +} +type WarehouseRemoveAddrParam struct { + // 外部仓库ID + OutWarehouseId string `json:"out_warehouse_id"` + // 删除的地址结构体 + Addr *Addr `json:"addr"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_removeAddr/response/warehouse_removeAddr_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_removeAddr/response/warehouse_removeAddr_response.go new file mode 100644 index 00000000..f455cede --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_removeAddr/response/warehouse_removeAddr_response.go @@ -0,0 +1,8 @@ +package warehouse_removeAddr_response + +type WarehouseRemoveAddrResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseRemoveAddrData `json:"data"` +} +type WarehouseRemoveAddrData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddr/request/warehouse_setAddr_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddr/request/warehouse_setAddr_request.go new file mode 100644 index 00000000..85b85e9b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddr/request/warehouse_setAddr_request.go @@ -0,0 +1,60 @@ +package warehouse_setAddr_request + +import ( + "encoding/json" +) + +type WarehouseSetAddrRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseSetAddrParam +} + +func (c *WarehouseSetAddrRequest) GetUrlPath() string { + return "/warehouse/setAddr" +} + +func New() *WarehouseSetAddrRequest { + request := &WarehouseSetAddrRequest{ + Param: &WarehouseSetAddrParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseSetAddrRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_setAddr_response.WarehouseSetAddrResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_setAddr_response.WarehouseSetAddrResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseSetAddrRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseSetAddrRequest) GetParams() *WarehouseSetAddrParam { + return c.Param +} + +type Addr struct { + // 一级地址 + AddrId1 int64 `json:"addr_id1"` + // 二级地址 + AddrId2 int64 `json:"addr_id2"` + // 三级地址 + AddrId3 int64 `json:"addr_id3"` + // 四级地址 + AddrId4 int64 `json:"addr_id4"` +} +type WarehouseSetAddrParam struct { + // 外部仓库ID + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库地址 + Addr *Addr `json:"addr"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddr/response/warehouse_setAddr_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddr/response/warehouse_setAddr_response.go new file mode 100644 index 00000000..4a9b7ebc --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddr/response/warehouse_setAddr_response.go @@ -0,0 +1,8 @@ +package warehouse_setAddr_response + +type WarehouseSetAddrResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseSetAddrData `json:"data"` +} +type WarehouseSetAddrData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddrBatch/request/warehouse_setAddrBatch_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddrBatch/request/warehouse_setAddrBatch_request.go new file mode 100644 index 00000000..84d7d422 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddrBatch/request/warehouse_setAddrBatch_request.go @@ -0,0 +1,62 @@ +package warehouse_setAddrBatch_request + +import ( + "encoding/json" + warehouse_setAddrBatch_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddrBatch/response" + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" +) + +type WarehouseSetAddrBatchRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseSetAddrBatchParam +} + +func (c *WarehouseSetAddrBatchRequest) GetUrlPath() string { + return "/warehouse/setAddrBatch" +} + +func New() *WarehouseSetAddrBatchRequest { + request := &WarehouseSetAddrBatchRequest{ + Param: &WarehouseSetAddrBatchParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseSetAddrBatchRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_setAddrBatch_response.WarehouseSetAddrBatchResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_setAddrBatch_response.WarehouseSetAddrBatchResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseSetAddrBatchRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseSetAddrBatchRequest) GetParams() *WarehouseSetAddrBatchParam { + return c.Param +} + +type WarehouseSetAddrBatchParam struct { + // 外部仓库ID + OutWarehouseId string `json:"out_warehouse_id"` + // 仓库配送地址列表 + AddrList []AddrListItem `json:"addr_list"` +} +type AddrListItem struct { + // 一级地址id + AddrId1 int64 `json:"addr_id1"` + // 二级地址id + AddrId2 int64 `json:"addr_id2"` + // 三级地址id + AddrId3 int64 `json:"addr_id3"` + // 四级地址id + AddrId4 int64 `json:"addr_id4"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddrBatch/response/warehouse_setAddrBatch_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddrBatch/response/warehouse_setAddrBatch_response.go new file mode 100644 index 00000000..cbe8880b --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setAddrBatch/response/warehouse_setAddrBatch_response.go @@ -0,0 +1,10 @@ +package warehouse_setAddrBatch_response + +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + +type WarehouseSetAddrBatchResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseSetAddrBatchData `json:"data"` +} +type WarehouseSetAddrBatchData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_setPriority/request/warehouse_setPriority_request.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setPriority/request/warehouse_setPriority_request.go new file mode 100644 index 00000000..e9ebb318 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setPriority/request/warehouse_setPriority_request.go @@ -0,0 +1,60 @@ +package warehouse_setPriority_request + +import ( + "encoding/json" +) + +type WarehouseSetPriorityRequest struct { + doudian_sdk.BaseDoudianOpApiRequest + Param *WarehouseSetPriorityParam +} + +func (c *WarehouseSetPriorityRequest) GetUrlPath() string { + return "/warehouse/setPriority" +} + +func New() *WarehouseSetPriorityRequest { + request := &WarehouseSetPriorityRequest{ + Param: &WarehouseSetPriorityParam{}, + } + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetClient(doudian_sdk.DefaultDoudianOpApiClient) + return request + +} + +func (c *WarehouseSetPriorityRequest) Execute(accessToken *doudian_sdk.AccessToken) (*warehouse_setPriority_response.WarehouseSetPriorityResponse, error) { + responseJson, err := c.GetClient().Request(c, accessToken) + if err != nil { + return nil, err + } + response := &warehouse_setPriority_response.WarehouseSetPriorityResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil + +} + +func (c *WarehouseSetPriorityRequest) GetParamObject() interface{} { + return c.Param +} + +func (c *WarehouseSetPriorityRequest) GetParams() *WarehouseSetPriorityParam { + return c.Param +} + +type Addr struct { + // 一级地址id + AddrId1 int64 `json:"addr_id1"` + // 二级地址id + AddrId2 int64 `json:"addr_id2"` + // 三级地址id + AddrId3 int64 `json:"addr_id3"` + // 四级地址id + AddrId4 int64 `json:"addr_id4"` +} +type WarehouseSetPriorityParam struct { + // 配送地址 + Addr *Addr `json:"addr"` + // 前面是out_warehouse_id,后面是仓优先级 仓优先级,0-5,0优先级最高,5最低 + Priorities map[string]int64 `json:"priorities"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/api/warehouse_setPriority/response/warehouse_setPriority_response.go b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setPriority/response/warehouse_setPriority_response.go new file mode 100644 index 00000000..1d2ab0c2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/api/warehouse_setPriority/response/warehouse_setPriority_response.go @@ -0,0 +1,8 @@ +package warehouse_setPriority_response + +type WarehouseSetPriorityResponse struct { + doudian_sdk.BaseDoudianOpApiResponse + Data *WarehouseSetPriorityData `json:"data"` +} +type WarehouseSetPriorityData struct { +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/access_token_builder.go b/platformapi/tiktok_shop/sdk-golang/core/access_token_builder.go new file mode 100644 index 00000000..3efafbac --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/access_token_builder.go @@ -0,0 +1,85 @@ +package doudian_sdk + +import ( + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/errors" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/utils" +) + +type AccessToken struct { + CreateTokenData + response *CreateTokenResponse +} + +func (at *AccessToken) IsSuccess() bool { + return at.response.Code == 10000 +} + +type BuildAccessTokenParam struct { + Code string + ShopId int64 + Config *DoudianOpConfig +} + +type RefreshAccessTokenParam struct { + RefreshToken string + Config *DoudianOpConfig +} + +func BuildAccessToken(param *BuildAccessTokenParam) (*AccessToken, error) { + request := NewCreateTokenRequest() + if len(param.Code) > 0 { + request.GetParams().GrantType = "authorization_code" + request.GetParams().Code = param.Code + } else { + request.GetParams().GrantType = "authorization_self" + request.GetParams().Code = "" + request.GetParams().ShopId = param.ShopId + } + if param.Config != nil { + request.SetConfig(param.Config) + } + + response, err := request.Execute(nil) + if err != nil { + return nil, err + } + + accessToken := &AccessToken{ + CreateTokenData: response.Data, + response: response, + } + + if !accessToken.IsSuccess() { + return nil, errors.NewDoudianOpErrorWithMessage(errors.BuildAccessTokenError, utils.MarshalNoErr(response)) + } + return accessToken, nil +} + +func RefreshAccessToken(param *RefreshAccessTokenParam) (*AccessToken, error) { + request := NewRefreshTokenRequest() + request.GetParam().GrantType = "refresh_token" + request.GetParam().RefreshToken = param.RefreshToken + if param.Config != nil { + request.SetConfig(param.Config) + } + + response, err := request.Execute(nil) + if err != nil { + return nil, err + } + accessToken := &AccessToken{ + CreateTokenData: response.Data, + response: response, + } + + if !accessToken.IsSuccess() { + return nil, errors.NewDoudianOpErrorWithMessage(errors.BuildAccessTokenError, utils.MarshalNoErr(response)) + } + return accessToken, nil +} + +func ParseAccessToken(accessTokenStr string) *AccessToken { + accessToken := &AccessToken{} + accessToken.AccessToken = accessTokenStr + return accessToken +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/constant.go b/platformapi/tiktok_shop/sdk-golang/core/constant.go new file mode 100644 index 00000000..9a9da052 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/constant.go @@ -0,0 +1,4 @@ +package doudian_sdk + +const DoudianSdkVersion = "doudian-sdk-golang-1.1.0" + diff --git a/platformapi/tiktok_shop/sdk-golang/core/create_token_request.go b/platformapi/tiktok_shop/sdk-golang/core/create_token_request.go new file mode 100644 index 00000000..fa68ec83 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/create_token_request.go @@ -0,0 +1,82 @@ +package doudian_sdk + +import ( + "encoding/json" +) + +type CreateTokenRequest struct { + BaseDoudianOpApiRequest + param *CreateTokenParam +} + +func (r *CreateTokenRequest) GetParamObject() interface{}{ + return r.param +} + +func(r *CreateTokenRequest) GetParams() *CreateTokenParam { + return r.param +} + +func (r *CreateTokenRequest) Execute(accessToken *AccessToken) (*CreateTokenResponse, error) { + responseJson, err := r.GetClient().Request(r, accessToken) + if err != nil { + return nil, err + } + response := &CreateTokenResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil +} + +func (r *CreateTokenRequest) GetUrlPath() string { + return "token/create" +} + +func NewCreateTokenRequest() *CreateTokenRequest { + request := &CreateTokenRequest{ + param: &CreateTokenParam{}, + } + request.SetConfig(GlobalConfig) + request.SetClient(DefaultDoudianOpApiClient) + return request +} + +type CreateTokenResponse struct { + BaseDoudianOpApiResponse + Data CreateTokenData `json:"data"` +} + + +type CreateTokenParam struct { + + Code string `json:"code"` + + GrantType string `json:"grant_type"` + + ShopId int64 `json:"shop_id"` +} + +type CreateTokenData struct { + + //用于调用API的access_token + //过期时间为expires_in值 + //可通过refresh_token刷新获取新的access_token,过期时间仍为expires_in值 + AccessToken string `json:"access_token"` + + //access_token接口调用凭证超时时间,单位(秒),默认有效期:7天 + ExpiresIn int64 `json:"expires_in"` + + //授权作用域,使用逗号,分隔。预留字段 + Scope string `json:"scope"` + + //店铺ID + ShopId string `json:"shop_id"` + + //店铺名称 + ShopName string `json:"shop_name"` + + //用于刷新access_token的刷新令牌(有效期:14 天) + RefreshToken string `json:"refresh_token"` + + //授权主体id + AuthorityId string `json:"authority_id"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_base_response.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_base_response.go new file mode 100644 index 00000000..e27b21c8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_base_response.go @@ -0,0 +1,14 @@ +package doudian_sdk + +type BaseDoudianOpApiResponse struct { + + LogId string `json:"log_id"` + + Code int64 `json:"code"` + + Msg string `json:"msg"` + + SubCode string `json:"sub_code"` + + SubMsg string `json:"sub_msg"` +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_client.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_client.go new file mode 100644 index 00000000..08354297 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_client.go @@ -0,0 +1,90 @@ +package doudian_sdk + +import ( + "fmt" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core/http" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/errors" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/utils" + "strings" + "time" +) + +type DoudianOpApiClient struct{} + +func NewDoudianOpApiClient() *DoudianOpApiClient { + return &DoudianOpApiClient{} +} + +var DefaultDoudianOpApiClient *DoudianOpApiClient = NewDoudianOpApiClient() + +func (client *DoudianOpApiClient) Request(request DoudianOpApiRequest, accessToken *AccessToken) (string, error) { + if request.GetConfig() == nil { + return "", errors.NewDoudianOpError(errors.ConfigIsNull) + } + + appKey := request.GetConfig().AppKey + appSecret := request.GetConfig().AppSecret + paramJson := request.GetParamObject() + if len(appKey) == 0 { + return "", errors.NewDoudianOpErrorWithMessage(errors.ParamError, "app key为空") + } + if len(appSecret) == 0 { + return "", errors.NewDoudianOpErrorWithMessage(errors.ParamError, "app secret为空") + } + urlPath := request.GetUrlPath() + method := urlPathToMethod(urlPath) + paramJsonString := utils.Marshal(paramJson) + timestamp := time.Now().Unix() + sign := utils.Sign(appKey, appSecret, method, timestamp, paramJsonString) + + httpParamsMap := map[string]string{ + "app_key": appKey, + "method": method, + "timestamp": fmt.Sprintf("%d", timestamp), + "sign": sign, + "v": "2", + "sign_method": "hmac-sha256", + } + if accessToken != nil { + httpParamsMap["access_token"] = accessToken.AccessToken + } + //生成logId + //logId := utils.GenLogID() + httpHeaderMap := map[string]string{ + "from": "sdk", + "sdk-type": "golang", + //"x-tt-logid": logId, + "sdk-version": DoudianSdkVersion, + "x-open-no-old-err-code": "1", + } + + timeout := request.GetConfig().HttpReadTimeout + if timeout == 0 { + timeout = 12000 //默认12s超时 + } + httpRequest := &http.DoudianOpHttpRequest{ + Url: fmt.Sprintf("%s/%s", request.GetConfig().OpenRequestUrl, urlPath), + Params: httpParamsMap, + Headers: httpHeaderMap, + Body: paramJsonString, + } + + //log.Printf("[doudian sdk] logid: %s, method: %s, httpRequest: %s\n", logId, method, utils.MarshalNoErr(httpRequest)) + + httpResponse, err := http.GetHttpClient(timeout).Post(httpRequest) + if err != nil { + return "", err + } + + return httpResponse.Body, nil +} + +func urlPathToMethod(urlPath string) string { + if len(urlPath) == 0 { + return urlPath + } + if urlPath[0] == '/' { + urlPath = urlPath[1:] + } + return strings.ReplaceAll(urlPath, "/", ".") +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_request.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_request.go new file mode 100644 index 00000000..7f168885 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_api_request.go @@ -0,0 +1,32 @@ +package doudian_sdk + +type DoudianOpApiRequest interface { + GetConfig() *DoudianOpConfig + SetConfig(config *DoudianOpConfig) + GetParamObject() interface{} + GetUrlPath() string +} + +type BaseDoudianOpApiRequest struct { + config *DoudianOpConfig + client *DoudianOpApiClient +} + +func(r *BaseDoudianOpApiRequest) GetConfig() *DoudianOpConfig { + return r.config +} + +func (r *BaseDoudianOpApiRequest) SetConfig(config *DoudianOpConfig) { + r.config = config +} + +func (r *BaseDoudianOpApiRequest) GetClient() *DoudianOpApiClient { + return r.client +} + +func(r *BaseDoudianOpApiRequest) SetClient(client *DoudianOpApiClient) { + r.client = client +} + + + diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_config.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_config.go new file mode 100644 index 00000000..1fbf92bc --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_config.go @@ -0,0 +1,18 @@ +package doudian_sdk + +type DoudianOpConfig struct { + AppKey string + AppSecret string + HttpReadTimeout int64 + OpenRequestUrl string +} + +func NewDoudianOpConfig() *DoudianOpConfig { + config := &DoudianOpConfig{ + HttpReadTimeout: 12000, //默认12s超时 + OpenRequestUrl: "https://openapi-fxg.jinritemai.com", + } + return config +} + +var GlobalConfig *DoudianOpConfig = NewDoudianOpConfig() diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_base_response.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_base_response.go new file mode 100644 index 00000000..46402400 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_base_response.go @@ -0,0 +1,23 @@ +package doudian_sdk + +type DoudianOpSpiResponse interface { + GetData() interface{} + SetCode(code int64) + SetMessage(message string) +} + +type BaseDoudianOpSpiResponse struct { + Code int64 `json:"code"` + Message string `json:"message"` +} + +func (b *BaseDoudianOpSpiResponse) SetCode(code int64) { + b.Code = code +} + +func (b *BaseDoudianOpSpiResponse) SetMessage(message string) { + b.Message = message +} + + + diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_client.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_client.go new file mode 100644 index 00000000..861577a2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_client.go @@ -0,0 +1,88 @@ +package doudian_sdk + +import ( + "encoding/json" + "fmt" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/errors" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/utils" +) + +type DoudianOpSpiClient interface { + Request(request DoudianOpSpiRequest) (interface{}, error) +} + +type DoudianOpSpiClientImpl struct { +} + +func NewDefaultDoudianOpSpiClient() DoudianOpSpiClient { + return &DoudianOpSpiClientImpl{} +} + +var DefaultDoudianOpSpiClient = NewDefaultDoudianOpSpiClient() + +func (c *DoudianOpSpiClientImpl) Request(request DoudianOpSpiRequest) (interface{}, error) { + if request.GetConfig() == nil { + return nil, errors.NewDoudianOpError(errors.ConfigIsNull) + } + if request.GetBizHandler() == nil { + return nil, errors.NewDoudianOpErrorWithMessage(errors.ParamError, "请注册BizHandler(调用RegisterBizHandler方法)") + } + if len(request.GetConfig().AppKey) == 0 { + return nil, errors.NewDoudianOpError(errors.ConfigAppKeyIsNull) + } + if len(request.GetConfig().AppSecret) == 0 { + return nil, errors.NewDoudianOpError(errors.ConfigAppSecretIsNull) + } + if request.GetSpiParam() == nil { + return nil, errors.NewDoudianOpError(errors.SpiParamIsNull) + } + if request.GetSpiParam().AppKey != request.GetConfig().AppKey { + return nil, errors.NewDoudianOpErrorWithMessage(errors.ParamError, "目标app_key和本地app_key不匹配") + } + + responseObj := request.GetResponseObject() + response := responseObj.(DoudianOpSpiResponse) + spiContext := &DoudianOpSpiContext{request: request, response: response} + + appKey := request.GetConfig().AppKey + appSecret := request.GetConfig().AppSecret + paramJsonObj := request.GetParamJsonObject() + timestamp := request.GetSpiParam().Timestamp + signMethod := request.GetSpiParam().SignMethod + sign := request.GetSpiParam().Sign + signV2 := request.GetSpiParam().SignV2 + + _ = json.Unmarshal([]byte(request.GetSpiParam().ParamJson), paramJsonObj) + + calcSign := utils.SpiSign(appKey, appSecret, timestamp, paramJsonObj, signMethod) + fmt.Println(calcSign) + if calcSign != sign && calcSign != signV2 { + spiContext.WrapError(10001, "验证签名失败") + return response, nil + } + + request.GetBizHandler()(spiContext) + return spiContext.response, nil +} + +type DoudianOpSpiContext struct { + request DoudianOpSpiRequest + response DoudianOpSpiResponse +} + +func (c *DoudianOpSpiContext) GetParamObject() interface{} { + return c.request.GetParamJsonObject() +} + +func (c *DoudianOpSpiContext) GetData() interface{} { + return c.response.GetData() +} + +func (c *DoudianOpSpiContext) WrapSuccess() { + c.response.SetCode(0) +} + +func (c *DoudianOpSpiContext) WrapError(code int64, message string) { + c.response.SetCode(code) + c.response.SetMessage(message) +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_config.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_config.go new file mode 100644 index 00000000..519df128 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_config.go @@ -0,0 +1,53 @@ +package doudian_sdk + +import ( + "io" + "net/url" +) + +type SpiConfigurator struct { + request DoudianOpSpiRequest + handler BizHandler + spiParam *DoudianOpSpiParam +} + +func (c *SpiConfigurator) ResponseJson() (string, error) { + return c.request.ResponseJson() +} + +func ConfigSpiWithParam(request DoudianOpSpiRequest, handler BizHandler, spiParam *DoudianOpSpiParam) *SpiConfigurator { + request.RegisterHandler(handler) + request.GetSpiParam().AppKey = spiParam.AppKey + request.GetSpiParam().ParamJson = spiParam.ParamJson + request.GetSpiParam().Sign = spiParam.Sign + request.GetSpiParam().SignV2 = spiParam.SignV2 + request.GetSpiParam().SignMethod = spiParam.SignMethod + request.GetSpiParam().Timestamp = spiParam.Timestamp + return &SpiConfigurator{ + request: request, + handler: handler, + spiParam: spiParam, + } +} + +func ConfigSpiWithUrlQuery(request DoudianOpSpiRequest, handler BizHandler, queryString string, body io.Reader) *SpiConfigurator { + queries, _ := url.ParseQuery(queryString) + appKey := queries.Get("app_key") + paramJson := queries.Get("param_json") + if len(paramJson) == 0 { + bs, _ := io.ReadAll(body) + paramJson = string(bs) + } + sign := queries.Get("sign") + signV2 := queries.Get("sign_v2") + signMethod := queries.Get("sign_method") + timestamp := queries.Get("timestamp") + return ConfigSpiWithParam(request, handler, &DoudianOpSpiParam{ + AppKey: appKey, + Timestamp: timestamp, + Sign: sign, + SignV2: signV2, + SignMethod: signMethod, + ParamJson: paramJson, + }) +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_request.go b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_request.go new file mode 100644 index 00000000..77dcc9b7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/doudian_op_spi_request.go @@ -0,0 +1,91 @@ +package doudian_sdk + +type DoudianOpSpiParam struct { + + AppKey string + + Timestamp string + + Sign string + + SignV2 string + + SignMethod string + + ParamJson string +} + +type DoudianOpSpiRequest interface { + GetSpiParam() *DoudianOpSpiParam + GetConfig() *DoudianOpConfig + GetResponseObject() interface{} + GetParamJsonObject() interface{} + GetBizHandler() BizHandler + Execute() (interface{}, error) + ResponseJson()(string, error) + RegisterHandler(bizHandler BizHandler) +} + +type BizHandler func(context *DoudianOpSpiContext) + +type BaseDoudianOpSpiRequest struct { + config *DoudianOpConfig + bizHandler BizHandler + spiParam *DoudianOpSpiParam + client DoudianOpSpiClient +} + +func (b *BaseDoudianOpSpiRequest) ResponseJson() (string, error) { + //do nothing + return "", nil +} + +func (b *BaseDoudianOpSpiRequest) Execute() (interface{}, error) { + //do nothing + return nil, nil +} + +func (b *BaseDoudianOpSpiRequest) GetSpiParam() *DoudianOpSpiParam { + return b.spiParam +} + +func (b *BaseDoudianOpSpiRequest) GetBizHandler() BizHandler { + return b.bizHandler +} + +func (b *BaseDoudianOpSpiRequest) SetSpiParam(spiParam *DoudianOpSpiParam) { + b.spiParam = spiParam +} + +func (b *BaseDoudianOpSpiRequest) RegisterHandler(bizHandler BizHandler) { + b.bizHandler = bizHandler +} + +func (b *BaseDoudianOpSpiRequest) GetConfig() *DoudianOpConfig { + return b.config +} + +func (b *BaseDoudianOpSpiRequest) SetConfig(config *DoudianOpConfig) { + b.config = config +} + +func (b *BaseDoudianOpSpiRequest) SetClient(client DoudianOpSpiClient) { + b.client = client +} + +func (b *BaseDoudianOpSpiRequest) GetClient() DoudianOpSpiClient { + return b.client +} + +func (b *BaseDoudianOpSpiRequest) GetParamJsonObject() interface{} { + //do nothing + return nil +} + +func (b *BaseDoudianOpSpiRequest) GetResponseObject() interface{} { + //do nothing + return nil +} + + + diff --git a/platformapi/tiktok_shop/sdk-golang/core/http/doudian_op_http_client.go b/platformapi/tiktok_shop/sdk-golang/core/http/doudian_op_http_client.go new file mode 100644 index 00000000..bd7aa96e --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/http/doudian_op_http_client.go @@ -0,0 +1,100 @@ +package http + +import ( + "bytes" + "crypto/tls" + "fmt" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/errors" + "io/ioutil" + "net" + "net/http" + "net/url" + "sync" + "time" +) + +var clientMap sync.Map + +type DoudianOpHttpClient struct { + httpClient *http.Client +} + +type DoudianOpHttpRequest struct { + Url string + Params map[string]string + Headers map[string]string + Body string +} + +type DoudianOpHttpResponse struct { + Body string +} + +func newHttpClient(timeout int64) *http.Client { + transport := &http.Transport{ + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: true, + }, + DisableKeepAlives: false, + MaxIdleConns: 50000, + MaxIdleConnsPerHost: 50000, + IdleConnTimeout: 60 * time.Second, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + }).DialContext, + } + + return &http.Client{Transport: transport, Timeout: time.Duration(timeout) * time.Millisecond} +} + +func (client *DoudianOpHttpClient) Post(httpRequest *DoudianOpHttpRequest) (*DoudianOpHttpResponse, error) { + u, err := url.Parse(httpRequest.Url) + if err != nil { + return nil, errors.NewDoudianOpErrorWithMessage(errors.HttpError, err.Error()) + } + if len(httpRequest.Params) > 0 { + query := u.Query() + for k, v := range httpRequest.Params { + query.Add(k, v) + } + u.RawQuery = query.Encode() + } + req, err := http.NewRequest("POST", u.String(), bytes.NewBufferString(httpRequest.Body)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "Content-Type: application/json") + if len(httpRequest.Headers) > 0 { + for k, v := range httpRequest.Headers { + req.Header.Set(k, v) + } + } + httpResp, err := client.httpClient.Do(req) + if err != nil { + return nil, errors.NewDoudianOpErrorWithMessage(errors.HttpError, err.Error()) + } + + if httpResp.StatusCode != http.StatusOK { + return nil, errors.NewDoudianOpErrorWithMessage(errors.HttpError, fmt.Sprintf("http code = %d", httpResp.StatusCode)) + } + bs, err := ioutil.ReadAll(httpResp.Body) + if err != nil { + return nil, errors.NewDoudianOpErrorWithMessage(errors.HttpError, err.Error()) + } + + return &DoudianOpHttpResponse{Body: string(bs)}, nil +} + +func GetHttpClient(timeout int64) *DoudianOpHttpClient { + doudianHttpClient, ok := clientMap.Load(timeout) + + //并发高的情况下,可能导致httpClient初始化两次 + if !ok || doudianHttpClient == nil { + httpClient := newHttpClient(timeout) + newDoudianOpHttpClient := &DoudianOpHttpClient{httpClient: httpClient} + clientMap.Store(timeout, newDoudianOpHttpClient) + return newDoudianOpHttpClient + } + return doudianHttpClient.(*DoudianOpHttpClient) +} diff --git a/platformapi/tiktok_shop/sdk-golang/core/refresh_token_request.go b/platformapi/tiktok_shop/sdk-golang/core/refresh_token_request.go new file mode 100644 index 00000000..028377c7 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/core/refresh_token_request.go @@ -0,0 +1,46 @@ +package doudian_sdk + +import "encoding/json" + +type RefreshTokenRequest struct { + BaseDoudianOpApiRequest + param *RefreshTokenParam +} + +func (r *RefreshTokenRequest) GetParamObject() interface{}{ + return r.param +} + +func(r *RefreshTokenRequest) GetParam() *RefreshTokenParam { + return r.param +} + +func (r *RefreshTokenRequest) Execute(accessToken *AccessToken) (*CreateTokenResponse, error) { + responseJson, err := r.GetClient().Request(r, accessToken) + if err != nil { + return nil, err + } + response := &CreateTokenResponse{} + _ = json.Unmarshal([]byte(responseJson), response) + return response, nil +} + +func (r *RefreshTokenRequest) GetUrlPath() string { + return "token/refresh" +} + +func NewRefreshTokenRequest() *RefreshTokenRequest { + request := &RefreshTokenRequest{ + param: &RefreshTokenParam{}, + } + request.SetConfig(GlobalConfig) + request.SetClient(DefaultDoudianOpApiClient) + return request +} + +type RefreshTokenParam struct { + + GrantType string `json:"grant_type"` + + RefreshToken string `json:"refresh_token"` +} \ No newline at end of file diff --git a/platformapi/tiktok_shop/sdk-golang/errors/doudian_op_error.go b/platformapi/tiktok_shop/sdk-golang/errors/doudian_op_error.go new file mode 100644 index 00000000..e56841fa --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/errors/doudian_op_error.go @@ -0,0 +1,47 @@ +package errors + +import "fmt" + +type ErroCode int +const( + ConfigIsNull ErroCode = 10001 + ParamError ErroCode = 10002 + HttpError ErroCode = 10003 + BuildAccessTokenError ErroCode =10004 + ConfigAppKeyIsNull ErroCode =10005 + ConfigAppSecretIsNull ErroCode =10006 + SpiParamIsNull ErroCode = 10007 +) + +var errMessageMap = map[ErroCode]string{ + ConfigIsNull: "Config配置为空", + ParamError: "参数错误", + HttpError: "处理Http请求错误", + BuildAccessTokenError: "创建AccessToken错误", + ConfigAppKeyIsNull: "Config中AppKey为空", + ConfigAppSecretIsNull: "Config中AppSecret为空", + SpiParamIsNull: "SpiParam参数为空", +} + +type DoudianOpError struct { + Code ErroCode + Message string +} + +func (err *DoudianOpError) Error() string { + return fmt.Sprintf("Code: %d, Message: %s", err.Code, err.Message) +} + +func NewDoudianOpErrorWithMessage(code ErroCode, message string) error { + return &DoudianOpError{ + Code: code, + Message: message, + } +} + +func NewDoudianOpError(code ErroCode) error { + return &DoudianOpError{ + Code: code, + Message: errMessageMap[code], + } +} \ No newline at end of file diff --git a/platformapi/tiktok_shop/sdk-golang/example.go b/platformapi/tiktok_shop/sdk-golang/example.go new file mode 100644 index 00000000..86bb9fa5 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/example.go @@ -0,0 +1,55 @@ +package example + +import ( + "fmt" + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + demo_spi_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/request" + demo_spi_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/response" +) + +func ApiExample() { + //doudian_sdk.GlobalConfig.AppKey = "xxxxxxxx" + //doudian_sdk.GlobalConfig.AppSecret = "xxxxxxxxxx" + // + //accessToken, err := doudian_sdk.BuildAccessToken(&doudian_sdk.BuildAccessTokenParam{ShopId: 4463798}) + //if err != nil { + // panic(err) + //} + // + ////假设调用order.orderDetail方法 + //request := order_detail.New() + //request.GetParams().ShopOrderId = xxxxx + //response := request.Execute(accessToken) +} + +func SpiExample() { + + //query是服务端调用http请求时的请求参数,假如spi实现地址是http://www.xxx.yyy/abc + //服务端实际调用的时候会拼接上请求参数:http://www.xxx.yyy/abc?app_key=7043675397937989128¶m_json={}×tamp=11112223333&sign=xxxxxxx&sign_method=md5&sign_v2=xxxxx + //所以query等于app_key=7043675397937989128¶m_json={}×tamp=11112223333&sign=xxxxxxx&sign_method=md5&sign_v2=xxxxx + + query := "app_key=7043675397937989128¶m_json={}×tamp=11112223333&sign=xxxxxxx&sign_method=md5&sign_v2=xxxxx" + resp, err := doudian_sdk.ConfigSpiWithUrlQuery(demo_spi_request.New(), BizHandler, query, nil).ResponseJson() + if err != nil { + panic(err) + } + //将resp作为http请求的body返回给服务器 + fmt.Println(resp) +} + +// BizHandler 定义BizHandler,BizHandler用来处理接收到服务器请求之后, +//需要处理的业务逻辑,SDK会将服务器下发的业务参数(param_json) +//封装成对应的Param类实例,并放入DoudianOpSpiContext中,开发 +//者可以通过context获取封装好的数据。SDK也会将需要返回的数据封 +//装成Data类实例,开发者可以通过context.getData()获取该实例, +//并设置其中的字段,最终返回给开放平台服务器。 +// +//在本示例中(demo/spi),Param对象为 DemoSpiParam,Data对象 +//为 DemoSpiData +func BizHandler(context *doudian_sdk.DoudianOpSpiContext) { + paramJson := context.GetParamObject().(*demo_spi_request.DemoSpiParam) + fmt.Printf("%+v\n", paramJson) + data := context.GetData().(*demo_spi_response.DemoSpiData) + data.Data1 = "xxx" + context.WrapSuccess() +} diff --git a/platformapi/tiktok_shop/sdk-golang/go.mod b/platformapi/tiktok_shop/sdk-golang/go.mod new file mode 100644 index 00000000..19ca0de2 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/go.mod @@ -0,0 +1,3 @@ +module git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang + +go 1.16 diff --git a/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/request/demo_spi_request.go b/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/request/demo_spi_request.go new file mode 100644 index 00000000..4e733c1d --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/request/demo_spi_request.go @@ -0,0 +1,49 @@ +package demo_spi_request + +import ( + doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + demo_spi_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/response" + "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/utils" +) + +type DemoSpiRequest struct { + doudian_sdk.BaseDoudianOpSpiRequest + Param *DemoSpiParam + Response *demo_spi_response.DemoSpiResponse +} + +type DemoSpiParam struct { + Arg1 string `json:"arg_1"` +} + +func (b *DemoSpiRequest) GetParamJsonObject() interface{} { + return b.Param +} + +func (b *DemoSpiRequest) GetResponseObject() interface{} { + return b.Response +} + +func (b *DemoSpiRequest) Execute() (interface{}, error) { + return b.GetClient().Request(b) +} + +func (b *DemoSpiRequest) ResponseJson() (string, error) { + responseObj, err := b.Execute() + if err != nil { + return "", err + } + return utils.MarshalNoErr(responseObj), nil +} + +func New() *DemoSpiRequest { + request := new(DemoSpiRequest) + request.SetClient(doudian_sdk.DefaultDoudianOpSpiClient) + request.SetConfig(doudian_sdk.GlobalConfig) + request.SetSpiParam(new(doudian_sdk.DoudianOpSpiParam)) + request.Param = new(DemoSpiParam) + response := new(demo_spi_response.DemoSpiResponse) + response.Data = new(demo_spi_response.DemoSpiData) + request.Response = response + return request +} diff --git a/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/response/demo_spi_response.go b/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/response/demo_spi_response.go new file mode 100644 index 00000000..b2d60f4c --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/spi/demo_spi/response/demo_spi_response.go @@ -0,0 +1,16 @@ +package demo_spi_response + +import doudian_sdk "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/core" + +type DemoSpiResponse struct { + doudian_sdk.BaseDoudianOpSpiResponse + Data *DemoSpiData `json:"data"` +} + +func (d *DemoSpiResponse) GetData() interface{} { + return d.Data +} + +type DemoSpiData struct { + Data1 string +} diff --git a/platformapi/tiktok_shop/sdk-golang/utils/common_util.go b/platformapi/tiktok_shop/sdk-golang/utils/common_util.go new file mode 100644 index 00000000..0178f3ec --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/utils/common_util.go @@ -0,0 +1,8 @@ +package utils + +import "encoding/json" + +func MarshalNoErr(object interface{}) string { + bs, _ := json.Marshal(object) + return string(bs) +} diff --git a/platformapi/tiktok_shop/sdk-golang/utils/log_id.go b/platformapi/tiktok_shop/sdk-golang/utils/log_id.go new file mode 100644 index 00000000..de21b372 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/utils/log_id.go @@ -0,0 +1,95 @@ +package utils + +import ( + "encoding/hex" + "math/rand" + "net" + "strconv" + "strings" + "time" +) + +const ( + // 目前版本为 02 + version = "02" + length = 53 + maxRandNum = 1<<24 - 1<<20 +) + +// LogID represents a logID generator +type LogID struct{} + +// NewLogID create a new LogID instance +func NewLogID() LogID { + return LogID{} +} + +// GenLogID return a new logID string +func (l LogID) GenLogID() string { + rand.Uint32() + r := randUint32n(maxRandNum) + 1<<20 + sb := strings.Builder{} + sb.Grow(length) + sb.WriteString(version) + sb.WriteString(strconv.FormatUint(uint64(getMSTimestamp()), 10)) + sb.Write(localIP) + sb.WriteString(strconv.FormatUint(uint64(r), 16)) + return sb.String() +} + +var defaultLogID LogID + +func init() { + defaultLogID = NewLogID() +} + +// GenLogID return a new logID +func GenLogID() string { + return defaultLogID.GenLogID() +} + +func randUint32n(n uint32) uint32 { + return rand.Uint32() % n +} + +const ( + // IPUnknown represents unknown ip + // 32 * 0 + IPUnknown = "00000000000000000000000000000000" +) + +var localIP []byte + +func init() { + localIP = formatIP(getLocalIp()) +} + +// getMSTimestamp return the millisecond timestamp +func getMSTimestamp() int64 { + return time.Now().UnixNano() / int64(time.Millisecond) +} + +func getLocalIp() net.IP { + addrs, err := net.InterfaceAddrs() + if err != nil { + return nil + } + for _, address := range addrs { + if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { + if ipnet.IP.To4() != nil { + return ipnet.IP + } + } + } + return nil +} + +func formatIP(ip net.IP) []byte { + if ip == nil { + return []byte(IPUnknown) + } + dst := make([]byte, 32) + i := ip.To16() + hex.Encode(dst, i) + return dst +} diff --git a/platformapi/tiktok_shop/sdk-golang/utils/sign_util.go b/platformapi/tiktok_shop/sdk-golang/utils/sign_util.go new file mode 100644 index 00000000..071f82c8 --- /dev/null +++ b/platformapi/tiktok_shop/sdk-golang/utils/sign_util.go @@ -0,0 +1,71 @@ +package utils + +import ( + "bytes" + "crypto/hmac" + "crypto/md5" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "strconv" + "strings" +) + +// Sign 计算签名 +func Sign(appKey, appSecret, method string, timestamp int64, paramJson string) string { + // 按给定规则拼接参数 + paramPattern := "app_key" + appKey + "method" + method + "param_json" + paramJson + "timestamp" + strconv.FormatInt(timestamp, 10) + "v2" + signPattern := appSecret + paramPattern + appSecret + fmt.Println("sign_pattern:" + signPattern) + return Hmac(signPattern, appSecret) +} + +func SpiSign(appKey, appSecret, timestamp string, paramJson interface{}, signMethod string) string { + sortedParamStr := Marshal(paramJson) + paramPattern := "app_key" + appKey + "param_json" + sortedParamStr +"timestamp" + timestamp + signPattern := appSecret + paramPattern + appSecret + if signMethod == "hmac-sha256" { + return Hmac(signPattern, appSecret) + } else { + return Md5(signPattern) + } +} + +// Hmac 计算hmac +func Hmac(s string, appSecret string) string { + h := hmac.New(sha256.New, []byte(appSecret)) + _, _ = h.Write([]byte(s)) + return hex.EncodeToString(h.Sum(nil)) +} + +func Md5(s string) string { + h := md5.New() + _, _ = io.WriteString(h, s) + return hex.EncodeToString(h.Sum(nil)) +} + +// Marshal 序列化参数 +func Marshal(o interface{}) string { + // 序列化一次 + raw, _ := json.Marshal(o) + + // 反序列化为map + m := make(map[string]interface{}) + reader := bytes.NewReader(raw) + decode := json.NewDecoder(reader) + decode.UseNumber() + _ = decode.Decode(&m) + + // 重新做一次序列化,并禁用Html Escape + buffer := bytes.NewBufferString("") + encoder := json.NewEncoder(buffer) + encoder.SetEscapeHTML(false) + _ = encoder.Encode(m) + + marshal := strings.TrimSpace(buffer.String()) // Trim掉末尾的换行符 + return marshal +} + +