创建标品优化,同步物料测试

This commit is contained in:
苏尹岚
2020-04-24 18:10:53 +08:00
parent ab46db1871
commit fe6de10570
2 changed files with 148 additions and 0 deletions

View File

@@ -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())}

View File

@@ -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
}