|
|
|
@@ -8,6 +8,7 @@ import (
|
|
|
|
"time"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
|
|
|
|
|
|
"git.rosy.net.cn/baseapi/utils/errlist"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/datares"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/datares"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
|
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
|
|
|
@@ -97,10 +98,25 @@ func AddCategory(ctx *jxcontext.Context, cat *model.SkuCategory, userName string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
cat.Seq = maxSeq.MaxSeq + 1
|
|
|
|
cat.Seq = maxSeq.MaxSeq + 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if err = dao.CreateEntity(nil, cat); err == nil {
|
|
|
|
dao.Begin(db)
|
|
|
|
outCat = cat
|
|
|
|
defer func() {
|
|
|
|
_, err = CurVendorSync.SyncCategory(ctx, nil, cat.ID, false, userName)
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
if err = dao.CreateEntity(db, cat); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnCreateThing(db, int64(cat.ID), model.ThingTypeCategory); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
outCat = cat
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_, err = CurVendorSync.SyncCategory(ctx, nil, cat.ID, false, userName)
|
|
|
|
return outCat, err
|
|
|
|
return outCat, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -119,7 +135,24 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i
|
|
|
|
syncStatus = model.SyncFlagModifiedMask
|
|
|
|
syncStatus = model.SyncFlagModifiedMask
|
|
|
|
valid[model.FieldJdSyncStatus] = int8(syncStatus) | cat.JdSyncStatus
|
|
|
|
valid[model.FieldJdSyncStatus] = int8(syncStatus) | cat.JdSyncStatus
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if num, err = dao.UpdateEntityLogically(db, cat, valid, userName, nil); err == nil {
|
|
|
|
|
|
|
|
|
|
|
|
dao.Begin(db)
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
if num, err = dao.UpdateEntityLogically(db, cat, valid, userName, nil); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnUpdateThing(db, int64(categoryID), model.ThingTypeCategory); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
SetStoreCategorySyncStatus2(db, nil, []int{categoryID}, model.SyncFlagModifiedMask)
|
|
|
|
SetStoreCategorySyncStatus2(db, nil, []int{categoryID}, model.SyncFlagModifiedMask)
|
|
|
|
var skuIDs []int
|
|
|
|
var skuIDs []int
|
|
|
|
if valid["jdCategoryID"] != nil || valid["ebaiCategoryID"] != nil || valid["mtwmCategoryID"] != nil ||
|
|
|
|
if valid["jdCategoryID"] != nil || valid["ebaiCategoryID"] != nil || valid["mtwmCategoryID"] != nil ||
|
|
|
|
@@ -163,20 +196,10 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i
|
|
|
|
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, true, true, userName)
|
|
|
|
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, true, true, userName)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return num, err
|
|
|
|
return num, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func SetStoreCategorySyncStatus2(db *dao.DaoDB, storeIDs []int, catIDs []int, syncStatus int) (num int64, err error) {
|
|
|
|
func SetStoreCategorySyncStatus2(db *dao.DaoDB, storeIDs []int, catIDs []int, syncStatus int) (num int64, err error) {
|
|
|
|
// dao.Begin(db)
|
|
|
|
|
|
|
|
// defer func() {
|
|
|
|
|
|
|
|
// if r := recover(); r != nil || err != nil {
|
|
|
|
|
|
|
|
// dao.Rollback(db)
|
|
|
|
|
|
|
|
// if r != nil {
|
|
|
|
|
|
|
|
// panic(r)
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }()
|
|
|
|
|
|
|
|
for _, vendorID := range partner.GetSingleStoreVendorIDs() {
|
|
|
|
for _, vendorID := range partner.GetSingleStoreVendorIDs() {
|
|
|
|
num2, err2 := dao.SetStoreCategorySyncStatus(db, vendorID, storeIDs, catIDs, syncStatus)
|
|
|
|
num2, err2 := dao.SetStoreCategorySyncStatus(db, vendorID, storeIDs, catIDs, syncStatus)
|
|
|
|
if err = err2; err != nil {
|
|
|
|
if err = err2; err != nil {
|
|
|
|
@@ -184,21 +207,12 @@ func SetStoreCategorySyncStatus2(db *dao.DaoDB, storeIDs []int, catIDs []int, sy
|
|
|
|
}
|
|
|
|
}
|
|
|
|
num += num2
|
|
|
|
num += num2
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// dao.Commit(db)
|
|
|
|
|
|
|
|
return num, nil
|
|
|
|
return num, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int, userName string) (err error) {
|
|
|
|
func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int, userName string) (err error) {
|
|
|
|
var cats []*model.SkuCategory
|
|
|
|
var cats []*model.SkuCategory
|
|
|
|
parentCat := &model.SkuCategory{}
|
|
|
|
|
|
|
|
parentCat.ID = parentID
|
|
|
|
|
|
|
|
db := dao.GetDB()
|
|
|
|
db := dao.GetDB()
|
|
|
|
if parentID != 0 {
|
|
|
|
|
|
|
|
err = dao.GetEntity(db, parentCat)
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
parentCat = nil
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
|
|
|
|
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
|
|
|
|
if err = dao.GetEntitiesByKV(db, &cats, utils.Params2Map(model.FieldParentID, parentID), false); err == nil {
|
|
|
|
catsLen := len(cats)
|
|
|
|
catsLen := len(cats)
|
|
|
|
if catsLen != len(categoryIDs) {
|
|
|
|
if catsLen != len(categoryIDs) {
|
|
|
|
@@ -208,20 +222,38 @@ func ReorderCategories(ctx *jxcontext.Context, parentID int, categoryIDs []int,
|
|
|
|
for _, cat := range cats {
|
|
|
|
for _, cat := range cats {
|
|
|
|
catsMap[cat.ID] = cat
|
|
|
|
catsMap[cat.ID] = cat
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dao.Begin(db)
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
for k, v := range categoryIDs {
|
|
|
|
for k, v := range categoryIDs {
|
|
|
|
|
|
|
|
if catsMap[v] == nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return fmt.Errorf("分类:%d不在%d分类下", v, parentID)
|
|
|
|
|
|
|
|
}
|
|
|
|
catsMap[v].Seq = k
|
|
|
|
catsMap[v].Seq = k
|
|
|
|
catsMap[v].LastOperator = ctx.GetUserName()
|
|
|
|
catsMap[v].LastOperator = ctx.GetUserName()
|
|
|
|
if _, err = dao.UpdateEntity(db, catsMap[v]); err != nil {
|
|
|
|
if _, err = dao.UpdateEntity(db, catsMap[v]); err != nil {
|
|
|
|
break
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnUpdateThing(db, int64(catsMap[v].ID), model.ThingTypeCategory); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
SetStoreCategorySyncStatus2(db, nil, categoryIDs, model.SyncFlagModifiedMask)
|
|
|
|
SetStoreCategorySyncStatus2(db, nil, categoryIDs, model.SyncFlagModifiedMask)
|
|
|
|
if err == nil {
|
|
|
|
if err == nil {
|
|
|
|
_, err = CurVendorSync.SyncReorderCategories(ctx, db, parentID, false, userName)
|
|
|
|
_, err = CurVendorSync.SyncReorderCategories(ctx, db, parentID, false, userName)
|
|
|
|
CurVendorSync.SyncStoresCategory(ctx, db, nil, nil, false, true, true)
|
|
|
|
CurVendorSync.SyncStoresCategory(ctx, db, nil, nil, false, true, true)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -252,15 +284,26 @@ func DeleteCategory(ctx *jxcontext.Context, categoryID int, userName string) (nu
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dao.Begin(db)
|
|
|
|
dao.Begin(db)
|
|
|
|
defer func() {
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
dao.Rollback(db)
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
}()
|
|
|
|
if _, err = DeleteCategoryMap(ctx, db, categoryID); err == nil {
|
|
|
|
if _, err = DeleteCategoryMap(ctx, db, categoryID); err != nil {
|
|
|
|
if num, err = dao.DeleteEntityLogically(db, cat, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask), userName, nil); err == nil && num == 1 {
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnDeleteThing(db, int64(categoryID), model.ThingTypeCategory); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if num, err = dao.DeleteEntityLogically(db, cat, utils.Params2Map(model.FieldJdSyncStatus, model.SyncFlagDeletedMask), userName, nil); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
dao.Commit(db)
|
|
|
|
dao.Commit(db)
|
|
|
|
_, err = CurVendorSync.SyncCategory(ctx, db, cat.ID, false, userName)
|
|
|
|
_, err = CurVendorSync.SyncCategory(ctx, db, cat.ID, false, userName)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return num, err
|
|
|
|
return num, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -620,6 +663,10 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s
|
|
|
|
dao.Rollback(db)
|
|
|
|
dao.Rollback(db)
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnCreateThing(db, int64(skuNameExt.SkuName.ID), model.ThingTypeSkuName); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
for _, sku := range skuNameExt.Skus {
|
|
|
|
for _, sku := range skuNameExt.Skus {
|
|
|
|
dao.WrapAddIDCULDEntity(sku, userName)
|
|
|
|
dao.WrapAddIDCULDEntity(sku, userName)
|
|
|
|
sku.NameID = skuNameExt.ID
|
|
|
|
sku.NameID = skuNameExt.ID
|
|
|
|
@@ -728,10 +775,20 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
}()
|
|
|
|
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask | skuName.JdSyncStatus
|
|
|
|
valid[model.FieldJdSyncStatus] = model.SyncFlagModifiedMask | skuName.JdSyncStatus
|
|
|
|
if num, err = dao.UpdateEntityLogically(db, skuName, valid, userName, nil); err == nil {
|
|
|
|
if num, err = dao.UpdateEntityLogically(db, skuName, valid, userName, nil); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnUpdateThing(db, int64(nameID), model.ThingTypeSkuName); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
if utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil {
|
|
|
|
if utils.Interface2Int64WithDefault(payload["isGlobal"], 0) == 0 && payload["places"] != nil {
|
|
|
|
if places, ok := payload["places"].([]interface{}); ok {
|
|
|
|
if places, ok := payload["places"].([]interface{}); ok {
|
|
|
|
if _, err = dao.DeleteSkuNamePlace(db, nameID, nil); err == nil {
|
|
|
|
if _, err = dao.DeleteSkuNamePlace(db, nameID, nil); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
for _, placeCode := range places {
|
|
|
|
for _, placeCode := range places {
|
|
|
|
placeBind := &model.SkuNamePlaceBind{}
|
|
|
|
placeBind := &model.SkuNamePlaceBind{}
|
|
|
|
placeBind.PlaceCode = int(utils.Interface2Int64WithDefault(placeCode, 0))
|
|
|
|
placeBind.PlaceCode = int(utils.Interface2Int64WithDefault(placeCode, 0))
|
|
|
|
@@ -746,8 +803,7 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
|
|
|
|
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
|
|
|
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
|
|
|
if err = err2; err == nil {
|
|
|
|
if err = err2; err == nil {
|
|
|
|
for _, v := range skuList {
|
|
|
|
for _, v := range skuList {
|
|
|
|
@@ -755,25 +811,36 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf
|
|
|
|
sku.JdSyncStatus |= model.SyncFlagModifiedMask
|
|
|
|
sku.JdSyncStatus |= model.SyncFlagModifiedMask
|
|
|
|
sku.LastOperator = userName
|
|
|
|
sku.LastOperator = userName
|
|
|
|
sku.UpdatedAt = time.Now()
|
|
|
|
sku.UpdatedAt = time.Now()
|
|
|
|
dao.UpdateEntity(db, sku)
|
|
|
|
if _, err = dao.UpdateEntity(db, sku); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err = OnUpdateThing(db, int64(v.ID), model.ThingTypeSku); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if err == nil {
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID})
|
|
|
|
skuIDs, err2 := dao.GetSkuIDByNames(db, []int{nameID})
|
|
|
|
if err = err2; err == nil && len(skuIDs) > 0 {
|
|
|
|
if err = err2; err != nil {
|
|
|
|
_, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), skuIDs, model.SyncFlagModifiedMask)
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(skuIDs) > 0 {
|
|
|
|
|
|
|
|
if _, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), skuIDs, model.SyncFlagModifiedMask); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
errList := errlist.New()
|
|
|
|
|
|
|
|
errList.AddErr(err)
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
|
|
|
} else {
|
|
|
|
errList.AddErr(err)
|
|
|
|
dao.Rollback(db)
|
|
|
|
err = errList.GetErrListAsOne()
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return num, err
|
|
|
|
return num, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -793,33 +860,57 @@ func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int
|
|
|
|
db := dao.GetDB()
|
|
|
|
db := dao.GetDB()
|
|
|
|
dao.Begin(db)
|
|
|
|
dao.Begin(db)
|
|
|
|
defer func() {
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
dao.Rollback(db)
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
|
|
if _, err := dao.DeleteSkuNamePlace(db, nameID, nil); err != nil {
|
|
|
|
if _, err := dao.DeleteSkuNamePlace(db, nameID, nil); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
return 0, err
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if _, err = DeleteStoreSku(ctx, db, nameID, 0); err != nil {
|
|
|
|
if _, err = DeleteStoreSku(ctx, db, nameID, 0); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
return 0, err
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
numSku, err := dao.DeleteEntityLogically(db, &model.Sku{}, map[string]interface{}{
|
|
|
|
|
|
|
|
|
|
|
|
skuList, err2 := dao.GetSkus(db, nil, []int{nameID}, nil, nil)
|
|
|
|
|
|
|
|
if err = err2; err == nil {
|
|
|
|
|
|
|
|
for _, v := range skuList {
|
|
|
|
|
|
|
|
sku := &v.Sku
|
|
|
|
|
|
|
|
if _, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
|
|
|
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
|
|
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
|
|
|
model.FieldStatus: model.SkuStatusDeleted,
|
|
|
|
model.FieldStatus: model.SkuStatusDeleted,
|
|
|
|
}, userName, map[string]interface{}{
|
|
|
|
}, userName, nil); err != nil {
|
|
|
|
model.FieldNameID: nameID,
|
|
|
|
dao.Rollback(db)
|
|
|
|
})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err = OnDeleteThing(db, int64(v.ID), model.ThingTypeSku); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err = OnDeleteThing(db, int64(nameID), model.ThingTypeSkuName); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
skuName := &model.SkuName{}
|
|
|
|
skuName := &model.SkuName{}
|
|
|
|
skuName.ID = nameID
|
|
|
|
skuName.ID = nameID
|
|
|
|
if num, err = dao.DeleteEntityLogically(db, skuName, map[string]interface{}{
|
|
|
|
if num, err = dao.DeleteEntityLogically(db, skuName, map[string]interface{}{
|
|
|
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
|
|
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
|
|
|
model.FieldStatus: model.SkuStatusDeleted,
|
|
|
|
model.FieldStatus: model.SkuStatusDeleted,
|
|
|
|
}, userName, nil); err != nil {
|
|
|
|
}, userName, nil); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
return 0, err
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dao.Commit(db)
|
|
|
|
dao.Commit(db)
|
|
|
|
if numSku > 0 {
|
|
|
|
|
|
|
|
|
|
|
|
if len(skuList) > 0 {
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, false, userName)
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, skuName.ID, -1, false, false, userName)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return num, err
|
|
|
|
return num, err
|
|
|
|
@@ -840,7 +931,24 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
|
|
|
|
sku.JdSyncStatus = model.SyncFlagNewMask
|
|
|
|
sku.JdSyncStatus = model.SyncFlagNewMask
|
|
|
|
sku.JdID = 0
|
|
|
|
sku.JdID = 0
|
|
|
|
sku.NameID = nameID
|
|
|
|
sku.NameID = nameID
|
|
|
|
if err = dao.CreateEntity(db, sku); err == nil {
|
|
|
|
|
|
|
|
|
|
|
|
dao.Begin(db)
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
if err = dao.CreateEntity(db, sku); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnCreateThing(db, int64(sku.ID), model.ThingTypeSku); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
result, err2 := GetSkuNames(ctx, "", false, utils.Params2Map("skuID", sku.ID), 0, 0)
|
|
|
|
result, err2 := GetSkuNames(ctx, "", false, utils.Params2Map("skuID", sku.ID), 0, 0)
|
|
|
|
if err = err2; err == nil {
|
|
|
|
if err = err2; err == nil {
|
|
|
|
if result.TotalCount == 1 {
|
|
|
|
if result.TotalCount == 1 {
|
|
|
|
@@ -850,7 +958,6 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string)
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return outSkuNameExt, err
|
|
|
|
return outSkuNameExt, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -877,31 +984,43 @@ func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}
|
|
|
|
maskValue |= model.SyncFlagSpecMask
|
|
|
|
maskValue |= model.SyncFlagSpecMask
|
|
|
|
}
|
|
|
|
}
|
|
|
|
valid[model.FieldJdSyncStatus] = maskValue | sku.JdSyncStatus
|
|
|
|
valid[model.FieldJdSyncStatus] = maskValue | sku.JdSyncStatus
|
|
|
|
if num, err = dao.UpdateEntityLogically(db, sku, valid, userName, nil); err == nil {
|
|
|
|
if num, err = dao.UpdateEntityLogically(db, sku, valid, userName, nil); err != nil || num == 0 {
|
|
|
|
if num == 1 {
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
if num, err = dao.ExecuteSQL(db, `
|
|
|
|
if num, err = dao.ExecuteSQL(db, `
|
|
|
|
UPDATE sku_name t1
|
|
|
|
UPDATE sku_name t1
|
|
|
|
JOIN sku t2 ON t1.id = t2.name_id
|
|
|
|
JOIN sku t2 ON t1.id = t2.name_id
|
|
|
|
SET t1.spec_quality = t2.spec_quality,
|
|
|
|
SET t1.spec_quality = t2.spec_quality,
|
|
|
|
t1.spec_unit = t2.spec_unit
|
|
|
|
t1.spec_unit = t2.spec_unit
|
|
|
|
WHERE t1.deleted_at = ? AND t2.id = ? AND t1.unit <> ?
|
|
|
|
WHERE t1.deleted_at = ? AND t2.id = ? AND t1.unit <> ?
|
|
|
|
`, utils.DefaultTimeValue, skuID, model.SpecialUnit); err == nil {
|
|
|
|
`, utils.DefaultTimeValue, skuID, model.SpecialUnit); err != nil || num == 0 {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnUpdateThing(db, int64(skuID), model.ThingTypeSku); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
if _, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), []int{skuID}, model.SyncFlagModifiedMask); err == nil {
|
|
|
|
if _, err = SetStoreSkuSyncStatus2(db, nil, partner.GetSingleStoreVendorIDs(), []int{skuID}, model.SyncFlagModifiedMask); err == nil {
|
|
|
|
if maskValue&model.SyncFlagSpecMask != 0 {
|
|
|
|
if maskValue&model.SyncFlagSpecMask != 0 {
|
|
|
|
err = refreshStoreSkuPrice(ctx, db, skuID)
|
|
|
|
err = refreshStoreSkuPrice(ctx, db, skuID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
errList := errlist.New()
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
errList.AddErr(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
|
|
|
|
} else {
|
|
|
|
errList.AddErr(err)
|
|
|
|
dao.Rollback(db)
|
|
|
|
err = errList.GetErrListAsOne()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return num, err
|
|
|
|
return num, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -940,23 +1059,33 @@ func DeleteSku(ctx *jxcontext.Context, skuID int, userName string) (num int64, e
|
|
|
|
db := dao.GetDB()
|
|
|
|
db := dao.GetDB()
|
|
|
|
dao.Begin(db)
|
|
|
|
dao.Begin(db)
|
|
|
|
defer func() {
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
dao.Rollback(db)
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
|
|
if _, err = DeleteStoreSku(ctx, db, 0, skuID); err == nil {
|
|
|
|
if _, err = DeleteStoreSku(ctx, db, 0, skuID); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnDeleteThing(db, int64(skuID), model.ThingTypeSku); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
sku := &model.Sku{}
|
|
|
|
sku := &model.Sku{}
|
|
|
|
sku.ID = skuID
|
|
|
|
sku.ID = skuID
|
|
|
|
if num, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
|
|
|
|
if num, err = dao.DeleteEntityLogically(db, sku, map[string]interface{}{
|
|
|
|
model.FieldStatus: model.SkuStatusDeleted,
|
|
|
|
model.FieldStatus: model.SkuStatusDeleted,
|
|
|
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
|
|
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
|
|
|
}, userName, nil); err == nil {
|
|
|
|
}, userName, nil); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
dao.Commit(db)
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
if num == 1 {
|
|
|
|
if num == 1 {
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, -1, sku.ID, false, false, userName)
|
|
|
|
} else {
|
|
|
|
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return num, err
|
|
|
|
return num, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -1008,9 +1137,25 @@ func AddSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName str
|
|
|
|
PlaceCode: placeCode,
|
|
|
|
PlaceCode: placeCode,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dao.WrapAddIDCULEntity(placeBind, userName)
|
|
|
|
dao.WrapAddIDCULEntity(placeBind, userName)
|
|
|
|
if err = dao.CreateEntity(db, placeBind); err == nil {
|
|
|
|
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
|
|
|
dao.Begin(db)
|
|
|
|
|
|
|
|
defer func() {
|
|
|
|
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
if err = dao.CreateEntity(db, placeBind); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnUpdateThing(db, int64(nameID), model.ThingTypeSkuName); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
|
|
|
return placeBind, err
|
|
|
|
return placeBind, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1019,13 +1164,28 @@ func DeleteSkuNamePlace(ctx *jxcontext.Context, nameID, placeCode int, userName
|
|
|
|
placeBind := &model.SkuNamePlaceBind{}
|
|
|
|
placeBind := &model.SkuNamePlaceBind{}
|
|
|
|
placeBind.NameID = nameID
|
|
|
|
placeBind.NameID = nameID
|
|
|
|
placeBind.PlaceCode = placeCode
|
|
|
|
placeBind.PlaceCode = placeCode
|
|
|
|
if num, err = dao.DeleteEntity(db, placeBind, model.FieldNameID, model.FieldPlaceCode); err == nil {
|
|
|
|
|
|
|
|
if num == 1 {
|
|
|
|
dao.Begin(db)
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
|
|
|
defer func() {
|
|
|
|
} else {
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
if num, err = dao.DeleteEntity(db, placeBind, model.FieldNameID, model.FieldPlaceCode); err != nil || num == 0 {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
if err == nil {
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
err = ErrEntityNotExist
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err = OnUpdateThing(db, int64(nameID), model.ThingTypeSkuName); err != nil {
|
|
|
|
|
|
|
|
dao.Rollback(db)
|
|
|
|
|
|
|
|
return 0, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
dao.Commit(db)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_, err = CurVendorSync.SyncSku(ctx, db, nameID, -1, false, false, userName)
|
|
|
|
return num, err
|
|
|
|
return num, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1058,10 +1218,8 @@ func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err e
|
|
|
|
defer func() {
|
|
|
|
defer func() {
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
if r := recover(); r != nil {
|
|
|
|
dao.Rollback(db)
|
|
|
|
dao.Rollback(db)
|
|
|
|
if r != nil {
|
|
|
|
|
|
|
|
panic(r)
|
|
|
|
panic(r)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}()
|
|
|
|
}()
|
|
|
|
nameIDList := []int{}
|
|
|
|
nameIDList := []int{}
|
|
|
|
for _, value := range skuList {
|
|
|
|
for _, value := range skuList {
|
|
|
|
@@ -1087,6 +1245,5 @@ func SortCategorySkus(ctx *jxcontext.Context, catID int, skuIDList []int) (err e
|
|
|
|
dao.Rollback(db)
|
|
|
|
dao.Rollback(db)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|