| | |
| | | import ( |
| | | "basic.com/pubsub/protomsg.git" |
| | | "bytes" |
| | | "encoding/base64" |
| | | "encoding/json" |
| | | "errors" |
| | | "fmt" |
| | | "io" |
| | | "github.com/spf13/viper" |
| | | "io/ioutil" |
| | | "log" |
| | | "math" |
| | | "net/http" |
| | | "strings" |
| | | "time" |
| | | ) |
| | | |
| | | func GetEsDataReq(url string, parama string, isSource bool) map[string]interface{} { |
| | | //fmt.Println("es 查询请求路径" + url) // 配置信息 获取 |
| | | var dat map[string]interface{} |
| | | req, err := http.NewRequest("POST", url, strings.NewReader(parama)) |
| | | req.Header.Add("Content-Type", "application/json") |
| | | timeout := time.Duration(10 * time.Second) //超时时间50ms |
| | | client := &http.Client{Timeout: timeout} |
| | | resp, err := client.Do(req) |
| | | if err != nil { |
| | | fmt.Println(err) |
| | | return dat |
| | | } |
| | | defer resp.Body.Close() |
| | | dec := json.NewDecoder(resp.Body) |
| | | if err := dec.Decode(&dat); err == io.EOF { |
| | | fmt.Println(err.Error()) |
| | | return dat |
| | | } else if err != nil { |
| | | fmt.Println(err.Error()) |
| | | return dat |
| | | } |
| | | // 是否需要 解析 es 返回的 source |
| | | if isSource { |
| | | dat = dat["hits"].(map[string]interface{}) |
| | | var data = make(map[string]interface{}, 2) |
| | | data["total"] = dat["total"] |
| | | sources := []interface{}{} |
| | | for _, value := range dat["hits"].([]interface{}) { |
| | | source := value.(map[string]interface{})["_source"].(map[string]interface{}) |
| | | //source["id"] = source["id"] |
| | | /*sdkType := source["sdkType"] |
| | | if sdkType != nil { |
| | | sdk, _ := strconv.Atoi(sdkType.(string)) |
| | | source["sdkType"] = sdkTypeToValue(sdk) |
| | | }*/ |
| | | sources = append(sources, source) |
| | | } |
| | | data["datalist"] = sources |
| | | return data |
| | | } else { |
| | | return dat |
| | | } |
| | | } |
| | | |
| | | func Parsesources(sources []map[string]interface{}) (multiInfos []*protomsg.MultiFeaCache) { |
| | | var ok bool |
| | |
| | | realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) |
| | | realEndTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitEndTime, loc) |
| | | stayTime = math.Abs(realEndTime.Sub(realStartTime).Seconds()) |
| | | if sinTime.Sub(mTime).Seconds() == 0{ |
| | | if sinTime.Sub(mTime).Seconds() == 0 { |
| | | sinTime.Add(time.Second * 1) |
| | | sinTime.Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | stayTime = 1 |
| | | } else if stayTime == 0{ |
| | | } else if stayTime == 0 { |
| | | stayTime = 1 |
| | | hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second*1).Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") |
| | | } |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | if point == indexLength { |
| | |
| | | realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) |
| | | realEndTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitEndTime, loc) |
| | | stayTime = math.Abs(realEndTime.Sub(realStartTime).Seconds()) |
| | | if sinTime.Sub(mTime).Seconds() == 0{ |
| | | if sinTime.Sub(mTime).Seconds() == 0 { |
| | | sinTime.Add(time.Second * 1) |
| | | sinTime.Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | stayTime = 1 |
| | | } else if stayTime == 0{ |
| | | } else if stayTime == 0 { |
| | | stayTime = 1 |
| | | hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second*1).Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") |
| | | } |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | if point == indexLength { |
| | |
| | | realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) |
| | | realEndTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitEndTime, loc) |
| | | stayTime = math.Abs(realEndTime.Sub(realStartTime).Seconds()) |
| | | if sinTime.Sub(mTime).Seconds() == 0{ |
| | | if sinTime.Sub(mTime).Seconds() == 0 { |
| | | sinTime.Add(time.Second * 1) |
| | | sinTime.Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = tmpTime |
| | | stayTime = 1 |
| | | } else if stayTime == 0{ |
| | | } else if stayTime == 0 { |
| | | stayTime = 1 |
| | | hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second*1).Format("2006-01-02 15:04:05") |
| | | hitsSources[len(hitsSources)-1]["endTime"] = realEndTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") |
| | | } |
| | | hitsSources[len(hitsSources)-1]["stayTime"] = stayTime |
| | | if point == indexLength { |
| | |
| | | } |
| | | request, err := http.NewRequest(method, url, bytes.NewBuffer(parama)) |
| | | request.Header.Set("Content-type", "application/json") |
| | | request.Header.Set("Authorization",Token) |
| | | |
| | | if err != nil { |
| | | fmt.Println("build request fail !") |
| | |
| | | // fmt.Println(key, "is nil can not asign") |
| | | // } |
| | | //} |
| | | |
| | | type account struct { |
| | | Username string `mapstructure: "username"` |
| | | Userpassword string `mapstructure: "userpassword"` |
| | | } |
| | | |
| | | |
| | | var Account = &account{} |
| | | |
| | | var Token string |
| | | |
| | | func init() { |
| | | v := viper.New() |
| | | v.SetConfigType("yaml") |
| | | v.SetConfigName("pro") |
| | | v.AddConfigPath("/opt/vasystem/config/") |
| | | err := v.ReadInConfig() |
| | | if err != nil { |
| | | log.Fatal("err on parsing configuration file!",err) |
| | | } |
| | | v.UnmarshalKey("es.account",Account) |
| | | |
| | | Token = "Basic "+base64.StdEncoding.EncodeToString([]byte(Account.Username+":"+Account.Userpassword)) |
| | | } |