Browse Source

更新 'resourceChannel/resourceChannel.go'

json文件传参修改
go_dev 9 months ago
parent
commit
c2382984d1
1 changed files with 70 additions and 28 deletions
  1. 70 28
      resourceChannel/resourceChannel.go

+ 70 - 28
resourceChannel/resourceChannel.go

@@ -2,10 +2,13 @@ package resourceChannel
 
 import (
 	"encoding/json"
+	"fmt"
 	"github.com/aliyun/aliyun-oss-go-sdk/oss"
 	"github.com/go-redis/redis"
 	"golang.org/x/net/context"
+	"io/ioutil"
 	"log"
+	"os"
 	"strconv"
 	"strings"
 	"time"
@@ -34,6 +37,7 @@ type ResourceAssessment struct {
 	URL          string    `json:"url"`                  // 落地页地址
 	ChatURL      string    `json:"chat_url"`             // 对话发起页
 	GrUserId     string    `json:"gr_user_id"`           // 神策distinct_id
+	JsonPath     string    `json:"json_path"`
 }
 
 type SemJsChatRecord struct {
@@ -45,6 +49,7 @@ type SemJsChatRecord struct {
 	CategoryID int       `gorm:"column:CATEGORY_ID"`
 	GrUserID   string    `gorm:"column:gr_user_id"`
 	SourceUrl  string    `gorm:"column:source_url"`
+	JsonPath   string    `json:"json_path"`
 }
 
 type ChannelCategory struct {
@@ -64,14 +69,14 @@ func GetChannel(assessment ResourceAssessment) ChannelCategory {
 	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")) {
 		log.Printf("解析到梦")
 		assessment.Channel = 38
-		assessment.Category = getCategory(201)
+		assessment.Category = getCategory(201, assessment.JsonPath)
 		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// 网课解析
 	if assessment.DataType == 1 {
 		log.Printf("解析网课")
 		assessment.Channel = 26
-		assessment.Category = getCategory(121)
+		assessment.Category = getCategory(121, assessment.JsonPath)
 		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// 小程序解析
@@ -80,10 +85,10 @@ func GetChannel(assessment ResourceAssessment) ChannelCategory {
 		appType := strings.Split(strings.Split(strings.Split(assessment.ChatURL, "?")[1], "=")[1], "_")[1]
 		if appType == "baidu" {
 			assessment.Channel = 1
-			assessment.Category = getCategory(30)
+			assessment.Category = getCategory(30, assessment.JsonPath)
 		} else if appType == "wechat" {
 			assessment.Channel = 8
-			assessment.Category = getCategory(32)
+			assessment.Category = getCategory(32, assessment.JsonPath)
 		}
 		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
@@ -114,36 +119,36 @@ func GetChannel(assessment ResourceAssessment) ChannelCategory {
 				if strings.Contains(split[1], "form") || strings.Contains(split[1], "from") {
 					assessment.Channel, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.URL, "link")[1], "form")[0], "_")[1])
 					var category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.URL, "link")[1], "form")[0], "_")[2])
-					assessment.Category = getCategory(category)
+					assessment.Category = getCategory(category, assessment.JsonPath)
 				} else {
 					assessment.Channel = 5
-					assessment.Category = getCategory(11)
+					assessment.Category = getCategory(11, assessment.JsonPath)
 				}
 			} else if strings.Contains(assessment.ReferPageURL, "link=") {
 				split := strings.Split(assessment.ReferPageURL, "link")
 				if strings.Contains(split[1], "form") || strings.Contains(split[1], "from") {
 					assessment.Channel, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ReferPageURL, "link")[1], "form")[0], "_")[1])
 					var category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ReferPageURL, "link")[1], "form")[0], "_")[2])
-					assessment.Category = getCategory(category)
+					assessment.Category = getCategory(category, assessment.JsonPath)
 				} else {
 					assessment.Channel = 5
-					assessment.Category = getCategory(11)
+					assessment.Category = getCategory(11, assessment.JsonPath)
 				}
 			} else {
 				split := strings.Split(assessment.ChatURL, "link")
 				if strings.Contains(split[1], "form") || strings.Contains(split[1], "from") {
 					assessment.Channel, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ChatURL, "link")[1], "form")[0], "_")[1])
 					var category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(assessment.ChatURL, "link")[1], "form")[0], "_")[2])
