From f98dae15f95f42e2cf1b6626f9a805f0cd19837f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 21 Feb 2020 13:30:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E9=A5=BF=E9=B2=9C=E8=BE=BE?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=BA=93=E5=B9=B6=E5=88=B7=E6=96=B0=E5=88=86?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 273 +++++++++----------------- business/jxstore/event/event.go | 6 +- business/model/sku.go | 1 - controllers/cms_sku.go | 16 +- routers/commentsRouter_controllers.go | 18 +- 5 files changed, 109 insertions(+), 205 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 9755a2370..6bf94964b 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -3,13 +3,11 @@ package cms import ( "errors" "fmt" - "io" - "mime/multipart" "strconv" "strings" "time" - "github.com/360EntSecGroup-Skylar/excelize" + "git.rosy.net.cn/baseapi/platformapi/ebaiapi" "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) { switch step { 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)) if err != nil { return result, err @@ -1509,8 +1508,20 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName) //京西库中存在此商品 if skuNameExt.ID != 0 { + var flag = false if 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") if err != nil { dao.Rollback(db) @@ -1543,7 +1554,7 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) if skuCat.ID != 0 { skuName.CategoryID = skuCat.ID } else { - skuName.CategoryID = -1 //默认给了个分类 + skuName.CategoryID = 35 //默认给了个分类 } dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName()) err = dao.CreateEntity(db, skuName) @@ -1568,24 +1579,66 @@ func SumExianDaDepot(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) } } 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: //刷新分类 - skus := &model.SkuAndName{} + var skus []*model.SkuName sql := ` - SELECT b.*, a.name, a.category_id real_category_id + SELECT a.* FROM sku_name a JOIN sku b ON b.name_id = a.id WHERE b.exd_sku_id <> '' AND a.deleted_at = ? AND b.deleted_at = ? - AND a.category_id = -1 + AND a.category_id = 35 ` sqlParams := []interface{}{ 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 } @@ -1630,179 +1683,33 @@ func CopyEbaiSkuPriceToJx(ctx *jxcontext.Context, baiduShopID string) (err error return err } -func CopyEbaiStoreSkusToJx(ctx *jxcontext.Context, baiduShopID string, storeID int) (err error) { - db := dao.GetDB() - var storeSkuBindInfo []*StoreSkuBindInfo - skuList, err := api.EbaiAPI.PageGetSkuList(utils.Str2Int64(baiduShopID)) - for _, v := range skuList { - var skuName model.SkuName - sql2 := ` - SELECT * FROM sku_name WHERE upc = ? - ` - sqlParams2 := []interface{}{ - v["upc"].(string), - } - dao.GetRow(db, &skuName, sql2, sqlParams2) - skuBindInfo := &StoreSkuBindInfo{ - StoreID: storeID, - NameID: skuName.ID, - UnitPrice: skuName.Price, - IsFocus: 1, - IsSale: 1, - } - storeSkuBindInfo = append(storeSkuBindInfo, skuBindInfo) +type Tmp struct { + CatID int + Name string +} + +func SearchExianDaDepot(ctx *jxcontext.Context) (err error) { + var resultIns []interface{} + var skuMap = make(map[int]string) + results, err := api.EbaiAPI.GetExianDaSkuDepot("") + task := tasksch.NewParallelTask("SearchExianDaDepot", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + v := batchItemList[0].(*ebaiapi.ExianDaSkus) + tmp := &Tmp{} + skus, _ := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID)) + tmp.CatID = skus.CategoryIDThird + tmp.Name = skus.CategoryText + retVal = []*Tmp{tmp} + return retVal, err + }, results) + tasksch.HandleTask(task, nil, true).Run() + 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 } - -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 -} diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index 2b39dbf3e..f8695719f 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -36,9 +36,9 @@ func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string, errCod apiFunction string db = dao.GetDB() ) - if ctx.GetRequest() == nil { - return nil - } + // if ctx.GetRequest() == nil { + // return nil + // } if apiFunctionSpec == "" { url := ctx.GetRequest().URL.Path if url != "" { diff --git a/business/model/sku.go b/business/model/sku.go index e1b1b2005..d323a9a38 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -250,7 +250,6 @@ type SkuAndName struct { ActPrice int `json:"actPrice"` ActID int `orm:"column(act_id)" json:"actID"` ActType int `orm:"column(act_type)" json:"actType"` - RealCategoryID int `orm:"column(real_category_id)" json:"realCategoryID"` EarningPrice int `json:"earningPrice"` EarningActID int `orm:"column(earning_act_id)" json:"earningActID"` diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index b00a23a2d..0fe2d964f 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -449,17 +449,15 @@ func (c *SkuController) CopyEbaiSkuPriceToJx() { }) } -// @Title 复制饿鲜达的门店商品到京西对应门店 -// @Description 复制饿鲜达的门店商品到京西对应门店 -// @Param token header string true "认证token" -// @Param baiduShopID formData string true "饿百店ID" -// @Param storeID formData int true "门店ID" +// @Title 合并饿鲜达商品库2 +// @Description 合并饿鲜达商品库2 +// @Param token header string true "认证token" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /CopyEbaiStoreSkusToJx [post] -func (c *SkuController) CopyEbaiStoreSkusToJx() { - c.callCopyEbaiStoreSkusToJx(func(params *tSkuCopyEbaiStoreSkusToJxParams) (retVal interface{}, errCode string, err error) { - err = cms.CopyEbaiStoreSkusToJx(params.Ctx, params.BaiduShopID, params.StoreID) +// @router /SearchExianDaDepot [post] +func (c *SkuController) SearchExianDaDepot() { + c.callSearchExianDaDepot(func(params *tSkuSearchExianDaDepotParams) (retVal interface{}, errCode string, err error) { + err = cms.SearchExianDaDepot(params.Ctx) return retVal, "", err }) } diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 688856bed..3736e8c33 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1260,15 +1260,6 @@ func init() { 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.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.ControllerComments{ Method: "DeleteCategory", @@ -1368,6 +1359,15 @@ func init() { 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.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.ControllerComments{ Method: "SortCategorySkus",