- remove many useless isForce parameters.
- isSync to isAsync.
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user