合并饿鲜达商品库并刷新分类
This commit is contained in:
@@ -3,13 +3,11 @@ package cms
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"mime/multipart"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/360EntSecGroup-Skylar/excelize"
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
|
|
||||||
@@ -1483,7 +1481,8 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
|
|||||||
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
switch step {
|
||||||
case 0:
|
case 0:
|
||||||
for _, v := range results {
|
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
v := batchItemList[0].(*ebaiapi.ExianDaSkus)
|
||||||
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
|
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return result, err
|
return result, err
|
||||||
@@ -1509,8 +1508,20 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
|
|||||||
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
|
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName)
|
||||||
//京西库中存在此商品
|
//京西库中存在此商品
|
||||||
if skuNameExt.ID != 0 {
|
if skuNameExt.ID != 0 {
|
||||||
|
var flag = false
|
||||||
if skuNameExt.Name != v.GoodsName {
|
if skuNameExt.Name != v.GoodsName {
|
||||||
skuNameExt.Name = v.GoodsName
|
skuNameExt.Name = v.GoodsName
|
||||||
|
skuNameExt.Prefix = prefix
|
||||||
|
skuNameExt.SpecUnit = specUnit
|
||||||
|
skuNameExt.Unit = unit
|
||||||
|
skuNameExt.SpecQuality = specQuality
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
|
if skuNameExt.Img != v.ImageURL {
|
||||||
|
skuNameExt.Img = v.ImageURL
|
||||||
|
flag = true
|
||||||
|
}
|
||||||
|
if flag {
|
||||||
_, err = dao.UpdateEntity(db, skuNameExt, "Name")
|
_, err = dao.UpdateEntity(db, skuNameExt, "Name")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
@@ -1543,7 +1554,7 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
|
|||||||
if skuCat.ID != 0 {
|
if skuCat.ID != 0 {
|
||||||
skuName.CategoryID = skuCat.ID
|
skuName.CategoryID = skuCat.ID
|
||||||
} else {
|
} else {
|
||||||
skuName.CategoryID = -1 //默认给了个分类
|
skuName.CategoryID = 35 //默认给了个分类
|
||||||
}
|
}
|
||||||
dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
|
dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName())
|
||||||
err = dao.CreateEntity(db, skuName)
|
err = dao.CreateEntity(db, skuName)
|
||||||
@@ -1568,24 +1579,66 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
|
return retVal, err
|
||||||
}
|
}
|
||||||
|
taskParallel := tasksch.NewParallelTask("更新京西上饿鲜达商品库", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, results)
|
||||||
|
tasksch.HandleTask(taskParallel, task, true).Run()
|
||||||
|
_, err = taskParallel.GetResult(0)
|
||||||
case 1:
|
case 1:
|
||||||
//刷新分类
|
//刷新分类
|
||||||
skus := &model.SkuAndName{}
|
var skus []*model.SkuName
|
||||||
sql := `
|
sql := `
|
||||||
SELECT b.*, a.name, a.category_id real_category_id
|
SELECT a.*
|
||||||
FROM sku_name a
|
FROM sku_name a
|
||||||
JOIN sku b ON b.name_id = a.id
|
JOIN sku b ON b.name_id = a.id
|
||||||
WHERE b.exd_sku_id <> ''
|
WHERE b.exd_sku_id <> ''
|
||||||
AND a.deleted_at = ?
|
AND a.deleted_at = ?
|
||||||
AND b.deleted_at = ?
|
AND b.deleted_at = ?
|
||||||
AND a.category_id = -1
|
AND a.category_id = 35
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue, utils.DefaultTimeValue,
|
utils.DefaultTimeValue, utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
err = dao.GetRows(db, &skus, sql, sqlParams)
|
err = dao.GetRows(db, &skus, sql, sqlParams...)
|
||||||
|
taskFunc2 := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
v := batchItemList[0].(*model.SkuName)
|
||||||
|
skuList, err := api.EbaiAPI.GetEbaiDepotSku(ebaiapi.EbaiWholeCountryStore, *v.Upc)
|
||||||
|
if err != nil || len(skuList) == 0 {
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
|
sku, err := api.EbaiAPI.GetEbaiSku(skuList[0].UpcID, ebaiapi.EbaiWholeCountryStore)
|
||||||
|
if err != nil || sku == nil {
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
|
skuCat := &model.SkuCategory{}
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM sku_category
|
||||||
|
WHERE exd_name like ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
"%" + sku.CustomCatName + "%",
|
||||||
|
}
|
||||||
|
err = dao.GetRow(db, skuCat, sql, sqlParams)
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
v.CategoryID = skuCat.ID
|
||||||
|
_, err = dao.UpdateEntity(db, v, "CategoryID")
|
||||||
|
if err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
|
taskParallel2 := tasksch.NewParallelTask("更新京西上饿鲜达商品分类", tasksch.NewParallelConfig().SetParallelCount(parallelCount), ctx, taskFunc2, skus)
|
||||||
|
tasksch.HandleTask(taskParallel2, task, true).Run()
|
||||||
|
_, err = taskParallel2.GetResult(0)
|
||||||
}
|
}
|
||||||
return result, err
|
return result, err
|
||||||
}
|
}
|
||||||
@@ -1630,179 +1683,33 @@ func CopyEbaiSkuPriceToJx(ctx *jxcontext.Context, baiduShopID string) (err error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CopyEbaiStoreSkusToJx(ctx *jxcontext.Context, baiduShopID string, storeID int) (err error) {
|
type Tmp struct {
|
||||||
db := dao.GetDB()
|
CatID int
|
||||||
var storeSkuBindInfo []*StoreSkuBindInfo
|
Name string
|
||||||
skuList, err := api.EbaiAPI.PageGetSkuList(utils.Str2Int64(baiduShopID))
|
}
|
||||||
for _, v := range skuList {
|
|
||||||
var skuName model.SkuName
|
func SearchExianDaDepot(ctx *jxcontext.Context) (err error) {
|
||||||
sql2 := `
|
var resultIns []interface{}
|
||||||
SELECT * FROM sku_name WHERE upc = ?
|
var skuMap = make(map[int]string)
|
||||||
`
|
results, err := api.EbaiAPI.GetExianDaSkuDepot("")
|
||||||
sqlParams2 := []interface{}{
|
task := tasksch.NewParallelTask("SearchExianDaDepot", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
|
||||||
v["upc"].(string),
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
}
|
v := batchItemList[0].(*ebaiapi.ExianDaSkus)
|
||||||
dao.GetRow(db, &skuName, sql2, sqlParams2)
|
tmp := &Tmp{}
|
||||||
skuBindInfo := &StoreSkuBindInfo{
|
skus, _ := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
|
||||||
StoreID: storeID,
|
tmp.CatID = skus.CategoryIDThird
|
||||||
NameID: skuName.ID,
|
tmp.Name = skus.CategoryText
|
||||||
UnitPrice: skuName.Price,
|
retVal = []*Tmp{tmp}
|
||||||
IsFocus: 1,
|
return retVal, err
|
||||||
IsSale: 1,
|
}, results)
|
||||||
}
|
tasksch.HandleTask(task, nil, true).Run()
|
||||||
storeSkuBindInfo = append(storeSkuBindInfo, skuBindInfo)
|
resultIns, err = task.GetResult(0)
|
||||||
|
for _, v := range resultIns {
|
||||||
|
tmp := v.(*Tmp)
|
||||||
|
skuMap[tmp.CatID] = tmp.Name
|
||||||
|
}
|
||||||
|
for k, _ := range skuMap {
|
||||||
|
fmt.Println(k, skuMap[k])
|
||||||
}
|
}
|
||||||
UpdateStoresSkusByBind(ctx, nil, storeSkuBindInfo, true, true)
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddExdSkuByExcel(ctx *jxcontext.Context, files []*multipart.FileHeader, isAsync, isContinueWhenError bool) (hint string, err error) {
|
|
||||||
if len(files) == 0 {
|
|
||||||
return "", errors.New("没有文件上传!")
|
|
||||||
}
|
|
||||||
fileHeader := files[0]
|
|
||||||
file, err := fileHeader.Open()
|
|
||||||
hint, err = AddExdSkuByExcelBin(ctx, file, isAsync, isContinueWhenError)
|
|
||||||
file.Close()
|
|
||||||
return hint, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func AddExdSkuByExcelBin(ctx *jxcontext.Context, reader io.Reader, isAsync, isContinueWhenError bool) (hint string, err error) {
|
|
||||||
var (
|
|
||||||
db = dao.GetDB()
|
|
||||||
skuMap = make(map[string]string)
|
|
||||||
)
|
|
||||||
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
|
||||||
switch step {
|
|
||||||
case 0:
|
|
||||||
// xlsx, err := excelize.OpenFile("111.xlsx")
|
|
||||||
xlsx, err := excelize.OpenReader(reader)
|
|
||||||
if err != nil {
|
|
||||||
return result, err
|
|
||||||
}
|
|
||||||
rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
|
|
||||||
for rowNum, row := range rows {
|
|
||||||
if rowNum < 2 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
var (
|
|
||||||
name string
|
|
||||||
upc string
|
|
||||||
)
|
|
||||||
for k, cell := range row {
|
|
||||||
if k == 2 {
|
|
||||||
name = cell
|
|
||||||
}
|
|
||||||
if k == 7 {
|
|
||||||
upc = cell
|
|
||||||
}
|
|
||||||
}
|
|
||||||
skuMap[upc] = name
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
for k, _ := range skuMap {
|
|
||||||
result, err := api.EbaiAPI.GetExianDaSkuDepot(k)
|
|
||||||
if err != nil {
|
|
||||||
return result, err
|
|
||||||
}
|
|
||||||
if len(result) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
exdSku := result[0]
|
|
||||||
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(exdSku.ElemeGoodsID))
|
|
||||||
skuName := &model.SkuName{}
|
|
||||||
sql2 := `
|
|
||||||
SELECT a.*
|
|
||||||
FROM sku_name a
|
|
||||||
JOIN sku b ON b.name_id = a.id
|
|
||||||
WHERE a.upc = ?
|
|
||||||
AND b.exd_sku_id <> ''
|
|
||||||
`
|
|
||||||
sqlParams2 := []interface{}{
|
|
||||||
k,
|
|
||||||
}
|
|
||||||
dao.GetRow(db, skuName, sql2, sqlParams2)
|
|
||||||
dao.Begin(db)
|
|
||||||
defer func() {
|
|
||||||
if r := recover(); r != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
panic(r)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
//表示京西库中已存在此饿鲜达商品,再判断更不更新名字
|
|
||||||
if skuName.ID != 0 {
|
|
||||||
if skuName.Name != skuMap[k] {
|
|
||||||
skuName.Name = skuMap[k]
|
|
||||||
_, err = dao.UpdateEntity(db, skuName, "Name")
|
|
||||||
if err != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
return result, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//插入
|
|
||||||
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(exdSku.GoodsName)
|
|
||||||
skuCat := &model.SkuCategory{}
|
|
||||||
sql := `
|
|
||||||
SELECT *
|
|
||||||
FROM sku_category
|
|
||||||
WHERE ebai_category_id = ?
|
|
||||||
`
|
|
||||||
sqlParams := []interface{}{
|
|
||||||
skus.CategoryIDThird,
|
|
||||||
}
|
|
||||||
dao.GetRow(db, skuCat, sql, sqlParams)
|
|
||||||
skuName2 := &model.SkuName{
|
|
||||||
Prefix: prefix,
|
|
||||||
Name: skuMap[k],
|
|
||||||
IsGlobal: 1,
|
|
||||||
Unit: unit,
|
|
||||||
SpecQuality: specQuality,
|
|
||||||
SpecUnit: specUnit,
|
|
||||||
Price: 100,
|
|
||||||
Img: exdSku.ImageURL,
|
|
||||||
Upc: &k,
|
|
||||||
Status: model.SkuStatusNormal,
|
|
||||||
}
|
|
||||||
if skuCat.ID != 0 {
|
|
||||||
skuName2.CategoryID = skuCat.ID
|
|
||||||
} else {
|
|
||||||
skuName2.CategoryID = skus.CategoryIDThird
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(skuName2, ctx.GetUserName())
|
|
||||||
err = dao.CreateEntity(db, skuName2)
|
|
||||||
if err != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
return result, err
|
|
||||||
}
|
|
||||||
sku := &model.Sku{
|
|
||||||
NameID: skuName2.ID,
|
|
||||||
SpecQuality: specQuality,
|
|
||||||
SpecUnit: specUnit,
|
|
||||||
Weight: int(utils.Str2Int64(skus.Weight)),
|
|
||||||
Status: model.SkuStatusNormal,
|
|
||||||
ExdSkuID: exdSku.ElemeGoodsID,
|
|
||||||
ExdCategoryThirdID: skus.CategoryIDThird,
|
|
||||||
}
|
|
||||||
dao.WrapAddIDCULDEntity(sku, ctx.GetUserName())
|
|
||||||
err = dao.CreateEntity(db, sku)
|
|
||||||
if err != nil {
|
|
||||||
dao.Rollback(db)
|
|
||||||
return result, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dao.Commit(db)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result, err
|
|
||||||
}
|
|
||||||
taskSeq := tasksch.NewSeqTask2("创建饿鲜达商品", ctx, isContinueWhenError, taskSeqFunc, 2)
|
|
||||||
tasksch.HandleTask(taskSeq, nil, true).Run()
|
|
||||||
if !isAsync {
|
|
||||||
_, err = taskSeq.GetResult(0)
|
|
||||||
hint = "1"
|
|
||||||
} else {
|
|
||||||
hint = taskSeq.GetID()
|
|
||||||
}
|
|
||||||
return hint, err
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -36,9 +36,9 @@ func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string, errCod
|
|||||||
apiFunction string
|
apiFunction string
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
)
|
)
|
||||||
if ctx.GetRequest() == nil {
|
// if ctx.GetRequest() == nil {
|
||||||
return nil
|
// return nil
|
||||||
}
|
// }
|
||||||
if apiFunctionSpec == "" {
|
if apiFunctionSpec == "" {
|
||||||
url := ctx.GetRequest().URL.Path
|
url := ctx.GetRequest().URL.Path
|
||||||
if url != "" {
|
if url != "" {
|
||||||
|
|||||||
@@ -250,7 +250,6 @@ type SkuAndName struct {
|
|||||||
ActPrice int `json:"actPrice"`
|
ActPrice int `json:"actPrice"`
|
||||||
ActID int `orm:"column(act_id)" json:"actID"`
|
ActID int `orm:"column(act_id)" json:"actID"`
|
||||||
ActType int `orm:"column(act_type)" json:"actType"`
|
ActType int `orm:"column(act_type)" json:"actType"`
|
||||||
RealCategoryID int `orm:"column(real_category_id)" json:"realCategoryID"`
|
|
||||||
|
|
||||||
EarningPrice int `json:"earningPrice"`
|
EarningPrice int `json:"earningPrice"`
|
||||||
EarningActID int `orm:"column(earning_act_id)" json:"earningActID"`
|
EarningActID int `orm:"column(earning_act_id)" json:"earningActID"`
|
||||||
|
|||||||
@@ -449,17 +449,15 @@ func (c *SkuController) CopyEbaiSkuPriceToJx() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Title 复制饿鲜达的门店商品到京西对应门店
|
// @Title 合并饿鲜达商品库2
|
||||||
// @Description 复制饿鲜达的门店商品到京西对应门店
|
// @Description 合并饿鲜达商品库2
|
||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
// @Param baiduShopID formData string true "饿百店ID"
|
|
||||||
// @Param storeID formData int true "门店ID"
|
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /CopyEbaiStoreSkusToJx [post]
|
// @router /SearchExianDaDepot [post]
|
||||||
func (c *SkuController) CopyEbaiStoreSkusToJx() {
|
func (c *SkuController) SearchExianDaDepot() {
|
||||||
c.callCopyEbaiStoreSkusToJx(func(params *tSkuCopyEbaiStoreSkusToJxParams) (retVal interface{}, errCode string, err error) {
|
c.callSearchExianDaDepot(func(params *tSkuSearchExianDaDepotParams) (retVal interface{}, errCode string, err error) {
|
||||||
err = cms.CopyEbaiStoreSkusToJx(params.Ctx, params.BaiduShopID, params.StoreID)
|
err = cms.SearchExianDaDepot(params.Ctx)
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1260,15 +1260,6 @@ 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: "CopyEbaiStoreSkusToJx",
|
|
||||||
Router: `/CopyEbaiStoreSkusToJx`,
|
|
||||||
AllowHTTPMethods: []string{"post"},
|
|
||||||
MethodParams: param.Make(),
|
|
||||||
Filters: 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "DeleteCategory",
|
Method: "DeleteCategory",
|
||||||
@@ -1368,6 +1359,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: "SearchExianDaDepot",
|
||||||
|
Router: `/SearchExianDaDepot`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "SortCategorySkus",
|
Method: "SortCategorySkus",
|
||||||
|
|||||||
Reference in New Issue
Block a user