From 7bc963c31f499d3b34fdbfb15fc23633068fc284 Mon Sep 17 00:00:00 2001 From: gazebo Date: Tue, 17 Sep 2019 10:47:09 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=E9=97=A8=E5=BA=97?= =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E9=97=A8=E5=BA=97=E6=8C=89=E5=9F=8E=E5=B8=82?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 44 +++++++++++++++++++++++++++++- business/jxstore/cms/store_test.go | 4 +-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index f9d3ea169..9a9aa6940 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "math" + "sort" "strconv" "strings" "time" @@ -1561,6 +1562,28 @@ func getAllUsers4Store(ctx *jxcontext.Context, db *dao.DaoDB, store *model.Store return userList } +type tStoreIDList struct { + StoreIDList []int + StoreMap map[int]*model.Store +} + +func (l *tStoreIDList) Len() int { + return len(l.StoreIDList) +} + +func (l *tStoreIDList) Less(i, j int) bool { + storei := l.StoreMap[l.StoreIDList[i]] + storej := l.StoreMap[l.StoreIDList[j]] + if storei.CityCode == storej.CityCode { + return storei.ID < storej.ID + } + return storei.CityCode < storej.CityCode +} + +func (l *tStoreIDList) Swap(i, j int) { + l.StoreIDList[i], l.StoreIDList[j] = l.StoreIDList[j], l.StoreIDList[i] +} + func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, prevSnapshotList, curSnapshotList []*model.VendorStoreSnapshot) (err error) { if len(prevSnapshotList) == 0 { return nil @@ -1646,17 +1669,37 @@ func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, p } if len(userList) > 0 { + allStores, err := dao.GetStoreList(db, nil, nil, "") + if err != nil { + return err + } + allStoreMap := make(map[int]*model.Store) + for _, v := range allStores { + allStoreMap[v.ID] = v + } + const fixTitle = "门店状态变化" title := fmt.Sprintf("%s:%s-->%s", fixTitle, utils.Time2Str(prevSnapshotList[0].SnapshotAt), utils.Time2Str(curSnapshotList[0].SnapshotAt)) task := tasksch.NewParallelTask("SendAlarmVendorSnapshot", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { user := batchItemList[0].(*model.User) + if user.GetMobile() != "18048531223" { + return nil, nil + } var excelURL string if user.Type&model.UserTypeOperator != 0 { var dataList []map[string]interface{} captionList := []string{"京西门店ID", "门店名", "城市"} isFirstRow := true + + storeIDList := &tStoreIDList{ + StoreMap: allStoreMap, + } for storeID := range userMap[user.GetID()] { + storeIDList.StoreIDList = append(storeIDList.StoreIDList, storeID) + } + sort.Sort(storeIDList) + for _, storeID := range storeIDList.StoreIDList { prevAlarmMap := prevSnapshotMap2[storeID] curAlarmMap := curSnapshotMap2[storeID] data := map[string]interface{}{ @@ -1789,7 +1832,6 @@ func SaveAndSendAlarmVendorSnapshot(ctx *jxcontext.Context, vendorIDs, storeIDs err = SaveStoresVendorSnapshot(db, curSnapshotAt, curSnapshotList) case 2: prevSnapshotList, err = dao.GetVendorStoreSnapshot(db, prevSnapshotAt) - curSnapshotList, err = dao.GetVendorStoreSnapshot(db, curSnapshotAt) // 因为排序的原因,重新取一下 case 3: err = SendAlarmVendorSnapshot(ctx, task, prevSnapshotList, curSnapshotList) } diff --git a/business/jxstore/cms/store_test.go b/business/jxstore/cms/store_test.go index 20f9b7bc5..e934e2886 100644 --- a/business/jxstore/cms/store_test.go +++ b/business/jxstore/cms/store_test.go @@ -20,8 +20,8 @@ func TestGetStoresVendorSnapshot(t *testing.T) { func TestSendAlarmVendorSnapshot(t *testing.T) { db := dao.GetDB() - prevSnapshotList, _ := dao.GetVendorStoreSnapshot(db, utils.Str2Time("2019-09-09 10:00:00")) - curSnapshotList, _ := dao.GetVendorStoreSnapshot(db, utils.Str2Time("2019-09-09 11:00:00")) + prevSnapshotList, _ := dao.GetVendorStoreSnapshot(db, utils.Str2Time("2019-09-17 08:00:00")) + curSnapshotList, _ := dao.GetVendorStoreSnapshot(db, utils.Str2Time("2019-09-17 10:00:00")) err := SendAlarmVendorSnapshot(jxcontext.AdminCtx, nil, prevSnapshotList, curSnapshotList) if err != nil { t.Fatal(err)