wangkaiyue 9 tháng trước cách đây
mục cha
commit
58ed510e9e
1 tập tin đã thay đổi với 108 bổ sung39 xóa
  1. 108 39
      userSign/main.go

+ 108 - 39
userSign/main.go

@@ -9,18 +9,6 @@ import (
 	"workTasks/common"
 )
 
-// 绑定手机号用户	bindPhone	已绑定手机号用户
-// 绑定邮箱用户	bindMail	已绑定邮箱用户
-// 超级订阅用户	vip	超级订阅vip用户
-// 超级订阅用户15	vip_15	第15天后到期的超级订阅用户
-// 超级订阅用户30	vip_30	第30天后到期的超级订阅用户
-// 大会员用户	member	生效中的大会员、大会员子账号用户
-// 大会员用户过期	member_expire	购买过大会员或子账号用户,当前已过期
-// 有付款用户	hasPay	无支付订单用户
-// 加购未购超级订阅	unBuyVip30	30天下单未支付超级订阅
-// 加购未购大会员	unBuyMember30	30天下单未支付大会员
-// 注册时间7天前	newUser7	7天前注册的用户
-// 注册时间30天前	newUser30	30天前注册的用户
 type UserAnalysis struct {
 	UserMapping map[string]BaseUserId
 
@@ -32,21 +20,6 @@ type UserAnalysis struct {
 }
 type BaseUserId int64
 
-// TiDBOrderRangeFunc 订单循环
-func TiDBOrderRangeFunc() {
-
-}
-
-// MgoUserRangeFunc 用户表循环
-func MgoUserRangeFunc() {
-
-}
-
-// CkLogRangeFunc 日志归集表循环
-func CkLogRangeFunc() {
-
-}
-
 func (ua *UserAnalysis) MgoUserRange(ctx context.Context) {
 	sess := common.MG.DB().GetMgoConn()
 	defer common.MG.DB().DestoryMongoConn(sess)
@@ -108,7 +81,7 @@ func (ua *UserAnalysis) MgoEntUserRange(ctx context.Context) {
 		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").Select(g.Map{"i_userid": 1, "l_registedate": 1, "i_vip_status": 1, "l_vip_endtime": 1, "i_member_status": 1}).Iter()
 	var (
 		index int64
@@ -143,33 +116,129 @@ func (ua *UserAnalysis) MgoEntUserRange(ctx context.Context) {
 		}
 	}
 	g.Log().Infof(ctx, "MgoUserRange 加载%d挑数据完成", index)
-	//企业身份查询转换
-	getBaseUserIdMap := func() map[int64]BaseUserId {
+	//根据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
+		}
 
-		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
 	}()
-	g.Dump(getBaseUserIdMap)
+	//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 {
+			ua.MemberExpire[baseUserId] = true
+		}
+	}
 }
 
 func (ua *UserAnalysis) TiDBOrderRange(ctx context.Context) {
-	order, err := g.DB().Query(ctx, "SELECT user_id,order_status,product_type,create_time FROM dataexport_order")
+	order, err := g.DB().Query(ctx, "SELECT user_id,order_status,product_type,create_time,order_money FROM dataexport_order")
 	if err != nil {
 		g.Log().Errorf(ctx, "读取订单异常")
 	}
+	var (
+		now         = time.Now()
+		vip, member = map[BaseUserId]int{}, map[BaseUserId]int{}
+	)
 	for index, m := range order.List() {
 		if index%10e4 == 0 {
 			g.Log().Infof(context.TODO(), "TiDBOrderRange %d/%d", index, order.Size())
 		}
 		var (
-			userId = gconv.String(m["user_id"])
-			//product     = gconv.String(m["product_type"])
+			userId      = gconv.String(m["user_id"])
+			baseUserId  BaseUserId
+			product     = gconv.String(m["product_type"])
 			orderStatus = gconv.Int(m["order_status"])
 		)
-		if orderStatus != 0 {
-			if uid, ok := ua.UserMapping[userId]; ok {
-				ua.hasPay[uid] = true
+		baseUserId, ok := ua.UserMapping[userId]
+		if !ok {
+			continue
+		}
+		if orderStatus == 1 {
+			ua.hasPay[baseUserId] = true
+		}
+		if orderStatus == -1 {
+			continue
+		}
+		//统计超级订阅、大会员当月加购未购
+		if product == "VIP订阅" || product == "大会员" {
+			var order_money = gconv.Int(m["order_money"])
+			t, err := time.ParseInLocation(time.DateTime, gconv.String(m["create_time"]), time.Local)
+			if err != nil {
+				continue
+			}
+			if now.Month() == t.Month() && now.Year() == t.Year() {
+				if product == "VIP订阅" {
+					if orderStatus <= 0 && order_money == 0 {
+						vip[baseUserId] += 0
+					} else {
+						vip[baseUserId] += 1
+					}
+				}
+				if product == "大会员" {
+					if orderStatus <= 0 && order_money == 0 {
+						member[baseUserId] += 0
+					} else {
+						member[baseUserId] += 1
+					}
+				}
 			}
 		}
-		//t := time.ParseInLocation(time.DateTime, gconv.String(m["create_time"]))
+	}
+	for id, i := range vip {
+		if i == 0 {
+			ua.UnBuyVip30[id] = true
+		}
+	}
+	for id, i := range member {
+		if i == 0 {
+			ua.UnBuyMember30[id] = true
+		}
 	}
 }