-					assessment.Category = getCategory(category)
+					assessment.Category = getCategory(category, assessment.JsonPath)
 				} else {
 					assessment.Channel = 5
-					assessment.Category = getCategory(11)
+					assessment.Category = getCategory(11, assessment.JsonPath)
 				}
 			}
 		}
 		// 百度惠生活渠道合并
 		if assessment.Category == 239 {
-			assessment.Category = getCategory(292)
+			assessment.Category = getCategory(292, assessment.JsonPath)
 		}
 		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
@@ -158,7 +163,7 @@ func GetChannel(assessment ResourceAssessment) ChannelCategory {
 		assessment.Category = utmUrl.Category
 		// 百度惠生活渠道合并
 		if assessment.Category == 239 {
-			assessment.Category = getCategory(292)
+			assessment.Category = getCategory(292, assessment.JsonPath)
 		}
 		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
@@ -166,7 +171,7 @@ func GetChannel(assessment ResourceAssessment) ChannelCategory {
 	if assessment.ReferPageURL != "" && !strings.Contains(assessment.ReferPageURL, "https://www.jjl.cn/") && !strings.Contains(assessment.ReferPageURL, "https://m.jjl.cn/") {
 		log.Printf("解析SEO")
 		assessment.Channel = 5
-		assessment.Category = getCategory(11)
+		assessment.Category = getCategory(11, assessment.JsonPath)
 		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	// 官网自然访问解析
@@ -176,12 +181,12 @@ func GetChannel(assessment ResourceAssessment) ChannelCategory {
 		strings.Contains(utmUrl.Url, "https://www.jjl.cn/") || strings.Contains(utmUrl.Url, "https://m.jjl.cn/") {
 		log.Printf("解析官网")
 		assessment.Channel = 7
-		assessment.Category = getCategory(126)
+		assessment.Category = getCategory(126, assessment.JsonPath)
 		return ChannelCategory{assessment.Channel, assessment.Category}
 	}
 	log.Printf("默认解析为SEO")
 	assessment.Channel = 5
-	assessment.Category = getCategory(11)
+	assessment.Category = getCategory(11, assessment.JsonPath)
 	return ChannelCategory{assessment.Channel, assessment.Category}
 }
 
@@ -199,10 +204,10 @@ func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
 		appType := strings.Split(strings.Split(strings.Split(chat.ChatURL, "?")[1], "=")[1], "_")[1]
 		if appType == "baidu" {
 			chat.ChannleID = 1
-			chat.CategoryID = getCategory(30)
+			chat.CategoryID = getCategory(30, chat.JsonPath)
 		} else if appType == "wechat" {
 			chat.ChannleID = 8
-			chat.CategoryID = getCategory(32)
+			chat.CategoryID = getCategory(32, chat.JsonPath)
 		}
 		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
@@ -210,7 +215,7 @@ func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
 	if !strings.Contains(chat.ReferPage, "utm") && !strings.Contains(chat.ChatURL, "utm") && (strings.Contains(chat.ReferPage, "daomeng") || strings.Contains(chat.ChatURL, "daomeng")) {
 		log.Printf("到梦解析")
 		chat.ChannleID = 38
-		chat.CategoryID = getCategory(201)
+		chat.CategoryID = getCategory(201, chat.JsonPath)
 		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	// URL解析
@@ -234,26 +239,26 @@ func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
 				if strings.Contains(split[1], "form") || strings.Contains(split[1], "from") {
 					chat.ChannleID, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ChatURL, "link")[1], "form")[0], "_")[1])
 					var category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ChatURL, "link")[1], "form")[0], "_")[2])
-					chat.CategoryID = getCategory(category)
+					chat.CategoryID = getCategory(category, chat.JsonPath)
 				} else {
 					chat.ChannleID = 5
-					chat.CategoryID = getCategory(11)
+					chat.CategoryID = getCategory(11, chat.JsonPath)
 				}
 			} else {
 				split := strings.Split(chat.ReferPage, "link=")
 				if strings.Contains(split[01], "form") || strings.Contains(split[1], "from") {
 					chat.ChannleID, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ReferPage, "link")[1], "form")[0], "_")[1])
 					var category, _ = strconv.Atoi(strings.Split(strings.Split(strings.Split(chat.ReferPage, "link")[1], "form")[0], "_")[2])
