From e83bbc8c5e204e0274735bc060e1faeceedee8ee Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 22 Oct 2019 14:26:45 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=88=B0=E5=AE=B6?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E5=B0=86=E6=9B=B4=E6=8D=A2=E9=85=8D=E9=80=81?= =?UTF-8?q?=E5=91=98=E4=B9=9F=E5=BD=93=E6=88=90=E6=8E=A5=E5=8D=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jd/waybill.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/jd/waybill.go b/business/partner/purchase/jd/waybill.go index 7065b71fa..36805ff44 100644 --- a/business/partner/purchase/jd/waybill.go +++ b/business/partner/purchase/jd/waybill.go @@ -20,7 +20,7 @@ func (c *PurchaseHandler) onWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (re switch msg.DeliveryStatus { case jdapi.DeliveryStatusWait4Grap: order.Status = model.WaybillStatusNew - case jdapi.DeliveryStatusAccepted: + case jdapi.DeliveryStatusAccepted, jdapi.DeliveryStatusCourierChaged: // 将更换配送员也当成接单消息 // todo 性能问题,暂时取消调用 // if result, err := getAPI("").QuerySingleOrder(msg.OrderID); err == nil { // // 默认配送费=订单应付运费(orderReceivableFreight) From 1bbcb3195ae6ea83ee412b94f7b20cb75e71bf55 Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 22 Oct 2019 15:42:23 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E7=BE=8E=E5=9B=A2=E5=A4=96=E5=8D=96?= =?UTF-8?q?=E5=88=86=E7=B1=BB=EF=BC=8C=E4=BA=AC=E8=A5=BF=E4=BF=9D=E5=AD=98?= =?UTF-8?q?code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/mtwm/store_sku2.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index 3d0309d61..f30aae9aa 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -152,8 +152,8 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in } } if err == nil { - storeCat.VendorCatID = utils.FilterEmoji(storeCat.Name) - // storeCat.VendorCatID = utils.Int2Str(storeCat.ID) + // storeCat.VendorCatID = utils.FilterEmoji(storeCat.Name) + storeCat.VendorCatID = utils.Int2Str(storeCat.ID) } return err } From 677dc093fb7a91b843ad64acac73cffb6d99e4fb Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 22 Oct 2019 20:30:43 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E8=BF=90=E5=8D=95=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=97=B6=EF=BC=8C=E6=9B=B4=E6=96=B0=E5=BF=AB?= =?UTF-8?q?=E9=80=92=E5=91=98=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/waybill.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/orderman/waybill.go b/business/jxcallback/orderman/waybill.go index d795ac4f6..8ef0425a1 100644 --- a/business/jxcallback/orderman/waybill.go +++ b/business/jxcallback/orderman/waybill.go @@ -132,7 +132,7 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) { } } addParams := orm.Params{} - if bill.Status >= model.WaybillStatusAccepted && bill.Status < model.WaybillStatusEndBegin { + if bill.Status >= model.WaybillStatusAccepted { if bill.Status == model.WaybillStatusAccepted { if bill.DesiredFee > 0 { addParams["desired_fee"] = bill.DesiredFee @@ -145,8 +145,9 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) { addParams["courier_name"] = bill.CourierName addParams["courier_mobile"] = bill.CourierMobile } - } else if bill.Status >= model.WaybillStatusEndBegin { - addParams["waybill_finished_at"] = bill.StatusTime + if bill.Status >= model.WaybillStatusEndBegin { + addParams["waybill_finished_at"] = bill.StatusTime + } } duplicatedCount, err = w.addWaybillStatus(bill, db, addParams) if err != nil { From 928cb94b69895419c6723283e2f2204b453e73e6 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 10:44:58 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E4=BA=AC=E4=B8=9C=E5=88=B0=E5=AE=B6=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E5=90=8E=EF=BC=8C=E8=87=AA=E5=8A=A8=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=B9=B3=E5=8F=B0=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 6ff225ad1..f17b43b31 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -119,10 +119,10 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i } if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, cat, valid, userName, nil, model.FieldJdSyncStatus, syncStatus); err == nil { SetStoreCategorySyncStatus2(db, nil, []int{categoryID}, model.SyncFlagModifiedMask) + var skuIDs []int if valid["jdCategoryID"] != nil || valid["ebaiCategoryID"] != nil || valid["mtwmCategoryID"] != nil || valid["jdPricePercentage"] != nil || valid["ebaiPricePercentage"] != nil || valid["mtwmPricePercentage"] != nil { if skuList, err2 := dao.GetSkuByCats(db, []int{categoryID}); err2 == nil && len(skuList) > 0 { - var skuIDs []int for _, sku := range skuList { skuIDs = append(skuIDs, sku.ID) } @@ -157,6 +157,9 @@ func UpdateCategory(ctx *jxcontext.Context, categoryID int, payload map[string]i } } _, err = CurVendorSync.SyncCategory(ctx, db, categoryID, false, userName) + if len(skuIDs) > 0 { + CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, true, true, userName) + } } } return num, err From c3bef42b7e388644d3a72812e7b0d041da50e3c8 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 13:54:46 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=B2=A1=E6=9C=89=E6=AD=A3=E5=B8=B8=E5=8F=91=E9=80=81?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/defsch/defsch.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 0db0fde37..61edb1eca 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -386,7 +386,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod if status.Status == model.OrderStatusApplyFailedGetGoods { dao.ClearOrderFlag(dao.GetDB(), model.AdminName, order.VendorOrderID, order.VendorID, ^(model.OrderFlagMaskFailedGetGoods | model.OrderFlagMaskCallPMCourier)) } - if statusChanged && status.Status == model.OrderStatusApplyCancel { + if status.Status == model.OrderStatusApplyCancel { s.notifyUserApplyCancel(savedOrderInfo.order, status.Remark) } msghub.OnKeyOrderStatusChanged(savedOrderInfo.order) From 06d8781cb087f781803c96b1e4f6a33e1821a57a Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 13:56:24 +0800 Subject: [PATCH 06/11] =?UTF-8?q?UserDeliveryAddressEx=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=B0=8F=E9=A9=BC=E5=B3=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/dao_user2.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/business/model/dao/dao_user2.go b/business/model/dao/dao_user2.go index a2132aeaa..d88e8249e 100644 --- a/business/model/dao/dao_user2.go +++ b/business/model/dao/dao_user2.go @@ -16,9 +16,9 @@ type StoreWithCityName struct { type UserDeliveryAddressEx struct { model.UserDeliveryAddress - UserName string - CityName string - DistrictName string + UserName string `json:"userName"` + CityName string `json:"cityName"` + DistrictName string `json:"districtName"` } func GetUserByID(db *DaoDB, fieldName, fieldValue string) (user *model.User, err error) { From da6601322f48b8461c139cbf32830c4191ad779d Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 14:06:13 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E9=87=8D=E6=9E=84PruneMissingStoreSkus?= =?UTF-8?q?=E4=B8=8EAddCreateFlagForJxStoreSku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync_store_sku.go | 154 +++++++++++++++++-------- 1 file changed, 103 insertions(+), 51 deletions(-) diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 57a860550..b54a2f2aa 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -21,6 +21,12 @@ import ( "git.rosy.net.cn/jx-callback/business/partner" ) +const ( + AmmendPruneOnlyAmend = 1 + AmmendPruneOnlyPrune = 2 + AmmendPruneAll = 3 +) + var ( subSensitiveWordRegexp = regexp.MustCompile(`[^\[\]\"\}]`) ) @@ -572,9 +578,20 @@ func checkRemoteCatExist(localCatMap map[string]*dao.SkuStoreCatInfo, catList [] return cat2Delete } +func fillRemoteCatMap(catList []*partner.BareCategoryInfo, catMap map[string]int) { + for _, v := range catList { + catMap[v.VendorCatID] = 1 + fillRemoteCatMap(v.Children, catMap) + } +} + // 清除京西没有,平台有的商品与商家分类 // todo !!!,因为美团外卖分类当前是用的名字关联的,所以改名后如果没有及时同步,这个函数会导致美团平台的分类被误删 func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) { + return ammendAndPruneStoreStuff(ctx, parentTask, vendorID, storeID, vendorStoreID, isAsync, isContinueWhenError, AmmendPruneOnlyPrune) +} + +func ammendAndPruneStoreStuff(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool, opType int) (hint string, err error) { handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) if handler == nil { return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID]) @@ -583,7 +600,8 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven var sku2Delete []*partner.StoreSkuInfo var cat2Delete []*partner.BareCategoryInfo - task := tasksch.NewParallelTask(fmt.Sprintf("清除平台:%s上多余的门店商品", model.VendorChineseNames[vendorID]), + var storeSkuBindIDs, storeCatBindIDs []int + task := tasksch.NewParallelTask(fmt.Sprintf("修补平台:%s上的门店商品与分类", model.VendorChineseNames[vendorID]), tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) @@ -600,7 +618,9 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil) if err = err2; err == nil { + remoteSkuMap := make(map[int]int) for _, v := range remoteSkuList { + remoteSkuMap[v.SkuList[0].SkuID] = 1 if localSkuMap[v.SkuList[0].SkuID] == nil { sku2Delete = append(sku2Delete, &partner.StoreSkuInfo{ SkuID: v.SkuList[0].SkuID, @@ -608,9 +628,24 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven }) } } + + for _, v := range localSkuList { + if remoteSkuMap[v.SkuID] == 0 && !model.IsSyncStatusNew(v.StoreSkuSyncStatus) && !model.IsSyncStatusDelete(v.StoreSkuSyncStatus) && v.BindID != 0 { + storeSkuBindIDs = append(storeSkuBindIDs, v.BindID) + } + } } case 1: - if len(sku2Delete) > 0 { + if (opType == AmmendPruneOnlyAmend || opType == AmmendPruneAll) && len(storeSkuBindIDs) > 0 { + for _, bindID := range storeSkuBindIDs { + fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID]) + skuBind := &model.StoreSkuBind{} + skuBind.ID = bindID + dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask) + } + } + + if (opType == AmmendPruneOnlyPrune || opType == AmmendPruneAll) && len(sku2Delete) > 0 { _, err = putils.FreeBatchStoreSkuInfo("删除门店商品", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) { _, err = handler.DeleteStoreSkus(ctx, storeID, vendorStoreID, batchedStoreSkuList) return nil, 0, err @@ -632,9 +667,26 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven remoteCatList, err2 := handler.GetStoreAllCategories(ctx, storeID, vendorStoreID) if err = err2; err == nil { cat2Delete = checkRemoteCatExist(localCatMap, remoteCatList) + + remoteCatMap := make(map[string]int) + fillRemoteCatMap(remoteCatList, remoteCatMap) + for _, v := range localCatList { + if remoteCatMap[v.VendorCatID] == 0 && !model.IsSyncStatusNew(v.StoreCatSyncStatus) && !model.IsSyncStatusDelete(v.StoreCatSyncStatus) && v.MapID != 0 { + storeCatBindIDs = append(storeCatBindIDs, v.MapID) + } + } } case 3: - if len(cat2Delete) > 0 { + if (opType == AmmendPruneOnlyAmend || opType == AmmendPruneAll) && len(storeCatBindIDs) > 0 { + for _, bindID := range storeCatBindIDs { + fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID]) + catBind := &model.StoreSkuCategoryMap{} + catBind.ID = bindID + dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, catBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask) + } + } + + if (opType == AmmendPruneOnlyPrune || opType == AmmendPruneAll) && len(cat2Delete) > 0 { for i := 0; i < 2; i++ { level := 2 - i var levelCat2Delete []*partner.BareCategoryInfo @@ -670,55 +722,55 @@ func PruneMissingStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, ven // 把京西有,平台无且没有待创建标记的商品加上待创建标记 func AddCreateFlagForJxStoreSku(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) { - handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) - if handler == nil { - return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID]) - } - db := dao.GetDB() - localSkuList, err := dao.GetStoreSkus2(db, vendorID, storeID, nil, false) - if err != nil { - return "", err - } + return ammendAndPruneStoreStuff(ctx, parentTask, vendorID, storeID, vendorStoreID, isAsync, isContinueWhenError, AmmendPruneOnlyAmend) + // handler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreStoreSkuHandler) + // if handler == nil { + // return "", fmt.Errorf("平台:%s不支持此操作", model.VendorChineseNames[vendorID]) + // } + // db := dao.GetDB() - var storeSkuBindIDs []int - seqTaskFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { - switch step { - case 0: - remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil) - if err = err2; err == nil { - remoteSkuMap := make(map[int]int) - for _, value := range remoteSkuList { - for _, skuInfo := range value.SkuList { - remoteSkuMap[skuInfo.SkuID] = 1 - } - } - for _, v := range localSkuList { - if remoteSkuMap[v.SkuID] == 0 && !model.IsSyncStatusNew(v.StoreSkuSyncStatus) && !model.IsSyncStatusDelete(v.StoreSkuSyncStatus) && v.BindID != 0 { - storeSkuBindIDs = append(storeSkuBindIDs, v.BindID) - } - } - localSkuList = nil - } - case 1: - if len(storeSkuBindIDs) > 0 { - for _, bindID := range storeSkuBindIDs { - fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID]) - skuBind := &model.StoreSkuBind{} - skuBind.ID = bindID - dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask) - } - } - } - return nil, err - } - task := tasksch.NewSeqTask(fmt.Sprintf("处理京西门店商品加待创建标记:%s", model.VendorChineseNames[vendorID]), ctx, seqTaskFunc, 2) - tasksch.HandleTask(task, parentTask, true).Run() - if isAsync { - hint = task.GetID() - } else { - _, err = task.GetResult(0) - } - return hint, err + // var storeSkuBindIDs []int + // seqTaskFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { + // switch step { + // case 0: + // localSkuList, err2 := dao.GetStoreSkus2(db, vendorID, storeID, nil, false) + // if err = err2; err != nil { + // return nil, err + // } + // remoteSkuList, err2 := handler.GetStoreSkusFullInfo(ctx, task, storeID, vendorStoreID, nil) + // if err = err2; err == nil { + // remoteSkuMap := make(map[int]int) + // for _, value := range remoteSkuList { + // for _, skuInfo := range value.SkuList { + // remoteSkuMap[skuInfo.SkuID] = 1 + // } + // } + // for _, v := range localSkuList { + // if remoteSkuMap[v.SkuID] == 0 && !model.IsSyncStatusNew(v.StoreSkuSyncStatus) && !model.IsSyncStatusDelete(v.StoreSkuSyncStatus) && v.BindID != 0 { + // storeSkuBindIDs = append(storeSkuBindIDs, v.BindID) + // } + // } + // } + // case 1: + // if len(storeSkuBindIDs) > 0 { + // for _, bindID := range storeSkuBindIDs { + // fieldStatus := dao.GetSyncStatusStructField(model.VendorNames[vendorID]) + // skuBind := &model.StoreSkuBind{} + // skuBind.ID = bindID + // dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, skuBind, nil, ctx.GetUserName(), nil, fieldStatus, model.SyncFlagNewMask) + // } + // } + // } + // return nil, err + // } + // task := tasksch.NewSeqTask(fmt.Sprintf("处理京西门店商品加待创建标记:%s", model.VendorChineseNames[vendorID]), ctx, seqTaskFunc, 2) + // tasksch.HandleTask(task, parentTask, true).Run() + // if isAsync { + // hint = task.GetID() + // } else { + // _, err = task.GetResult(0) + // } + // return hint, err } func ClearRemoteStoreStuffAndSetNew(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorID, storeID int, vendorStoreID string, isAsync, isContinueWhenError bool) (hint string, err error) { From 15ebf045d6fd1776f97c0b5c855d86b2ee1b64da Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 14:27:46 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8DStore4UserList.Less?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index c33f5d84d..6c4adf249 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -92,8 +92,8 @@ func (x Store4UserList) Len() int { } func (x Store4UserList) Less(i, j int) bool { - if x[i].WalkDistance != x[j].Distance { - return x[i].WalkDistance < x[j].Distance + if x[i].WalkDistance != x[j].WalkDistance { + return x[i].WalkDistance < x[j].WalkDistance } return x[i].Distance < x[j].Distance } From 613e364ea6990ad629326ecc253a391848c25bf0 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 15:09:34 +0800 Subject: [PATCH 09/11] =?UTF-8?q?SyncSkus=E4=B8=AD=E5=A6=82=E6=9E=9CskuIDs?= =?UTF-8?q?=E6=88=96nameIDs=E4=B8=BA=E7=A9=BA=E7=9A=84=E8=AF=9D=EF=BC=8C?= =?UTF-8?q?=E8=A6=81=E7=AE=A1=E7=90=86=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 19f1a94ac..22f9b97f0 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -232,7 +232,7 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []int, skuIDs []int, isAsync, isContinueWhenError bool, userName string) (hint string, err error) { globals.SugarLogger.Debugf("SyncSku trackInfo:%s, nameIDs:%v, skuIDs:%v, userName:%s", ctx.GetTrackInfo(), nameIDs, skuIDs, userName) - isManagedIt := len(nameIDs) > 1 || len(skuIDs) > 1 + isManagedIt := len(nameIDs) > 1 || len(nameIDs) == 0 || len(skuIDs) > 1 || len(skuIDs) == 0 return v.LoopMultiStoresVendors(ctx, db, fmt.Sprintf("同步商品信息, nameIDs:%v, skuIDs:%v", nameIDs, skuIDs), isAsync, isManagedIt, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) { var resultList []interface{} @@ -248,20 +248,14 @@ func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []i WHERE t1.%s_sync_status <> 0 `, dbField) sqlParams := []interface{}{} - if len(nameIDs) > 1 { + if len(nameIDs) > 0 { sql += " AND t1.name_id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")" sqlParams = append(sqlParams, nameIDs) - } else if len(nameIDs) == 1 { - sql += " AND t1.name_id = ? " - sqlParams = append(sqlParams, nameIDs[0]) } if len(skuIDs) > 0 { sql += " AND t1.id IN(" + dao.GenQuestionMarks(len(skuIDs)) + ")" sqlParams = append(sqlParams, skuIDs) - } else if len(skuIDs) == 1 { - sql += " AND t1.id = ? " - sqlParams = append(sqlParams, skuIDs[0]) } for _, v := range skuIDs { skuMap[v] = true @@ -285,7 +279,7 @@ func (v *VendorSync) SyncSkus(ctx *jxcontext.Context, db *dao.DaoDB, nameIDs []i `, dbField), skuName.ID); err == nil && len(skuList) > 0 { for _, sku := range skuList { syncStatus := refutil.GetObjFieldByName(sku, syncStatusFieldName).(int8) - globals.SugarLogger.Debugf("SyncSku trackInfo:%s, skuID:%d, syncStatus:%d", ctx.GetTrackInfo(), sku.ID, syncStatus) + globals.SugarLogger.Debugf("SyncSku trackInfo2:%s, skuID:%d, syncStatus:%d", ctx.GetTrackInfo(), sku.ID, syncStatus) if (len(skuIDs) == 0 || skuMap[sku.ID]) && (syncStatus != 0) { updateFields := []string{syncStatusFieldName} if syncStatus&model.SyncFlagDeletedMask != 0 { // 删除 From fae910b4352758ff1e13c8d0780722fd319fee99 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 16:29:57 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E7=BE=8E=E5=9B=A2poi/save=E5=9C=A8?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=97=A8=E5=BA=97=E7=8A=B6=E6=80=81=E6=97=A0?= =?UTF-8?q?=E6=95=88=E6=97=B6=EF=BC=8C=E5=B9=B6=E4=B8=8D=E4=BC=9A=E6=8A=A5?= =?UTF-8?q?=E9=94=99=EF=BC=8C=E6=94=B9=E7=94=A8UpdateStoreStatus=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/mtwm/store.go | 31 ++++++++++++++----------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/business/partner/purchase/mtwm/store.go b/business/partner/purchase/mtwm/store.go index 90df1bada..7f43095f0 100644 --- a/business/partner/purchase/mtwm/store.go +++ b/business/partner/purchase/mtwm/store.go @@ -113,7 +113,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin return err } mergedStoreStatus := jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus) - openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus) + // openLevel, isOnline := bizStatusJX2Mtwm(mergedStoreStatus) params := map[string]interface{}{ "name": remoteStoreInfo.Name, //jxutils.ComposeStoreName(storeDetail.Store.Name, model.VendorIDMTWM), "address": storeDetail.Address, // 美团好像地址也不能改的? @@ -122,25 +122,28 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin "phone": storeDetail.Tel1, "shipping_fee": remoteStoreInfo.ShippingFee, "shipping_time": remoteStoreInfo.ShippingTime, - "open_level": openLevel, - "is_online": isOnline, + "open_level": remoteStoreInfo.OpenLevel, + "is_online": remoteStoreInfo.IsOnline, "third_tag_name": remoteStoreInfo.ThirdTagName, } // globals.SugarLogger.Debug(utils.Format4Output(params, false)) if globals.EnableMtwmStoreWrite { - err = api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params) + errList.AddErr(api.MtwmAPI.PoiSave(storeDetail.VendorStoreID, params)) } // PoiSave有时会报错:商家已接入美团配送,不可修改门店配送相关信息,这里放弃信息修改 - if err != nil { - if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeCanNotModifyStoreDeliveryInfo), nil) { - globals.SugarLogger.Infof("mtwm UpdateStore vendorStoreID:%s, params:%s failed with err:%v", storeDetail.VendorStoreID, utils.Format4Output(params, true), err) - if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { - err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, mergedStoreStatus) - } else { - err = nil - } - } - errList.AddErr(err) + // if err != nil { + // if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeCanNotModifyStoreDeliveryInfo), nil) { + // globals.SugarLogger.Infof("mtwm UpdateStore vendorStoreID:%s, params:%s failed with err:%v", storeDetail.VendorStoreID, utils.Format4Output(params, true), err) + // if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { + // err = p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, mergedStoreStatus) + // } else { + // err = nil + // } + // } + // errList.AddErr(err) + // } + if storeDetail.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { + errList.AddErr(p.UpdateStoreStatus(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, mergedStoreStatus)) } errList.AddErr(p.UpdateStoreOpTime(jxcontext.AdminCtx, storeID, storeDetail.VendorStoreID, storeDetail.GetOpTimeList())) return errList.GetErrListAsOne() From cf10522cfa8010165b30aa47de33f3ba1db9f933 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 23 Oct 2019 17:39:34 +0800 Subject: [PATCH 11/11] =?UTF-8?q?UpdateMyDeliveryAddress=E7=9A=84isDefault?= =?UTF-8?q?=E4=BB=8Ebool=E6=94=B9=E4=B8=BAint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms_user2.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/controllers/cms_user2.go b/controllers/cms_user2.go index f51a0b777..17a2a7e30 100644 --- a/controllers/cms_user2.go +++ b/controllers/cms_user2.go @@ -300,13 +300,12 @@ func (c *User2Controller) DeleteMyDeliveryAddress() { // @Param lat formData float64 false "纬度" // @Param tag formData string false "标签" // @Param remark formData string false "备注" -// @Param isDefault formData bool false "是否是默认" +// @Param isDefault formData int false "是否是默认(0:否,1:是)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /UpdateMyDeliveryAddress [put] func (c *User2Controller) UpdateMyDeliveryAddress() { c.callUpdateMyDeliveryAddress(func(params *tUser2UpdateMyDeliveryAddressParams) (retVal interface{}, errCode string, err error) { - params.MapData["isDefault"] = utils.Bool2Int(params.IsDefault) err = cms.UpdateMyDeliveryAddress(params.Ctx, params.AddressID, params.MapData) return retVal, "", err })