daShangDao_xy_dll/utils/creatGoodsUtil/creatGoodsUtil.go

318 lines
8.6 KiB
Go
Raw Permalink 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 creatGoodsUtil
import (
"fmt"
"log"
"time"
_type "xianyv/type"
"xianyv/utils/requestUtil"
)
func XianYvCreat(body _type.Body, requestPath string, appId int, appSecret, domain string, flag bool) ([]byte, error) {
funcStart := time.Now()
type CreateProductRequest struct {
ProductData []_type.BashCreat `json:"product_data"`
}
var allItems []_type.BashCreat
for i := 0; i < len(body.BookData); i++ {
var item _type.BashCreat
var catId string
if body.BookData[i].CatIds != "" {
catId = body.BookData[i].CatIds
} else {
catId = body.CatIds
}
// 赋值item
item.ItemKey = body.ItemKey
item.ChannelCatId = catId
item.Price = body.BookData[i].Prices[0]
item.OriginalPrice = body.BookData[i].Prices[1]
item.Stock = body.BookData[i].Stock
item.ItemBizType = body.BookData[i].ItemBizType
item.SpBizType = body.BookData[i].SpBizType
item.OuterId = body.OuterId
fmt.Printf("body: %v \n", body)
fmt.Printf("body.OuterId: %s \n", body.OuterId)
fmt.Printf("item.OuterId: %+v \n", item.OuterId)
if flag {
item.ItemBizType = 2
item.SpBizType = 99
}
var publishShops []_type.PublishShop
// 循环所有的Shop来赋值PublishShop
for j := 0; j < len(body.Shop); j++ {
var province, city, district int32
if body.Shop[j].Province == 0 {
province = body.Province
} else {
province = body.Shop[j].Province
}
if body.Shop[j].City == 0 {
city = body.City
} else {
city = body.Shop[j].City
}
if body.Shop[j].District == 0 {
district = body.District
} else {
district = body.Shop[j].District
}
publishShop := _type.PublishShop{
Images: append(body.Shop[j].MainImgs, body.Shop[j].ContentImgs...),
UserName: body.Shop[j].UserName,
Province: province,
City: city,
District: district,
Title: body.Shop[j].Title,
Content: body.Shop[j].Content,
}
publishShops = append(publishShops, publishShop)
}
item.PublishShop = publishShops
item.BookData = _type.BookData{
ISBN: body.BookData[i].ISBN,
Title: body.BookData[i].Title,
Author: body.BookData[i].Author,
Publisher: body.BookData[i].Publisher,
}
if err := item.Validate(); err != nil {
log.Println("商品信息有误: ", err)
return nil, err
}
allItems = append(allItems, item)
}
log.Printf("build allItems elapsed=%v", time.Since(funcStart))
if len(allItems) == 0 {
return nil, fmt.Errorf("没有有效的商品可以创建")
}
request := CreateProductRequest{
ProductData: allItems,
}
fmt.Printf("正在创建 %d 个商品...\n", len(allItems))
fmt.Printf("请求数据: %v\n", request)
createPath := requestPath
reqStart := time.Now()
createResponse, err := requestUtil.MakeAPIRequest(appId, appSecret, domain, createPath, request)
log.Printf("MakeAPIRequest elapsed=%v", time.Since(reqStart))
if err != nil {
log.Println("创建商品失败: ", err)
return nil, err
}
// 打印结果
fmt.Println("创建商品响应:")
fmt.Println(string(createResponse))
log.Printf("XianYvCreat total elapsed=%v", time.Since(funcStart))
return createResponse, nil
}
// 创建有Isbn增加bookdata参数
func XianYvCreatNew(body _type.BodyNew, requestPath string, appId int, appSecret, domain string, flag bool) ([]byte, error) {
funcStart := time.Now()
type CreateProductRequest struct {
ProductData []_type.BashCreat `json:"product_data"`
}
var allItems []_type.BashCreat
var item _type.BashCreat
var createResponse []byte
// 赋值itemNoIsbn
item.ItemKey = body.ItemKey
item.ChannelCatId = body.CatIds
item.Price = body.Price
item.OriginalPrice = body.OriginalPrice
item.Stock = body.Stock
item.ItemBizType = body.ItemBizType
item.SpBizType = body.SpBizType
item.OuterId = body.OuterId
fmt.Printf("body: %v \n", body)
fmt.Printf("body.OuterId: %s \n", body.OuterId)
fmt.Printf("item.OuterId: %+v \n", item.OuterId)
if flag {
item.ItemBizType = 2
item.SpBizType = 99
}
var publishShops []_type.PublishShop
// 循环所有的Shop来赋值PublishShop
for j := 0; j < len(body.Shop); j++ {
var province, city, district int32
if body.Shop[j].Province == 0 {
province = body.Province
} else {
province = body.Shop[j].Province
}
if body.Shop[j].City == 0 {
city = body.City
} else {
city = body.Shop[j].City
}
if body.Shop[j].District == 0 {
district = body.District
} else {
district = body.Shop[j].District
}
publishShop := _type.PublishShop{
Images: append(body.Shop[j].MainImgs, body.Shop[j].ContentImgs...),
UserName: body.Shop[j].UserName,
Province: province,
City: city,
District: district,
Title: body.Shop[j].Title,
Content: body.Shop[j].Content,
}
publishShops = append(publishShops, publishShop)
}
item.PublishShop = publishShops
item.BookData = _type.BookData{
ISBN: body.BookData[0].ISBN,
Title: body.BookData[0].Title,
Author: body.BookData[0].Author,
Publisher: body.BookData[0].Publisher,
}
if err := item.Validate(); err != nil {
log.Println("商品信息有误: ", err)
return nil, err
}
allItems = append(allItems, item)
log.Printf("build allItems elapsed=%v", time.Since(funcStart))
if len(allItems) == 0 {
return nil, fmt.Errorf("没有有效的商品可以创建")
}
request := CreateProductRequest{
ProductData: allItems,
}
fmt.Printf("正在创建 %d 个商品...\n", len(allItems))
fmt.Printf("请求数据: %v\n", request)
createPath := requestPath
reqStart := time.Now()
createResponse, err := requestUtil.MakeAPIRequest(appId, appSecret, domain, createPath, request)
log.Printf("MakeAPIRequest elapsed=%v", time.Since(reqStart))
if err != nil {
log.Println("创建商品失败: ", err)
return nil, err
}
// 打印结果
fmt.Println("创建商品响应:")
fmt.Println(string(createResponse))
log.Printf("XianYvCreat total elapsed=%v", time.Since(funcStart))
return createResponse, nil
}
// 创建无Isbn不加bookdata参数
func XianYvCreatNoIsbn(body _type.BodyNew, requestPath string, appId int, appSecret, domain string, flag bool) ([]byte, error) {
funcStart := time.Now()
type CreateProductRequestNoIsbn struct {
ProductData []_type.BashCreatNew `json:"product_data"`
}
var allItemsNoIsbn []_type.BashCreatNew
var itemNoIsbn _type.BashCreatNew
var createResponse []byte
// 赋值itemNoIsbn
itemNoIsbn.ItemKey = body.ItemKey
itemNoIsbn.ChannelCatId = body.CatIds
itemNoIsbn.Price = body.Price
itemNoIsbn.OriginalPrice = body.OriginalPrice
itemNoIsbn.Stock = body.Stock
itemNoIsbn.ItemBizType = body.ItemBizType
itemNoIsbn.SpBizType = body.SpBizType
itemNoIsbn.OuterId = body.OuterId
fmt.Printf("body: %v \n", body)
fmt.Printf("body.OuterId: %s \n", body.OuterId)
fmt.Printf("itemNoIsbn.OuterId: %+v \n", itemNoIsbn.OuterId)
if flag {
itemNoIsbn.ItemBizType = 2
itemNoIsbn.SpBizType = 99
}
var publishShops []_type.PublishShop
// 循环所有的Shop来赋值PublishShop
for j := 0; j < len(body.Shop); j++ {
var province, city, district int32
if body.Shop[j].Province == 0 {
province = body.Province
} else {
province = body.Shop[j].Province
}
if body.Shop[j].City == 0 {
city = body.City
} else {
city = body.Shop[j].City
}
if body.Shop[j].District == 0 {
district = body.District
} else {
district = body.Shop[j].District
}
publishShop := _type.PublishShop{
Images: append(body.Shop[j].MainImgs, body.Shop[j].ContentImgs...),
UserName: body.Shop[j].UserName,
Province: province,
City: city,
District: district,
Title: body.Shop[j].Title,
Content: body.Shop[j].Content,
}
publishShops = append(publishShops, publishShop)
}
itemNoIsbn.PublishShop = publishShops
if err := itemNoIsbn.ValidateNew(); err != nil {
log.Println("商品信息有误: ", err)
return nil, err
}
allItemsNoIsbn = append(allItemsNoIsbn, itemNoIsbn)
log.Printf("build allItems elapsed=%v", time.Since(funcStart))
if len(allItemsNoIsbn) == 0 {
return nil, fmt.Errorf("没有有效的商品可以创建")
}
request := CreateProductRequestNoIsbn{
ProductData: allItemsNoIsbn,
}
fmt.Printf("正在创建 %d 个商品...\n", len(allItemsNoIsbn))
fmt.Printf("请求数据: %v\n", request)
createPath := requestPath
reqStart := time.Now()
createResponse, err := requestUtil.MakeAPIRequest(appId, appSecret, domain, createPath, request)
log.Printf("MakeAPIRequest elapsed=%v", time.Since(reqStart))
if err != nil {
log.Println("创建商品失败: ", err)
return nil, err
}
// 打印结果
fmt.Println("创建商品响应:")
fmt.Println(string(createResponse))
log.Printf("XianYvCreat total elapsed=%v", time.Since(funcStart))
//*******************************End
return createResponse, nil
}