-					chat.CategoryID = getCategory(category)
+					chat.CategoryID = getCategory(category, chat.JsonPath)
 				} else {
 					chat.ChannleID = 5
-					chat.CategoryID = getCategory(11)
+					chat.CategoryID = getCategory(11, chat.JsonPath)
 				}
 			}
 		}
 		// 百度惠生活渠道合并
 		if chat.CategoryID == 239 {
-			chat.CategoryID = getCategory(292)
+			chat.CategoryID = getCategory(292, chat.JsonPath)
 		}
 		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
@@ -268,7 +273,7 @@ func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
 		chat.CategoryID = utmUrl.Category
 		// 百度惠生活渠道合并
 		if chat.CategoryID == 239 {
-			chat.CategoryID = getCategory(292)
+			chat.CategoryID = getCategory(292, chat.JsonPath)
 		}
 		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
@@ -276,7 +281,7 @@ func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
 	if chat.ReferPage != "" && !strings.Contains(chat.ReferPage, "https://www.jjl.cn/") && !strings.Contains(chat.ReferPage, "https://m.jjl.cn/") {
 		log.Printf("解析SEO")
 		chat.ChannleID = 5
-		chat.CategoryID = getCategory(11)
+		chat.CategoryID = getCategory(11, chat.JsonPath)
 		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	// 官网自然访问解析
@@ -285,12 +290,12 @@ func GetChatChannel(chat SemJsChatRecord) ChannelCategory {
 		strings.Contains(utmUrl.Url, "https://www.jjl.cn/") || strings.Contains(utmUrl.Url, "https://m.jjl.cn/") {
 		log.Printf("解析官网")
 		chat.ChannleID = 7
-		chat.CategoryID = getCategory(126)
+		chat.CategoryID = getCategory(126, chat.JsonPath)
 		return ChannelCategory{chat.ChannleID, chat.CategoryID}
 	}
 	log.Printf("默认解析为SEO")
 	chat.ChannleID = 5
-	chat.CategoryID = getCategory(11)
+	chat.CategoryID = getCategory(11, chat.JsonPath)
 	return ChannelCategory{chat.ChannleID, chat.CategoryID}
 }
 
@@ -306,7 +311,7 @@ type SysChannel struct {
 	CategoryId       string `json:"category_id"`       // 备注
 }
 
-func getCategory(OriginalCategory int) int {
+func getOssCategory(OriginalCategory int) int {
 	endpoint := "oss-cn-beijing.aliyuncs.com" // 例如 "oss-cn-hangzhou.aliyuncs.com"
 	accessKeyID := "LTAI5t7iAtrYaUgGgK8ws54e"
 	accessKeySecret := "j4A6llCRqZBMzXLQ7ms84LdKl9l0IS"
@@ -338,6 +343,43 @@ func getCategory(OriginalCategory int) int {
 		log.Fatalf("解析JSON失败: %v", err)
 	}
 
+	for i := range channel {
+		ori, _ := strconv.Atoi(channel[i].OriginalCategory)
+		if ori == OriginalCategory {
+			category, _ := strconv.Atoi(channel[i].CategoryId)
+			return category
+		}
+	}
+	return -1
+}
+
+//func getCurrentPath() string {
+//	_, filename, _, _ := runtime.Caller(1)
+//	return path.Dir(filename)
+//}
+
+func getCategory(OriginalCategory int, jsonPath string) int {
+	// 打开JSON文件
+	jsonFile, err := os.Open(jsonPath)
+	//jsonFile, err := os.Open("category_mapper.json")
+	if err != nil {
+		fmt.Println(err)
+		return -1
+	}
+	defer jsonFile.Close()
+	// 读取文件内容
+	byteValue, err := ioutil.ReadAll(jsonFile)
+	if err != nil {
+		fmt.Println(err)
+		return -1
+	}
+	// 解析JSON数据
+	var channel []SysChannel
+	if err := json.Unmarshal(byteValue, &channel); err != nil {
+		fmt.Println(err)
+		return -1
+	}
+	println(channel)
 	for i := range channel {
 		ori, _ := strconv.Atoi(channel[i].OriginalCategory)
 		if ori == OriginalCategory {