From 4439135bbdb3ba9cf24215e21be5a7677be67b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 3 Feb 2020 11:49:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=97=A5=E5=BF=97=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=A2=9E=E5=8A=A0=E9=94=99=E8=AF=AF=EF=BC=8C=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E5=AD=97=EF=BC=8C=E5=90=8C=E6=AD=A5=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=98=BE=E7=A4=BA=E5=B9=B3=E5=8F=B0=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 25 +++++++++------ business/jxstore/cms/sync2.go | 6 ++-- business/jxstore/cms/sync_store_sku.go | 10 +++--- business/jxstore/cms/sync_store_sku_fakejd.go | 2 +- business/jxstore/event/event.go | 9 ++++-- business/model/const.go | 2 ++ business/model/dao/event.go | 31 +++++++++++++++++-- business/model/event.go | 3 ++ business/partner/partner_store_sku.go | 1 + business/partner/purchase/ebai/store_sku2.go | 24 +++++++------- business/partner/purchase/jd/store_sku2.go | 14 ++++----- business/partner/purchase/mtwm/store_sku2.go | 28 ++++++++--------- business/partner/putils/store_sku.go | 16 +++++----- controllers/event.go | 4 ++- 14 files changed, 108 insertions(+), 67 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 31ac7696d..28310dcc2 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -26,7 +26,7 @@ type SyncErrResult struct { SkuID int `json:"商品ID"` CategoryName string `json:"分类名"` StoreID int `json:"门店ID"` - VendorID int `json:"平台ID"` + VendorName string `json:"平台名"` VendorSkuID string `json:"平台商品ID"` NameID int `json:"商品nameID"` VendorPrice int64 `json:"平台价"` @@ -77,7 +77,7 @@ var ( "商品ID", "分类名", "门店ID", - "平台ID", + "平台名", "平台商品ID", "商品nameID", "平台价", @@ -243,7 +243,7 @@ func (v *VendorSync) SyncStore2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs _, err = dao.UpdateEntity(db2, storeMap, model.FieldSyncStatus) resultList = append(resultList, 1) } else { - failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, storeMap.VendorID, "同步门店") + failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "同步门店") } return resultList, err }, loopMapInfo.StoreMapList) @@ -255,7 +255,7 @@ func (v *VendorSync) SyncStore2(ctx *jxcontext.Context, db *dao.DaoDB, vendorIDs storeMap.SyncStatus = 0 _, err = dao.UpdateEntity(db, storeMap, model.FieldSyncStatus) } else { - failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, storeMap.VendorID, "同步门店") + failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeMap.StoreID, model.VendorChineseNames[storeMap.VendorID], "同步门店") } if err == nil { resultList = []interface{}{1} @@ -646,6 +646,9 @@ func (v *VendorSync) LoopStoresMap2(ctx *jxcontext.Context, parentTask tasksch.I func buildSetFinishHook(task tasksch.ITask, ctx *jxcontext.Context) { task.SetFinishHook(func(task tasksch.ITask) { + if len(task.GetFailedList()) == 0 { + return + } var noticeMsg = "您此次的同步任务错误详情返回如下: \n" if ctx.GetUserName() != "jxadmin" { if len(task.GetFailedList()) > 10 { @@ -660,11 +663,13 @@ func buildSetFinishHook(task tasksch.ITask, ctx *jxcontext.Context) { ddmsg.SendUserMessage(dingdingapi.MsgTyeText, authInfo.UserID, "同步错误返回", noticeMsg) } } else { - downloadURL, _, _ := WirteToExcelBySyncFailed(task) - user, err := dao.GetUserByID(dao.GetDB(), "mobile", "18160030913") - noticeMsg += fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL) - if user != nil && err == nil { - ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "同步错误返回", noticeMsg) + if time.Now().Hour() >= 20 && time.Now().Hour() < 7 { + downloadURL, _, _ := WirteToExcelBySyncFailed(task) + user, err := dao.GetUserByID(dao.GetDB(), "mobile", "18160030913") + noticeMsg += fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL) + if user != nil && err == nil { + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "同步错误返回", noticeMsg) + } } } }) @@ -683,7 +688,7 @@ func buildErrMsgJson(task tasksch.ITask) (resultL []*SyncErrResult) { SkuID: 0, StoreID: vv.StoreID, CategoryName: vv.CategoryName, - VendorID: vv.VendoreID, + VendorName: vv.VendoreName, VendorSkuID: "", NameID: 0, VendorPrice: 0, diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index ddfaa0490..d1ab19f03 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -152,18 +152,18 @@ func SyncSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, model.IsSyncStatusNeedDelete(skuVendorInfo.SkuSyncStatus) { err = multiStoresHandler.DeleteSku2(ctx, skuVendorInfo.VendorOrgCode, storeSkuSyncInfo2Bare(skuVendorInfo)) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, skuVendorInfo.VendorID, "删除商品") + failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "删除商品") } } } else if model.IsSyncStatusNew(skuVendorInfo.SkuSyncStatus) { // 新增 err = multiStoresHandler.CreateSku2(ctx, skuVendorInfo) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, skuVendorInfo.VendorID, "新增商品") + failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "新增商品") } } else if model.IsSyncStatusUpdate(skuVendorInfo.SkuSyncStatus) { // 修改 err = multiStoresHandler.UpdateSku2(ctx, skuVendorInfo) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, skuVendorInfo.VendorID, "修改商品") + failedList = putils.GetErrMsg2FailedSingleList(skuVendorInfo, err, 0, model.VendorChineseNames[skuVendorInfo.VendorID], "修改商品") } } } else { diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 9848d7155..15735d742 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -88,7 +88,7 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo if err != nil && handler.IsErrCategoryNotExist(err) { err = nil } else if err != nil && !handler.IsErrCategoryNotExist(err) { - failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "删除分类") + failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "删除分类") } } } else if model.IsSyncStatusNew(catInfo.CatSyncStatus) { // 新增 @@ -98,7 +98,7 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo catInfo.VendorCatID = cat.VendorCatID err = nil } else if err != nil && !handler.IsErrCategoryExist(err) { - failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "新增分类") + failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "新增分类") } } if err == nil { @@ -113,7 +113,7 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo if err == nil { updateFields = append(updateFields, idFieldName) } else { - failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "修改分类") + failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "修改分类") } } if len(failedList) > 0 { @@ -421,7 +421,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag if dao.IsVendorThingIDEmpty(sku.VendorSkuID) { // err = fmt.Errorf("门店:%d,修改没有创建的商品:%d", storeID, sku.SkuID) err = utils.NewErrorCode(fmt.Sprintf("门店:%d,修改没有创建的商品:%d", storeID, sku.SkuID), "-1", 0) - failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "异常同步错误") + failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "异常同步错误") if parentTask == nil { return err } @@ -533,7 +533,7 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag err = nil failedList = nil // 因为batchSize为1,可以这样处理 } else if err2 != nil { - failedList = append(failedList, putils.GetErrMsg2FailedSingleList(batchedStoreSkuList, err2, storeID, vendorID, "查询是否有该商品")...) + failedList = append(failedList, putils.GetErrMsg2FailedSingleList(batchedStoreSkuList, err2, storeID, model.VendorChineseNames[vendorID], "查询是否有该商品")...) } } failedList, err = buildFailedListAndErr(failedList, err, nil, batchedStoreSkuList, storeID, vendorID, "创建门店商品") diff --git a/business/jxstore/cms/sync_store_sku_fakejd.go b/business/jxstore/cms/sync_store_sku_fakejd.go index 773b05824..734be6322 100644 --- a/business/jxstore/cms/sync_store_sku_fakejd.go +++ b/business/jxstore/cms/sync_store_sku_fakejd.go @@ -112,7 +112,7 @@ func SyncStoreSku4FakeJD(ctx *jxcontext.Context, parentTask tasksch.ITask, store if dao.IsVendorThingIDEmpty(sku.VendorSkuID) { // err = fmt.Errorf("门店:%d,修改没有创建的商品:%d", storeID, sku.SkuID) err = utils.NewErrorCode(fmt.Sprintf("门店:%d,修改没有创建的商品:%d", storeID, sku.SkuID), "-1", 0) - failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, vendorID, "异常同步错误") + failedList = putils.GetErrMsg2FailedSingleList(nil, err, storeID, model.VendorChineseNames[vendorID], "异常同步错误") if parentTask == nil { return err } diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index 4e7157cc9..e155ef1e9 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -29,7 +29,7 @@ type CheckCookie struct { Status string `json:"status"` } -func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string) (err error) { +func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string, errCode, errMsg string, useTime int) (err error) { var ( apiFunction string db = dao.GetDB() @@ -54,6 +54,9 @@ func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string) (err e UserID: ctx.GetUserID(), AccessUUID: accessUUID, JsonData: jsonData, + ErrCode: errCode, + ErrMsg: errMsg, + UseTime: useTime, } dao.Begin(db) defer func() { @@ -95,7 +98,7 @@ func DeleteOperateEventAndDetail(ctx *jxcontext.Context, deleteTime time.Time) ( return err } -func GetOperateEvents(ctx *jxcontext.Context, name string, apiFunctions []string, operateTypes, skuIDs, storeIDs []int, fromTime, toTime string, offset, pageSize int) (pageInfo *model.PagedInfo, err error) { +func GetOperateEvents(ctx *jxcontext.Context, name string, apiFunctions []string, operateTypes, skuIDs, storeIDs []int, fromTime, toTime, keyword string, errType, offset, pageSize int) (pageInfo *model.PagedInfo, err error) { var ( fromTimeP time.Time toTimeP time.Time @@ -109,7 +112,7 @@ func GetOperateEvents(ctx *jxcontext.Context, name string, apiFunctions []string } pageSize = jxutils.FormalizePageSize(pageSize) offset = jxutils.FormalizePageOffset(offset) - operateEventExt, totalCount, err := dao.GetOperateEvents(db, name, apiFunctions, operateTypes, skuIDs, storeIDs, fromTimeP, toTimeP, offset, pageSize) + operateEventExt, totalCount, err := dao.GetOperateEvents(db, name, apiFunctions, operateTypes, skuIDs, storeIDs, fromTimeP, toTimeP, keyword, errType, offset, pageSize) if err != nil { return pageInfo, err } diff --git a/business/model/const.go b/business/model/const.go index 41217cd30..60f6d1e4e 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -132,6 +132,8 @@ var ( "DeleteStoreCourierMap": "门店解绑三方配送平台", "AddStoreCourierMap": "门店绑定三方配送平台", "UpdateStoreCourierMap": "门店修改三方配送平台绑定信息", + "Login": "登录", + "RegisterUser": "注册", } MultiStoresVendorMap = map[int]int{ diff --git a/business/model/dao/event.go b/business/model/dao/event.go index a66d75978..f842f1cf1 100644 --- a/business/model/dao/event.go +++ b/business/model/dao/event.go @@ -1,6 +1,7 @@ package dao import ( + "strings" "time" "git.rosy.net.cn/baseapi/utils" @@ -40,15 +41,25 @@ func DeleteOperateEvent(db *DaoDB, deleteTime time.Time) (err error) { return err } -func GetOperateEvents(db *DaoDB, name string, apiFunctions []string, operateTypes, skuIDs, storeIDs []int, fromTime, toTime time.Time, offset, pageSize int) (operateEventExt []*OperateEventExt, totalCount int, err error) { +func GetOperateEvents(db *DaoDB, name string, apiFunctions []string, operateTypes, skuIDs, storeIDs []int, fromTime, toTime time.Time, keyword string, errType, offset, pageSize int) (operateEventExt []*OperateEventExt, totalCount int, err error) { sql := ` SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name FROM operate_event a - LEFT JOIN operate_event_detail b ON a.access_uuid = b.access_uuid + ` + if len(operateTypes) > 0 || len(skuIDs) > 0 || len(storeIDs) > 0 || keyword != "" { + sql += " LEFT JOIN operate_event_detail b ON a.access_uuid = b.access_uuid" + } + sql += ` LEFT JOIN user c ON c.user_id = a.user_id - WHERE 1=1 + WHERE 1=1 ` sqlParams := []interface{}{} + if errType == 1 { + sql += " AND a.err_msg = ''" + } + if errType == -1 { + sql += " AND a.err_msg <> ''" + } if name != "" { sql += " AND c.name LIKE ?" sqlParams = append(sqlParams, "%"+name+"%") @@ -77,6 +88,20 @@ func GetOperateEvents(db *DaoDB, name string, apiFunctions []string, operateType sql += " AND b.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) } + if keyword != "" { + sql += " AND (" + var apiList []string + for k, v := range model.ApiFunctionName { + if strings.Contains(v, keyword) { + apiList = append(apiList, k) + } + } + if len(apiList) > 0 { + sql += "a.api_function IN (" + GenQuestionMarks(len(apiList)) + ") OR" + } + sql += " a.err_msg LIKE ? OR b.thing_id LIKE ? OR b.store_id LIKE ? OR c.name LIKE ?)" + sqlParams = append(sqlParams, "%"+keyword+"%") + } sql += ` ORDER BY a.created_at DESC LIMIT ? OFFSET ? diff --git a/business/model/event.go b/business/model/event.go index 756c639fe..c2c17cd8d 100644 --- a/business/model/event.go +++ b/business/model/event.go @@ -10,6 +10,9 @@ type OperateEvent struct { UserID string `orm:"column(user_id)" json:"userID"` APIFunction string `orm:"column(api_function)" json:"apiFunction"` JsonData string `orm:"size(3200)" json:"jsonData"` + ErrCode string `orm:"size(32)" json:"errCode"` + ErrMsg string `orm:"size(3200)" json:"errMsg"` + UseTime int `json:"useTime"` } func (v *OperateEvent) TableIndex() [][]string { diff --git a/business/partner/partner_store_sku.go b/business/partner/partner_store_sku.go index d8e171636..a471faeb9 100644 --- a/business/partner/partner_store_sku.go +++ b/business/partner/partner_store_sku.go @@ -55,6 +55,7 @@ type StoreSkuInfoWithErr struct { StoreSkuInfo *StoreSkuInfo CategoryName string VendoreID int + VendoreName string StoreID int SyncType string ErrMsg string diff --git a/business/partner/purchase/ebai/store_sku2.go b/business/partner/purchase/ebai/store_sku2.go index 958326071..2a189a706 100644 --- a/business/partner/purchase/ebai/store_sku2.go +++ b/business/partner/purchase/ebai/store_sku2.go @@ -122,7 +122,7 @@ func (p *PurchaseHandler) updateStoreSkus(ctx *jxcontext.Context, storeID int, v if globals.EnableEbaiStoreWrite { _, err = api.EbaiAPI.SkuUpdate(ctx.GetTrackInfo(), strStoreID, utils.Str2Int64(storeSku.VendorSkuID), params) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDEBAI, "更新商品基础信息") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品基础信息") } if isNeedMapCat { utils.CallFuncAsync(func() { @@ -153,7 +153,7 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v p.updateStoreSkus(ctx, storeID, vendorStoreID, storeSkuList, false) }) } else { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDEBAI, "创建商品") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "创建商品") } } else { vendorSkuID = jxutils.GenFakeID() @@ -177,7 +177,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) if err = err2; err2 != nil && opResult != nil { // if len(storeSkuList) > len(opResult.FailedList) { - failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "删除商品") + failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorChineseNames[model.VendorIDEBAI], "删除商品") // successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult)) // } } @@ -196,7 +196,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr } else if len(vendorSkuIDs) == 1 { err = api.EbaiAPI.SkuOnlineOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs[0], "", "") if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDEBAI, "更新商品状态") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品状态") } return failedList, err } @@ -206,13 +206,13 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr } else if len(vendorSkuIDs) == 1 { err = api.EbaiAPI.SkuOfflineOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs[0], "", "") if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDEBAI, "更新商品状态") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品状态") } return failedList, err } } if err != nil && opResult != nil { - failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品状态") + failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品状态") // failedList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult)) } err = nil @@ -238,12 +238,12 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg if len(storeSkuList) > 1 { opResult, err2 := api.EbaiAPI.SkuPriceUpdateBatch(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID) if err = err2; err != nil && opResult != nil { - failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品价格") + failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品价格") } } else if len(storeSkuList) == 1 { _, err := api.EbaiAPI.SkuPriceUpdateOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0]) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDEBAI, "更新商品价格") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品价格") } } err = nil @@ -256,13 +256,13 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg if len(storeSkuList) > 1 { opResult, err2 := api.EbaiAPI.SkuStockUpdateBatch(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList), ebaiapi.SkuIDTypeSkuID) if err = err2; err != nil && opResult != nil { - failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorIDEBAI, "更新商品库存") + failedList = SelectStoreSkuListByOpResult(storeSkuList, opResult, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品库存") // successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getFailedVendorSkuIDsFromOpResult(opResult)) } } else if len(storeSkuList) == 1 { err = api.EbaiAPI.SkuStockUpdateOne(ctx.GetTrackInfo(), utils.Int2Str(storeID), StoreSkuInfoList2Ebai(storeSkuList)[0]) if err != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDEBAI, "更新商品库存") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品库存") } } err = nil @@ -446,7 +446,7 @@ func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp { } //饿百api返回 -func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult *ebaiapi.BatchOpResult, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) { +func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult *ebaiapi.BatchOpResult, storeID int, vendorName string, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) { opResultMap := make(map[int64]string) if len(opResult.FailedList) > 0 { for _, v := range opResult.FailedList { @@ -460,7 +460,7 @@ func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult StoreSkuInfo: v, ErrMsg: opResultMap[utils.Str2Int64(v.VendorSkuID)], StoreID: storeID, - VendoreID: vendorID, + VendoreName: vendorName, SyncType: syncType, } selectedStoreSkuList = append(selectedStoreSkuList, opFailed) diff --git a/business/partner/purchase/jd/store_sku2.go b/business/partner/purchase/jd/store_sku2.go index ec0e514bc..0cd83d594 100644 --- a/business/partner/purchase/jd/store_sku2.go +++ b/business/partner/purchase/jd/store_sku2.go @@ -131,7 +131,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr responseList, err2 = getAPI(vendorOrgCode).FakeBatchUpdateVendibility(ctx.GetTrackInfo(), "", vendorStoreID, skuVendibilityList, ctx.GetUserName()) } if err = err2; err != nil { - failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品状态") + failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorChineseNames[model.VendorIDJD], "更新商品状态") // successList = putils.UnselectStoreSkuListBySkuIDs(storeSkuList, utils.StringSlice2Int(getStrOutSkuIDs(responseList, false))) } } @@ -143,7 +143,7 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg if len(storeSkuList) == 1 && vendorOrgCode != apimanager.FakeJdOrgCode { if globals.EnableJdStoreWrite { _, err = getAPI(vendorOrgCode).UpdateStationPrice(ctx.GetTrackInfo(), utils.Str2Int64WithDefault(storeSkuList[0].VendorSkuID, 0), vendorStoreID, int(storeSkuList[0].VendorPrice)) - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDJD, "更新商品价格") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJD], "更新商品价格") } } else { var skuPriceInfoList []*jdapi.SkuPriceInfo @@ -162,7 +162,7 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg responseList, err2 = getAPI(vendorOrgCode).FakeUpdateVendorStationPrice(ctx.GetTrackInfo(), "", vendorStoreID, skuPriceInfoList) } if err = err2; err != nil { - failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品价格") + failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorChineseNames[model.VendorIDJD], "更新商品价格") } } } @@ -174,7 +174,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg if len(storeSkuList) == 1 && vendorOrgCode != apimanager.FakeJdOrgCode { if globals.EnableJdStoreWrite { err = getAPI(vendorOrgCode).UpdateCurrentQty(ctx.GetTrackInfo(), vendorStoreID, utils.Str2Int64WithDefault(storeSkuList[0].VendorSkuID, 0), storeSkuList[0].Stock) - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDJD, "更新商品库存") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJD], "更新商品库存") } } else { var skuStockList []*jdapi.SkuStock @@ -193,7 +193,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg responseList, err2 = getAPI(vendorOrgCode).FakeBatchUpdateCurrentQtys(ctx.GetTrackInfo(), "", vendorStoreID, skuStockList, ctx.GetUserName()) } if err = err2; err != nil { - failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorIDJD, "更新商品库存") + failedList = SelectStoreSkuListByResponseList(storeSkuList, responseList, storeID, model.VendorChineseNames[model.VendorIDJD], "更新商品库存") // successList = putils.UnselectStoreSkuListBySkuIDs(storeSkuList, utils.StringSlice2Int(getStrOutSkuIDs(responseList, false))) } } @@ -241,7 +241,7 @@ func (p *PurchaseHandler) SyncStoreProducts(ctx *jxcontext.Context, vendorOrgCod } //京东api返回 -func SelectStoreSkuListByResponseList(storeSkuList []*partner.StoreSkuInfo, responseList []*jdapi.StoreSkuBatchUpdateResponse, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) { +func SelectStoreSkuListByResponseList(storeSkuList []*partner.StoreSkuInfo, responseList []*jdapi.StoreSkuBatchUpdateResponse, storeID int, vendorName, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) { responseMap := make(map[string]string) if len(responseList) > 0 { for _, v := range responseList { @@ -255,7 +255,7 @@ func SelectStoreSkuListByResponseList(storeSkuList []*partner.StoreSkuInfo, resp StoreSkuInfo: v, ErrMsg: responseMap[utils.Int2Str(v.SkuID)], StoreID: storeID, - VendoreID: vendorID, + VendoreName: vendorName, SyncType: syncType, } selectedStoreSkuList = append(selectedStoreSkuList, respFailed) diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index 0ec935cf4..4cc9ea279 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -306,18 +306,18 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI if len(foodDataList) == 1 { foodDataList[0]["skus"] = string(utils.MustMarshal(foodDataList[0]["skus"])) err = api.MtwmAPI.RetailInitData(ctx.GetTrackInfo(), vendorStoreID, utils.Int2Str(storeSkuList[0].SkuID), foodDataList[0]) - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDMTWM, syncType) + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDMTWM], syncType) } else if len(foodDataList) > 0 { failedFoodList, err2 := api.MtwmAPI.RetailBatchInitData(ctx.GetTrackInfo(), vendorStoreID, foodDataList) if err = err2; err == nil { if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil { - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, syncType) + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], syncType) // successList = putils.UnselectStoreSkuSyncListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList)) } } else if err2 != nil && len(failedFoodList) == 0 { if errExt, ok := err2.(*utils.ErrorWithCode); ok { err = utils.UnmarshalUseNumber([]byte(errExt.ErrMsg()), &failedFoodList) - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, syncType) + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], syncType) } err = nil } @@ -343,7 +343,7 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v if globals.EnableMtwmStoreWrite { if len(storeSkuList) == 1 { err = api.MtwmAPI.RetailDelete(ctx.GetTrackInfo(), vendorStoreID, storeSkuList[0].VendorSkuID) - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorIDMTWM, "删除商品") + failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDMTWM], "删除商品") } else { // todo 部分失败 err = api.MtwmAPI.RetailCatSkuBatchDelete2(ctx.GetTrackInfo(), vendorStoreID, nil, nil, nil, nil, partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDList()) @@ -351,7 +351,7 @@ func (p *PurchaseHandler) DeleteStoreSkus(ctx *jxcontext.Context, storeID int, v if errExt, ok := err.(*utils.ErrorWithCode); ok { myMap := make(map[string][]*mtwmapi.AppFoodResult) json.Unmarshal([]byte(errExt.ErrMsg()), &myMap) - failedList = SelectStoreSkuListByFoodList(storeSkuList, myMap["retail_error_list"], storeID, model.VendorIDMTWM, "批量删除商品") + failedList = SelectStoreSkuListByFoodList(storeSkuList, myMap["retail_error_list"], storeID, model.VendorChineseNames[model.VendorIDMTWM], "批量删除商品") } } err = nil @@ -393,13 +393,13 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr failedFoodList, err2 := api.MtwmAPI.RetailSellStatus(ctx.GetTrackInfo(), vendorStoreID, skuList, mtwmStatus) if err = err2; err == nil { if len(failedFoodList) > 0 { - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品状态") + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], "更新商品状态") // successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList)) } } else if err2 != nil && len(failedFoodList) == 0 { if errExt, ok := err2.(*utils.ErrorWithCode); ok { err = utils.UnmarshalUseNumber([]byte(errExt.ErrMsg()), &failedFoodList) - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品状态") + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], "更新商品状态") } err = nil } @@ -413,12 +413,12 @@ func (p *PurchaseHandler) UpdateStoreSkusPrice(ctx *jxcontext.Context, vendorOrg failedFoodList, err2 := api.MtwmAPI.RetailSkuPrice(ctx.GetTrackInfo(), vendorStoreID, priceList) if err = err2; err == nil { if len(failedFoodList) > 0 { - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品价格") + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], "更新商品价格") } } else if err2 != nil && len(failedFoodList) == 0 { if errExt, ok := err2.(*utils.ErrorWithCode); ok { err = utils.UnmarshalUseNumber([]byte(errExt.ErrMsg()), &failedFoodList) - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品价格") + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], "更新商品价格") } err = nil } @@ -432,7 +432,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg failedFoodList, err2 := api.MtwmAPI.RetailSkuStock(ctx.GetTrackInfo(), vendorStoreID, stockList) if err = err2; err == nil { if len(failedFoodList) > 0 { - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品库存") + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], "更新商品库存") } //if err = putils.GenPartialFailedErr(failedFoodList, len(failedFoodList)); err != nil { // successList = putils.UnselectStoreSkuListByVendorSkuIDs(storeSkuList, getAppFoodCodeList(failedFoodList)) @@ -440,7 +440,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg } else if err2 != nil && len(failedFoodList) == 0 { if errExt, ok := err2.(*utils.ErrorWithCode); ok { err = utils.UnmarshalUseNumber([]byte(errExt.ErrMsg()), &failedFoodList) - failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorIDMTWM, "更新商品库存") + failedList = SelectStoreSkuListByFoodList(storeSkuList, failedFoodList, storeID, model.VendorChineseNames[model.VendorIDMTWM], "更新商品库存") } err = nil } @@ -558,7 +558,7 @@ func (p *PurchaseHandler) GetSensitiveWordRegexp() *regexp.Regexp { } //美团api返回 -func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi.AppFoodResult, storeID, vendorID int, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) { +func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi.AppFoodResult, storeID int, vendorName, syncType string) (selectedStoreSkuList []*partner.StoreSkuInfoWithErr) { foodMap := make(map[string]string) if len(foodList) > 0 { for _, v := range foodList { @@ -571,7 +571,7 @@ func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi. StoreSkuInfo: v, ErrMsg: foodMap[v.VendorSkuID], StoreID: storeID, - VendoreID: vendorID, + VendoreName: vendorName, SyncType: syncType, } selectedStoreSkuList = append(selectedStoreSkuList, foodFailed) @@ -593,7 +593,7 @@ func SelectStoreSkuListByFoodList(storeSkuList interface{}, foodList []*mtwmapi. StoreSkuInfo: storeSkuInfo, ErrMsg: foodMap[v.VendorSkuID], StoreID: storeID, - VendoreID: vendorID, + VendoreName: vendorName, SyncType: syncType, } selectedStoreSkuList = append(selectedStoreSkuList, foodFailed) diff --git a/business/partner/putils/store_sku.go b/business/partner/putils/store_sku.go index 871e497e6..c1405762a 100644 --- a/business/partner/putils/store_sku.go +++ b/business/partner/putils/store_sku.go @@ -241,7 +241,7 @@ func UnselectStoreSkuListByVendorSkuIDs(storeSkuList []*partner.StoreSkuInfo, ve return selectedStoreSkuList } -func GetErrMsg2FailedSingleList(storeSkuList interface{}, err error, storeID, vendorID int, syncType string) (failedList []*partner.StoreSkuInfoWithErr) { +func GetErrMsg2FailedSingleList(storeSkuList interface{}, err error, storeID int, vendorName, syncType string) (failedList []*partner.StoreSkuInfoWithErr) { if err != nil { var errMsg string if errExt, ok := err.(*utils.ErrorWithCode); ok { @@ -254,7 +254,7 @@ func GetErrMsg2FailedSingleList(storeSkuList interface{}, err error, storeID, ve StoreSkuInfo: storeSkuLists[0], ErrMsg: errMsg, StoreID: storeID, - VendoreID: vendorID, + VendoreName: vendorName, SyncType: syncType, } failedList = append(failedList, storeSkuInfoWithErr) @@ -271,7 +271,7 @@ func GetErrMsg2FailedSingleList(storeSkuList interface{}, err error, storeID, ve StoreSkuInfo: storeSkuInfo, ErrMsg: errMsg, StoreID: storeID, - VendoreID: vendorID, + VendoreName: vendorName, SyncType: syncType, } failedList = append(failedList, storeSkuInfoWithErr) @@ -288,16 +288,16 @@ func GetErrMsg2FailedSingleList(storeSkuList interface{}, err error, storeID, ve StoreSkuInfo: storeSkuInfo, ErrMsg: errMsg, StoreID: storeID, - VendoreID: vendorID, + VendoreName: vendorName, SyncType: syncType, } failedList = append(failedList, storeSkuInfoWithErr) } else { storeSkuInfoWithErr := &partner.StoreSkuInfoWithErr{ - ErrMsg: errMsg, - StoreID: storeID, - VendoreID: vendorID, - SyncType: syncType, + ErrMsg: errMsg, + StoreID: storeID, + VendoreName: vendorName, + SyncType: syncType, } failedList = append(failedList, storeSkuInfoWithErr) } diff --git a/controllers/event.go b/controllers/event.go index e28eee701..e60db4764 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -21,6 +21,8 @@ type EventController struct { // @Param storeIDs query string false "门店ID列表" // @Param fromTime query string false "开始日期(包含),格式(2006-01-02 00:00:00)" // @Param toTime query string false "结束日期(包含),格式(2006-01-02 00:00:00)" +// @Param keyword query string false "关键字" +// @Param errType query int false "查询错误日志,默认0都查,1不查错误日志,-1只查错误日志" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为30)" // @Success 200 {object} controllers.CallResult @@ -31,7 +33,7 @@ func (c *EventController) GetOperateEvents() { var apiFunctionList []string c.callGetOperateEvents(func(params *tEventGetOperateEventsParams) (retVal interface{}, errCode string, err error) { if jxutils.Strings2Objs(params.StoreIDs, &storeIDList, params.SkuIDs, &skuIDList, params.ApiFunctions, &apiFunctionList, params.OperateTypes, &operateTypeList); err == nil { - retVal, err = event.GetOperateEvents(params.Ctx, params.Name, apiFunctionList, operateTypeList, skuIDList, storeIDList, params.FromTime, params.ToTime, params.Offset, params.PageSize) + retVal, err = event.GetOperateEvents(params.Ctx, params.Name, apiFunctionList, operateTypeList, skuIDList, storeIDList, params.FromTime, params.ToTime, params.Keyword, params.ErrType, params.Offset, params.PageSize) } return retVal, "", err })