diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index fe453f9b5..6f73c7f3e 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -1317,7 +1317,7 @@ func SaveStoresVendorSnapshot(db *dao.DaoDB, snapshotAt time.Time, curSnapshotLi return err } -func isVendorStoresStatusNotOk(storeMapList []*model.StoreMap) bool { +func isVendorStoresStatusNotOk(storeMapList []*model.VendorStoreSnapshot) bool { statusMap := make(map[int]int) maxStatus := model.StoreStatusClosed for _, v := range storeMapList { @@ -1335,20 +1335,19 @@ func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, p } curSnapshotMap := make(map[string]*model.VendorStoreSnapshot) + curSnapshotGroupMap := make(map[int][]*model.VendorStoreSnapshot) for _, v := range curSnapshotList { curSnapshotMap[v.GenMapKey()] = v + curSnapshotGroupMap[v.StoreID] = append(curSnapshotGroupMap[v.StoreID], v) } - alarmMap := make(map[int]map[int]*model.VendorStoreSnapshot) storeDetailMap := make(map[int]*dao.StoreDetail) userMap := make(map[string]map[int]int) db := dao.GetDB() - for _, v := range prevSnapshotList { - curSnapshot := curSnapshotMap[v.GenMapKey()] - if (curSnapshot == nil) || ((v.Status == model.StoreStatusOpened && curSnapshot.Status != model.StoreStatusOpened) || - curSnapshot.CompareOperationTime(v) < 0) { - if alarmMap[v.StoreID] == nil { - alarmMap[v.StoreID] = make(map[int]*model.VendorStoreSnapshot) + alarmMapHandler := func(alarmMap map[int]map[int]*model.VendorStoreSnapshot, v *model.VendorStoreSnapshot) { + if alarmMap[v.StoreID] == nil { + alarmMap[v.StoreID] = make(map[int]*model.VendorStoreSnapshot) + if storeDetailMap[v.StoreID] == nil { storeDetail, _ := dao.GetStoreDetail(db, v.StoreID, v.VendorID) if storeDetail != nil { storeDetailMap[v.StoreID] = storeDetail @@ -1362,9 +1361,27 @@ func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, p } } } - alarmMap[v.StoreID][v.VendorID] = v + } + alarmMap[v.StoreID][v.VendorID] = v + } + + alarmMap := make(map[int]map[int]*model.VendorStoreSnapshot) + for _, v := range prevSnapshotList { + curSnapshot := curSnapshotMap[v.GenMapKey()] + if (curSnapshot == nil) || ((v.Status == model.StoreStatusOpened && curSnapshot.Status != model.StoreStatusOpened) || + curSnapshot.CompareOperationTime(v) < 0) { + alarmMapHandler(alarmMap, v) } } + alarmMap4StatusNotSame := make(map[int]map[int]*model.VendorStoreSnapshot) + for _, list := range curSnapshotGroupMap { + if isVendorStoresStatusNotOk(list) { + for _, v := range list { + alarmMapHandler(alarmMap4StatusNotSame, v) + } + } + } + var mobileList []string for mobile := range userMap { if mobile != "" && !shouldSkipMobile4SendStoreStatusInfo(mobile) { @@ -1381,7 +1398,8 @@ func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, p captionList := []string{"京西门店ID", "门店名", "城市"} isFirstRow := true for storeID := range userMap[mobile] { - prevSnapshotMap := alarmMap[storeID] + prevAlarmMap := alarmMap[storeID] + curAlarmMap := alarmMap4StatusNotSame[storeID] data := map[string]interface{}{ "京西门店ID": storeID, "门店名": storeDetailMap[storeID].Store.Name, @@ -1393,21 +1411,34 @@ func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, p model.VendorChineseNames[vendorID]+"之前状态", model.VendorChineseNames[vendorID]+"当前状态", model.VendorChineseNames[vendorID]+"之前营业时间", model.VendorChineseNames[vendorID]+"当前营业时间") } - data[model.VendorChineseNames[vendorID]+"当前状态"] = "" - data[model.VendorChineseNames[vendorID]+"当前营业时间"] = "" - prevSnapshot := prevSnapshotMap[vendorID] - if prevSnapshot != nil { - data[model.VendorChineseNames[vendorID]+"ID"] = prevSnapshot.VendorStoreID - data[model.VendorChineseNames[vendorID]+"之前状态"] = model.StoreStatusName[prevSnapshot.Status] - data[model.VendorChineseNames[vendorID]+"之前营业时间"] = jxutils.OperationTimeStr4VendorStore(prevSnapshot) - if snapshot := curSnapshotMap[prevSnapshot.GenMapKey()]; snapshot != nil { - data[model.VendorChineseNames[vendorID]+"当前状态"] = model.StoreStatusName[snapshot.Status] - data[model.VendorChineseNames[vendorID]+"当前营业时间"] = jxutils.OperationTimeStr4VendorStore(snapshot) + if prevAlarmMap != nil { + data[model.VendorChineseNames[vendorID]+"当前状态"] = "" + data[model.VendorChineseNames[vendorID]+"当前营业时间"] = "" + if prevSnapshot := prevAlarmMap[vendorID]; prevSnapshot != nil { + data[model.VendorChineseNames[vendorID]+"ID"] = prevSnapshot.VendorStoreID + data[model.VendorChineseNames[vendorID]+"之前状态"] = model.StoreStatusName[prevSnapshot.Status] + data[model.VendorChineseNames[vendorID]+"之前营业时间"] = jxutils.OperationTimeStr4VendorStore(prevSnapshot) + if snapshot := curSnapshotMap[prevSnapshot.GenMapKey()]; snapshot != nil { + data[model.VendorChineseNames[vendorID]+"当前状态"] = model.StoreStatusName[snapshot.Status] + data[model.VendorChineseNames[vendorID]+"当前营业时间"] = jxutils.OperationTimeStr4VendorStore(snapshot) + } + } else { + data[model.VendorChineseNames[vendorID]+"ID"] = "" + data[model.VendorChineseNames[vendorID]+"之前状态"] = "" + data[model.VendorChineseNames[vendorID]+"之前营业时间"] = "" } - } else { - data[model.VendorChineseNames[vendorID]+"ID"] = "" + } else if curAlarmMap != nil { data[model.VendorChineseNames[vendorID]+"之前状态"] = "" data[model.VendorChineseNames[vendorID]+"之前营业时间"] = "" + if curSnapshot := curAlarmMap[vendorID]; curSnapshot != nil { + data[model.VendorChineseNames[vendorID]+"ID"] = curSnapshot.VendorStoreID + data[model.VendorChineseNames[vendorID]+"当前状态"] = model.StoreStatusName[curSnapshot.Status] + data[model.VendorChineseNames[vendorID]+"当前营业时间"] = jxutils.OperationTimeStr4VendorStore(curSnapshot) + } else { + data[model.VendorChineseNames[vendorID]+"ID"] = "" + data[model.VendorChineseNames[vendorID]+"当前状态"] = "" + data[model.VendorChineseNames[vendorID]+"当前营业时间"] = "" + } } } dataList = append(dataList, data)