Bladeren bron

feat:新增

wangchuanjin 5 maanden geleden
bovenliggende
commit
b0f971d0c4
2 gewijzigde bestanden met toevoegingen van 58 en 17 verwijderingen
  1. 7 17
      main.go
  2. 51 0
      p/public.go

+ 7 - 17
main.go

@@ -3,26 +3,16 @@ package main
 import (
 	"log"
 
-	. "app.yhyue.com/moapp/jybase/es"
+	. "app.yhyue.com/moapp/jybase/mongodb"
 	. "bp.jydev.jianyu360.cn/BaseService/pushpkg/p"
 )
 
 func main() {
-	NewEs("v7", "http://192.168.3.149:9200", 2, "", "")
-	array := []map[string]interface{}{
-		map[string]interface{}{
-			"_id": "5b7bd6b9a5cb26b9b7449fd7",
-		},
-		map[string]interface{}{
-			"_id": "5b7bd6b9a5cb26b9b7449fe4",
-		},
-		map[string]interface{}{
-			"_id": "626c4b63923488e172579d81",
-		},
-		map[string]interface{}{
-			"_id": "5b7bd6b9a5cb26b9b7449fde",
-		},
+	mgo := &MongodbSim{
+		MongodbAddr: "172.20.45.130:27080",
+		Size:        1,
+		DbName:      "push",
 	}
-	BiddingRepair(array, "filetext")
-	log.Println(array)
+	mgo.InitPool()
+	log.Println(GetWxTplSurplus(mgo, 2, 7, 1000000, 100000))
 }

+ 51 - 0
p/public.go

@@ -892,3 +892,54 @@ func MergeDiffIndustry(wuye, other *[]map[string]interface{}) *[]map[string]inte
 	}
 	return &datas
 }
+
+//
+func GetWxTplSurplus(mgo *MongodbSim, wxNodeNum, dayNum, count, retain int64) int64 {
+	ymds := []string{}
+	now := time.Now()
+	for i := 0; i < int(dayNum); i++ {
+		now = now.AddDate(0, 0, -1)
+		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)
+	if !ok || list == nil || len(*list) == 0 {
+		logger.Error("wxtmplsend_tj没有找到记录", ymds)
+		return 0
+	}
+	all := map[string]map[string]int64{}
+	ymdCount := map[string]int64{}
+	for _, v := range *list {
+		ymd, _ := v["ymd"].(string)
+		if all[ymd] == nil {
+			all[ymd] = map[string]int64{}
+		}
+		all[ymd][ObjToString(v["node_type"])]++
+		ymdCount[ymd] += Int64All(v["count"])
+	}
+	var index, maxNum int64
+L:
+	for _, v := range ymds {
+		if all[v] == nil || int64(len(all[v])) != wxNodeNum {
+			continue
+		}
+		for _, vv := range all[v] {
+			if vv != 1 {
+				continue L
+			}
+		}
+		index++
+		if maxNum < ymdCount[v] {
+			maxNum = ymdCount[v]
+		}
+	}
+	if index < dayNum/2 {
+		logger.Error("计算以往最大推送量异常", index, dayNum/2)
+		return 0
+	}
+	surplus := count - maxNum - retain
+	if surplus < 0 {
+		return 0
+	}
+	logger.Info("微信模板消息最大量", count, ",过去", dayNum, "天内一天最大推送量", maxNum, ",保留", retain, ",剩余可用", surplus)
+	return surplus
+}