From a32ebb199d6665bac27d4af43af267fe3854b38f Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期一, 28 十月 2019 20:22:30 +0800
Subject: [PATCH] aggregateTaskList

---
 extend/util/util.go |   97 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 72 insertions(+), 25 deletions(-)

diff --git a/extend/util/util.go b/extend/util/util.go
index a4a66ca..e680ee6 100644
--- a/extend/util/util.go
+++ b/extend/util/util.go
@@ -1,18 +1,22 @@
 package util
 
 import (
-	"basic.com/pubsub/protomsg.git"
 	"bytes"
 	"encoding/json"
 	"errors"
-	"github.com/gin-gonic/gin"
-	"github.com/golang/glog"
-	"gocv.io/x/gocv"
 	"image"
+	"io/ioutil"
 	"net"
+	"net/http"
 	"os/exec"
 	"strconv"
 	"webserver/extend/code"
+
+	"basic.com/pubsub/protomsg.git"
+	"github.com/gin-gonic/gin"
+	"github.com/golang/glog"
+	"github.com/pierrec/lz4"
+	"gocv.io/x/gocv"
 
 	"crypto/rand"
 	"fmt"
@@ -57,14 +61,14 @@
 
 //struct杞琺ap
 func Struct2Map(obj interface{}) map[string]interface{} {
-	resultMap :=make(map[string]interface{},0)
+	resultMap := make(map[string]interface{}, 0)
 	bytesData, err := json.Marshal(obj)
-	if err !=nil {
+	if err != nil {
 		return resultMap
 	}
 	json.Unmarshal(bytesData, &resultMap)
 	return resultMap
-	
+
 	//
 	//t := reflect.TypeOf(obj)
 	//v := reflect.ValueOf(obj)
@@ -76,8 +80,21 @@
 	//return data
 }
 
+func ReadImgData(url string) ([]byte, error) {
+	resp, err := http.Get(url)
+	if err != nil {
+		return nil, err
+	}
+	defer resp.Body.Close()
+	pix, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		return nil, err
+	}
+	return pix, nil
+}
+
 // 鎸夊昂瀵稿幓鍒囧浘
-func SubImg(i protomsg.Image, x0, y0, x1, y1 int, ) []byte {
+func SubImg(i protomsg.Image, x0, y0, x1, y1 int) []byte {
 	img, _ := gocv.NewMatFromBytes(int(i.Height), int(i.Width), gocv.MatTypeCV8UC3, i.Data)
 	rect := image.Rect(EnlargeSize(x0, y0, x1, y1, i))
 	region := img.Region(rect)
@@ -119,44 +136,43 @@
 	return
 }
 
-
 // 鑾峰彇鏈満缃戝崱IP
-func GetLocalIP(networkName string) (ipv4 string,mask string, err error) {
+func GetLocalIP(networkName string) (ipv4 string, mask string, err error) {
 	interfaces, err := net.Interfaces()
 	if err != nil {
-		return "","", err
+		return "", "", err
 	}
 
 	for _, i := range interfaces {
 		byName, err := net.InterfaceByName(i.Name)
 		if err != nil {
-			return "","", err
+			return "", "", err
 		}
 		addresses, err := byName.Addrs()
 		for _, v := range addresses {
-			if ipnet, ok:=v.(*net.IPNet);ok && !ipnet.IP.IsLoopback(){
-				if ipnet.IP.To4() !=nil{
-					if byName.Name == networkName{
+			if ipnet, ok := v.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
+				if ipnet.IP.To4() != nil {
+					if byName.Name == networkName {
 						maskStr := ipnet.Mask.String()
 						mask64, _ := strconv.ParseUint(maskStr, 16, 32)
-						return ipnet.IP.String(),IpIntToString(int(mask64)),nil
+						return ipnet.IP.String(), IpIntToString(int(mask64)), nil
 					}
 				}
 			}
 		}
 	}
-	return "","", errors.New("ipv4 not found")
+	return "", "", errors.New("ipv4 not found")
 }
 
-func GetDefaultRoute(networkName string)(route string,err error){
-	cmdStr := fmt.Sprintf("route | grep -P \"^default.*%s$\" | awk '{print $2}'",networkName)
-	cmd := exec.Command("/bin/sh","-c",cmdStr)
+func GetDefaultRoute(networkName string) (route string, err error) {
+	cmdStr := fmt.Sprintf("ip route show | grep -P \"^default.*%s\" | awk '{print $3}'", networkName)
+	cmd := exec.Command("/bin/sh", "-c", cmdStr)
 	b, err := cmd.Output()
-	if err!=nil{
-		return "",err
+	if err != nil {
+		return "", err
 	}
-	return string(b),nil
 
+	return string(b), nil
 }
 
 func StringIpToInt(ipstring string) int {
@@ -172,7 +188,7 @@
 	return ipInt
 }
 
-func IpIntToString(ipInt int) string{
+func IpIntToString(ipInt int) string {
 	ipSegs := make([]string, 4)
 	var len int = len(ipSegs)
 	buffer := bytes.NewBufferString("")
@@ -192,6 +208,37 @@
 }
 
 func ParseScore(compareScore float32) float32 {
+	if compareScore < 1 {
+		compareScore = compareScore * 100
+	}
 	f, _ := strconv.ParseFloat(fmt.Sprintf("%2.2f", compareScore), 32)
 	return float32(f)
-}
\ No newline at end of file
+}
+
+// UnCompress uncompress
+func UnCompress(in []byte) ([]byte, error) {
+	out := make([]byte, 10*len(in))
+	n, err := lz4.UncompressBlock(in, out)
+	if err != nil {
+		fmt.Println(err)
+		return nil, err
+	}
+	out = out[:n] // uncompressed data
+	return out, nil
+}
+
+// Compress compress
+func Compress(in []byte) ([]byte, error) {
+	out := make([]byte, len(in))
+	ht := make([]int, 64<<10) // buffer for the compression table
+	n, err := lz4.CompressBlock(in, out, ht)
+	if err != nil {
+		fmt.Println(err)
+		return nil, err
+	}
+	if n >= len(in) {
+		fmt.Println("image is not compressible")
+	}
+	out = out[:n] // compressed data
+	return out, nil
+}

--
Gitblit v1.8.0