diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 0baa3cd09..a60628423 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -2145,6 +2145,11 @@ func CreateUpcSkuByExcelBin(ctx *jxcontext.Context, reader io.Reader, categoryID skuName.CategoryID = categoryID } skuName.Skus[0].Status = model.SkuStatusNormal + if resBinary, _, err := jxutils.DownloadFileByURL(skuName.Img); err == nil { + if model.ValidMimeTypes[http.DetectContentType(resBinary)] == 0 { + skuName.Img = model.NOSkuNameImg + } + } _, err = AddSkuName(ctx, skuName, ctx.GetUserName()) if err != nil { retVal = []*CreateUpcSkuByExcelErr{buildCreateUpcSkuByExcelErr(v, err.Error())} diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index eb5d6b181..a8a4e5b3b 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4286,3 +4286,146 @@ func CreateSkusAndFocusFromWx(ctx *jxcontext.Context, productInfo *jdapi.Product } return err } + +func SyncMatterC4ToGy(ctx *jxcontext.Context, isContinueWhenError, isAsync bool) (hint string, err error) { + var ( + db = dao.GetDB() + skus []*model.Sku + skusgy []*model.Sku + skuIDs []int + addMatters []*model.Sku + deleteMatters []*model.Sku + updateMatters []*model.Sku + ) + task := tasksch.NewParallelTask("同步物料商品从菜市到果园", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + step := batchItemList[0].(int) + var ( + skusMap = make(map[int]*model.Sku) + skusgyMap = make(map[int]*model.Sku) + ) + switch step { + case 0: + sql := "SELECT * FROM jxd_dev_0.sku WHERE deleted_at = ? AND eclp_id <> ''" + sqlParams := []interface{}{utils.DefaultTimeValue} + err = dao.GetRows(db, &skus, sql, sqlParams) + for _, c4 := range skus { + skuIDs = append(skuIDs, c4.ID) + skusMap[c4.ID] = c4 + } + sql2 := "SELECT * FROM sku WHERE deleted_at = ? AND id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" + sqlParams = append(sqlParams, skuIDs) + err = dao.GetRows(db, &skusgy, sql2, sqlParams) + for _, gy := range skusgy { + skusgyMap[gy.ID] = gy + if skusMap[gy.ID] == nil { + deleteMatters = append(deleteMatters, skusgyMap[gy.ID]) + } + } + for _, c4 := range skus { + if skusgyMap[c4.ID] == nil { + addMatters = append(addMatters, skusMap[c4.ID]) + } else { + updateMatters = append(updateMatters, skusMap[c4.ID]) + } + } + fmt.Println("deleteMatters", utils.Format4Output(deleteMatters, false)) + fmt.Println("addMatters", utils.Format4Output(addMatters, false)) + fmt.Println("updateMatters", utils.Format4Output(updateMatters, false)) + case 1: + // if len(deleteMatters) > 0 { + // for _, v := range deleteMatters { + // _, err = DeleteSkuName(ctx, v.NameID, ctx.GetUserName()) + // } + // } + // if len(addMatters) > 0 { + // for _, v := range addMatters { + // var ( + // skuName *model.SkuName + // storeSkus []*model.StoreSkuBind + // ) + // skuNames, _ := dao.GetSkuNames(db, []int{v.NameID}, nil, "", false) + // if len(skuNames) > 0 { + // skuName = skuNames[0] + // } + // skuNameExt := &model.SkuNameExt{ + // SkuName: model.SkuName{}, + // Skus: []*model.SkuWithVendor{ + // &model.SkuWithVendor{ + // Sku: &model.Sku{}, + // }, + // }, + // } + // skuNameExt.Unit = skuName.Unit + // skuNameExt.Name = skuName.Name + // skuNameExt.Upc = skuName.Upc + // skuNameExt.SkuName.Status = model.SkuStatusNormal + // skuNameExt.Skus[0].SpecQuality = v.SpecQuality + // skuNameExt.Skus[0].SpecUnit = v.SpecUnit + // skuNameExt.Img = skuName.Img + // skuNameExt.Img2 = skuName.Img2 + // skuNameExt.DescImg = skuName.DescImg + // skuNameExt.ID = v.NameID + // skuNameExt.CategoryID = skuName.CategoryID + // skuNameExt.Skus[0].ID = v.ID + // _, err = AddSkuName(ctx, skuNameExt, ctx.GetUserName()) + // if err != nil { + // return retVal, err + // } + // sql := "SELECT * FROM jxd_dev_0.store_sku_bind WHERE store_id = ? AND sku_id = ? " + // sqlParams := []interface{}{model.MatterStoreID, v.ID} + // err = dao.GetRows(db, &storeSkus, sql, sqlParams) + // if err != nil { + // return retVal, err + // } + // if len(storeSkus) > 0 { + // var skuBindInfos []*StoreSkuBindInfo + // skuBindInfo := &StoreSkuBindInfo{ + // NameID: skuName.ID, + // IsFocus: 1, + // IsSale: 1, + // } + // skuBindInfos = append(skuBindInfos, skuBindInfo) + // updateStoresSkusWithoutSync(ctx, db, []int{model.MatterStoreID}, skuBindInfos, false) + // } + // } + // } + // if len(updateMatters) > 0 { + // for _, v := range updateMatters { + // var skuName *model.SkuName + // skuNames, _ := dao.GetSkuNames(db, []int{v.NameID}, nil, "", false) + // if len(skuNames) > 0 { + // skuName = skuNames[0] + // } + // dao.Begin(db) + // defer func() { + // if r := recover(); r != nil { + // dao.Rollback(db) + // panic(r) + // } + // }() + // dao.WrapAddIDCULEntity(v, ctx.GetUserName()) + // if _, err = dao.UpdateEntity(db, v, "SpecQuality", "SpecUnit", "EclpID"); err != nil { + // dao.Rollback(db) + // return retVal, err + // } + // dao.WrapAddIDCULEntity(skuName, ctx.GetUserName()) + // if _, err = dao.UpdateEntity(db, skuName, "Name", "Img", "Img2", "DescImg", "Unit", "CategoryID"); err != nil { + // dao.Rollback(db) + // return retVal, err + // } + // dao.Commit(db) + // } + // } + } + return retVal, err + }, []int{0, 1}) + tasksch.HandleTask(task, nil, true).Run() + if !isAsync { + _, err = task.GetResult(0) + hint = "1" + } else { + hint = task.GetID() + } + return hint, err +}