Files
baseapi/platformapi/tao_vegetable/store_sku_test.go
邹宗楠 a4389e883f 1
2023-08-25 16:12:40 +08:00

488 lines
13 KiB
Go

package tao_vegetable
import (
"bytes"
"fmt"
request1475 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability1475/request"
domain585 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/domain"
request585 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability585/request"
domain589 "git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability589/domain"
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"
"image/jpeg"
"io/ioutil"
"net/http"
"strings"
"testing"
"time"
)
// 上传图片
func TestUploadImg(t *testing.T) {
uploadImg(apiTao, []string{"http://img20.360buyimg.com/vc/jfs/t2473/147/1629369634/4242813/e73adcd0/566a65f3N8aa04ec1.jpg"})
//uploadImg(apiTao, []string{"http://image.jxc4.com/image/2c28b6e2a1de59adba0f117b1519b5f7.png"})
}
func TestAddStoreSku(t *testing.T) {
param1 := &request585.AlibabaWdkSkuAddRequest{}
param := make([]domain585.AlibabaWdkSkuAddSkuDo, 0, 0)
sku1 := domain585.AlibabaWdkSkuAddSkuDo{
Barcodes: utils.String2Pointer("19930827"),
BrandName: utils.String2Pointer("京西菜场"),
//CategoryCode: utils.String2Pointer("222201"),
OuCode: utils.String2Pointer("JX668594"),
InventoryUnit: utils.String2Pointer("份"),
//MainPicUrls: utils.String2Pointer("https://img.alicdn.com/imgextra/i1/2680068332/O1CN01nXtVt92BQ6ryMXDpS_!!2680068332.png"), // 多图逗号
//DetailPicUrls: utils.String2Pointer("https://img.alicdn.com/imgextra/i1/2680068332/O1CN01nXtVt92BQ6ryMXDpS_!!2680068332.png"), // 多图逗号
ProducerPlace: utils.String2Pointer("中国"),
//ShelfLife: utils.Int64ToPointer(7),
SkuCode: utils.String2Pointer("19930827"),
SkuName: utils.String2Pointer("西兰花 500g/份"),
//SkuType: utils.Int64ToPointer(13),
StorageType: utils.Int64ToPointer(242),
SuggestedPrice: utils.String2Pointer("9"),
Weight: utils.String2Pointer("500"),
WeightFlag: utils.Int64ToPointer(0),
ShortTitle: utils.String2Pointer("美味西兰花"),
TxtDesc: utils.String2Pointer("美味西兰花"),
NetContent: utils.String2Pointer("500"),
SaleUnit: utils.String2Pointer("份"),
LifeStatus: utils.String2Pointer("A"),
SaleSpec: utils.String2Pointer("1*1份"),
AvgWeight: utils.String2Pointer("1"), // 每个虾饺重量
PreMinusWeight: utils.String2Pointer("1"), // 每个购买单位重量,预扣重量
StepQuantity: utils.Int64ToPointer(1), // 每次购买至少增加一个购买单位
PurchaseQuantity: utils.Int64ToPointer(1), // 起购单位
SubTitle: utils.String2Pointer("同城包邮"),
SubTitle1: utils.String2Pointer("一小时速达"),
OnlineSaleFlag: utils.Int64ToPointer(1), // 门店控制是否可见
DeliveryUnit: utils.String2Pointer("份"),
DeliverySpec: utils.String2Pointer("1"),
MemberPrice: utils.String2Pointer("9"),
Storage: utils.String2Pointer("冷藏"),
PickFloatRate: utils.String2Pointer("0"), // ? 0
ForbidReceiveDays: utils.Int64ToPointer(0), // ? 7
ForbidSalesDays: utils.Int64ToPointer(0), // ? 0
OverloadRate: utils.String2Pointer("0"), // ? 0
WarnDays: utils.Int64ToPointer(0), // ? 0
FixedFlag: utils.Int64ToPointer(0), // ? 0
PurchaseSpec: utils.String2Pointer("1"), // ? 1
PurchaseUnit: utils.String2Pointer("份"), // ? 同上
LabelStyleType: utils.String2Pointer("无价签"), // 库存单位
RichText: utils.String2Pointer("优先使用这个(txt_desc)"),
//BackCatCode: , // 优先使用BackCatCode HmCategoryCode靠后
//HmCategoryCode: ,
SkuPrice: utils.String2Pointer("9"), // 优先使用skuPrice 靠后SalePrice
Period: utils.Int64ToPointer(7), // 优先使用period 靠后shelf_life
ItemTypeNew: utils.Int64ToPointer(1), // 优先使用 靠后 sku_type
MerchantCatCode: utils.String2Pointer("222201"), // 优先使用 靠后 category_code
SkuPicUrls: utils.String2Pointer("https://image.jxc4.com/image/af9501e559555d062f2bba830adcd04a.jpg,https://image.jxc4.com/image/26d4f62c006180050df1237b92a007de.jpg"), // 第一张主图,后面是详情 优先使用本字段 靠后 同字段main_pic_urls和detail_pic_urls
FragileFlag: utils.Int64ToPointer(1),
DeliveryStorage: utils.String2Pointer("常温"),
TemporaryFlag: utils.Int64ToPointer(0),
IsOnline: utils.Int64ToPointer(1),
}
sku1.SkuSuppliers = &[]domain585.AlibabaWdkSkuAddSkuSupplierDo{
domain585.AlibabaWdkSkuAddSkuSupplierDo{
ReturnFlag: utils.Int64ToPointer(0),
Minimum: utils.String2Pointer("1"),
PurchasePrice: utils.String2Pointer(""),
SupplierNo: nil,
SupplierName: nil,
MainFlag: nil,
},
}
sku1.ChannelProps = &[]domain585.AlibabaWdkSkuAddChannelProp{
domain585.AlibabaWdkSkuAddChannelProp{
ChannelType: utils.String2Pointer("txd"),
Props: &[]domain585.AlibabaWdkSkuAddPropField{
domain585.AlibabaWdkSkuAddPropField{
Value: utils.String2Pointer("1"),
Key: utils.String2Pointer("ONE_HOUR_STATUS"),
},
},
},
}
param = append(param, sku1)
param1.ParamList = &param
result, err := apiTao.AddStoreSku(param1)
globals.SugarLogger.Debugf("result = %s", utils.Format4Output(result, false))
globals.SugarLogger.Debugf("err = %s", utils.Format4Output(err, false))
}
var skucodeMap = []string{
"JX100829:25278",
}
func TestUpdateSku(t *testing.T) {
data2 := make([]string, 0, 0)
for _, v := range skucodeMap {
storeCodeAndSkuCode := strings.Split(v, ":")
skuCode := []string{storeCodeAndSkuCode[1]}
storeCode1 := utils.String2Pointer(storeCodeAndSkuCode[0])
result, err := apiTao.QueryStoreSKu(&request585.AlibabaWdkSkuQueryRequest{Param: &domain585.AlibabaWdkSkuQuerySkuQueryDo{
OuCode: storeCode1,
SkuCodes: &skuCode,
}})
if err != nil {
data2 = append(data2, v)
continue
}
storeCode := *result
if len(storeCode) > 0 && utils.Str2Float64WithDefault(*storeCode[0].Model.SalePrice, 0) < 5 {
param := &request585.AlibabaWdkSkuUpdateRequest{}
updateSkuList := make([]domain585.AlibabaWdkSkuUpdateSkuDo, 0, 0)
updateSku := domain585.AlibabaWdkSkuUpdateSkuDo{
OuCode: storeCode1,
SkuCode: utils.String2Pointer(skuCode[0]),
SkuPrice: utils.String2Pointer(utils.Float64ToStr(utils.Str2Float64WithDefault(*storeCode[0].Model.SalePrice, 0) + 2)), // 优先使用skuPrice 靠后SalePrice
}
updateSkuList = append(updateSkuList, updateSku)
param.ParamList = &updateSkuList
_, err := apiTao.UpdateStoreSku(param)
if err != nil {
data2 = append(data2, v)
continue
}
}
}
globals.SugarLogger.Debugf("data2 :============ %s", utils.Format4Output(data2, false))
}
// 商品上下架
func TestStoreSkuUpdateOffShelf(t *testing.T) {
for _, storeID := range storeList {
globals.SugarLogger.Debugf("store %d", storeID)
err := apiTao.StoreSkuUpdateOffShelfList(storeID, skuList)
if err != nil {
globals.SugarLogger.Debugf("err := %s", utils.Format4Output(err, false))
}
}
}
//
var storeList = []int64{100930, 100871}
var skuList = []int64{
26125,
22596,
25103,
25104,
25105,
24656,
30670,
23422,
24097,
30669,
23424,
25535,
23620,
23621,
23622,
31308,
25022,
25717,
25023,
25718,
25685,
27264,
27265,
30396,
24300,
23001,
26049,
23002,
26050,
23417,
26287,
23419,
26289,
30625,
30691,
30611,
23291,
30686,
23294,
31254,
30672,
30671,
30702,
35420,
30687,
30730,
30727,
31312,
31238,
24264,
31022,
24266,
31229,
30663,
23879,
30777,
30889,
30676,
30814,
30219,
30675,
30627,
25518,
31518,
25519,
35242,
26057,
26058,
26447,
26448,
30365,
30830,
25412,
30641,
30657,
30656,
23818,
31200,
6045175,
33638,
31682,
6045386,
24935,
35241,
30875,
26700,
30888,
26701,
31248,
6042133,
34897,
23907,
30559,
30363,
6045167,
6041753,
30700,
26842,
26843,
26040,
35504,
6041970,
26065,
6041969,
6045177,
6045185,
30094,
6045186,
26067,
6045232,
31299,
6045404,
30667,
30780,
30881,
30644,
6041954,
6041955,
30639,
30775,
34417,
30811,
6045326,
35487,
23408,
31020,
23409,
35486,
35490,
23411,
25947,
25949,
30522,
24120,
25014,
30890,
26864,
6040867,
6042128,
25665,
30649,
34959,
25668,
35503,
30768,
26059,
6045098,
31243,
23163,
33156,
6039630,
27056,
34826,
30635,
30876,
30619,
30645,
30904,
31240,
24226,
31524,
25936,
32914,
25735,
32913,
29645,
33391,
30184,
23841,
34354,
30320,
25736,
6045549,
24251,
6045550,
24253,
31423,
31291,
35152,
22840,
27006,
22842,
30900,
26641,
30616,
30743,
26642,
30807,
26493,
26643,
25059,
25158,
26494,
25061,
26495,
31275,
25062,
30704,
26936,
31815,
33075,
30779,
25335,
25336,
22993,
30352,
25417,
25696,
23402,
25418,
25419,
26908,
}
// 商品库存修改
func TestStoreSkuStock(t *testing.T) {
param := request589.AlibabaWdkStockPublishRequest{}
batchStockPublishDto := &domain589.AlibabaWdkStockPublishBatchStockPublishDto{
UpdateType: utils.Int64ToPointer(1),
BillNo: utils.String2Pointer(utils.Int64ToStr(time.Now().UnixNano())),
BillType: utils.Int64ToPointer(UpdateTypeStokeBillType),
PublishSource: utils.String2Pointer("JX668594"),
ShopCode: utils.String2Pointer("JX668594"),
Operator: utils.String2Pointer("liulei"),
StockPublishDtos: nil,
}
stockPublishDtos := make([]domain589.AlibabaWdkStockPublishStockPublishDto, 0, 0)
stockPublishDtos = append(stockPublishDtos, domain589.AlibabaWdkStockPublishStockPublishDto{
SkuCode: utils.String2Pointer("22640"),
Quantity: utils.String2Pointer("99"),
OrderNo: utils.String2Pointer(fmt.Sprintf("%s_%d_%d", "JX668594", time.Now().UnixNano(), 84671)),
OrderType: utils.String2Pointer("10006800"),
})
batchStockPublishDto.StockPublishDtos = &stockPublishDtos
param.BatchStockPublishDto = batchStockPublishDto
if err := apiTao.StoreSkuStock(&param); err != nil {
globals.SugarLogger.Debugf("err := %s", err.Error())
}
}
func TestGetSkuDetaul(t *testing.T) {
result, err := apiTao.QueryStoreSKu(&request585.AlibabaWdkSkuQueryRequest{Param: &domain585.AlibabaWdkSkuQuerySkuQueryDo{
OuCode: utils.String2Pointer("JX666678"),
}})
globals.SugarLogger.Debugf("err := %s ", utils.Format4Output(err, false))
globals.SugarLogger.Debugf("result := %s ", utils.Format4Output(result, false))
}
func uploadImg(api *API, imgs []string) *string {
result := make([]string, 0, 0)
for _, v := range imgs {
if v == "" {
continue
}
inputTitle := strings.LastIndex(v, "/")
title := strings.LastIndex(v, ".")
resp, err := http.Get(v)
if err != nil {
continue
}
body, _ := ioutil.ReadAll(resp.Body)
if strings.Contains(string(body), "Document not found") {
continue
}
if float64(len(body))/float64(1024)/float64(1024) > float64(3) {
jpgimg, err := jpeg.Decode(strings.NewReader(string(body))) // 文件解码成图像对象
if err != nil {
return nil
}
var buf bytes.Buffer
err = jpeg.Encode(&buf, jpgimg, &jpeg.Options{Quality: 30})
if err != nil {
return nil
}
body = buf.Bytes()
}
if newImg, _ := api.UploadImg(&request1475.AlibabaWdkPictureUploadRequest{
PictureCategoryId: utils.Int64ToPointer(0),
Img: &body,
ImgInputTitle: utils.String2Pointer(v[inputTitle+1:]),
Title: utils.String2Pointer(v[inputTitle+1 : title]),
}); newImg != "" {
result = append(result, newImg)
}
}
return utils.String2Pointer(strings.Join(result, ","))
}
func TestUpLoadImg(t *testing.T) {
v := `http://image.jxc4.com/9e8e8471ba959d10166d0cf4f08ccb2d.jpg`
inputTitle := strings.LastIndex(v, "/")
title := strings.LastIndex(v, ".")
resp, err := http.Get(v)
globals.SugarLogger.Debugf("err := get err := %s", utils.Format4Output(err, false))
body, err := ioutil.ReadAll(resp.Body)
globals.SugarLogger.Debugf("err :=2 get err := %s", utils.Format4Output(err, false))
dataa, err3 := apiTao.UploadImg(&request1475.AlibabaWdkPictureUploadRequest{
PictureCategoryId: utils.Int64ToPointer(0),
Img: &body,
ImgInputTitle: utils.String2Pointer(v[inputTitle:]),
Title: utils.String2Pointer(v[inputTitle:title]),
})
globals.SugarLogger.Debugf("errr3 := %s", utils.Format4Output(err3, false))
globals.SugarLogger.Debugf("data2 := %s", utils.Format4Output(dataa, false))
}
// 上传文件到七牛云
func TestQiNiuYn(t *testing.T) {
}