增加商品额外前缀
This commit is contained in:
@@ -522,7 +522,10 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
t1.status,
|
t1.status,
|
||||||
t1.is_spu,
|
t1.is_spu,
|
||||||
t1.desc_img,
|
t1.desc_img,
|
||||||
t1.upc`
|
t1.upc,
|
||||||
|
t1.ex_prefix,
|
||||||
|
t1.ex_prefix_begin,
|
||||||
|
t1.ex_prefix_end`
|
||||||
if isBySku {
|
if isBySku {
|
||||||
sql += `,
|
sql += `,
|
||||||
t2.id`
|
t2.id`
|
||||||
@@ -551,6 +554,9 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
t1.upc,
|
t1.upc,
|
||||||
t1.jd_id,
|
t1.jd_id,
|
||||||
t1.jd_sync_status,
|
t1.jd_sync_status,
|
||||||
|
t1.ex_prefix,
|
||||||
|
t1.ex_prefix_begin,
|
||||||
|
t1.ex_prefix_end,
|
||||||
CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status,
|
CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status,
|
||||||
',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"),
|
',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"),
|
||||||
'","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit,
|
'","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit,
|
||||||
@@ -581,6 +587,15 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
|
|
||||||
var skuIDs []int
|
var skuIDs []int
|
||||||
for _, skuName := range skuNamesInfo.SkuNames {
|
for _, skuName := range skuNamesInfo.SkuNames {
|
||||||
|
if skuName.ExPrefixEnd != utils.ZeroTimeValue && skuName.ExPrefixBegin != utils.ZeroTimeValue {
|
||||||
|
if time.Now().Before(skuName.ExPrefixEnd) && time.Now().After(skuName.ExPrefixBegin) {
|
||||||
|
skuName.FullName = skuName.ExPrefix + jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, "", "", 0, "", 0)
|
||||||
|
} else {
|
||||||
|
skuName.FullName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, "", "", 0, "", 0)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skuName.FullName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, "", "", 0, "", 0)
|
||||||
|
}
|
||||||
if skuName.SkusStr != "" {
|
if skuName.SkusStr != "" {
|
||||||
if err = utils.UnmarshalUseNumber([]byte(skuName.SkusStr), &skuName.Skus); err != nil {
|
if err = utils.UnmarshalUseNumber([]byte(skuName.SkusStr), &skuName.Skus); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
@@ -852,7 +867,6 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
for _, v := range skuList {
|
for _, v := range skuList {
|
||||||
@@ -871,7 +885,6 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID})
|
skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID})
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
@@ -1331,3 +1344,35 @@ func GetJdUpcCodeByName(ctx *jxcontext.Context, name, upcCode string) (productIn
|
|||||||
}
|
}
|
||||||
return productInfos, err
|
return productInfos, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UpdateSkuNamesExPrefix(ctx *jxcontext.Context, nameIDs []int, exPrefix, fromTime, toTime string, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
var (
|
||||||
|
fromTimeP time.Time
|
||||||
|
toTimeP time.Time
|
||||||
|
)
|
||||||
|
if fromTime != "" {
|
||||||
|
fromTimeP = utils.Str2Time(fromTime)
|
||||||
|
}
|
||||||
|
if toTime != "" {
|
||||||
|
toTimeP = utils.Str2Time(toTime)
|
||||||
|
}
|
||||||
|
task := tasksch.NewParallelTask("批量设置商品前缀", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
nameID := batchItemList[0].(int)
|
||||||
|
payload := map[string]interface{}{
|
||||||
|
"exPrefix": exPrefix,
|
||||||
|
"exPrefixBegin": fromTimeP,
|
||||||
|
"exPrefixEnd": toTimeP,
|
||||||
|
}
|
||||||
|
_, err = UpdateSkuName(ctx, nameID, payload)
|
||||||
|
return retVal, err
|
||||||
|
}, nameIDs)
|
||||||
|
tasksch.HandleTask(task, nil, true).Run()
|
||||||
|
if !isAsync {
|
||||||
|
_, err = task.GetResult(0)
|
||||||
|
hint = "1"
|
||||||
|
} else {
|
||||||
|
hint = task.GetID()
|
||||||
|
}
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -143,7 +143,17 @@ func SyncSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int,
|
|||||||
if skuVendorInfo.BindID == 0 {
|
if skuVendorInfo.BindID == 0 {
|
||||||
return nil, fmt.Errorf("商品:%d的数据异常", skuVendorInfo.SkuID)
|
return nil, fmt.Errorf("商品:%d的数据异常", skuVendorInfo.SkuID)
|
||||||
}
|
}
|
||||||
skuVendorInfo.SkuName = jxutils.ComposeSkuName(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
|
skuName := ""
|
||||||
|
if skuVendorInfo.ExPrefixEnd != utils.ZeroTimeValue && skuVendorInfo.ExPrefixBegin != utils.ZeroTimeValue {
|
||||||
|
if time.Now().Before(skuVendorInfo.ExPrefixEnd) && time.Now().After(skuVendorInfo.ExPrefixBegin) {
|
||||||
|
skuName = skuVendorInfo.ExPrefix + jxutils.ComposeSkuName(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
|
||||||
|
} else {
|
||||||
|
skuName = jxutils.ComposeSkuName(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skuName = jxutils.ComposeSkuName(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
|
||||||
|
}
|
||||||
|
skuVendorInfo.SkuName = skuName
|
||||||
skuVendorInfo.MergedStatus = jxutils.MergeSkuStatus(skuVendorInfo.Status, skuVendorInfo.NameStatus)
|
skuVendorInfo.MergedStatus = jxutils.MergeSkuStatus(skuVendorInfo.Status, skuVendorInfo.NameStatus)
|
||||||
if multiStoresHandler, ok := partner.GetPurchasePlatformFromVendorID(skuVendorInfo.VendorID).(partner.IMultipleStoresHandler); ok {
|
if multiStoresHandler, ok := partner.GetPurchasePlatformFromVendorID(skuVendorInfo.VendorID).(partner.IMultipleStoresHandler); ok {
|
||||||
if model.IsSyncStatusDelete(skuVendorInfo.SkuSyncStatus) { //删除
|
if model.IsSyncStatusDelete(skuVendorInfo.SkuSyncStatus) { //删除
|
||||||
|
|||||||
@@ -260,7 +260,9 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs
|
|||||||
IF(t11.resource_type IS NULL OR t11.resource_type <> ?, t2.img, '') img,
|
IF(t11.resource_type IS NULL OR t11.resource_type <> ?, t2.img, '') img,
|
||||||
IF(t12.resource_type IS NULL OR t12.resource_type <> ?, t2.img2, '') img2,
|
IF(t12.resource_type IS NULL OR t12.resource_type <> ?, t2.img2, '') img2,
|
||||||
t2.desc_img,
|
t2.desc_img,
|
||||||
|
t2.ex_prefix,
|
||||||
|
t2.ex_prefix_begin,
|
||||||
|
t2.ex_prefix_end,
|
||||||
t3.jd_category_id vendor_vendor_cat_id,
|
t3.jd_category_id vendor_vendor_cat_id,
|
||||||
|
|
||||||
t3m.sync_status cat_sync_status,
|
t3m.sync_status cat_sync_status,
|
||||||
@@ -307,7 +309,6 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs
|
|||||||
sqlParams = append(sqlParams, skuIDs)
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
}
|
}
|
||||||
sql += " ORDER BY t1.seq"
|
sql += " ORDER BY t1.seq"
|
||||||
|
|
||||||
if err = GetRows(db, &skuList, sql, sqlParams...); err == nil {
|
if err = GetRows(db, &skuList, sql, sqlParams...); err == nil {
|
||||||
skuPlaceList, err2 := GetSkuNamePlaces(db, nameIDs, skuIDs)
|
skuPlaceList, err2 := GetSkuNamePlaces(db, nameIDs, skuIDs)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
|
|||||||
@@ -56,7 +56,10 @@ type StoreSkuSyncInfo struct {
|
|||||||
model.Sku
|
model.Sku
|
||||||
|
|
||||||
// sku_name
|
// sku_name
|
||||||
Prefix string
|
Prefix string
|
||||||
|
ExPrefix string
|
||||||
|
ExPrefixBegin time.Time
|
||||||
|
ExPrefixEnd time.Time
|
||||||
// NameID int `orm:"column(name_id)"`
|
// NameID int `orm:"column(name_id)"`
|
||||||
VendorNameID string `orm:"column(vendor_name_id)"` // 暂时无用
|
VendorNameID string `orm:"column(vendor_name_id)"` // 暂时无用
|
||||||
Name string
|
Name string
|
||||||
@@ -305,7 +308,7 @@ func newGetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty
|
|||||||
%s vendor_sku_id, t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price,
|
%s vendor_sku_id, t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price,
|
||||||
t1.store_id, t1.deleted_at bind_deleted_at,t1.status_sale_begin,t1.status_sale_end,
|
t1.store_id, t1.deleted_at bind_deleted_at,t1.status_sale_begin,t1.status_sale_end,
|
||||||
t2.*,
|
t2.*,
|
||||||
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc,
|
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end,
|
||||||
IF(t11.%s <> '', t11.%s, t3.img) img,
|
IF(t11.%s <> '', t11.%s, t3.img) img,
|
||||||
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
||||||
t13.%s desc_img,
|
t13.%s desc_img,
|
||||||
@@ -410,7 +413,7 @@ func oldGetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty
|
|||||||
%s.%s_id vendor_sku_id, t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price,
|
%s.%s_id vendor_sku_id, t1.%s_sync_status sku_sync_status, t1.%s_price vendor_price,
|
||||||
t1.store_id, t1.deleted_at bind_deleted_at,t1.status_sale_begin,t1.status_sale_end,
|
t1.store_id, t1.deleted_at bind_deleted_at,t1.status_sale_begin,t1.status_sale_end,
|
||||||
t2.*,
|
t2.*,
|
||||||
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc,
|
t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc,t3.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end,
|
||||||
IF(t11.%s <> '', t11.%s, t3.img) img,
|
IF(t11.%s <> '', t11.%s, t3.img) img,
|
||||||
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
IF(t12.%s <> '', t12.%s, t3.img2) img2,
|
||||||
t13.%s desc_img,
|
t13.%s desc_img,
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package model
|
package model
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
SkuCategoryNormal = 0
|
SkuCategoryNormal = 0
|
||||||
SkuCategorySpecial = 1
|
SkuCategorySpecial = 1
|
||||||
@@ -166,8 +168,12 @@ func (*SkuCategory) TableIndex() [][]string {
|
|||||||
type SkuName struct {
|
type SkuName struct {
|
||||||
ModelIDCULD
|
ModelIDCULD
|
||||||
|
|
||||||
Prefix string `orm:"size(255)" json:"prefix"`
|
Prefix string `orm:"size(255)" json:"prefix"`
|
||||||
Name string `orm:"size(255);index" json:"name"`
|
Name string `orm:"size(255);index" json:"name"`
|
||||||
|
ExPrefix string `orm:"size(255)" json:"exPrefix"`
|
||||||
|
|
||||||
|
ExPrefixBegin time.Time `orm:"type(datetime);null" json:"exPrefixBegin"`
|
||||||
|
ExPrefixEnd time.Time `orm:"type(datetime);null" json:"exPrefixEnd"`
|
||||||
|
|
||||||
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // todo,此属性暂时没有使用,且有问题,应该是不同平台都有一个brandid
|
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` // todo,此属性暂时没有使用,且有问题,应该是不同平台都有一个brandid
|
||||||
CategoryID int `orm:"column(category_id);index" json:"categoryID"` // 标准类别
|
CategoryID int `orm:"column(category_id);index" json:"categoryID"` // 标准类别
|
||||||
@@ -255,9 +261,9 @@ type SkuWithVendor struct {
|
|||||||
|
|
||||||
type SkuNameExt struct {
|
type SkuNameExt struct {
|
||||||
SkuName
|
SkuName
|
||||||
Skus []*SkuWithVendor `orm:"-" json:"skus"`
|
Skus []*SkuWithVendor `orm:"-" json:"skus"`
|
||||||
SkusStr string `json:"-"`
|
SkusStr string `json:"-"`
|
||||||
|
FullName string `json:"fullName"`
|
||||||
Places []int `orm:"-" json:"places"`
|
Places []int `orm:"-" json:"places"`
|
||||||
PlacesStr string `json:"-"`
|
PlacesStr string `json:"-"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -244,8 +244,18 @@ func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate bool
|
|||||||
"url": storeSku.Img2,
|
"url": storeSku.Img2,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
skuName := ""
|
||||||
|
if storeSku.ExPrefixEnd != utils.ZeroTimeValue && storeSku.ExPrefixBegin != utils.ZeroTimeValue {
|
||||||
|
if time.Now().Before(storeSku.ExPrefixEnd) && time.Now().After(storeSku.ExPrefixBegin) {
|
||||||
|
skuName = storeSku.ExPrefix + utils.LimitUTF8StringLen(utils.FilterEmoji(storeSku.SkuName), ebaiapi.MaxSkuNameByteCount)
|
||||||
|
} else {
|
||||||
|
skuName = utils.LimitUTF8StringLen(utils.FilterEmoji(storeSku.SkuName), ebaiapi.MaxSkuNameByteCount)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skuName = utils.LimitUTF8StringLen(utils.FilterEmoji(storeSku.SkuName), ebaiapi.MaxSkuNameByteCount)
|
||||||
|
}
|
||||||
params = map[string]interface{}{
|
params = map[string]interface{}{
|
||||||
"name": utils.LimitMixedStringLen(storeSku.SkuName, ebaiapi.MaxSkuNameByteCount),
|
"name": skuName,
|
||||||
"left_num": model.MaxStoreSkuStockQty,
|
"left_num": model.MaxStoreSkuStockQty,
|
||||||
"category_id": utils.Str2Int64(storeSku.VendorCatID),
|
"category_id": utils.Str2Int64(storeSku.VendorCatID),
|
||||||
"predict_cat": 0, // 不使用推荐类目
|
"predict_cat": 0, // 不使用推荐类目
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ package jd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||||
@@ -140,7 +141,16 @@ func (p *PurchaseHandler) cuSku(db *dao.DaoDB, sku *model.Sku, handler func(skuE
|
|||||||
addParams[jdapi.KeyIfViewDesc] = 1
|
addParams[jdapi.KeyIfViewDesc] = 1
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
skuName := jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, sku.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, jdapi.MaxSkuNameCharCount)
|
skuName := ""
|
||||||
|
if skuInfoExt.ExPrefixEnd != utils.ZeroTimeValue && skuInfoExt.ExPrefixBegin != utils.ZeroTimeValue {
|
||||||
|
if time.Now().Before(skuInfoExt.ExPrefixEnd) && time.Now().After(skuInfoExt.ExPrefixBegin) {
|
||||||
|
skuName = skuInfoExt.ExPrefix + jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, sku.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, jdapi.MaxSkuNameCharCount)
|
||||||
|
} else {
|
||||||
|
skuName = jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, sku.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, jdapi.MaxSkuNameCharCount)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skuName = jxutils.ComposeSkuName(skuInfoExt.Prefix, skuInfoExt.Name, sku.Comment, skuInfoExt.Unit, sku.SpecQuality, sku.SpecUnit, jdapi.MaxSkuNameCharCount)
|
||||||
|
}
|
||||||
skuPrice := jxutils.CaculateSkuPrice(skuInfoExt.Price, sku.SpecQuality, sku.SpecUnit, skuInfoExt.Unit)
|
skuPrice := jxutils.CaculateSkuPrice(skuInfoExt.Price, sku.SpecQuality, sku.SpecUnit, skuInfoExt.Unit)
|
||||||
if skuInfoExt.Upc != "" {
|
if skuInfoExt.Upc != "" {
|
||||||
addParams[jdapi.KeyUpcCode] = skuInfoExt.Upc
|
addParams[jdapi.KeyUpcCode] = skuInfoExt.Upc
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package mtwm
|
|||||||
import (
|
import (
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -245,7 +246,17 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
foodData["skus"] = skus
|
foodData["skus"] = skus
|
||||||
foodData["name"] = utils.LimitUTF8StringLen(utils.FilterEmoji(storeSku.SkuName), mtwmapi.MaxSkuNameCharCount)
|
skuName := ""
|
||||||
|
if storeSku.ExPrefixEnd != utils.ZeroTimeValue && storeSku.ExPrefixBegin != utils.ZeroTimeValue {
|
||||||
|
if time.Now().Before(storeSku.ExPrefixEnd) && time.Now().After(storeSku.ExPrefixBegin) {
|
||||||
|
skuName = storeSku.ExPrefix + utils.LimitUTF8StringLen(utils.FilterEmoji(storeSku.SkuName), mtwmapi.MaxSkuNameCharCount)
|
||||||
|
} else {
|
||||||
|
skuName = utils.LimitUTF8StringLen(utils.FilterEmoji(storeSku.SkuName), mtwmapi.MaxSkuNameCharCount)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skuName = utils.LimitUTF8StringLen(utils.FilterEmoji(storeSku.SkuName), mtwmapi.MaxSkuNameCharCount)
|
||||||
|
}
|
||||||
|
foodData["name"] = skuName
|
||||||
foodData["description"] = storeSku.Comment
|
foodData["description"] = storeSku.Comment
|
||||||
if isNeedUpdatePrice {
|
if isNeedUpdatePrice {
|
||||||
foodData["price"] = jxutils.IntPrice2Standard(storeSku.VendorPrice)
|
foodData["price"] = jxutils.IntPrice2Standard(storeSku.VendorPrice)
|
||||||
|
|||||||
@@ -390,3 +390,25 @@ func (c *SkuController) GetJdUpcCodeByName() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 批量设置商品额外前缀
|
||||||
|
// @Description 批量设置商品额外前缀
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param nameIDs formData string true "商品nameIDs"
|
||||||
|
// @Param exPrefix formData string true "商品额外前缀"
|
||||||
|
// @Param fromTime formData string true "生效开始时间,格式 2006-01-01 00:00:00"
|
||||||
|
// @Param toTime formData string true "生效结束时间,格式 2006-01-01 00:00:00"
|
||||||
|
// @Param isAsync formData bool false "是否异步"
|
||||||
|
// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /UpdateSkuNamesExPrefix [put]
|
||||||
|
func (c *SkuController) UpdateSkuNamesExPrefix() {
|
||||||
|
c.callUpdateSkuNamesExPrefix(func(params *tSkuUpdateSkuNamesExPrefixParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
var skuIDList []int
|
||||||
|
if err = jxutils.Strings2Objs(params.NameIDs, &skuIDList); err == nil {
|
||||||
|
retVal, err = cms.UpdateSkuNamesExPrefix(params.Ctx, skuIDList, params.ExPrefix, params.FromTime, params.ToTime, params.IsAsync, params.IsContinueWhenError)
|
||||||
|
}
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -1278,6 +1278,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "UpdateSkuNamesExPrefix",
|
||||||
|
Router: `/UpdateSkuNamesExPrefix`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "AddStoreCourierMap",
|
Method: "AddStoreCourierMap",
|
||||||
|
|||||||
Reference in New Issue
Block a user