package jdshopapi import ( "bytes" "crypto/md5" "encoding/base64" "fmt" "image" "image/gif" "image/jpeg" "image/png" "io/ioutil" "math" "net/http" "regexp" "strings" "testing" "git.rosy.net.cn/baseapi/platformapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" ) var ( skuNamePat = regexp.MustCompile(`([\((\[【][^\((\[【\))\]】]*[\))\]】])?(.*?)([((].*[))])?\s*约?([1-9][\d\.]*)(g|G|kg|kG|Kg|KG|l|L|ml|mL|Ml|ML|克)\s*([((].*[))])?\s*(?:\/|/|)\s*([^\s()()]{0,2})(\s.*)?$\s*([((].*[))])?$`) ) 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 TestUploadPicture(t *testing.T) { data, _, _ := DownloadFileByURL("http://image.jxc4.com/image/5de25b52598d7327b17399d6ddba0197.jpg") // img, outMimeType, _ := Binary2Image(data, "") // result2, _ := Image2Binary(img, outMimeType) fmt.Println(base64.StdEncoding.EncodeToString(data)) //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 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 := `
因生鲜比较脆弱,发货途中如果有磕碰损坏,请收到联系客服,闪电赔付。请核对好地址,发货后不可修改地址,因改地址导致损坏不能赔付,谢谢理解

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

aa
" image := &CreateSkuParamImages{ ColorID: "0000000000", ImgIndex: 1, ImgURL: "jfs/t1/142006/30/15024/504060/5fb636d4Ef12079f7/2adad323cbcf7c52.jpg", // Type: "com.jd.pop.ware.ic.api.domain.image", // Type2: "com.jd.pop.ware.ic.api.domain.Image", } images = append(images, image) ware.Images = images sku := &CreateSkuParamSkus{ JdPrice: 100, StockNum: 100, 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: "140190", //AttrValues: []string{"730802"}, //} // attr5 := &CreateSkuParamAttrs{ // AttrID: "1000022043", // AttrValues: []string{"2515313135"}, // } // 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 TestFindVendorCategories(t *testing.T) { result, err := api.FindVendorCategories() if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestFindAttrs(t *testing.T) { result, err := api.FindAttrs(12247) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestFindValuesByAttrId(t *testing.T) { result, no, err := api.FindValuesByAttrId(1000022043) 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(10021536917364) 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: 14545996691, Title: "进口凤梨", Features: []*CreateSkuParamFeatures{ &CreateSkuParamFeatures{ Key: "fdms", Value: "1", }, }, }) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestFindSkuStock(t *testing.T) { err := api.FindSkuStock(69353673334) 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("帝王蟹约2.25-2.5kg/只", 1, 100) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestUpdateSkus(t *testing.T) { _, err := api.UpdateSkus(&UpdateSkusParam{ WareID: 14600091031, Skus: []*UpdateSkusParamSkus{ &UpdateSkusParamSkus{ WareID: 14600091031, SkuID: 70357447332, JdPrice: 7.5, StockNum: "9999", SaleAttrs: []*CreateSkuParamAttrs{ &CreateSkuParamAttrs{ AttrID: "1001027602", AttrValues: []string{"2441658643"}, }, }, 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(69576828876) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestFindSkuById(t *testing.T) { result, err := api.FindSkuById(10024685331653) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestUpdateWareMarketPrice(t *testing.T) { err := api.UpdateWareMarketPrice(14539778638, 500) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestFindOpReason(t *testing.T) { result, err := api.FindOpReason(14519009105) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestAAAA(t *testing.T) { var ( lng = 114.893295 lat = 25.85793 ) const ( maxRadius = 5000 maxStoreCount4User = 5 ) lng2, _ := ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 90) _, lat2 := ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 0) lng1 := lng - (lng2 - lng) lat1 := lat - (lat2 - lat) fmt.Println(lng1, lng2, lat1, lat2) } func ConvertDistanceToLogLat(lng, lat, distance, angle float64) (newLng, newLat float64) { oneDu := 111319.55 // 单位为米 newLng = lng + (distance*math.Sin(angle*math.Pi/180))/(oneDu*math.Cos(lat*math.Pi/180)) //将距离转换成经度的计算公式 newLat = lat + (distance*math.Cos(angle*math.Pi/180))/oneDu //将距离转换成纬度的计算公式 return newLng, newLat } func TestFindWareById(t *testing.T) { result, err := api.FindWareById(10020536637379) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestTransparentImageAdd(t *testing.T) { str := "12300548611401" // suffix := str[12:len(str)] fmt.Println(str[:12]) } func TestUpdateWareSaleAttrvalueAlias(t *testing.T) { err := api.UpdateWareSaleAttrvalueAlias(&UpdateWareSaleAttrvalueAliasParam{ WareID: 14565234929, Props: []*CreateSkuParamAttrs2{ &CreateSkuParamAttrs2{ AttrID: "1000021981", AttrValues: []string{"2453826609"}, AttrValueAlias: []string{"500g 下午易缺货"}, Type: "com.jd.pop.ware.ic.api.domain.prop", Type2: "com.jd.pop.ware.ic.api.domain.Prop", }, }, }) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) } func TestSearchSkuList(t *testing.T) { result, _, err := api.SearchSkuList2([]int{10020537029118}) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func TestAAAAAA(t *testing.T) { result, _, err := api.SearchSkuList(1, 20) if err != nil { t.Fatal(err) } t.Log(utils.Format4Output(result, false)) } func SplitSkuName(skuName string) (prefix, name, comment, specUnit, unit string, specQuality float32) { searchResult := skuNamePat.FindStringSubmatch(skuName) if searchResult != nil { if searchResult[3] != "" { comment = searchResult[3] } else if searchResult[6] != "" { comment = searchResult[6] } else if searchResult[8] != "" { comment = searchResult[8] } else if searchResult[9] != "" { comment = searchResult[9] } // comment = TrimDecorationChar(comment) // name = TrimDecorationChar(searchResult[2]) // if comment != "" { // // if utf8.RuneCountInString(comment) <= 5 { // // name += "-" + comment // // comment = "" // // } // } specUnit = strings.ToLower(strings.Replace(searchResult[5], "克", "g", -1)) if specUnit == "l" { specUnit = "L" } if searchResult[7] == "" { unit = "份" } else { unit = searchResult[7] } specQuality = float32(utils.Str2Float64(searchResult[4])) // prefix = TrimDecorationChar(searchResult[1]) } return prefix, name, comment, specUnit, unit, specQuality } func TestUpdateSkuJdPrice(t *testing.T) { err := api.UpdateSkuJdPrice(7038506664, 10) if err != nil { t.Fatal(err) } // t.Log(utils.Format4Output(result, false)) }