From f8e6fd4bdd4fc09453f85792e79ec23bac0b1b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 09:24:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AEexcel=E4=B8=ADskuid=E5=85=B3?= =?UTF-8?q?=E6=B3=A8=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 110 +++++++++++++++++------------- 1 file changed, 63 insertions(+), 47 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 410a94c76..b5ecb5ee1 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2766,57 +2766,73 @@ func FocusStoreSkusByExcelBin(ctx *jxcontext.Context, reader io.Reader, isAsync, SkuRow: 1, } // xlsx, err := excelize.OpenFile("111.xlsx") - xlsx, err := excelize.OpenReader(reader) - if err != nil { - return "", err - } - rows, _ := xlsx.GetRows(xlsx.GetSheetName(1)) - for rowNum, row := range rows { - if rowNum < sheetParam.SkuRow { - continue - } - GetCellForFocusStoreSkus(db, rowNum, row, sheetParam, skuMap) - } - for k, _ := range skuMap { - skuIDs = append(skuIDs, k) - } - skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil) - if err != nil && len(skuList) == 0 { - return - } - for _, v := range skuList { - var ( - price int - specQuality float64 - ) - if v.Unit == model.SpecialUnit { - if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] { - specQuality = float64(v.SpecQuality) * 1000 - } else { - specQuality = float64(v.SpecQuality) + taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + switch step { + case 0: + xlsx, err := excelize.OpenReader(reader) + if err != nil { + return result, err } - price = int(utils.Float64TwoInt64(utils.Int2Float64(model.SpecialSpecQuality) / specQuality * utils.Int2Float64(skuMap[v.ID]))) - } else { - price = skuMap[v.ID] - } - if skuNameMap[v.NameID] < price { - skuNameMap[v.NameID] = price + rows, _ := xlsx.GetRows(xlsx.GetSheetName(1)) + for rowNum, row := range rows { + if rowNum < sheetParam.SkuRow { + continue + } + GetCellForFocusStoreSkus(db, rowNum, row, sheetParam, skuMap) + } + case 1: + for k, _ := range skuMap { + skuIDs = append(skuIDs, k) + } + skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil) + if err != nil && len(skuList) == 0 { + return result, err + } + for _, v := range skuList { + var ( + price int + specQuality float64 + ) + if v.Unit == model.SpecialUnit { + if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] { + specQuality = float64(v.SpecQuality) * 1000 + } else { + specQuality = float64(v.SpecQuality) + } + price = int(utils.Float64TwoInt64(utils.Int2Float64(model.SpecialSpecQuality) / specQuality * utils.Int2Float64(skuMap[v.ID]))) + } else { + price = skuMap[v.ID] + } + if skuNameMap[v.NameID] < price { + skuNameMap[v.NameID] = price + } + } + for k, v := range skuNameMap { + skuBindInfo := &StoreSkuBindInfo{ + NameID: k, + UnitPrice: v, + IsFocus: 1, + IsSale: 1, + } + skuBindInfos = append(skuBindInfos, skuBindInfo) + } + storeList, err := dao.GetStoreList(db, nil, nil, "") + for _, v := range storeList { + storeIDs = append(storeIDs, v.ID) + } + case 2: + UpdateStoresSkus(ctx, storeIDs, skuBindInfos, false, isAsync, isContinueWhenError) } + return result, err } - for k, v := range skuNameMap { - skuBindInfo := &StoreSkuBindInfo{ - NameID: k, - UnitPrice: v, - IsFocus: 1, - IsSale: 1, - } - skuBindInfos = append(skuBindInfos, skuBindInfo) + taskSeq := tasksch.NewSeqTask2("根据Excel中skuID批量关注商品", ctx, isContinueWhenError, taskSeqFunc, 3) + tasksch.HandleTask(taskSeq, nil, true).Run() + if !isAsync { + _, err = taskSeq.GetResult(0) + hint = "1" + } else { + hint = taskSeq.GetID() } - storeList, err := dao.GetStoreList(db, nil, nil, "") - for _, v := range storeList { - storeIDs = append(storeIDs, v.ID) - } - hint, err = UpdateStoresSkus(ctx, storeIDs, skuBindInfos, false, isAsync, isContinueWhenError) return hint, err }