浏览代码

修改link判断条件

go_dev 1 年之前
父节点
当前提交
0c4021b80d
共有 1 个文件被更改,包括 62 次插入92 次删除
  1. 62 92
      resourceChannel/resourceChannel.go

+ 62 - 92
resourceChannel/resourceChannel.go

@@ -2,11 +2,9 @@ package resourceChannel
 
 import (
 	"encoding/json"
-	"github.com/bilibili/gengine/builder"
-	gengineContext "github.com/bilibili/gengine/context"
-	"github.com/bilibili/gengine/engine"
 	"github.com/go-redis/redis"
 	"golang.org/x/net/context"
+	"log"
 	"strconv"
 	"strings"
 	"time"
@@ -14,9 +12,9 @@ import (
 
 func redisCli() *redis.Client {
 	client := redis.NewClient(&redis.Options{
-		Addr:     "192.168.204.180:3377", // Redis地址
-		Password: "",                     // Redis密码,默认为空
-		DB:       1,                      // 使用哪个数据库,默认为0
+		Addr:     coo.RedisHost, // Redis地址
+		Password: "",            // Redis密码,默认为空
+		DB:       1,             // 使用哪个数据库,默认为0
 	})
 	_, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
 	defer cancel()
@@ -51,33 +49,31 @@ type ChannelCategory struct {
 	Category int
 }
 
-// AssessmentAnalysisRule 表单解析
-func (a ResourceAssessment) AssessmentAnalysisRule(assessment *ResourceAssessment) {
+// GetChannel 表单渠道归因处理
+func GetChannel(assessment ResourceAssessment) ChannelCategory {
+	log.Printf("%v", assessment)
 	// 获取神策URL(不包含utm)
 	cc, _ := redisCli().Get("website:" + assessment.GrUserId).Result()
 	var websiteUrl SensorsData
 	json.Unmarshal([]byte(cc), &websiteUrl)
-	// 获取神策url(包含utm)
-	cc1, _ := redisCli().Get("sensors:" + assessment.GrUserId).Result()
-	var utmUrl SensorsData
-	json.Unmarshal([]byte(cc1), &utmUrl)
+
 	// 到梦解析
 	if !strings.Contains(assessment.URL, "utm") && !strings.Contains(assessment.ChatURL, "utm") && !strings.Contains(assessment.ReferPageURL, "utm") && (strings.Contains(assessment.ReferPageURL, "daomeng") || strings.Contains(assessment.ChatURL, "daomeng")) {
-		println("解析到梦")
+		log.Printf("解析到梦")
 		assessment.Channel = 38
 		assessment.Category = 201
-		return
+		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// 网课解析
 	if assessment.DataType == 1 {
-		println("解析网课")
+		log.Printf("解析网课")
 		assessment.Channel = 26
 		assessment.Category = 121
-		return
+		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// 小程序解析
-	if strings.Contains(assessment.ChatURL, "pages") && strings.Split(strings.Split(assessment.ChatURL, "?")[1], "=")[0] == "miniapp" {
-		println("解析小程序")
+	if strings.Contains(assessment.ChatURL, "pages") && strings.Split(strings.Split(assessment.ChatURL, "?")[1], "=")[0] == "miniapp" && (strings.Contains(assessment.ChatURL, "baidu") || strings.Contains(assessment.ChatURL, "wechat")) {
+		log.Printf("解析小程序")
 		appType := strings.Split(strings.Split(strings.Split(assessment.ChatURL, "?")[1], "=")[1], "_")[1]
 		if appType == "baidu" {
 			assessment.Channel = 1
@@ -86,54 +82,60 @@ func (a ResourceAssessment) AssessmentAnalysisRule(assessment *ResourceAssessmen
 			assessment.Channel = 8
 			assessment.Category = 32
 		}
-		return
+		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// URL解析
-	if strings.Contains(assessment.URL, "link") || strings.Contains(assessment.ReferPageURL, "link") || strings.Contains(assessment.ChatURL, "link") {
-		println("解析URL")
-		if strings.Contains(assessment.URL, "link") {
+	if strings.Contains(assessment.URL, "link=") || strings.Contains(assessment.ReferPageURL, "link=") || strings.Contains(assessment.ChatURL, "link=") {
+		log.Printf("解析URL")
+		if strings.Contains(assessment.URL, "link=") {
 			assessment.Channel, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.URL, "link")[1], "form")[0], "_")[1])
 			assessment.Category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.URL, "link")[1], "form")[0], "_")[2])
-		} else if strings.Contains(assessment.ReferPageURL, "link") {
+		} else if strings.Contains(assessment.ReferPageURL, "link=") {
 			assessment.Channel, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ReferPageURL, "link")[1], "form")[0], "_")[1])
 			assessment.Category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ReferPageURL, "link")[1], "form")[0], "_")[2])
 		} else {
 			assessment.Channel, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ChatURL, "link")[1], "form")[0], "_")[1])
 			assessment.Category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ChatURL, "link")[1], "form")[0], "_")[2])
 		}
