Files
baseapi/platformapi/tao_vegetable/store_sku.go
2025-11-21 09:09:09 +08:00

136 lines
4.2 KiB
Go

package tao_vegetable
import (
"fmt"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/domain"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/request"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability587"
domain587 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability587/domain"
request2 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability587/request"
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability589"
request589 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability589/request"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals"
"time"
)
// AddStoreSku 新增门店商品
func (a *API) AddStoreSku(param *request.AlibabaWdkSkuAddRequest) (*[]VegetableResultList, error) {
client := ability585.NewAbility585(&a.client)
data, _ := client.AlibabaWdkSkuAdd(param, a.token)
var foodList = make([]VegetableResultList, 0, len(*data.Result.Models))
for _, v := range *data.Result.Models {
if *v.Success {
foodList = append(foodList, VegetableResultList{
ProductID: *v.Model,
SkuID: *v.Model,
ErrMsg: "",
})
} else {
skuData := VegetableResultList{
ProductID: "",
SkuID: *v.Model,
ErrMsg: *v.ErrMsg,
}
if *v.ErrCode == "F_SKU_S1_BIZ_011" {
skuData.ProductID = *v.Model
skuData.ErrMsg = ""
}
foodList = append(foodList, skuData)
}
}
return &foodList, nil
}
// UpdateStoreSku 更新门店商品
func (a *API) UpdateStoreSku(param *request.AlibabaWdkSkuUpdateRequest) (*[]VegetableResultList, error) {
client := ability585.NewAbility585(&a.client)
data, _ := client.AlibabaWdkSkuUpdate(param, a.token)
if !*data.Result.Success {
return nil, fmt.Errorf(*data.Result.ErrMsg)
}
var foodList = make([]VegetableResultList, 0, len(*data.Result.Models))
for _, v := range *data.Result.Models {
model := VegetableResultList{
ProductID: *v.Model,
SkuID: *v.Model,
}
if !*v.Success {
model.ErrMsg = *v.ErrMsg
}
foodList = append(foodList, model)
}
return &foodList, nil
}
// QueryStoreSKu 查询门店商品
func (a *API) QueryStoreSKu(param *request.AlibabaWdkSkuQueryRequest) (*[]domain.AlibabaWdkSkuQueryApiResult, error) {
client := ability585.NewAbility585(&a.client)
data, err := client.AlibabaWdkSkuQuery(param, a.token)
if err != nil {
return nil, err
}
if !*data.Result.Success {
return nil, fmt.Errorf(*data.Result.ErrMsg)
}
return data.Result.Models, nil
}
// StoreSkuUpdateOffShelf 门店商品上下架
func (a *API) StoreSkuUpdateOffShelf(param *request2.AlibabaAxChannelSkuStatusUpdateRequest) error {
client := ability587.NewAbility587(&a.client)
data, _ := client.AlibabaAxChannelSkuStatusUpdate(param, a.token)
if !*data.ApiResult.Success {
globals.SugarLogger.Debugf("storeID:%d,skuId:%d,requestId[%s],err[%s]", param.ChannelSkuUpdateStatusReq.StoreId, param.ChannelSkuUpdateStatusReq.SkuCode, data.RequestId, utils.Format4Output(data, false))
//return fmt.Errorf(*data.ApiResult.ErrMsg)
}
return nil
}
// StoreSkuUpdateOffShelfList 门店商品上下架
func (a *API) StoreSkuUpdateOffShelfList(storeID int64, skuList []int64) []string {
client := ability587.NewAbility587(&a.client)
errs := make([]string, 0, 0)
param := &request2.AlibabaAxChannelSkuStatusUpdateRequest{ChannelSkuUpdateStatusReq: &domain587.AlibabaAxChannelSkuStatusUpdateChannelSkuUpdateStatusReq{
StoreId: utils.String2Pointer(fmt.Sprintf("JX%d", storeID)),
ChannelCode: utils.String2Pointer("31"),
OnlineSaleFlag: utils.Int64ToPointer(1),
}}
for i := 0; i < len(skuList); i++ {
param.ChannelSkuUpdateStatusReq.SkuCode = utils.String2Pointer(utils.Int64ToStr(skuList[i]))
data, _ := client.AlibabaAxChannelSkuStatusUpdate(param, a.token)
if !*data.ApiResult.Success {
errs = append(errs, *data.ApiResult.ErrMsg)
}
if i%5 == 0 {
time.Sleep(1 * time.Second)
}
}
return errs
}
// StoreSkuStock 商品库存同步
func (a *API) StoreSkuStock(param *request589.AlibabaWdkStockPublishRequest) error {
client := ability589.NewAbility589(&a.client)
data, _ := client.AlibabaWdkStockPublish(param)
if !data.IsSuccess {
return fmt.Errorf(data.Message)
}
return nil
}