|
|
|
@ -4,12 +4,17 @@ import (
|
|
|
|
|
"dsDataex/MyReport/ESSql/ESSqlService"
|
|
|
|
|
"dsDataex/MyService/DataEX"
|
|
|
|
|
"dsDataex/Utils/CommonUtil"
|
|
|
|
|
"dsDataex/Utils/ES7Util"
|
|
|
|
|
"dsDataex/Utils/GeoIPUtil"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/segmentio/kafka-go"
|
|
|
|
|
"sync"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var loc sync.Mutex
|
|
|
|
|
|
|
|
|
|
func Process(topic string,msg kafka.Message){
|
|
|
|
|
|
|
|
|
|
var myMsg DataEX.KafkaData
|
|
|
|
@ -25,8 +30,8 @@ func Process(topic string,msg kafka.Message){
|
|
|
|
|
|
|
|
|
|
myDoc.DataId=CommonUtil.GetUUID()
|
|
|
|
|
|
|
|
|
|
myDoc.BeginTime = DataEX.JsonDate(time.Now())
|
|
|
|
|
myDoc.EndTime = DataEX.JsonDate(time.Date(9999,9,9,9,9,9,0,time.Now().Location()))
|
|
|
|
|
//myDoc.BeginTime = DataEX.JsonDate(time.Now())
|
|
|
|
|
//myDoc.EndTime = DataEX.JsonDate(time.Date(9999,9,9,9,9,9,0,time.Now().Location()))
|
|
|
|
|
|
|
|
|
|
//2、Data_Content 部分
|
|
|
|
|
myDoc.DataContent=make(map[string]interface{})
|
|
|
|
@ -65,21 +70,109 @@ func Process(topic string,msg kafka.Message){
|
|
|
|
|
flag,userDetail :=ESSqlService.GetUser4Kafka(myMsg.UserID,myMsg.Identity)
|
|
|
|
|
|
|
|
|
|
if flag==true{
|
|
|
|
|
if len(userDetail)==1{
|
|
|
|
|
if len(userDetail)>0{
|
|
|
|
|
if len(userDetail)>1{
|
|
|
|
|
fmt.Println("ESSqlService.GetUser4Kafka have more than 1 results,user_id:"+myMsg.UserID)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for k,v:= range userDetail[0]{
|
|
|
|
|
|
|
|
|
|
_,f:=myDoc.DataContent[k]
|
|
|
|
|
|
|
|
|
|
if f==false{
|
|
|
|
|
myDoc.DataContent[k] =v
|
|
|
|
|
switch k {
|
|
|
|
|
case "province_code":
|
|
|
|
|
myDoc.ProvinceId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "province_name":
|
|
|
|
|
myDoc.ProvinceName=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "city_code":
|
|
|
|
|
myDoc.CityId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "city_name":
|
|
|
|
|
myDoc.CityName=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "district_code":
|
|
|
|
|
myDoc.AreaId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "district_name":
|
|
|
|
|
myDoc.AreaName=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "bureau_id":
|
|
|
|
|
myDoc.BureauId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "region_id":
|
|
|
|
|
myDoc.RegionId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "main_id":
|
|
|
|
|
myDoc.MainId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "org_id":
|
|
|
|
|
myDoc.OrgId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "org_name":
|
|
|
|
|
myDoc.OrgName=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "org_type":
|
|
|
|
|
myDoc.OrgType=int(v.(float64))
|
|
|
|
|
break
|
|
|
|
|
case "school_type":
|
|
|
|
|
myDoc.SchoolType=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "school_typename":
|
|
|
|
|
myDoc.SchoolTypeName=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "dept_id":
|
|
|
|
|
myDoc.DeptId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "stage_id":
|
|
|
|
|
myDoc.StageId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "grade_id":
|
|
|
|
|
myDoc.GradeId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
case "class_id":
|
|
|
|
|
myDoc.ClassId=v.(string)
|
|
|
|
|
break
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
|
|
_,f:=myDoc.DataContent[k]
|
|
|
|
|
|
|
|
|
|
if f==false{
|
|
|
|
|
myDoc.DataContent[k] =v
|
|
|
|
|
}
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}else {
|
|
|
|
|
fmt.Println("ESSqlService.GetUser4Kafka have more than 1 results,user_id:"+myMsg.UserID)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//4、补充 Access_IP 对映的所在地信息
|
|
|
|
|
var geo=GeoIPUtil.GetGeo4IP(myMsg.AccessIP)
|
|
|
|
|
|
|
|
|
|
if len(geo)>0{
|
|
|
|
|
myDoc.DataContent["access_provincecode"]=geo[0]
|
|
|
|
|
myDoc.DataContent["access_provincename"]=geo[1]
|
|
|
|
|
myDoc.DataContent["access_citycode"]=geo[2]
|
|
|
|
|
myDoc.DataContent["access_cityname"]=geo[3]
|
|
|
|
|
}else {
|
|
|
|
|
myDoc.DataContent["access_provincecode"]=""
|
|
|
|
|
myDoc.DataContent["access_provincename"]=""
|
|
|
|
|
myDoc.DataContent["access_citycode"]=""
|
|
|
|
|
myDoc.DataContent["access_cityname"]=""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
flag,_= ES7Util.IndexExist(myMsg.DatasourceId)
|
|
|
|
|
|
|
|
|
|
//创建 ES 索引
|
|
|
|
|
if flag==false {
|
|
|
|
|
//add by zhangjun 2020-07-30
|
|
|
|
|
loc.Lock()
|
|
|
|
|
|
|
|
|
|
ES7Util.IndexInit(myMsg.DatasourceId, myDoc.DataContent)
|
|
|
|
|
|
|
|
|
|
loc.Unlock()
|
|
|
|
|
|
|
|
|
|
time.Sleep(time.Millisecond * 100)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ES7Util.IndexDocAdd(myMsg.DatasourceId, &myDoc)
|
|
|
|
|
}
|