- UpdateStoresSkus
This commit is contained in:
@@ -229,6 +229,17 @@ func UpdateStoreSku(storeID int, skuBindInfo *StoreSkuBindInfo, userName string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName string) (num int64, err error) {
|
func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName string) (num int64, err error) {
|
||||||
|
skuIDs, err := updateStoreSkusWithoutSync(storeID, skuBindInfos, userName)
|
||||||
|
if err == nil {
|
||||||
|
db := dao.GetDB()
|
||||||
|
err = CurVendorSync.SyncStoresSkus(db, []int{storeID}, skuIDs, false, userName)
|
||||||
|
return int64(len(skuIDs)), err
|
||||||
|
}
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateStoreSkusWithoutSync(storeID int, skuBindInfos []*StoreSkuBindInfo, userName string) (needSyncSkus []int, err error) {
|
||||||
|
var num int64
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
needSyncIDMap := make(map[int]int)
|
needSyncIDMap := make(map[int]int)
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
@@ -284,7 +295,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
|
|||||||
globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
||||||
if err = dao.CreateEntity(db, skuBind); err != nil {
|
if err = dao.CreateEntity(db, skuBind); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return nil, err
|
||||||
}
|
}
|
||||||
num = 1
|
num = 1
|
||||||
}
|
}
|
||||||
@@ -299,7 +310,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
|
|||||||
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
|
||||||
}, userName, nil); err != nil {
|
}, userName, nil); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
needUpdate := false
|
needUpdate := false
|
||||||
@@ -336,7 +347,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
|
|||||||
dao.WrapUpdateULEntity(skuBind, userName)
|
dao.WrapUpdateULEntity(skuBind, userName)
|
||||||
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
|
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -347,12 +358,28 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dao.Rollback(db)
|
dao.Rollback(db)
|
||||||
return 0, err
|
return nil, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
skuIDs := jxutils.IntMap2List(needSyncIDMap)
|
skuIDs := jxutils.IntMap2List(needSyncIDMap)
|
||||||
err = CurVendorSync.SyncStoreSku(db, storeID, skuIDs, false, userName)
|
return skuIDs, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateStoresSkus(storeIDs []int, skuBindInfos []*StoreSkuBindInfo, userName string) (num int64, err error) {
|
||||||
|
for _, storeID := range storeIDs {
|
||||||
|
if _, err = updateStoreSkusWithoutSync(storeID, skuBindInfos, userName); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
skuIDs := make([]int, 0)
|
||||||
|
for _, v := range skuBindInfos {
|
||||||
|
for _, v2 := range v.Skus {
|
||||||
|
skuIDs = append(skuIDs, v2.SkuID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
db := dao.GetDB()
|
||||||
|
err = CurVendorSync.SyncStoresSkus(db, storeIDs, skuIDs, false, userName)
|
||||||
return int64(len(skuIDs)), err
|
return int64(len(skuIDs)), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ func Init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) {
|
func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) {
|
||||||
err = v.LoopMultiStoresVendors(db, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
err = v.LoopMultiStoresVendors(db, "SyncCategory", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
||||||
var cats []*model.SkuCategory
|
var cats []*model.SkuCategory
|
||||||
cond := make(map[string]interface{})
|
cond := make(map[string]interface{})
|
||||||
@@ -82,7 +82,7 @@ func (v *VendorSync) SyncCategory(db *dao.DaoDB, categoryID int, isForce bool, u
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) SyncReorderCategories(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) {
|
func (v *VendorSync) SyncReorderCategories(db *dao.DaoDB, categoryID int, isForce bool, userName string) (err error) {
|
||||||
err = v.LoopMultiStoresVendors(db, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
err = v.LoopMultiStoresVendors(db, "SyncReorderCategories", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
||||||
err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName)
|
err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName)
|
||||||
if err2 == nil {
|
if err2 == nil {
|
||||||
@@ -97,7 +97,7 @@ func (v *VendorSync) SyncReorderCategories(db *dao.DaoDB, categoryID int, isForc
|
|||||||
|
|
||||||
func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce bool, userName string) (err error) {
|
func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce bool, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("SyncStore, storeID:%d", storeID)
|
globals.SugarLogger.Debugf("SyncStore, storeID:%d", storeID)
|
||||||
err = v.LoopStoreMap(db, storeID, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
err = v.LoopStoreMap(db, "SyncStore", userName, storeID, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
storeMap := batchItemList[0].(*model.StoreMap)
|
storeMap := batchItemList[0].(*model.StoreMap)
|
||||||
if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) {
|
if (vendorID == -1 || vendorID == storeMap.VendorID) && (isForce || storeMap.SyncStatus != 0) {
|
||||||
if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil {
|
if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil {
|
||||||
@@ -114,7 +114,7 @@ func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce boo
|
|||||||
|
|
||||||
func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, userName string) (err error) {
|
func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, isForce:%t, userName:%s", nameID, skuID, isForce, userName)
|
globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, isForce:%t, userName:%s", nameID, skuID, isForce, userName)
|
||||||
err = v.LoopMultiStoresVendors(db, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
err = v.LoopMultiStoresVendors(db, "SyncSku", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
||||||
var skuList []*model.Sku
|
var skuList []*model.Sku
|
||||||
cond := make(map[string]interface{})
|
cond := make(map[string]interface{})
|
||||||
@@ -158,29 +158,41 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
func (v *VendorSync) SyncStoreSku(db *dao.DaoDB, storeID int, skuIDs []int, isForce bool, userName string) (err error) {
|
func (v *VendorSync) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) {
|
||||||
globals.SugarLogger.Debug("SyncStoreSku")
|
globals.SugarLogger.Debug("SyncStoresSkus")
|
||||||
err = v.LoopStoreMap(db, storeID, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
err = v.LoopStoreVendors(db, "SyncStoresSkus", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
storeMap := batchItemList[0].(*model.StoreMap)
|
vendorID := batchItemList[0].(int)
|
||||||
if handler := GetPurchaseHandler(storeMap.VendorID); handler != nil {
|
if handler := GetPurchaseHandler(vendorID); handler != nil {
|
||||||
err = handler.SyncStoreSkus(db, []int{storeID}, skuIDs, isForce, userName)
|
err = handler.SyncStoreSkus(db, storeIDs, skuIDs, isForce, userName)
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) LoopStoreMap(db *dao.DaoDB, storeID int, handler tasksch.WorkFunc) (err error) {
|
func (v *VendorSync) LoopStoreMap(db *dao.DaoDB, taskName, userName string, storeID int, handler tasksch.WorkFunc) (err error) {
|
||||||
storeMaps, err := GetStoreVendorMaps(db, storeID, -1)
|
storeMaps, err := GetStoreVendorMaps(db, storeID, -1)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
task := tasksch.RunTask("LoopStoreMap", false, nil, len(storeMaps), 1, "", handler, storeMaps)
|
task := tasksch.RunManagedTask(taskName, false, nil, len(storeMaps), 1, userName, handler, storeMaps)
|
||||||
_, err = task.GetResult(0)
|
_, err = task.GetResult(0)
|
||||||
}
|
}
|
||||||
return makeSyncError(err)
|
return makeSyncError(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) LoopMultiStoresVendors(db *dao.DaoDB, handler tasksch.WorkFunc) (err error) {
|
func (v *VendorSync) LoopMultiStoresVendors(db *dao.DaoDB, taskName, userName string, handler tasksch.WorkFunc) (err error) {
|
||||||
task := tasksch.RunTask("LoopMultiStoresVendors", false, nil, len(MultiStoresVendorHandlers), 1, "", handler, MultiStoresVendorHandlers)
|
task := tasksch.RunManagedTask(taskName, false, nil, len(MultiStoresVendorHandlers), 1, userName, handler, MultiStoresVendorHandlers)
|
||||||
|
_, err = task.GetResult(0)
|
||||||
|
return makeSyncError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (v *VendorSync) LoopStoreVendors(db *dao.DaoDB, taskName, userName string, handler tasksch.WorkFunc) (err error) {
|
||||||
|
vendorIDs := make([]int, len(basesch.FixedBaseScheduler.PurchasePlatformHandlers))
|
||||||
|
index := 0
|
||||||
|
for k := range basesch.FixedBaseScheduler.PurchasePlatformHandlers {
|
||||||
|
vendorIDs[index] = k
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
task := tasksch.RunManagedTask(taskName, false, nil, len(vendorIDs), 1, userName, handler, vendorIDs)
|
||||||
_, err = task.GetResult(0)
|
_, err = task.GetResult(0)
|
||||||
return makeSyncError(err)
|
return makeSyncError(err)
|
||||||
}
|
}
|
||||||
@@ -225,7 +237,7 @@ func (v *VendorSync) RefreshSkuIDs(nameID, skuID int, isForce bool, userName str
|
|||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if err = dao.GetRows(db, &ids, sql, sqlParams); err == nil {
|
if err = dao.GetRows(db, &ids, sql, sqlParams); err == nil {
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(ids, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(ids, false))
|
||||||
err = v.LoopMultiStoresVendors(db, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
err = v.LoopMultiStoresVendors(db, "RefreshSkuIDs", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
multiStoresHandler := batchItemList[0].(partner.IMultipleStoresHandler)
|
||||||
err := multiStoresHandler.SyncSkusIDMap(db, ids, userName)
|
err := multiStoresHandler.SyncSkusIDMap(db, ids, userName)
|
||||||
globals.SugarLogger.Debug(err)
|
globals.SugarLogger.Debug(err)
|
||||||
|
|||||||
@@ -101,3 +101,24 @@ func (c *StoreSkuController) SyncStoreSkus() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 批量修改多商家商品绑定
|
||||||
|
// @Description 批量修改多商家商品绑定
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param storeIDs formData string true "门店ID列表"
|
||||||
|
// @Param payload formData string true "json数据,StoreSkuBindInfo对象数组"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /UpdateStoresSkus [put]
|
||||||
|
func (c *StoreSkuController) UpdateStoresSkus() {
|
||||||
|
c.callUpdateStoresSkus(func(params *tStoreSkuUpdateStoresSkusParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
var storeIDs []int
|
||||||
|
var skuBindInfos []*cms.StoreSkuBindInfo
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err == nil {
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &skuBindInfos); err == nil {
|
||||||
|
retVal, err = cms.UpdateStoresSkus(storeIDs, skuBindInfos, GetUserNameFromToken(params.Token))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -455,6 +455,14 @@ func init() {
|
|||||||
MethodParams: param.Make(),
|
MethodParams: param.Make(),
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "UpdateStoresSkus",
|
||||||
|
Router: `/UpdateStoresSkus`,
|
||||||
|
AllowHTTPMethods: []string{"put"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetTasks",
|
Method: "GetTasks",
|
||||||
|
|||||||
Reference in New Issue
Block a user