package jdshopapi import ( "bytes" "crypto/md5" "encoding/json" "fmt" "image" "image/gif" "image/jpeg" "image/png" "io/ioutil" "net/http" "testing" "git.rosy.net.cn/baseapi/platformapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" ) func TestFindShopCategories(t *testing.T) { result, err := api.FindShopCategories() if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestDeleteShopCategory(t *testing.T) { result, err := api.DeleteShopCategory(14439186) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestFindVendorCategories(t *testing.T) { result, err := api.FindVendorCategories() if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestUploadPicture(t *testing.T) { data, _, err := DownloadFileByURL("https://image.jxc4.com/noGoodsImg.jpg") // img, outMimeType, _ := Binary2Image(data, "") // result2, _ := Image2Binary(img, outMimeType) result, err := api.UploadPicture(data, 0, "noGoodsImg") if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func DownloadFileByURL(fileURL string) (bodyData []byte, fileMD5 string, err error) { response, err := http.Get(fileURL) if err == nil { defer response.Body.Close() if response.StatusCode == http.StatusOK { if bodyData, err = ioutil.ReadAll(response.Body); err == nil { fileMD5 = fmt.Sprintf("%X", md5.Sum(bodyData)) } } else { err = platformapi.ErrHTTPCodeIsNot200 } } return bodyData, fileMD5, err } func Binary2Image(binaryData []byte, mimeType string) (img image.Image, outMimeType string, err error) { if mimeType == "" { mimeType = http.DetectContentType(binaryData) } switch mimeType { case model.MimeTypeJpeg: img, err = jpeg.Decode(bytes.NewReader(binaryData)) case model.MimeTypePng: img, err = png.Decode(bytes.NewReader(binaryData)) case model.MimeTypeGif: img, err = gif.Decode(bytes.NewReader(binaryData)) } return img, mimeType, err } func Image2Binary(img image.Image, mimeType string) (binaryData []byte, err error) { buf := new(bytes.Buffer) switch mimeType { case model.MimeTypeJpeg: jpeg.Encode(buf, img, nil) case model.MimeTypePng: png.Encode(buf, img) case model.MimeTypeGif: gif.Encode(buf, img, nil) } binaryData = buf.Bytes() return binaryData, err } func TestGetFeightMb(t *testing.T) { err := api.GetFeightMb() if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestAA(t *testing.T) { ware := &CreateSkuParamWare{ Title: "测试商品1", ShopCategorys: []int{11}, CategoryID: 13577, TransportID: TransportID, MobileDesc: "测试", Introduction: "测试", WareStatus: 8, OuterID: "1", Weight: 2300, Height: 100, Length: 100, Width: 100, JdPrice: 20, MarketPrice: 10, VenderID: 0, BrandID: JxBrandId, } result, _ := json.Marshal(ware) fmt.Println(string(result)) } func TestCreateSku(t *testing.T) { var images []*CreateSkuParamImages var skus []*CreateSkuParamSkus var attrs []*CreateSkuParamAttrs var attrs2 []*CreateSkuParamAttrs var attrs3 []*CreateSkuParamAttrs var features []*CreateSkuParamFeatures feature := &CreateSkuParamFeatures{ Key: "is7ToReturn", Value: "0", } features = append(features, feature) // desc = "aa" // desc := `

因生鲜比较脆弱,发货途中如果有磕碰损坏,请收到联系客服,闪电赔付。请核对好地址,发货后不可修改地址,因改地址导致损坏不能赔付,谢谢理解



` desc := `

因生鲜比较脆弱,发货途中如果有磕碰损坏,请收到联系客服,闪电赔付。请核对好地址,发货后不可修改地址,因改地址导致损坏不能赔付,谢谢理解



` ware := &CreateSkuParamWare{ Title: "测试商品1", // ShopCategorys: []int{11}, CategoryID: 13577, TransportID: TransportID, // MobileDesc: "测试", // Introduction: "测试", WareStatus: 8, OuterID: "1", Weight: 2300, Height: 100, Length: 100, Width: 100, JdPrice: 20, MarketPrice: 10, VenderID: 0, BrandID: JxBrandId, PromiseID: JdsPromiseID, } ware.Features = features ware.MobileDesc = "aa" ware.Introduction = desc image := &CreateSkuParamImages{ ColorID: "0000000000", ImgIndex: 1, ImgURL: "jfs/t1/124185/34/1067/20460/5eb90d1aE2a81b6e4/ab451433f5e963b0.jpg", } images = append(images, image) ware.Images = images sku := &CreateSkuParamSkus{ JdPrice: 10, StockNum: 1, Type: "com.jd.pop.ware.ic.api.domain.sku", Type2: "com.jd.pop.ware.ic.api.domain.Sku", OuterID: "1", } sku2 := &CreateSkuParamSkus{ JdPrice: 10, StockNum: 1, Type: "com.jd.pop.ware.ic.api.domain.sku", Type2: "com.jd.pop.ware.ic.api.domain.Sku", OuterID: "2", } attr1 := &CreateSkuParamAttrs{ AttrID: "109692", AttrValues: []string{"613613"}, } // attr2 := &CreateSkuParamAttrs{ // AttrID: "109897", // AttrValues: []string{"613771"}, // } attr3 := &CreateSkuParamAttrs{ AttrID: "160508", AttrValues: []string{"0.5"}, } attr4 := &CreateSkuParamAttrs{ AttrID: "160781", AttrValues: []string{"5"}, } attr5 := &CreateSkuParamAttrs{ AttrID: "1001027606", AttrValues: []string{"2440273517"}, } attr6 := &CreateSkuParamAttrs{ AttrID: "1001027606", AttrValues: []string{"2440272539"}, } attrs = append(attrs, attr1) // attrs = append(attrs, attr2) attrs = append(attrs, attr3) attrs = append(attrs, attr4) attrs2 = append(attrs2, attr5) attrs3 = append(attrs3, attr6) ware.MultiCateProps = attrs sku2.SaleAttrs = attrs3 sku.SaleAttrs = attrs2 skus = append(skus, sku) skus = append(skus, sku2) // ware.Skus = skus result, err := api.CreateWare(ware, skus) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestFindAttrs(t *testing.T) { result, err := api.FindAttrs(13573) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestFindValuesByAttrId(t *testing.T) { result, no, err := api.FindValuesByAttrId(1001027602) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) fmt.Println(no) } func TestSaveVenderAttrValue(t *testing.T) { _, err := api.SaveVenderAttrValue("100g", 1001027606, 13577, 2) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestDeleteWare(t *testing.T) { err := api.DeleteWare(14518369562) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestUpOrDown(t *testing.T) { err := api.UpOrDown(14518369562, 2) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestUpdateWare(t *testing.T) { err := api.UpdateWare(&UpdateWareParam{ WareID: 14521014949, Title: "大青菜1", VenderID: 10374877, }) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestFindSkuStock(t *testing.T) { err := api.FindSkuStock(69411607059) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestQueryPicture(t *testing.T) { result, err := api.QueryPicture("[畅销]香蕉1") if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestImageUpdate(t *testing.T) { err := api.ImageUpdate(14535527473, 1, "jfs/t1/116844/10/7385/198098/5ec3853bEa53d0730/168e5654c6309c96.jpg") if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestSearchWare4Valid(t *testing.T) { result, err := api.SearchWare4Valid("红薯") if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestUpdateSkus(t *testing.T) { _, err := api.UpdateSkus(&UpdateSkusParam{ WareID: 14537944716, Skus: []*UpdateSkusParamSkus{ &UpdateSkusParamSkus{ WareID: 14537944716, JdPrice: 1.5, StockNum: "99", OuterID: "11", SaleAttrs: []*CreateSkuParamAttrs{ &CreateSkuParamAttrs{ AttrID: "1001027602", AttrValues: []string{"2440977935"}, }, }, Type: "com.jd.pop.ware.ic.api.domain.sku", Type2: "com.jd.pop.ware.ic.api.domain.Sku", }, &UpdateSkusParamSkus{ WareID: 14537944716, JdPrice: 1.8, StockNum: "99", OuterID: "123", SaleAttrs: []*CreateSkuParamAttrs{ &CreateSkuParamAttrs{ AttrID: "1001027602", AttrValues: []string{"2441761921"}, }, }, Type: "com.jd.pop.ware.ic.api.domain.sku", Type2: "com.jd.pop.ware.ic.api.domain.Sku", }, }, }) if err != nil { t.Fatal(err) } } func TestDeleteSku(t *testing.T) { err := api.DeleteSku(69570857055) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestFindSkuById(t *testing.T) { result, err := api.FindSkuById(69576828876) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) }