Browse Source

wip:用户打标签

wangkaiyue 9 months ago
parent
commit
77f5869fdd

+ 29 - 3
userSign/userAnalysis/analysisManager.go

@@ -10,7 +10,8 @@ import (
 
 type (
 	UserAnalysis struct {
-		UserMapping map[string]BaseUserId //职位id、mongouserId对应的baseUserId
+		UserMapping      map[string]BaseUserId //职位id、mongouserId对应的baseUserId
+		EntUserIdMapping map[int64]BaseUserId
 
 		BinPhone, BindMail   map[BaseUserId]bool
 		Vip, Vip15, Vip30    map[BaseUserId]bool
@@ -78,20 +79,45 @@ func NewManager() *UserAnalysis {
 }
 
 func (ua *UserAnalysis) LoadMapping() error {
-	data, err := g.DB().Query(ctx, "SELECT mgoUserId,positionId,baseUserId FROM dwd_mgo_position")
+	//加载baseUserId对应关系
+	data, err := g.DB().Query(ctx, "SELECT mgoUserId,positionId,baseUserId,phone FROM dwd_mgo_position")
 	if err != nil {
 		return err
 	}
-	newMapping := map[string]BaseUserId{}
+	var (
+		newMapping             = map[string]BaseUserId{}
+		phoneBaseUserIdMapping = map[string]BaseUserId{}
+		entIdBaseUserIdMapping = map[int64]BaseUserId{}
+	)
 	for _, m := range data.List() {
 		var (
 			mgoUserId  = gconv.String(m["mgoUserId"])
 			positionId = gconv.String(m["positionId"])
 			baseUserId = BaseUserId(gconv.Int64(m["baseUserId"]))
+			phone      = gconv.String(m["phone"])
 		)
 		newMapping[mgoUserId] = baseUserId
 		newMapping[positionId] = baseUserId
+		if phone != "" {
+			phoneBaseUserIdMapping[phone] = baseUserId
+		}
 	}
 	ua.UserMapping = newMapping
+
+	//加载ent_id和手机号对应关系
+	dataEntRes, err := g.DB("jianyu").Query(ctx, "SELECT id,phone FROM entniche_user")
+	if err != nil {
+		return err
+	}
+	for _, m := range dataEntRes {
+		var (
+			entId = gconv.Int64(m["id"])
+			phone = gconv.String(m["phone"])
+		)
+		if bId, ok := phoneBaseUserIdMapping[phone]; ok {
+			entIdBaseUserIdMapping[entId] = bId
+		}
+	}
+	ua.EntUserIdMapping = entIdBaseUserIdMapping
 	return nil
 }

+ 11 - 69
userSign/userAnalysis/jobMgoUserRange.go

@@ -76,16 +76,12 @@ func (ua *UserAnalysis) mgoUserRange(ctx context.Context) {
 }
 
 func (ua *UserAnalysis) mgoEntUserRange(ctx context.Context) {
-	if len(ua.UserMapping) == 0 {
+	if len(ua.UserMapping) == 0 || len(ua.EntUserIdMapping) == 0 {
 		return
 	}
 	sess := common.MG.DB().GetMgoConn()
 	defer common.MG.DB().DestoryMongoConn(sess)
 
-	var (
-		Vip, Vip15, Vip30    = map[int64]bool{}, map[int64]bool{}, map[int64]bool{}
-		Member, MemberExpire = map[int64]bool{}, map[int64]bool{}
-	)
 	//企业身份
 	it := sess.DB("qfw").C("ent_user").Find(nil).Select(g.Map{"i_userid": 1, "l_registedate": 1, "i_vip_status": 1, "l_vip_endtime": 1, "i_member_status": 1}).Iter()
 	var (
@@ -100,84 +96,30 @@ func (ua *UserAnalysis) mgoEntUserRange(ctx context.Context) {
 		var (
 			entUserId = gconv.Int64(m["i_userid"])
 		)
+		baseUserId, ok := ua.EntUserIdMapping[entUserId]
+		if !ok {
+			continue
+		}
 		//超级订阅用户处理
 		if vip_status := gconv.Int(m["i_vip_status"]); vip_status > 0 {
-			Vip[entUserId] = true
+			ua.Vip[baseUserId] = true
+
 			if timeStamp := gconv.Int64(m["l_vip_endtime"]); timeStamp > 0 {
 				var vip_endtime = time.Unix(timeStamp, 0)
 				if vip_endtime.AddDate(0, 0, -15).Before(now) {
-					Vip15[entUserId] = true
+					ua.Vip15[baseUserId] = true
 				}
 				if vip_endtime.AddDate(0, 0, -30).Before(now) {
-					Vip30[entUserId] = true
+					ua.Vip30[baseUserId] = true
 				}
 			}
 		}
 		//大会员处理
 		if member_status := gconv.Int(m["i_member_status"]); member_status > 0 {
-			Member[entUserId] = true
-		} else if member_status != 0 {
-			MemberExpire[entUserId] = true
-		}
-	}
-	g.Log().Infof(ctx, "MgoUserRange 加载%d挑数据完成", index)
-	//根据entUserId获取
-	baseUserIdMapping := func() map[int64]BaseUserId {
-		var (
-			all   = map[int64]bool{}
-			rData = map[int64]BaseUserId{}
-		)
-		for i, _ := range Member {
-			all[i] = true
-		}
-		for i, _ := range Vip {
-			all[i] = true
-		}
-		doQuery := func(entUserId []int64) map[int64]BaseUserId {
-			return nil
-		}
-
-		var query []int64
-		for i, _ := range all {
-			query = append(query, i)
-			if i >= 500 {
-				for m, n := range doQuery(query) {
-					rData[m] = n
-				}
-				query = []int64{}
-			}
-		}
-		if len(query) > 0 {
-			for m, n := range doQuery(query) {
-				rData[m] = n
-			}
-		}
-		return rData
-	}()
-	//Vip, Vip15, Vip30
-	for entId, _ := range Vip {
-		if baseUserId, ok := baseUserIdMapping[entId]; ok {
-			ua.Vip[baseUserId] = true
-		}
-	}
-	for entId, _ := range Vip15 {
-		if baseUserId, ok := baseUserIdMapping[entId]; ok {
-			ua.Vip15[baseUserId] = true
-		}
-	}
-	for entId, _ := range Vip30 {
-		if baseUserId, ok := baseUserIdMapping[entId]; ok {
-			ua.Vip30[baseUserId] = true
-		}
-	}
-	for entId, _ := range Member {
-		if baseUserId, ok := baseUserIdMapping[entId]; ok {
 			ua.Member[baseUserId] = true
-		}
-	}
-	for entId, _ := range MemberExpire {
-		if baseUserId, ok := baseUserIdMapping[entId]; ok {
+		} else if member_status != 0 {
 			ua.MemberExpire[baseUserId] = true
 		}
 	}
+	g.Log().Infof(ctx, "MgoUserRange 加载%d挑数据完成", index)
 }

+ 1 - 1
userSign/userAnalysis/jobOrderRange.go

@@ -12,7 +12,7 @@ func (ua *UserAnalysis) TiDBOrderRange(ctx context.Context) ([]*AnalysisRes, err
 	if len(ua.UserMapping) == 0 {
 		return nil, nil
 	}
-	order, err := g.DB("order").Query(ctx, "SELECT user_id,order_status,product_type,create_time,pay_money,is_backstage_order FROM dataexport_order")
+	order, err := g.DB("jianyu").Query(ctx, "SELECT user_id,order_status,product_type,create_time,pay_money,is_backstage_order FROM dataexport_order")
 	if err != nil {
 		g.Log().Errorf(ctx, "读取订单异常")
 		return nil, err