-		return
+		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
+	// 获取神策url(包含utm)
+	cc1, _ := redisCli().Get("sensors:" + assessment.GrUserId).Result()
+	var utmUrl SensorsData
+	json.Unmarshal([]byte(cc1), &utmUrl)
 	// 神策解析
-	if utmUrl.Url != "" && !strings.Contains(assessment.URL, "link") && !strings.Contains(assessment.ReferPageURL, "link") && !strings.Contains(assessment.ChatURL, "link") {
-		println("解析神策")
+	if utmUrl.Url != "" && !strings.Contains(assessment.URL, "link=") && !strings.Contains(assessment.ReferPageURL, "link=") && !strings.Contains(assessment.ChatURL, "link=") {
+		log.Printf("解析神策")
 		assessment.Channel = utmUrl.Channel
 		assessment.Category = utmUrl.Category
-		return
+		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// 搜索引擎SEO,外链解析
 	if assessment.ReferPageURL != "" && !strings.Contains(assessment.ReferPageURL, "https://www.jjl.cn/") && !strings.Contains(assessment.ReferPageURL, "https://m.jjl.cn/") {
-		println("解析SEO")
+		log.Printf("解析SEO")
 		assessment.Channel = 5
 		assessment.Category = 11
-		return
+		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// 官网自然访问解析
 	if strings.Contains(assessment.URL, "https://www.jjl.cn/") || strings.Contains(assessment.URL, "https://m.jjl.cn/") ||
 		strings.Contains(assessment.ReferPageURL, "https://www.jjl.cn/") || strings.Contains(assessment.ReferPageURL, "https://m.jjl.cn/") ||
 		strings.Contains(assessment.ChatURL, "https://www.jjl.cn/") || strings.Contains(assessment.ChatURL, "https://m.jjl.cn/") ||
 		strings.Contains(utmUrl.Url, "https://www.jjl.cn/") || strings.Contains(utmUrl.Url, "https://m.jjl.cn/") {
-		println("解析官网")
+		log.Printf("解析官网")
 		assessment.Channel = 7
 		assessment.Category = 126
-		return
+		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
-	println("默认解析为SEO")
+	log.Printf("默认解析为SEO")
 	assessment.Channel = 5
 	assessment.Category = 11
+	return ChannelCategory{assessment.Channel, assessment.Category}
 }
 
-// ChatAnalysisRule 表单解析规则
-func (c SemJsChatRecord) ChatAnalysisRule(chat *SemJsChatRecord) {
+// GetChatChannel 会话渠道归因处理
+func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
+	log.Printf("%v", chat)
 	// 获取神策URL(不包含utm)
 	cc, _ := redisCli().Get("website:" + chat.GrUserID).Result()
 	var websiteUrl SensorsData
@@ -143,8 +145,9 @@ func (c SemJsChatRecord) ChatAnalysisRule(chat *SemJsChatRecord) {
 	var utmUrl SensorsData
 	json.Unmarshal([]byte(cc1), &utmUrl)
 	// 小程序解析
-	if strings.Contains(chat.ChatURL, "pages") && strings.Split(strings.Split(chat.ChatURL, "?")[1], "=")[0] == "miniapp" {
-		println("小程序解析")
+	if strings.Contains(chat.ChatURL, "pages") && strings.Split(strings.Split(chat.ChatURL, "?")[1], "=")[0] == "miniapp" && (strings.Contains(chat.ChatURL, "baidu") || strings.Contains(chat.ChatURL, "wechat")) {
+		log.Printf("小程序解析")
+		log.Printf(chat.ChatURL)
 		appType := strings.Split(strings.Split(strings.Split(chat.ChatURL, "?")[1], "=")[1], "_")[1]
 		if appType == "baidu" {
 			chat.ChannleID = 1
@@ -153,86 +156,53 @@ func (c SemJsChatRecord) ChatAnalysisRule(chat *SemJsChatRecord) {
 			chat.ChannleID = 8
 			chat.CategoryID = 32
 		}
-		return
+		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	// 到梦解析
 	if !strings.Contains(chat.ReferPage, "utm") && !strings.Contains(chat.ChatURL, "utm") && (strings.Contains(chat.ReferPage, "daomeng") || strings.Contains(chat.ChatURL, "daomeng")) {
-		println("到梦解析")
+		log.Printf("到梦解析")
 		chat.ChannleID = 38
 		chat.CategoryID = 201
-		return
+		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	// URL解析
-	if strings.Contains(chat.ChatURL, "link") || strings.Contains(chat.ReferPage, "link") {
-		println("解析URL")
-		if strings.Contains(chat.ChatURL, "link") {
+	if strings.Contains(chat.ChatURL, "link=") || strings.Contains(chat.ReferPage, "link=") {
+		log.Printf("解析URL")
+		if strings.Contains(chat.ChatURL, "link=") {
 			chat.ChannleID, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ChatURL, "link")[1], "form")[0], "_")[1])
 			chat.CategoryID, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ChatURL, "link")[1], "form")[0], "_")[2])
 		} else {
 			chat.ChannleID, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ReferPage, "link")[1], "form")[0], "_")[1])
 			chat.ChannleID, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ReferPage, "link")[1], "form")[0], "_")[2])
 		}
