- Convert2JDSPU

This commit is contained in:
gazebo
2019-01-02 18:16:48 +08:00
parent 12a3b4265d
commit 7c8a308929
5 changed files with 125 additions and 10 deletions

View File

@@ -8,12 +8,15 @@ import (
"git.rosy.net.cn/baseapi/platformapi/autonavi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
)
@@ -193,3 +196,88 @@ func InitVendorCategory(ctx *jxcontext.Context) (num int64, err error) {
}
return num, err
}
func Convert2JDSPU(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
sql := `
SELECT t1.*
FROM sku_name t1
LEFT JOIN sku_name t2 ON t1.link_id = t2.id
WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.is_spu = 0 AND t1.unit = '份'
AND t2.id IS NULL
;
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
model.SkuStatusDeleted,
}
db := dao.GetDB()
var skuNameList []*model.SkuName
if err = dao.GetRows(db, &skuNameList, sql, sqlParams...); err != nil {
return "", err
}
globals.SugarLogger.Debug(len(skuNameList))
for _, skuName := range skuNameList {
globals.SugarLogger.Debug(skuName.Name)
sql = `
SELECT *
FROM sku
WHERE name_id = ? AND deleted_at = ? AND status <> ?;
`
sqlParams := []interface{}{
skuName.ID,
utils.DefaultTimeValue,
model.SkuStatusDeleted,
}
var skuList []*model.Sku
if err = dao.GetRows(db, &skuList, sql, sqlParams...); err != nil {
return "", err
}
if len(skuList) > 0 {
dao.Begin(db)
skuNameNew := &(*skuName)
dao.WrapAddIDCULEntity(skuNameNew, ctx.GetUserName())
skuNameNew.JdID = 0
skuNameNew.LinkID = skuName.ID
skuNameNew.IsSpu = 1
if err = dao.CreateEntity(db, skuNameNew); err != nil {
dao.Rollback(db)
return "", err
}
for _, sku := range skuList {
skuNew := &(*sku)
dao.WrapAddIDCULEntity(skuNew, ctx.GetUserName())
skuNew.JdID = jxutils.GenFakeID()
skuNew.LinkID = sku.ID
skuNew.NameID = skuNameNew.ID
if err = dao.CreateEntity(db, skuNew); err != nil {
dao.Rollback(db)
return "", err
}
}
dao.Commit(db)
}
}
sql = `
SELECT t1.*
FROM sku_name t1
WHERE t1.link_id <> 0;
`
if err = dao.GetRows(db, &skuNameList, sql); err != nil {
return "", err
}
rootTask := tasksch.NewParallelTask("Convert2JDSPU", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
skuName := batchItemList[0].(*model.SkuName)
_, err = cms.CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, ctx.GetUserName())
return nil, err
}, skuNameList)
tasksch.ManageTask(rootTask).Run()
if !isAsync {
_, err = rootTask.GetResult(0)
} else {
hint = rootTask.ID
}
return hint, err
}