From b7fa5bdd38c2a46914a495f63bd1c8d7e0527b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 8 Jul 2020 17:21:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E=E5=95=86?= =?UTF-8?q?=E5=93=81=E4=B8=8D=E5=90=8C=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 2 +- business/jxstore/tempop/tempop.go | 100 +++++++++++++----- business/partner/purchase/jdshop/store_sku.go | 41 ++++--- 3 files changed, 104 insertions(+), 39 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index c4fc83f79..934de2287 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -1249,7 +1249,7 @@ func SyncSkuExperfixAndWatermark(ctx *jxcontext.Context) (err error) { var ( db = dao.GetDB() ) - skuExinfos, err := dao.GetSkuExinfos(db, nil, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJD}, "", utils.ZeroTimeValue, utils.ZeroTimeValue) + skuExinfos, err := dao.GetSkuExinfos(db, nil, []int{model.VendorIDMTWM, model.VendorIDEBAI, model.VendorIDJD, model.VendorIDJDShop}, "", utils.ZeroTimeValue, utils.ZeroTimeValue) task := tasksch.NewParallelTask("SyncSkuExperfixAndWatermark", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { skuExinfo := batchItemList[0].(*model.SkuExinfoMap) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index bb1f341db..604f8b1d5 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1610,30 +1610,30 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // continue // } // } - db := dao.GetDB() - type tStore struct { - NameID int `orm:"column(name_id)"` - StoreID int `orm:"column(store_id)"` - } - var resultList []*tStore - stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "") - for _, v := range stores { - var resultList2 []*tStore - sql := ` - SELECT a.name_id,a.store_id FROM ( - SELECT DISTINCT a.unit_price,b.name_id,a.store_id from store_sku_bind a,sku b,store c - where a.sku_id = b.id - and c.id = a.store_id and c.deleted_at = '1970-01-01 00:00:00' - and a.store_id = ? - and a.deleted_at = '1970-01-01 00:00:00')a - GROUP BY 1,2 - HAVING count(a.unit_price) > 1 - ` - sqlParams := []interface{}{v.ID} - err = dao.GetRows(db, &resultList2, sql, sqlParams) - resultList = append(resultList, resultList2...) - } - fmt.Println("testresultList3", utils.Format4Output(resultList, false)) + // db := dao.GetDB() + // type tStore struct { + // NameID int `orm:"column(name_id)"` + // StoreID int `orm:"column(store_id)"` + // } + // var resultList []*tStore + // stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "") + // for _, v := range stores { + // var resultList2 []*tStore + // sql := ` + // SELECT a.name_id,a.store_id FROM ( + // SELECT DISTINCT a.unit_price,b.name_id,a.store_id from store_sku_bind a,sku b,store c + // where a.sku_id = b.id + // and c.id = a.store_id and c.deleted_at = '1970-01-01 00:00:00' + // and a.store_id = ? + // and a.deleted_at = '1970-01-01 00:00:00')a + // GROUP BY 1,2 + // HAVING count(a.unit_price) > 1 + // ` + // sqlParams := []interface{}{v.ID} + // err = dao.GetRows(db, &resultList2, sql, sqlParams) + // resultList = append(resultList, resultList2...) + // } + // fmt.Println("testresultList3", utils.Format4Output(resultList, false)) // var skuBindInfos []*cms.StoreSkuBindInfo // for _, v := range resultList { // storeSkus, _ := dao.GetStoreSkusByNameIDs(db, []int{v.StoreID}, v.NameID) @@ -1646,6 +1646,58 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { // skuBindInfos = append(skuBindInfos, skuBindInfo) // } // _, err = cms.UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true, false) + type tTmp struct { + SkuID int `json:"skuID"` + Reason string `json:"reason"` + } + var vendorMap = make(map[int]*partner.SkuNameInfo) + var localMap = make(map[int]*model.StoreSkuBind) + var addList, deleteList []int + var updateList []*tTmp + vendorStock2JxStatus := func(stock int) (status int) { + if stock > 0 { + return model.StoreSkuBindStatusNormal + } else { + return model.StoreSkuBindStatusDontSale + } + } + handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJDShop).(partner.ISingleStoreStoreSkuHandler) + skuNameList, err := handler.GetStoreSkusFullInfo(ctx, nil, 0, "", nil) + storeSkuList, err := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, nil) + for _, v := range skuNameList { + vendorMap[v.SkuList[0].SkuID] = v + } + for _, v := range storeSkuList { + if vendorMap[v.SkuID] == nil { + addList = append(addList, v.SkuID) + } else { + if int64(v.JdsPrice) != vendorMap[v.SkuID].SkuList[0].VendorPrice { + updateList = append(updateList, &tTmp{ + SkuID: v.SkuID, + Reason: "价格不同", + }) + } + if v.Status != vendorStock2JxStatus(vendorMap[v.SkuID].SkuList[0].Stock) { + updateList = append(updateList, &tTmp{ + SkuID: v.SkuID, + Reason: "库存可售不同", + }) + } + skus, _ := dao.GetSkus(dao.GetDB(), []int{v.SkuID}, nil, nil, nil, nil) + if skus[0].Comment != vendorMap[v.SkuID].SkuList[0].Comment { + updateList = append(updateList, &tTmp{ + SkuID: v.SkuID, + Reason: "备注与销售属性不同", + }) + } + } + localMap[v.SkuID] = v + } + for k, _ := range vendorMap { + if localMap[k] == nil { + deleteList = append(deleteList, k) + } + } return err } diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index cd0295bdc..7bbf19c26 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -143,8 +143,14 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v } updateWareParam.Introduction = desc updateWareParam.MobileDesc = desc - if v.Img != "" { - pic1, err2 := uploadImg2(v.Img, name, "1") + img := "" + if v.ImgMix != "" { + img = v.ImgMix + } else { + img = v.Img + } + if img != "" { + pic1, err2 := uploadImg2(img, name, "1") err = err2 err = api.JdShopAPI.ImageUpdate(v.JdsWareID, 1, pic1) if v.Img2 != "" { @@ -228,13 +234,13 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v func (p *PurchaseHandler) GetStoreSkusFullInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (skuNameList []*partner.SkuNameInfo, err error) { var ( pageNo = 1 - pageSize = 100 + pageSize = 20 ) - pageResult, err := api.JdShopAPI.SearchWare4Valid("", pageNo, pageSize) - for ; pageNo <= pageResult.TotalItem/pageSize+1; pageNo++ { - result, err := api.JdShopAPI.SearchWare4Valid("", pageNo, pageSize) + _, totalCount, err := api.JdShopAPI.SearchSkuList(pageNo, pageSize) + for ; pageNo <= totalCount/pageSize+1; pageNo++ { + result, _, err := api.JdShopAPI.SearchSkuList(pageNo, pageSize) if err == nil { - for _, v := range result.Data { + for _, v := range result { if skuName := vendorSku2Jx(v); skuName != nil { skuNameList = append(skuNameList, skuName) } @@ -403,18 +409,25 @@ func ybSkuStatus2Jx(ybStatus int) (jxSkuStatus int) { return jxSkuStatus } -func vendorSku2Jx(result *jdshopapi.SearchWare4ValidResultData) (skuName *partner.SkuNameInfo) { +func vendorSku2Jx(result *jdshopapi.SearchSkuListResult) (skuName *partner.SkuNameInfo) { if result == nil { globals.SugarLogger.Warnf("vendorSku2Jx, strange result:%s", utils.Format4Output(result, true)) return nil } - // prefix, name, comment, specUnit, unit, specQuality := jxutils.SplitSkuName(result.Title) skuName = &partner.SkuNameInfo{ - Name: result.Title, - VendorNameID: utils.Int64ToStr(result.WareID), - Status: result.WareStatus, - VendorCatIDList: []string{utils.Int2Str(result.CategoryID)}, - NameID: utils.Str2Int(result.OuterID), + VendorNameID: utils.Int64ToStr(result.WareID), + SkuList: []*partner.SkuInfo{ + &partner.SkuInfo{ + StoreSkuInfo: partner.StoreSkuInfo{ + SkuID: utils.Str2Int(result.OuterID), + VendorSkuID: utils.Int64ToStr(result.SkuID), + VendorNameID: utils.Int64ToStr(result.WareID), + Stock: result.StockNum, + VendorPrice: utils.Float64TwoInt64(result.JdPrice * 100), + }, + Comment: result.SaleAttrs[0].AttrValueAlias[0], + }, + }, } return skuName }