123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- package activeUsers
- import (
- "fmt"
- "leadGeneration/entity/power"
- "leadGeneration/public"
- "log"
- "time"
- )
- /*
- ⚠️注意
- user_countbyhour 表只有一个月的数据
- */
- // 超前项目
- type aheadActiveFreeUser struct {
- }
- func NewAheadActiveFreeUser() *aheadActiveFreeUser {
- return &aheadActiveFreeUser{}
- }
- // 定制化分析报告
- type customerActiveFreeUser struct {
- }
- func NewCustomerActiveFreeUser() *customerActiveFreeUser {
- return &customerActiveFreeUser{}
- }
- // GetWeekActiveFreeUsers 获取周活无权限用户
- func (a *aheadActiveFreeUser) GetWeekActiveFreeUsers() (rData []string) {
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetWeekActiveFreeUsers start\n")
- now := time.Now()
- _, end_m, end_d := now.Date()
- _, start_m, start_d := now.AddDate(0, 0, -7).Date()
- var sql string
- var param []interface{}
- if start_m != end_m {
- //跨月
- sql = "SELECT DISTINCT(user_mongoid) FROM user_countbyhour WHERE day >= ? OR day < ?"
- param = []interface{}{end_d, start_d}
- } else {
- //非跨月
- sql = "SELECT DISTINCT(user_mongoid) FROM user_countbyhour WHERE day >= ? AND day < ?"
- param = []interface{}{start_d, end_d}
- }
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetWeekActiveFreeUsers search sql:%s value:%v start\n", sql, param)
- res := public.UserAnalyseDb.SelectBySql(sql, param...)
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetWeekActiveFreeUsers search end\n")
- if res == nil || len(*res) == 0 {
- return
- }
- rData = make([]string, 0, len(*res))
- for _, v := range *res {
- if userId, _ := v["user_mongoid"].(string); userId != "" {
- if !power.HasAheadPower(userId) {
- rData = append(rData, userId)
- }
- }
- }
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetWeekActiveFreeUsers start Finished Total %d\n", len(rData))
- return rData
- }
- // GetMonthActiveFreeUsers 获取月活无权限用户
- func (a *aheadActiveFreeUser) GetMonthActiveFreeUsers() (rData []string) {
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetMonthActiveFreeUsers start\n")
- var sql string
- sql = "SELECT DISTINCT(user_mongoid) FROM user_countbyhour "
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetMonthActiveFreeUsers search sql:%s value:%v start\n", sql)
- res := public.UserAnalyseDb.SelectBySql(sql)
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetMonthActiveFreeUsers search end\n")
- if res == nil || len(*res) == 0 {
- return
- }
- rData = make([]string, 0, len(*res))
- for _, v := range *res {
- if userId, _ := v["user_mongoid"].(string); userId != "" {
- if !power.HasAheadPower(userId) {
- rData = append(rData, userId)
- }
- }
- }
- log.Printf("[ACTIVE-USER-INFO]AheadActiveFreeUser GetMonthActiveFreeUsers start Finished Total %d\n", len(rData))
- return rData
- }
- // GetMonthActiveFreeUsers 获取月活用户
- // 有订阅或有搜索词的周活用户+最近7天注册的新用户无条件生
- func (c *customerActiveFreeUser) GetMonthActiveFreeUsers() (rData []string) {
- log.Printf("[ACTIVE-USER-INFO]CustomerActiveFreeUser GetMonthActiveFreeUsers start\n")
- //表数据为近一个月,所以直接查询全部
- res := public.UserAnalyseDb.SelectBySql("SELECT user_mongoid,sum(search) AS total FROM user_countbyhour group by user_mongoid")
- if res == nil || len(*res) == 0 {
- return
- }
- rData = make([]string, 0, len(*res))
- for _, v := range *res {
- userId, _ := v["user_mongoid"].(string)
- if userId == "" {
- continue
- }
- //非会员
- if hasPower := power.HasPower(userId); hasPower {
- continue
- }
- //无搜索记录、无关键词
- if searchTotal, _ := v["total"].(int); searchTotal == 0 {
- //无订阅词
- if !power.HasSubscribe(userId) {
- continue
- }
- }
- rData = append(rData, userId)
- }
- log.Printf("[ACTIVE-USER-INFO]CustomerActiveFreeUser GetMonthActiveFreeUsers start Finished Total %d\n", len(rData))
- return rData
- }
- // GetWeekActiveFreeUsers 获取周活用户
- func (c *customerActiveFreeUser) GetWeekActiveFreeUsers() (rData []string) {
- log.Printf("[ACTIVE-USER-INFO]CustomerActiveFreeUser GetWeekActiveFreeUsers start\n")
- now := time.Now()
- _, end_m, end_d := now.Date()
- _, start_m, start_d := now.AddDate(0, 0, -7).Date()
- var sql string
- var param []interface{}
- if start_m != end_m {
- //跨月
- sql = " WHERE day >= ? OR day < ? "
- param = []interface{}{end_d, start_d}
- } else {
- //非跨月
- sql = " WHERE day >= ? AND day < ? "
- param = []interface{}{start_d, end_d}
- }
- query := fmt.Sprintf("SELECT user_mongoid,sum(search) AS total FROM user_countbyhour %s group by user_mongoid", sql)
- res := public.UserAnalyseDb.SelectBySql(query, param...)
- if res == nil || len(*res) == 0 {
- return
- }
- rData = make([]string, 0, len(*res))
- for _, v := range *res {
- userId, _ := v["user_mongoid"].(string)
- if userId == "" {
- continue
- }
- //非会员
- if hasPower := power.HasPower(userId); hasPower {
- continue
- }
- //无搜索记录、无关键词
- if searchTotal, _ := v["total"].(int); searchTotal == 0 {
- //无订阅词
- if !power.HasSubscribe(userId) {
- continue
- }
- }
- rData = append(rData, userId)
- }
- log.Printf("[ACTIVE-USER-INFO]CustomerActiveFreeUser GetWeekActiveFreeUsers start Finished Total %d\n", len(rData))
- return rData
- }
|