-		return
+		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	// 神策解析
-	if utmUrl.Url != "" && !strings.Contains(chat.ReferPage, "link") && !strings.Contains(chat.ChatURL, "link") {
-		println("解析神策")
+	if utmUrl.Url != "" && !strings.Contains(chat.ReferPage, "link=") && !strings.Contains(chat.ChatURL, "link=") {
+		log.Printf("解析神策")
 		chat.ChannleID = utmUrl.Channel
 		chat.CategoryID = utmUrl.Category
-		return
+		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	// 搜索引擎SEO,外链解析
 	if chat.ReferPage != "" && !strings.Contains(chat.ReferPage, "https://www.jjl.cn/") && !strings.Contains(chat.ReferPage, "https://m.jjl.cn/") {
-		println("解析SEO")
+		log.Printf("解析SEO")
 		chat.ChannleID = 5
 		chat.CategoryID = 11
-		return
+		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	// 官网自然访问解析
 	if strings.Contains(chat.ReferPage, "https://www.jjl.cn/") || strings.Contains(chat.ReferPage, "https://m.jjl.cn/") ||
 		strings.Contains(chat.ChatURL, "https://www.jjl.cn/") || strings.Contains(chat.ChatURL, "https://m.jjl.cn/") ||
 		strings.Contains(utmUrl.Url, "https://www.jjl.cn/") || strings.Contains(utmUrl.Url, "https://m.jjl.cn/") {
-		println("解析官网")
+		log.Printf("解析官网")
 		chat.ChannleID = 7
 		chat.CategoryID = 126
-		return
+		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
-	println("默认解析为SEO")
+	log.Printf("默认解析为SEO")
 	chat.ChannleID = 5
 	chat.CategoryID = 11
-}
-
-const AssessmentAnalysisRule = `
-rule "AssessmentAnalysisRule" "表单解析" salience  1
-begin
-	assessment.AssessmentAnalysisRule(assessment)
-end`
-
-const ChatAnalysisRule = `
-rule "ChatAnalysisRule" "会话解析" salience  1
-begin
-	chat.ChatAnalysisRule(chat)
-end`
-
-// GetChannel 表单渠道归因处理
-func GetChannel(assessment ResourceAssessment) ChannelCategory {
-	dataContext := gengineContext.NewDataContext()
-	dataContext.Add("assessment", &assessment)
-	ruleBuilder := builder.NewRuleBuilder(dataContext)
-	ruleBuilder.BuildRuleFromString(AssessmentAnalysisRule)
-	engine := engine.NewGengine()
-	engine.Execute(ruleBuilder, true)
-	return ChannelCategory{assessment.Channel, assessment.Category}
-}
-
-// GetChatChannel 会话渠道归因处理
-func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
-	dataContext := gengineContext.NewDataContext()
-	dataContext.Add("chat", &chat)
-	ruleBuilder := builder.NewRuleBuilder(dataContext)
-	ruleBuilder.BuildRuleFromString(ChatAnalysisRule)
-	engine := engine.NewGengine()
-	engine.Execute(ruleBuilder, true)
 	return ChannelCategory{chat.ChannleID, chat.CategoryID}
 }
 
@@ -244,14 +214,14 @@ type SensorsData struct {
 }
 
 //func main() {
-//	//var assessment []ResourceAssessment
-//	//lib.GetDbInstance().Where("DATE(created_at) >= '2023-05-23' and id = 382346").Find(&assessment)
-//	//for _, value := range assessment {
-//	//	cc := GetChannel(value)
-//	//	println(cc.Channel)
-//	//	println(cc.Category)
-//	//	println("END")
-//	//}
+//	var assessment []ResourceAssessment
+//	lib.GetDbInstance().Where("DATE(created_at) >= '2023-01-01'").Find(&assessment)
+//	for _, value := range assessment {
+//		cc := GetChannel(value)
+//		println(cc.Channel)
+//		println(cc.Category)
+//		println("END")
+//	}
 //
 //	var chat []SemJsChatRecord
 //	lib.GetDbInstance().Where("DATE(CREATE_TIME) >= '2023-01-01'").Find(&chat)