- remove many useless isForce parameters.

- isSync to isAsync.
This commit is contained in:
gazebo
2018-10-16 11:52:40 +08:00
parent d7de24715b
commit d7b93b8bf2
10 changed files with 74 additions and 48 deletions

View File

@@ -112,7 +112,7 @@ func ReorderCategories(parentID int, categoryIDs []int, userName string) (err er
return err
}
func DeleteCategory(categoryID int, isForce bool, userName string) (num int64, err error) {
func DeleteCategory(categoryID int, userName string) (num int64, err error) {
cat := &model.SkuCategory{}
cat.ID = categoryID
var countInfos []*struct{ Ct int }
@@ -354,7 +354,7 @@ func AddSkuName(skuNameExt *model.SkuNameExt, userName string) (outSkuNameExt *m
return nil, ErrEntityNotExist
}
outSkuNameExt = tmpInfo.SkuNames[0]
err = CurVendorSync.SyncSku(db, outSkuNameExt.SkuName.ID, -1, false, userName)
err = CurVendorSync.SyncSku(db, outSkuNameExt.SkuName.ID, -1, userName)
return outSkuNameExt, err
}
@@ -398,7 +398,7 @@ func UpdateSkuName(nameID int, payload map[string]interface{}, userName string)
}, model.FieldJdSyncStatus)
if err = err2; err == nil {
dao.Commit(db)
err2 = CurVendorSync.SyncSku(db, nameID, -1, false, userName)
err2 = CurVendorSync.SyncSku(db, nameID, -1, userName)
}
}
}
@@ -433,7 +433,7 @@ func DeleteSkuName(nameID int, userName string) (num int64, err error) {
if err2 == nil {
dao.Commit(db)
if num2 > 0 {
err = CurVendorSync.SyncSku(db, skuName.ID, -1, false, userName)
err = CurVendorSync.SyncSku(db, skuName.ID, -1, userName)
}
return num, err
}
@@ -453,7 +453,7 @@ func AddSku(nameID int, sku *model.Sku, userName string) (outSkuNameExt *model.S
if err = err2; err == nil {
if result.TotalCount == 1 {
outSkuNameExt = result.SkuNames[0]
err = CurVendorSync.SyncSku(db, outSkuNameExt.SkuName.ID, sku.ID, false, userName)
err = CurVendorSync.SyncSku(db, outSkuNameExt.SkuName.ID, sku.ID, userName)
} else {
err = ErrEntityNotExist
}
@@ -470,7 +470,7 @@ func UpdateSku(skuID int, payload map[string]interface{}, userName string) (num
db := dao.GetDB()
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, sku, valid, userName, nil, model.FieldJdSyncStatus); err == nil {
if num == 1 {
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
err = CurVendorSync.SyncSku(db, -1, sku.ID, userName)
} else {
err = ErrEntityNotExist
}
@@ -488,7 +488,7 @@ func DeleteSku(skuID int, userName string) (num int64, err error) {
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
}, userName, nil); err == nil {
if num == 1 {
err = CurVendorSync.SyncSku(db, -1, sku.ID, false, userName)
err = CurVendorSync.SyncSku(db, -1, sku.ID, userName)
} else {
err = ErrEntityNotExist
}
@@ -504,7 +504,7 @@ func AddSkuNamePlace(nameID, placeCode int, userName string) (outPlaceBind *mode
}
dao.WrapAddIDCULEntity(placeBind, userName)
if err = dao.CreateEntity(db, placeBind); err == nil {
err = CurVendorSync.SyncSku(db, nameID, -1, false, userName)
err = CurVendorSync.SyncSku(db, nameID, -1, userName)
}
return placeBind, err
}
@@ -516,7 +516,7 @@ func DeleteSkuNamePlace(nameID, placeCode int, userName string) (num int64, err
placeBind.PlaceCode = placeCode
if num, err = dao.DeleteEntity(db, placeBind, model.FieldNameID, model.FieldPlaceCode); err == nil {
if num == 1 {
err = CurVendorSync.SyncSku(db, nameID, -1, false, userName)
err = CurVendorSync.SyncSku(db, nameID, -1, userName)
} else {
err = ErrEntityNotExist
}

View File

@@ -235,7 +235,7 @@ func UpdateStoreSkus(storeID int, skuBindInfos []*StoreSkuBindInfo, userName str
skuIDs, err := updateStoreSkusWithoutSync(storeID, skuBindInfos, userName)
if err == nil {
db := dao.GetDB()
err = CurVendorSync.SyncStoresSkus(db, []int{storeID}, skuIDs, false, userName)
_, err = CurVendorSync.SyncStoresSkus(db, nil, []int{storeID}, skuIDs, false, userName)
return int64(len(skuIDs)), err
}
return 0, err
@@ -382,7 +382,7 @@ func UpdateStoresSkus(storeIDs []int, skuBindInfos []*StoreSkuBindInfo, userName
}
}
db := dao.GetDB()
err = CurVendorSync.SyncStoresSkus(db, storeIDs, skuIDs, false, userName)
_, err = CurVendorSync.SyncStoresSkus(db, nil, storeIDs, skuIDs, false, userName)
return int64(len(skuIDs)), err
}

View File

@@ -176,8 +176,8 @@ func (v *VendorSync) SyncStore(db *dao.DaoDB, vendorID, storeID int, isForce boo
return err
}
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)
func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, userName string) (err error) {
globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, userName:%s", nameID, skuID, userName)
err = v.LoopMultiStoresVendors(db, "SyncSku", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
multiStoresHandler := v.GetMultiStoreHandler(batchItemList[0].(int))
syncStatusFieldName := multiStoresHandler.GetFieldSyncStatusName()
@@ -196,7 +196,7 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
for _, v := range batchItemList {
sku := v.(*model.Sku)
syncStatus := jxutils.GetObjFieldByName(sku, syncStatusFieldName).(int8)
if (skuID == -1 || skuID == sku.ID) && (isForce || syncStatus != 0) {
if (skuID == -1 || skuID == sku.ID) && (syncStatus != 0) {
updateFields := []string{syncStatusFieldName}
if syncStatus&model.SyncFlagDeletedMask != 0 { // 删除
err = multiStoresHandler.DeleteSku(db, sku, userName)
@@ -224,14 +224,14 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
}
//
func (v *VendorSync) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) {
func (v *VendorSync) SyncStoresSkus(db *dao.DaoDB, vendorIDs []int, storeIDs []int, skuIDs []int, isAsync bool, userName string) (hint string, err error) {
globals.SugarLogger.Debug("SyncStoresSkus")
err = v.LoopStoreVendors(db, "SyncStoresSkus", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
hint, err = v.LoopStoreVendors(db, isAsync, vendorIDs, "SyncStoresSkus", userName, func(batchItemList []interface{}, params ...interface{}) (interface{}, error) {
handler := v.GetStoreHandler(batchItemList[0].(int))
err = handler.SyncStoresSkus(db, storeIDs, skuIDs, isForce, userName)
_, err = handler.SyncStoresSkus(db, storeIDs, skuIDs, false, userName)
return nil, err
})
return err
return hint, err
}
func (v *VendorSync) LoopStoreMap(db *dao.DaoDB, taskName, userName string, storeID int, handler tasksch.WorkFunc) (err error) {
@@ -252,16 +252,36 @@ func (v *VendorSync) LoopMultiStoresVendors(db *dao.DaoDB, taskName, userName st
return makeSyncError(err)
}
func (v *VendorSync) LoopStoreVendors(db *dao.DaoDB, taskName, userName string, handler tasksch.WorkFunc) (err error) {
func (v *VendorSync) LoopStoreVendors(db *dao.DaoDB, isAsync bool, vendorIDs []int, taskName, userName string, handler tasksch.WorkFunc) (hint string, err error) {
if taskName == "" {
taskName = "LoopStoreVendors"
}
var vendorIDMap map[int]int
if len(vendorIDs) != 0 {
vendorIDMap = make(map[int]int)
for _, v := range vendorIDs {
vendorIDMap[v] = 1
}
}
allHandlers := make([]int, len(v.MultiStoreVendorIDs)+len(v.SingleStoreVendorIDs))
copy(allHandlers, v.MultiStoreVendorIDs)
copy(allHandlers[len(v.MultiStoreVendorIDs):], v.SingleStoreVendorIDs)
if vendorIDMap != nil {
count := 0
for _, v := range allHandlers {
if vendorIDMap[v] == 1 {
allHandlers[count] = v
count++
}
}
allHandlers = allHandlers[:count]
}
task := tasksch.RunManagedTask(taskName, false, nil, len(allHandlers), 1, userName, handler, allHandlers)
if isAsync {
return task.ID, nil
}
_, err = task.GetResult(0)
return makeSyncError(err)
return "", makeSyncError(err)
}
func (v *VendorSync) LoopSingleStoreVendors(db *dao.DaoDB, taskName, userName string, handler tasksch.WorkFunc) (err error) {
@@ -283,7 +303,7 @@ func (v *VendorSync) LoopSingleStoreVendors(db *dao.DaoDB, taskName, userName st
return makeSyncError(err)
}
func (v *VendorSync) RefreshSkuIDs(nameID, skuID int, isForce bool, userName string) (err error) {
func (v *VendorSync) RefreshSkuIDs(nameID, skuID int, userName string) (err error) {
sql := `
SELECT t1.id
FROM sku t1

View File

@@ -75,7 +75,7 @@ type IPurchasePlatformHandler interface {
// OpenStore(vendorStoreID string, userName string) error
// CloseStore(vendorStoreID, closeNotice, userName string) error
SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isSync bool, userName string) (err error)
SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isAsync bool, userName string) (hint string, err error)
GetVendorID() int
GetFieldIDName() string

View File

@@ -71,17 +71,17 @@ var (
}
)
func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isSync bool, userName string) (err error) {
func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isAsync bool, userName string) (hint string, err error) {
for _, storeID := range storeIDs {
err = p.syncOneStoreSkus(db, storeID, skuIDs, isSync, userName)
err = p.syncOneStoreSkus(db, storeID, skuIDs, isAsync, userName)
if err != nil {
break
}
}
return err
return hint, err
}
func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int, isSync bool, userName string) (err error) {
func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID int, skuIDs []int, isAsync bool, userName string) (err error) {
globals.SugarLogger.Debugf("syncOneStoreSkus storeID:%d, skuIDs:%v, userName:%s", storeID, skuIDs, userName)
doThing := func() (err error) {
@@ -172,7 +172,7 @@ func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID int, skuIDs []
}
return err
}
if isSync {
if !isAsync {
err = doThing()
} else {
go doThing()

View File

@@ -10,7 +10,7 @@ import (
func TestSyncStoresSkus(t *testing.T) {
db := dao.GetDB()
err := new(PurchaseHandler).SyncStoresSkus(db, []int{100077}, []int{7}, false, "autotest")
_, err := new(PurchaseHandler).SyncStoresSkus(db, []int{100077}, []int{7}, false, "autotest")
if err != nil {
t.Fatal(err.Error())
}

View File

@@ -16,6 +16,6 @@ func (p *PurchaseHandler) ReadStoreSku(storeID, skuID int) (skuNameExt *model.Sk
return nil, nil
}
func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isSync bool, userName string) (err error) {
return nil
func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isAsync bool, userName string) (hint string, err error) {
return hint, err
}

View File

@@ -22,7 +22,7 @@ type tStoreSkuBindExt struct {
}
// 京东到家,以有库存表示关注(认领)
func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isForce bool, userName string) (err error) {
func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isAsync bool, userName string) (hint string, err error) {
parallelCount := 1
if len(skuIDs) < MaxSkuBatchSize {
parallelCount = 10
@@ -55,13 +55,13 @@ func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs [
for _, v := range batchItemList {
storeSku := v.(*tStoreSkuBindExt)
if storeSku.JdSyncStatus&model.SyncFlagChangedMask != 0 {
if storeSku.JdSyncStatus&(model.SyncFlagPriceMask|model.SyncFlagNewMask) != 0 || isForce {
if storeSku.JdSyncStatus&(model.SyncFlagPriceMask|model.SyncFlagNewMask) != 0 {
skuPriceInfoList = append(skuPriceInfoList, &jdapi.SkuPriceInfo{
OutSkuId: utils.Int2Str(storeSku.SkuID),
Price: jxutils.CaculateSkuVendorPrice(storeSku.Price, storeSku.PricePercentage),
})
}
if storeSku.JdSyncStatus&(model.SyncFlagSaleMask|model.SyncFlagNewMask) != 0 || isForce {
if storeSku.JdSyncStatus&(model.SyncFlagSaleMask|model.SyncFlagNewMask) != 0 {
vendibility := &jdapi.StockVendibility{
OutSkuId: utils.Int2Str(storeSku.SkuID),
DoSale: true,
@@ -71,7 +71,7 @@ func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs [
}
skuVendibilityList = append(skuVendibilityList, vendibility)
}
if storeSku.JdSyncStatus&(model.SyncFlagDeletedMask|model.SyncFlagNewMask) != 0 || isForce { // 关注或取消关注
if storeSku.JdSyncStatus&(model.SyncFlagDeletedMask|model.SyncFlagNewMask) != 0 { // 关注或取消关注
stock := &jdapi.SkuStock{
OutSkuId: utils.Int2Str(storeSku.SkuID),
StockQty: MaxStockQty,
@@ -111,6 +111,9 @@ func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs [
return nil, err
}, storeIDs)
if isAsync {
return task.ID, nil
}
_, err = task.GetResult(0)
return err
return "", err
}

View File

@@ -106,7 +106,7 @@ func (c *SkuController) ReorderCategories() {
// @router /DeleteCategory [delete]
func (c *SkuController) DeleteCategory() {
c.callDeleteCategory(func(params *tSkuDeleteCategoryParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.DeleteCategory(params.CategoryID, false, GetUserNameFromToken(params.Token))
retVal, err = cms.DeleteCategory(params.CategoryID, GetUserNameFromToken(params.Token))
return retVal, "", err
})
}
@@ -288,14 +288,13 @@ func (c *SkuController) GetVendorSku() {
// @Param token header string true "认证token"
// @Param nameID query int true "name ID, -1表示所有"
// @Param skuID query int true "sku ID, -1表示所有"
// @Param isForce query bool false "是否强制刷新,缺省为否"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /SyncSkus [put]
func (c *SkuController) SyncSkus() {
c.callSyncSkus(func(params *tSkuSyncSkusParams) (retVal interface{}, errCode string, err error) {
db := dao.GetDB()
err = cms.CurVendorSync.SyncSku(db, params.NameID, params.SkuID, params.IsForce, GetUserNameFromToken(params.Token))
err = cms.CurVendorSync.SyncSku(db, params.NameID, params.SkuID, GetUserNameFromToken(params.Token))
return retVal, "", err
})
}
@@ -305,13 +304,12 @@ func (c *SkuController) SyncSkus() {
// @Param token header string true "认证token"
// @Param nameID query int true "name ID, -1表示所有"
// @Param skuID query int true "sku ID, -1表示所有"
// @Param isForce query bool false "是否强制刷新,缺省为否"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /RefreshSkuIDs [put]
func (c *SkuController) RefreshSkuIDs() {
c.callRefreshSkuIDs(func(params *tSkuRefreshSkuIDsParams) (retVal interface{}, errCode string, err error) {
err = cms.CurVendorSync.RefreshSkuIDs(params.NameID, params.SkuID, false, GetUserNameFromToken(params.Token))
err = cms.CurVendorSync.RefreshSkuIDs(params.NameID, params.SkuID, GetUserNameFromToken(params.Token))
return retVal, "", err
})
}

View File

@@ -78,8 +78,8 @@ func (c *StoreSkuController) UpdateStoreSkus() {
// @Description 同步商家商品信息
// @Param token header string true "认证token"
// @Param storeIDs formData string true "门店ID列表"
// @Param vendorID formData int true "厂商ID"
// @Param isSync formData bool true "是否步操作"
// @Param vendorIDs formData string true "厂商ID列表"
// @Param isAsync formData bool true "是否步操作"
// @Param skuIDs formData string false "SKU ID列表缺省为全部"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
@@ -89,14 +89,19 @@ func (c *StoreSkuController) SyncStoresSkus() {
db := dao.GetDB()
var storeIDs []int
var skuIDs []int
if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err == nil {
if params.SkuIDs != "" {
err = utils.UnmarshalUseNumber([]byte(params.SkuIDs), &skuIDs)
}
if err == nil {
err = cms.CurVendorSync.GetStoreHandler(params.VendorID).SyncStoresSkus(db, storeIDs, skuIDs, params.IsSync, GetUserNameFromToken(params.Token))
var vendorIDs []int
if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err != nil {
return retVal, "", err
}
if err = utils.UnmarshalUseNumber([]byte(params.VendorIDs), &vendorIDs); err != nil {
return retVal, "", err
}
if params.SkuIDs != "" {
if err = utils.UnmarshalUseNumber([]byte(params.SkuIDs), &skuIDs); err != nil {
return retVal, "", err
}
}
retVal, err = cms.CurVendorSync.SyncStoresSkus(db, vendorIDs, storeIDs, skuIDs, params.IsAsync, GetUserNameFromToken(params.Token))
return retVal, "", err
})
}