Files
baseapi/platformapi/jdshopapi/sku_test.go
2022-03-01 17:59:43 +08:00

480 lines
13 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 := `<p>因生鲜比较脆弱,发货途中如果有磕碰损坏,请收到联系客服,闪电赔付。请核对好地址,发货后不可修改地址,因改地址导致损坏不能赔付,谢谢理解</p><p><img style="width:auto;height:auto;max-width:100%;" src="//img10.360buyimg.com/imgzone/jfs/t1/111969/32/6692/171733/5ebbb9daE5bedb5b2/38350dca19e2b9d2.jpg"><br></p><p><br></p>`
// desc := `<p>因生鲜比较脆弱,发货途中如果有磕碰损坏,请收到联系客服,闪电赔付。请核对好地址,发货后不可修改地址,因改地址导致损坏不能赔付,谢谢理解</p><p><img style="width:auto;height:auto;max-width:100%;" src="//img10.360buyimg.com/imgzone/jfs/t1/126814/22/1326/472568/5ebb888dEa2cfb5f6/c0c81db660994246.jpg"><br></p><p><br></p>`
ware := &CreateSkuParamWare{
Title: "测试商品1",
BrandID: 44259,
ShopCategorys: []int{15602360},
CategoryID: 12247,
// TransportID: TransportID,
// MobileDesc: "测试",
// Introduction: "测试",
// WareStatus: 1,
// OuterID: "1",
Weight: 230,
Height: 100,
Length: 100,
Width: 100,
// JdPrice: 20,
MarketPrice: 2300,
VenderID: 10569615,
// PromiseID: JdsPromiseID,
}
// ware.Features = features
ware.MobileDesc = "aa"
ware.Introduction = "<p>aa</p>"
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))
}