|
@@ -893,33 +893,41 @@ func MergeDiffIndustry(wuye, other *[]map[string]interface{}) *[]map[string]inte
|
|
return &datas
|
|
return &datas
|
|
}
|
|
}
|
|
|
|
|
|
-//
|
|
|
|
-func GetWxTplSurplus(mgo *MongodbSim, wxNodeNum, dayNum, count, retain int64) int64 {
|
|
|
|
|
|
+//获取无消息提醒微信模板消息的可用数量
|
|
|
|
+func WxNoMsgTmplUsableNum(mgo *MongodbSim, wxNodeNum, dayNum, count, retain int64) int64 {
|
|
|
|
+ if count < 0 {
|
|
|
|
+ return -1
|
|
|
|
+ }
|
|
ymds := []string{}
|
|
ymds := []string{}
|
|
now := time.Now()
|
|
now := time.Now()
|
|
for i := 0; i < int(dayNum); i++ {
|
|
for i := 0; i < int(dayNum); i++ {
|
|
now = now.AddDate(0, 0, -1)
|
|
now = now.AddDate(0, 0, -1)
|
|
ymds = append(ymds, FormatDate(&now, Date_Short_Layout))
|
|
ymds = append(ymds, FormatDate(&now, Date_Short_Layout))
|
|
}
|
|
}
|
|
- list, ok := mgo.Find("wxtmplsend_tj", map[string]interface{}{"ymd": map[string]interface{}{"$in": ymds}}, `{"ymd":-1}`, `{"count":1,"node_type":1,"ymd":1}`, false, -1, -1)
|
|
|
|
|
|
+ list, ok := mgo.Find("wxtmplsend_tj", map[string]interface{}{"type": map[string]interface{}{"$in": []string{"all", "nomsg"}}, "ymd": map[string]interface{}{"$in": ymds}}, `{"ymd":-1}`, `{"count":1,"node_type":1,"ymd":1}`, false, -1, -1)
|
|
if !ok || list == nil || len(*list) == 0 {
|
|
if !ok || list == nil || len(*list) == 0 {
|
|
logger.Error("wxtmplsend_tj没有找到记录", ymds)
|
|
logger.Error("wxtmplsend_tj没有找到记录", ymds)
|
|
return 0
|
|
return 0
|
|
}
|
|
}
|
|
all := map[string]map[string]int64{}
|
|
all := map[string]map[string]int64{}
|
|
ymdCount := map[string]int64{}
|
|
ymdCount := map[string]int64{}
|
|
|
|
+ ymdNoMsgCount := map[string]int64{}
|
|
for _, v := range *list {
|
|
for _, v := range *list {
|
|
ymd, _ := v["ymd"].(string)
|
|
ymd, _ := v["ymd"].(string)
|
|
if all[ymd] == nil {
|
|
if all[ymd] == nil {
|
|
all[ymd] = map[string]int64{}
|
|
all[ymd] = map[string]int64{}
|
|
}
|
|
}
|
|
all[ymd][ObjToString(v["node_type"])]++
|
|
all[ymd][ObjToString(v["node_type"])]++
|
|
- ymdCount[ymd] += Int64All(v["count"])
|
|
|
|
|
|
+ if ObjToString(v["type"]) == "all" {
|
|
|
|
+ ymdCount[ymd] += Int64All(v["count"])
|
|
|
|
+ } else {
|
|
|
|
+ ymdNoMsgCount[ymd] += Int64All(v["count"])
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- var index, maxNum int64
|
|
|
|
|
|
+ var index, maxNum, maxNoMsgNum int64
|
|
L:
|
|
L:
|
|
for _, v := range ymds {
|
|
for _, v := range ymds {
|
|
- if all[v] == nil || int64(len(all[v])) != wxNodeNum {
|
|
|
|
|
|
+ if all[v] == nil || int64(len(all[v])) != wxNodeNum+1 {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
for _, vv := range all[v] {
|
|
for _, vv := range all[v] {
|
|
@@ -930,13 +938,14 @@ L:
|
|
index++
|
|
index++
|
|
if maxNum < ymdCount[v] {
|
|
if maxNum < ymdCount[v] {
|
|
maxNum = ymdCount[v]
|
|
maxNum = ymdCount[v]
|
|
|
|
+ maxNoMsgNum = ymdNoMsgCount[v]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if index < dayNum/2 {
|
|
if index < dayNum/2 {
|
|
logger.Error("计算以往最大推送量异常", index, dayNum/2)
|
|
logger.Error("计算以往最大推送量异常", index, dayNum/2)
|
|
return 0
|
|
return 0
|
|
}
|
|
}
|
|
- surplus := count - maxNum - retain
|
|
|
|
|
|
+ surplus := count - maxNum - retain + maxNoMsgNum
|
|
if surplus < 0 {
|
|
if surplus < 0 {
|
|
return 0
|
|
return 0
|
|
}
|
|
}
|