同步错误返回
This commit is contained in:
@@ -628,14 +628,19 @@ func (v *VendorSync) LoopStoresMap2(ctx *jxcontext.Context, db *dao.DaoDB, taskN
|
|||||||
}
|
}
|
||||||
task = tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, handler, loopInfoList)
|
task = tasksch.NewParallelTask(taskName, tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, handler, loopInfoList)
|
||||||
if isAsync {
|
if isAsync {
|
||||||
task.SetFinishHook(func(task tasksch.ITask, ctx *jxcontext.Context) {
|
task.SetFinishHook(func(task tasksch.ITask) {
|
||||||
|
var noticeMsg string
|
||||||
if len(task.GetErrMsg()) > 10 {
|
if len(task.GetErrMsg()) > 10 {
|
||||||
err = WirteToExcelBySyncFailed(task, ctx)
|
downloadURL, _, _ := WirteToExcelBySyncFailed(task)
|
||||||
|
noticeMsg = fmt.Sprintf("[详情点我]path1=%s\n", downloadURL)
|
||||||
} else {
|
} else {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = buildErrMsg(task)
|
noticeMsg = utils.Format4Output(buildErrMsgJson(task), true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if authInfo, err := ctx.GetV2AuthInfo(); err == nil {
|
||||||
|
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, authInfo.UserID, "同步错误返回", noticeMsg)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
tasksch.HandleTask(task, nil, isManageIt).Run()
|
tasksch.HandleTask(task, nil, isManageIt).Run()
|
||||||
@@ -658,41 +663,36 @@ func (v *VendorSync) LoopStoresMap2(ctx *jxcontext.Context, db *dao.DaoDB, taskN
|
|||||||
}
|
}
|
||||||
|
|
||||||
func buildErrMsg(task tasksch.ITask) (err error) {
|
func buildErrMsg(task tasksch.ITask) (err error) {
|
||||||
var resultL []*SyncErrResult
|
err = fmt.Errorf(utils.Format4Output(buildErrMsgJson(task), true))
|
||||||
|
return makeSyncError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildErrMsgJson(task tasksch.ITask) (resultL []*SyncErrResult) {
|
||||||
failedList := task.GetErrMsg()
|
failedList := task.GetErrMsg()
|
||||||
for _, v := range failedList {
|
for _, v := range failedList {
|
||||||
for _, vv := range v.([]*partner.StoreSkuInfoWithErr) {
|
for _, vv := range v.([]*partner.StoreSkuInfoWithErr) {
|
||||||
if vv.StoreSkuInfo != nil {
|
result := &SyncErrResult{
|
||||||
result := &SyncErrResult{
|
SkuID: 0,
|
||||||
SkuID: vv.StoreSkuInfo.SkuID,
|
StoreID: vv.StoreID,
|
||||||
StoreID: vv.StoreID,
|
CategoryName: vv.CategoryName,
|
||||||
CategoryName: "",
|
VendorID: vv.VendoreID,
|
||||||
VendorID: vv.VendoreID,
|
VendorSkuID: "",
|
||||||
VendorSkuID: vv.StoreSkuInfo.VendorSkuID,
|
NameID: 0,
|
||||||
NameID: vv.StoreSkuInfo.NameID,
|
VendorPrice: 0,
|
||||||
VendorPrice: vv.StoreSkuInfo.VendorPrice,
|
SyncType: vv.SyncType,
|
||||||
SyncType: vv.SyncType,
|
ErrMsg: vv.ErrMsg,
|
||||||
ErrMsg: vv.ErrMsg,
|
|
||||||
}
|
|
||||||
resultL = append(resultL, result)
|
|
||||||
} else {
|
|
||||||
result := &SyncErrResult{
|
|
||||||
SkuID: 0,
|
|
||||||
StoreID: vv.StoreID,
|
|
||||||
CategoryName: vv.CategoryName,
|
|
||||||
VendorID: vv.VendoreID,
|
|
||||||
VendorSkuID: "",
|
|
||||||
NameID: 0,
|
|
||||||
VendorPrice: 0,
|
|
||||||
SyncType: vv.SyncType,
|
|
||||||
ErrMsg: vv.ErrMsg,
|
|
||||||
}
|
|
||||||
resultL = append(resultL, result)
|
|
||||||
}
|
}
|
||||||
|
if vv.StoreSkuInfo != nil {
|
||||||
|
result.SkuID = vv.StoreSkuInfo.SkuID
|
||||||
|
result.CategoryName = ""
|
||||||
|
result.VendorSkuID = vv.StoreSkuInfo.VendorSkuID
|
||||||
|
result.NameID = vv.StoreSkuInfo.NameID
|
||||||
|
result.VendorPrice = vv.StoreSkuInfo.VendorPrice
|
||||||
|
}
|
||||||
|
resultL = append(resultL, result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = fmt.Errorf(utils.Format4Output(resultL, true))
|
return resultL
|
||||||
return makeSyncError(err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) LoopStoresMap(ctx *jxcontext.Context, db *dao.DaoDB, taskName string, isAsync, isManageIt bool, vendorIDs []int, storeIDs []int, handler tasksch.WorkFunc, isContinueWhenError bool) (hint string, err error) {
|
func (v *VendorSync) LoopStoresMap(ctx *jxcontext.Context, db *dao.DaoDB, taskName string, isAsync, isManageIt bool, vendorIDs []int, storeIDs []int, handler tasksch.WorkFunc, isContinueWhenError bool) (hint string, err error) {
|
||||||
@@ -827,10 +827,9 @@ func GetTimeMixByInt(begin1, end1, begin2, end2 int16) (beginAt, endAt int16) {
|
|||||||
return beginAt, endAt
|
return beginAt, endAt
|
||||||
}
|
}
|
||||||
|
|
||||||
func WirteToExcelBySyncFailed(task tasksch.ITask, ctx *jxcontext.Context) (err error) {
|
func WirteToExcelBySyncFailed(task tasksch.ITask) (downloadURL, fileName string, err error) {
|
||||||
var (
|
var (
|
||||||
sheetList1 []*excel.Obj2ExcelSheetConfig
|
sheetList1 []*excel.Obj2ExcelSheetConfig
|
||||||
downloadURL1, fileName1 string
|
|
||||||
)
|
)
|
||||||
syncErrResultLock.syncErrResult = syncErrResultLock.syncErrResult[0:0]
|
syncErrResultLock.syncErrResult = syncErrResultLock.syncErrResult[0:0]
|
||||||
failedList := task.GetErrMsg()
|
failedList := task.GetErrMsg()
|
||||||
@@ -860,21 +859,15 @@ func WirteToExcelBySyncFailed(task tasksch.ITask, ctx *jxcontext.Context) (err e
|
|||||||
}
|
}
|
||||||
sheetList1 = append(sheetList1, excelConf1)
|
sheetList1 = append(sheetList1, excelConf1)
|
||||||
if excelConf1 != nil {
|
if excelConf1 != nil {
|
||||||
downloadURL1, fileName1, err = jxutils.UploadExeclAndPushMsg(sheetList1, time.Now().Format("200601021504")+"同步错误返回")
|
downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList1, time.Now().Format("200601021504")+"同步错误返回")
|
||||||
baseapi.SugarLogger.Debug("WriteToExcel: download is [%v]", downloadURL1)
|
baseapi.SugarLogger.Debug("WriteToExcel: download is [%v]", downloadURL)
|
||||||
} else {
|
} else {
|
||||||
baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!")
|
baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName1, err)
|
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err)
|
||||||
} else {
|
|
||||||
if authInfo, err := ctx.GetV2AuthInfo(); err == nil {
|
|
||||||
noticeMsg := fmt.Sprintf("[详情点我]path1=%s\n", downloadURL1)
|
|
||||||
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, authInfo.UserID, "同步错误返回", noticeMsg)
|
|
||||||
baseapi.SugarLogger.Debugf("WriteToExcel:upload %s success, downloadURL1:%s", fileName1, downloadURL1)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return err
|
return downloadURL, fileName, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *SyncErrResultLock) AppendData(syncErrResult SyncErrResult) {
|
func (d *SyncErrResultLock) AppendData(syncErrResult SyncErrResult) {
|
||||||
|
|||||||
@@ -83,17 +83,21 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo
|
|||||||
var failedList []*partner.StoreSkuInfoWithErr
|
var failedList []*partner.StoreSkuInfoWithErr
|
||||||
if model.IsSyncStatusDelete(catInfo.CatSyncStatus) { // 删除
|
if model.IsSyncStatusDelete(catInfo.CatSyncStatus) { // 删除
|
||||||
if model.IsSyncStatusDelete(catInfo.CatSyncStatus) && !dao.IsVendorThingIDEmpty(catInfo.VendorCatID) {
|
if model.IsSyncStatusDelete(catInfo.CatSyncStatus) && !dao.IsVendorThingIDEmpty(catInfo.VendorCatID) {
|
||||||
failedList, err = handler.DeleteStoreCategory(ctx, storeID, vendorStoreID, catInfo.VendorCatID, level)
|
err = handler.DeleteStoreCategory(ctx, storeID, vendorStoreID, catInfo.VendorCatID, level)
|
||||||
if err != nil && handler.IsErrCategoryNotExist(err) {
|
if err != nil && handler.IsErrCategoryNotExist(err) {
|
||||||
err = nil
|
err = nil
|
||||||
|
} else if err != nil && !handler.IsErrCategoryNotExist(err) {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "删除分类")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if model.IsSyncStatusNew(catInfo.CatSyncStatus) { // 新增
|
} else if model.IsSyncStatusNew(catInfo.CatSyncStatus) { // 新增
|
||||||
failedList, err = handler.CreateStoreCategory(ctx, storeID, vendorStoreID, catInfo)
|
err = handler.CreateStoreCategory(ctx, storeID, vendorStoreID, catInfo)
|
||||||
if err != nil && handler.IsErrCategoryExist(err) {
|
if err != nil && handler.IsErrCategoryExist(err) {
|
||||||
if cat, err2 := handler.GetStoreCategory(ctx, storeID, vendorStoreID, catInfo.Name); err2 == nil {
|
if cat, err2 := handler.GetStoreCategory(ctx, storeID, vendorStoreID, catInfo.Name); err2 == nil {
|
||||||
catInfo.VendorCatID = cat.VendorCatID
|
catInfo.VendorCatID = cat.VendorCatID
|
||||||
err = nil
|
err = nil
|
||||||
|
} else if err != nil && !handler.IsErrCategoryExist(err) {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "新增分类")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@@ -104,9 +108,11 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if model.IsSyncStatusUpdate(catInfo.CatSyncStatus) { // 修改
|
} else if model.IsSyncStatusUpdate(catInfo.CatSyncStatus) { // 修改
|
||||||
failedList, err = handler.UpdateStoreCategory(ctx, storeID, vendorStoreID, catInfo)
|
err = handler.UpdateStoreCategory(ctx, storeID, vendorStoreID, catInfo)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
updateFields = append(updateFields, idFieldName)
|
updateFields = append(updateFields, idFieldName)
|
||||||
|
} else {
|
||||||
|
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "修改分类")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(failedList) > 0 {
|
if len(failedList) > 0 {
|
||||||
@@ -797,7 +803,7 @@ func amendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, v
|
|||||||
task4Delete := tasksch.NewParallelTask(fmt.Sprintf("删除商家分类,level:%d", level), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
task4Delete := tasksch.NewParallelTask(fmt.Sprintf("删除商家分类,level:%d", level), tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
cat := batchItemList[0].(*partner.BareCategoryInfo)
|
cat := batchItemList[0].(*partner.BareCategoryInfo)
|
||||||
_, err = handler.DeleteStoreCategory(ctx, storeID, vendorStoreID, cat.VendorCatID, level)
|
err = handler.DeleteStoreCategory(ctx, storeID, vendorStoreID, cat.VendorCatID, level)
|
||||||
return nil, err
|
return nil, err
|
||||||
}, levelCat2Delete)
|
}, levelCat2Delete)
|
||||||
tasksch.HandleTask(task4Delete, task, true).Run()
|
tasksch.HandleTask(task4Delete, task, true).Run()
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ type ITask interface {
|
|||||||
AddBatchErr(err error)
|
AddBatchErr(err error)
|
||||||
AddErrMsg(failedList ...interface{})
|
AddErrMsg(failedList ...interface{})
|
||||||
GetErrMsg() (failedList []interface{})
|
GetErrMsg() (failedList []interface{})
|
||||||
SetFinishHook(func(task ITask, ctx *jxcontext.Context))
|
SetFinishHook(func(task ITask))
|
||||||
json.Marshaler
|
json.Marshaler
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ type BaseTask struct {
|
|||||||
ctx *jxcontext.Context
|
ctx *jxcontext.Context
|
||||||
isGetResultCalled bool
|
isGetResultCalled bool
|
||||||
FailedList []interface{}
|
FailedList []interface{}
|
||||||
finishHook func(task ITask, ctx *jxcontext.Context)
|
finishHook func(task ITask)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s TaskList) Len() int {
|
func (s TaskList) Len() int {
|
||||||
@@ -362,7 +362,7 @@ func (t *BaseTask) Error() (errMsg string) {
|
|||||||
return errMsg
|
return errMsg
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *BaseTask) SetFinishHook(hook func(task ITask, ctx *jxcontext.Context)) {
|
func (t *BaseTask) SetFinishHook(hook func(task ITask)) {
|
||||||
t.locker.RLock()
|
t.locker.RLock()
|
||||||
defer t.locker.RUnlock()
|
defer t.locker.RUnlock()
|
||||||
t.finishHook = hook
|
t.finishHook = hook
|
||||||
@@ -450,7 +450,7 @@ func (t *BaseTask) run(taskHandler func()) {
|
|||||||
}
|
}
|
||||||
close(t.finishChan)
|
close(t.finishChan)
|
||||||
if t.finishHook != nil {
|
if t.finishHook != nil {
|
||||||
t.finishHook(t, t.ctx)
|
t.finishHook(t)
|
||||||
} else {
|
} else {
|
||||||
SendMessage(t)
|
SendMessage(t)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,9 +156,9 @@ type ISingleStoreStoreSkuHandler interface {
|
|||||||
|
|
||||||
GetStoreAllCategories(ctx *jxcontext.Context, storeID int, vendorStoreID string) (cats []*BareCategoryInfo, err error)
|
GetStoreAllCategories(ctx *jxcontext.Context, storeID int, vendorStoreID string) (cats []*BareCategoryInfo, err error)
|
||||||
GetStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, catName string) (cat *BareCategoryInfo, err error)
|
GetStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, catName string) (cat *BareCategoryInfo, err error)
|
||||||
CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error)
|
||||||
UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (failedList []*StoreSkuInfoWithErr, err error)
|
UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error)
|
||||||
DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (failedList []*StoreSkuInfoWithErr, err error)
|
DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (err error)
|
||||||
DeleteStoreAllCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, isContinueWhenError bool) (err error)
|
DeleteStoreAllCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, isContinueWhenError bool) (err error)
|
||||||
|
|
||||||
IsErrCategoryExist(err error) (isExist bool)
|
IsErrCategoryExist(err error) (isExist bool)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ func (p *PurchaseHandler) IsErrCategoryNotExist(err error) (isNotExist bool) {
|
|||||||
return ebaiapi.IsErrCategoryNotExist(err)
|
return ebaiapi.IsErrCategoryNotExist(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
|
||||||
var vendorCatID int64
|
var vendorCatID int64
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
vendorCatID, err = api.EbaiAPI.ShopCategoryCreate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.ParentVendorCatID, 0), formatCatName(storeCat.Name), jxCatSeq2Ebai(storeCat.Seq))
|
vendorCatID, err = api.EbaiAPI.ShopCategoryCreate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.ParentVendorCatID, 0), formatCatName(storeCat.Name), jxCatSeq2Ebai(storeCat.Seq))
|
||||||
@@ -76,13 +76,10 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in
|
|||||||
vendorCatID = jxutils.GenFakeID()
|
vendorCatID = jxutils.GenFakeID()
|
||||||
}
|
}
|
||||||
storeCat.VendorCatID = utils.Int64ToStr(vendorCatID)
|
storeCat.VendorCatID = utils.Int64ToStr(vendorCatID)
|
||||||
if err != nil {
|
return err
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorIDEBAI, "创建分类")
|
|
||||||
}
|
|
||||||
return failedList, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
err = api.EbaiAPI.ShopCategoryUpdate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.VendorCatID, 0), formatCatName(storeCat.Name), jxCatSeq2Ebai(storeCat.Seq))
|
err = api.EbaiAPI.ShopCategoryUpdate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.VendorCatID, 0), formatCatName(storeCat.Name), jxCatSeq2Ebai(storeCat.Seq))
|
||||||
// todo, 饿百将一个分类重复改名,也会报分类名重复错,特殊处理一下,不过因为GetStoreCategory其实会拉取所有的门店分类,是比较耗时的操作
|
// todo, 饿百将一个分类重复改名,也会报分类名重复错,特殊处理一下,不过因为GetStoreCategory其实会拉取所有的门店分类,是比较耗时的操作
|
||||||
@@ -93,21 +90,15 @@ func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID in
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorIDEBAI, "修改分类")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return failedList, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (err error) {
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
err = api.EbaiAPI.ShopCategoryDelete(utils.Int2Str(storeID), utils.Str2Int64WithDefault(vendorCatID, 0))
|
err = api.EbaiAPI.ShopCategoryDelete(utils.Int2Str(storeID), utils.Str2Int64WithDefault(vendorCatID, 0))
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorIDEBAI, "删除分类")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return failedList, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 门店商品
|
// 门店商品
|
||||||
@@ -182,7 +173,7 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v
|
|||||||
opResult, err2 := api.EbaiAPI.SkuDelete(ctx.GetTrackInfo(), utils.Int2Str(storeID), partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList(), nil)
|
opResult, err2 := api.EbaiAPI.SkuDelete(ctx.GetTrackInfo(), utils.Int2Str(storeID), partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList(), nil)
|
||||||
if err = err2; err2 != nil && opResult != nil {
|
if err = err2; err2 != nil && opResult != nil {
|
||||||
// if len(storeSkuList) > len(opResult.FailedList) {
|
// if len(storeSkuList) > len(opResult.FailedList) {
|
||||||
failedList = putils.SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "删除商品")
|
failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "删除商品")
|
||||||
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult))
|
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult))
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
@@ -212,7 +203,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil && opResult != nil {
|
if err != nil && opResult != nil {
|
||||||
failedList = putils.SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品状态")
|
failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品状态")
|
||||||
// failedList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult))
|
// failedList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -237,12 +228,12 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
|||||||
if len(storeSkuList) > 1 {
|
if len(storeSkuList) > 1 {
|
||||||
opResult, err2 := api.EbaiAPI.SkuPriceUpdateBatch(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
opResult, err2 := api.EbaiAPI.SkuPriceUpdateBatch(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
||||||
if err = err2; err != nil && opResult != nil {
|
if err = err2; err != nil && opResult != nil {
|
||||||
failedList = putils.SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品价格")
|
failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品价格")
|
||||||
}
|
}
|
||||||
} else if len(storeSkuList) == 1 {
|
} else if len(storeSkuList) == 1 {
|
||||||
opResult2, err := api.EbaiAPI.SkuPriceUpdateOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0])
|
opResult2, err := api.EbaiAPI.SkuPriceUpdateOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0])
|
||||||
if err != nil && opResult2 != nil {
|
if err != nil && opResult2 != nil {
|
||||||
failedList = putils.SelectStoreSkuListByOpResult(storeSkuList, opResult2, storeID, model.VendorIDEBAI, "更新商品价格")
|
failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult2, storeID, model.VendorIDEBAI, "更新商品价格")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -254,7 +245,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
|||||||
if len(storeSkuList) > 1 {
|
if len(storeSkuList) > 1 {
|
||||||
opResult, err2 := api.EbaiAPI.SkuStockUpdateBatch(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
opResult, err2 := api.EbaiAPI.SkuStockUpdateBatch(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID)
|
||||||
if err = err2; err != nil && opResult != nil {
|
if err = err2; err != nil && opResult != nil {
|
||||||
failedList = putils.SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品库存")
|
failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品库存")
|
||||||
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult))
|
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult))
|
||||||
}
|
}
|
||||||
} else if len(storeSkuList) == 1 {
|
} else if len(storeSkuList) == 1 {
|
||||||
@@ -439,3 +430,26 @@ func vendorSkuList2Jx(vendorSkuList []*ebaiapi.SkuInfo) (skuNameList []*partner.
|
|||||||
func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp {
|
func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp {
|
||||||
return sensitiveWordRegexp
|
return sensitiveWordRegexp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//饿百api返回
|
||||||
|
func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult *ebaiapi.BatchOpResult, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) {
|
||||||
|
opResultMap := make(map[int64]string)
|
||||||
|
if len(opResult.FailedList) > 0 {
|
||||||
|
for _, v := range opResult.FailedList {
|
||||||
|
opResultMap[v.SkuID] = v.ErrorMsg
|
||||||
|
}
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
if opResultMap[utils.Str2Int64(v.VendorSkuID)] != "" {
|
||||||
|
opFailed := &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: v,
|
||||||
|
ErrMsg: opResultMap[utils.Str2Int64(v.VendorSkuID)],
|
||||||
|
StoreID: storeID,
|
||||||
|
VendoreID: vendorID,
|
||||||
|
SyncType: syncType,
|
||||||
|
}
|
||||||
|
selectedStoreSkuList = append(selectedStoreSkuList, opFailed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectedStoreSkuList
|
||||||
|
}
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
responseList, err2 := getAPI(vendorOrgCode).BatchUpdateVendibility(ctx.GetTrackInfo(), "", vendorStoreID, skuVendibilityList, ctx.GetUserName())
|
responseList, err2 := getAPI(vendorOrgCode).BatchUpdateVendibility(ctx.GetTrackInfo(), "", vendorStoreID, skuVendibilityList, ctx.GetUserName())
|
||||||
if err = err2; isErrPartialFailed(err) {
|
if err = err2; isErrPartialFailed(err) {
|
||||||
failedList = putils.SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品状态")
|
failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品状态")
|
||||||
// successList = putils.UnselectStoreSkuListBySkuIDs(storeSkuList, utils.StringSlice2Int(getStrOutSkuIDs(responseList, false)))
|
// successList = putils.UnselectStoreSkuListBySkuIDs(storeSkuList, utils.StringSlice2Int(getStrOutSkuIDs(responseList, false)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
|||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
responseList, err2 := getAPI(vendorOrgCode).UpdateVendorStationPrice(ctx.GetTrackInfo(), "", vendorStoreID, skuPriceInfoList)
|
responseList, err2 := getAPI(vendorOrgCode).UpdateVendorStationPrice(ctx.GetTrackInfo(), "", vendorStoreID, skuPriceInfoList)
|
||||||
if err = err2; isErrPartialFailed(err) {
|
if err = err2; isErrPartialFailed(err) {
|
||||||
failedList = putils.SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品价格")
|
failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品价格")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -170,7 +170,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
|||||||
if globals.EnableJdStoreWrite {
|
if globals.EnableJdStoreWrite {
|
||||||
responseList, err2 := getAPI(vendorOrgCode).BatchUpdateCurrentQtys(ctx.GetTrackInfo(), "", vendorStoreID, skuStockList, ctx.GetUserName())
|
responseList, err2 := getAPI(vendorOrgCode).BatchUpdateCurrentQtys(ctx.GetTrackInfo(), "", vendorStoreID, skuStockList, ctx.GetUserName())
|
||||||
if err = err2; isErrPartialFailed(err) {
|
if err = err2; isErrPartialFailed(err) {
|
||||||
failedList = putils.SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品库存")
|
failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品库存")
|
||||||
// successList = putils.UnselectStoreSkuListBySkuIDs(storeSkuList, utils.StringSlice2Int(getStrOutSkuIDs(responseList, false)))
|
// successList = putils.UnselectStoreSkuListBySkuIDs(storeSkuList, utils.StringSlice2Int(getStrOutSkuIDs(responseList, false)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,3 +215,28 @@ func (p *PurchaseHandler) SyncStoreProducts(ctx *jxcontext.Context, vendorOrgCod
|
|||||||
}
|
}
|
||||||
return hint, err
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//京东api返回
|
||||||
|
func SelectStoreSkuListByResponseList(storeSkuList []*partner.StoreSkuInfo, responseList []*jdapi.StoreSkuBatchUpdateResponse, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) {
|
||||||
|
responseMap := make(map[string]string)
|
||||||
|
if len(responseList) > 0 {
|
||||||
|
for _, v := range responseList {
|
||||||
|
if v.Code != "0" {
|
||||||
|
responseMap[v.OutSkuID] = v.Msg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, v := range storeSkuList {
|
||||||
|
if responseMap[utils.Int2Str(v.SkuID)] != "" {
|
||||||
|
respFailed := &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: v,
|
||||||
|
ErrMsg: responseMap[utils.Int2Str(v.SkuID)],
|
||||||
|
StoreID: storeID,
|
||||||
|
VendoreID: vendorID,
|
||||||
|
SyncType: syncType,
|
||||||
|
}
|
||||||
|
selectedStoreSkuList = append(selectedStoreSkuList, respFailed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectedStoreSkuList
|
||||||
|
}
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ func tryCatName2Code(originName string) (catCodeStr string) {
|
|||||||
return catCodeStr
|
return catCodeStr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
|
||||||
level := 1
|
level := 1
|
||||||
if storeCat.ParentCatName != "" {
|
if storeCat.ParentCatName != "" {
|
||||||
level = 2
|
level = 2
|
||||||
@@ -151,27 +151,24 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in
|
|||||||
Sequence: storeCat.Seq,
|
Sequence: storeCat.Seq,
|
||||||
}
|
}
|
||||||
err = api.MtwmAPI.RetailCatUpdate(vendorStoreID, catName, param4Update)
|
err = api.MtwmAPI.RetailCatUpdate(vendorStoreID, catName, param4Update)
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorIDMTWM, "创建修改分类")
|
|
||||||
}
|
|
||||||
if storeCat.CatSyncStatus&model.SyncFlagNewMask == 0 && // 修改分类名,但分类不存在
|
if storeCat.CatSyncStatus&model.SyncFlagNewMask == 0 && // 修改分类名,但分类不存在
|
||||||
p.IsErrCategoryNotExist(err) && originName != "" {
|
p.IsErrCategoryNotExist(err) && originName != "" {
|
||||||
storeCat.CatSyncStatus |= model.SyncFlagNewMask
|
storeCat.CatSyncStatus |= model.SyncFlagNewMask
|
||||||
failedList, err = p.CreateStoreCategory(ctx, storeID, vendorStoreID, storeCat)
|
err = p.CreateStoreCategory(ctx, storeID, vendorStoreID, storeCat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// storeCat.VendorCatID = utils.FilterEmoji(storeCat.Name)
|
// storeCat.VendorCatID = utils.FilterEmoji(storeCat.Name)
|
||||||
storeCat.VendorCatID = utils.Int2Str(storeCat.ID)
|
storeCat.VendorCatID = utils.Int2Str(storeCat.ID)
|
||||||
}
|
}
|
||||||
return failedList, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeCat *dao.SkuStoreCatInfo) (err error) {
|
||||||
return p.CreateStoreCategory(ctx, storeID, vendorStoreID, storeCat)
|
return p.CreateStoreCategory(ctx, storeID, vendorStoreID, storeCat)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID int, vendorStoreID, vendorCatID string, level int) (err error) {
|
||||||
if false {
|
if false {
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
err = api.MtwmAPI.RetailCatDelete(vendorStoreID, tryCatName2Code(vendorCatID), vendorCatID)
|
err = api.MtwmAPI.RetailCatDelete(vendorStoreID, tryCatName2Code(vendorCatID), vendorCatID)
|
||||||
@@ -187,12 +184,9 @@ func (p *PurchaseHandler) DeleteStoreCategory(ctx *jxcontext.Context, storeID in
|
|||||||
} else {
|
} else {
|
||||||
err = api.MtwmAPI.RetailCatSkuBatchDelete2(ctx.GetTrackInfo(), vendorStoreID, nil, nil, catCodes, []string{vendorCatID}, nil)
|
err = api.MtwmAPI.RetailCatSkuBatchDelete2(ctx.GetTrackInfo(), vendorStoreID, nil, nil, catCodes, []string{vendorCatID}, nil)
|
||||||
}
|
}
|
||||||
if err != nil {
|
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorIDMTWM, "删除分类")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return failedList, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 门店商品
|
// 门店商品
|
||||||
@@ -313,7 +307,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
failedFoodList, err2 := api.MtwmAPI.RetailBatchInitData(ctx.GetTrackInfo(), vendorStoreID, foodDataList)
|
failedFoodList, err2 := api.MtwmAPI.RetailBatchInitData(ctx.GetTrackInfo(), vendorStoreID, foodDataList)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil {
|
if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil {
|
||||||
failedList = putils.SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, syncType)
|
failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, syncType)
|
||||||
// successList = putils.UnselectStoreSkuSyncListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
// successList = putils.UnselectStoreSkuSyncListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -347,7 +341,7 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v
|
|||||||
if errExt, ok := err.(*utils.ErrorWithCode); ok {
|
if errExt, ok := err.(*utils.ErrorWithCode); ok {
|
||||||
myMap := make(map[string][]*mtwmapi.AppFoodResult)
|
myMap := make(map[string][]*mtwmapi.AppFoodResult)
|
||||||
json.Unmarshal([]byte(errExt.ErrMsg()), &myMap)
|
json.Unmarshal([]byte(errExt.ErrMsg()), &myMap)
|
||||||
failedList = putils.SelectStoreSkuListByFoodList(storeSkuList, myMap["retail_error_list"], storeID, model.VendorIDMTWM, "批量删除商品")
|
failedList = SelectStoreSkuListByFoodList(storeSkuList, myMap["retail_error_list"], storeID, model.VendorIDMTWM, "批量删除商品")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -388,7 +382,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
failedFoodList, err2 := api.MtwmAPI.RetailSellStatus(ctx.GetTrackInfo(), vendorStoreID, skuList, mtwmStatus)
|
failedFoodList, err2 := api.MtwmAPI.RetailSellStatus(ctx.GetTrackInfo(), vendorStoreID, skuList, mtwmStatus)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
if len(failedFoodList) > 0 {
|
if len(failedFoodList) > 0 {
|
||||||
failedList = putils.SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品状态")
|
failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品状态")
|
||||||
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -402,7 +396,7 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg
|
|||||||
failedFoodList, err2 := api.MtwmAPI.RetailSkuPrice(ctx.GetTrackInfo(), vendorStoreID, priceList)
|
failedFoodList, err2 := api.MtwmAPI.RetailSkuPrice(ctx.GetTrackInfo(), vendorStoreID, priceList)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
if len(failedFoodList) > 0 {
|
if len(failedFoodList) > 0 {
|
||||||
failedList = putils.SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品价格")
|
failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品价格")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -415,7 +409,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
|||||||
failedFoodList, err2 := api.MtwmAPI.RetailSkuStock(ctx.GetTrackInfo(), vendorStoreID, stockList)
|
failedFoodList, err2 := api.MtwmAPI.RetailSkuStock(ctx.GetTrackInfo(), vendorStoreID, stockList)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
if len(failedFoodList) > 0 {
|
if len(failedFoodList) > 0 {
|
||||||
failedList = putils.SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品库存")
|
failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品库存")
|
||||||
}
|
}
|
||||||
//if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil {
|
//if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil {
|
||||||
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
// successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList))
|
||||||
@@ -533,3 +527,50 @@ func vendorSkuList2Jx(appFoodList []*mtwmapi.AppFood) (skuNameList []*partner.Sk
|
|||||||
func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp {
|
func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp {
|
||||||
return sensitiveWordRegexp
|
return sensitiveWordRegexp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//美团api返回
|
||||||
|
func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi.AppFoodResult, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) {
|
||||||
|
foodMap := make(map[string]string)
|
||||||
|
if len(foodList) > 0 {
|
||||||
|
for _, v := range foodList {
|
||||||
|
foodMap[v.AppFoodCode] = v.ErrorMsg
|
||||||
|
}
|
||||||
|
if storeSkuLists, ok := storeSkuList.([]*partner.StoreSkuInfo); ok {
|
||||||
|
for _, v := range storeSkuLists {
|
||||||
|
if foodMap[v.VendorSkuID] != "" {
|
||||||
|
foodFailed := &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: v,
|
||||||
|
ErrMsg: foodMap[v.VendorSkuID],
|
||||||
|
StoreID: storeID,
|
||||||
|
VendoreID: vendorID,
|
||||||
|
SyncType: syncType,
|
||||||
|
}
|
||||||
|
selectedStoreSkuList = append(selectedStoreSkuList, foodFailed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if storeSkuLists, ok := storeSkuList.([]*dao.StoreSkuSyncInfo); ok {
|
||||||
|
for _, v := range storeSkuLists {
|
||||||
|
if foodMap[v.VendorSkuID] != "" {
|
||||||
|
storeSkuInfo := &partner.StoreSkuInfo{
|
||||||
|
SkuID: v.SkuID,
|
||||||
|
VendorSkuID: v.VendorSkuID,
|
||||||
|
NameID: v.NameID,
|
||||||
|
VendorNameID: v.VendorNameID,
|
||||||
|
VendorPrice: v.VendorPrice,
|
||||||
|
Status: v.Status,
|
||||||
|
}
|
||||||
|
foodFailed := &partner.StoreSkuInfoWithErr{
|
||||||
|
StoreSkuInfo: storeSkuInfo,
|
||||||
|
ErrMsg: foodMap[v.VendorSkuID],
|
||||||
|
StoreID: storeID,
|
||||||
|
VendoreID: vendorID,
|
||||||
|
SyncType: syncType,
|
||||||
|
}
|
||||||
|
selectedStoreSkuList = append(selectedStoreSkuList, foodFailed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return selectedStoreSkuList
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,12 +4,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -64,7 +58,7 @@ func (p *DefSingleStorePlatform) DeleteStoreAllCategories(ctx *jxcontext.Context
|
|||||||
vendorCatIDs[k] = v.VendorCatID
|
vendorCatIDs[k] = v.VendorCatID
|
||||||
}
|
}
|
||||||
err = FreeBatchCategoryIDOp(func(vendorCatID string) (err error) {
|
err = FreeBatchCategoryIDOp(func(vendorCatID string) (err error) {
|
||||||
_, err2 := p.DeleteStoreCategory(ctx, storeID, vendorStoreID, vendorCatID, step)
|
err2 := p.DeleteStoreCategory(ctx, storeID, vendorStoreID, vendorCatID, step)
|
||||||
return err2
|
return err2
|
||||||
}, ctx, task, vendorCatIDs, isContinueWhenError)
|
}, ctx, task, vendorCatIDs, isContinueWhenError)
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -237,101 +231,6 @@ func UnselectStoreSkuListByVendorSkuIDs(storeSkuList []*partner.StoreSkuInfo, ve
|
|||||||
return selectedStoreSkuList
|
return selectedStoreSkuList
|
||||||
}
|
}
|
||||||
|
|
||||||
//美团api返回
|
|
||||||
func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi.AppFoodResult, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) {
|
|
||||||
foodMap := make(map[string]string)
|
|
||||||
if len(foodList) > 0 {
|
|
||||||
for _, v := range foodList {
|
|
||||||
foodMap[v.AppFoodCode] = v.ErrorMsg
|
|
||||||
}
|
|
||||||
if storeSkuLists, ok := storeSkuList.([]*partner.StoreSkuInfo); ok {
|
|
||||||
for _, v := range storeSkuLists {
|
|
||||||
if foodMap[v.VendorSkuID] != "" {
|
|
||||||
foodFailed := &partner.StoreSkuInfoWithErr{
|
|
||||||
StoreSkuInfo: v,
|
|
||||||
ErrMsg: foodMap[v.VendorSkuID],
|
|
||||||
StoreID: storeID,
|
|
||||||
VendoreID: vendorID,
|
|
||||||
SyncType: syncType,
|
|
||||||
}
|
|
||||||
selectedStoreSkuList = append(selectedStoreSkuList, foodFailed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if storeSkuLists, ok := storeSkuList.([]*dao.StoreSkuSyncInfo); ok {
|
|
||||||
for _, v := range storeSkuLists {
|
|
||||||
if foodMap[v.VendorSkuID] != "" {
|
|
||||||
storeSkuInfo := &partner.StoreSkuInfo{
|
|
||||||
SkuID: v.SkuID,
|
|
||||||
VendorSkuID: v.VendorSkuID,
|
|
||||||
NameID: v.NameID,
|
|
||||||
VendorNameID: v.VendorNameID,
|
|
||||||
VendorPrice: v.VendorPrice,
|
|
||||||
Status: v.Status,
|
|
||||||
}
|
|
||||||
foodFailed := &partner.StoreSkuInfoWithErr{
|
|
||||||
StoreSkuInfo: storeSkuInfo,
|
|
||||||
ErrMsg: foodMap[v.VendorSkuID],
|
|
||||||
StoreID: storeID,
|
|
||||||
VendoreID: vendorID,
|
|
||||||
SyncType: syncType,
|
|
||||||
}
|
|
||||||
selectedStoreSkuList = append(selectedStoreSkuList, foodFailed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return selectedStoreSkuList
|
|
||||||
}
|
|
||||||
|
|
||||||
//饿百api返回
|
|
||||||
func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult *ebaiapi.BatchOpResult, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) {
|
|
||||||
opResultMap := make(map[int64]string)
|
|
||||||
if len(opResult.FailedList) > 0 {
|
|
||||||
for _, v := range opResult.FailedList {
|
|
||||||
opResultMap[v.SkuID] = v.ErrorMsg
|
|
||||||
}
|
|
||||||
for _, v := range storeSkuList {
|
|
||||||
if opResultMap[utils.Str2Int64(v.VendorSkuID)] != "" {
|
|
||||||
opFailed := &partner.StoreSkuInfoWithErr{
|
|
||||||
StoreSkuInfo: v,
|
|
||||||
ErrMsg: opResultMap[utils.Str2Int64(v.VendorSkuID)],
|
|
||||||
StoreID: storeID,
|
|
||||||
VendoreID: vendorID,
|
|
||||||
SyncType: syncType,
|
|
||||||
}
|
|
||||||
selectedStoreSkuList = append(selectedStoreSkuList, opFailed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return selectedStoreSkuList
|
|
||||||
}
|
|
||||||
|
|
||||||
//京东api返回
|
|
||||||
func SelectStoreSkuListByResponseList(storeSkuList []*partner.StoreSkuInfo, responseList []*jdapi.StoreSkuBatchUpdateResponse, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) {
|
|
||||||
responseMap := make(map[string]string)
|
|
||||||
if len(responseList) > 0 {
|
|
||||||
for _, v := range responseList {
|
|
||||||
if v.Code != "0" {
|
|
||||||
responseMap[v.OutSkuID] = v.Msg
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, v := range storeSkuList {
|
|
||||||
if responseMap[utils.Int2Str(v.SkuID)] != "" {
|
|
||||||
respFailed := &partner.StoreSkuInfoWithErr{
|
|
||||||
StoreSkuInfo: v,
|
|
||||||
ErrMsg: responseMap[utils.Int2Str(v.SkuID)],
|
|
||||||
StoreID: storeID,
|
|
||||||
VendoreID: vendorID,
|
|
||||||
SyncType: syncType,
|
|
||||||
}
|
|
||||||
selectedStoreSkuList = append(selectedStoreSkuList, respFailed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return selectedStoreSkuList
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetErrMsg2FailedSingleList(storeSkuList interface{}, err error, storeID, vendorID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr) {
|
func GetErrMsg2FailedSingleList(storeSkuList interface{}, err error, storeID, vendorID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errExt, ok := err.(*utils.ErrorWithCode); ok {
|
if errExt, ok := err.(*utils.ErrorWithCode); ok {
|
||||||
|
|||||||
Reference in New Issue
Block a user