Jianghan 8 months ago
parent
commit
7933d05fc8
1 changed files with 45 additions and 15 deletions
  1. 45 15
      timetask/main.go

+ 45 - 15
timetask/main.go

@@ -2,9 +2,9 @@ package main
 
 import (
 	"app.yhyue.com/moapp/jybase/mongodb"
+	"fmt"
 	"go.mongodb.org/mongo-driver/bson"
 	"log"
-	"sync"
 )
 
 var (
@@ -23,27 +23,57 @@ func init() {
 func main() {
 	sess := MongoTool.GetMgoConn()
 	defer MongoTool.DestoryMongoConn(sess)
-	ch := make(chan bool, 2)
-	wg := &sync.WaitGroup{}
+	//ch := make(chan bool, 2)
+	//wg := &sync.WaitGroup{}
 
-	q := bson.M{"_id": bson.M{"$gte": mongodb.StringTOBsonId("6693f6000000000000000000")}}
-	query := sess.DB("jyqyfw").C("usermail").Find(q).Iter()
+	idsMap := make(map[string]string)
+
+	//q := bson.M{"_id": bson.M{"$gte": mongodb.StringTOBsonId("6693f6000000000000000000")}}
+	f := bson.M{"id": 1, "ruleid": 1, "appid": 1, "rulename": 1}
+	query := sess.DB("jyqyfw").C("usermail").Find(nil).Select(f).Sort("id").Iter()
 	count := 0
 	for tmp := make(map[string]interface{}); query.Next(&tmp); count++ {
-		if count%2000 == 0 {
-			log.Println("current ---", count)
+		if count%20000 == 0 {
+			log.Println("current ---", count, len(idsMap))
 		}
-		ch <- true
-		wg.Add(1)
-		go func(tmp map[string]interface{}) {
-			defer func() {
-				<-ch
-				wg.Done()
-			}()
+		//ch <- true
+		//wg.Add(1)
+		func(tmp map[string]interface{}) {
+			//defer func() {
+			//<-ch
+			//wg.Done()
+			//}()
+			appid := tmp["appid"].(string)
+			id := tmp["id"].(string)
+			if appid == "jyGQ1XQQsEAwNeSENOFR9D" {
+				return
+			}
+			if tmp["ruleid"] != nil {
+				ruleid := tmp["ruleid"].(string)
+				//rulename := tmp["rulename"].(string)
+				key := fmt.Sprintf("%s-%s-%s", appid, ruleid, id)
+				if bid := idsMap[key]; bid != "" {
+					MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
+				}
+				idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
+			} else if tmp["rulename"] != nil {
+				rulename := tmp["rulename"].(string)
+				key := fmt.Sprintf("%s-%s-%s", appid, rulename, id)
+				if bid := idsMap[key]; bid != "" {
+					MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
+				}
+				idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
+			} else {
+				key := fmt.Sprintf("%s-%s", appid, id)
+				if bid := idsMap[key]; bid != "" {
+					MongoTool.UpdateById("usermail", bid, bson.M{"$set": bson.M{"del": true}})
+				}
+				idsMap[key] = mongodb.BsonIdToSId(tmp["_id"])
+			}
 
 		}(tmp)
 		tmp = make(map[string]interface{})
 	}
-	wg.Wait()
+	//wg.Wait()
 	log.Println("over ---", count)
 }