forked from golang/hotime
增加自适应模式
This commit is contained in:
parent
ce099b8fc8
commit
1fc0a5bbbc
BIN
example/bzyy.exe
BIN
example/bzyy.exe
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@
|
|||||||
"db": {
|
"db": {
|
||||||
"mysql": {
|
"mysql": {
|
||||||
"host": "192.168.6.253",
|
"host": "192.168.6.253",
|
||||||
"name": "myhs",
|
"name": "bzyy",
|
||||||
"password": "dasda8454456",
|
"password": "dasda8454456",
|
||||||
"port": "3306",
|
"port": "3306",
|
||||||
"prefix": "",
|
"prefix": "",
|
||||||
|
212
example/main.go
212
example/main.go
@ -2,16 +2,9 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"../../hotime"
|
"../../hotime"
|
||||||
"../../hotime/common"
|
|
||||||
"../dri/ddsms"
|
"../dri/ddsms"
|
||||||
"../dri/tencent"
|
|
||||||
"./app"
|
"./app"
|
||||||
"encoding/base64"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"net"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -20,118 +13,9 @@ func main() {
|
|||||||
fmt.Println(date, date.Unix())
|
fmt.Println(date, date.Unix())
|
||||||
//fmt.Println("0123456"[1:7])
|
//fmt.Println("0123456"[1:7])
|
||||||
appIns := hotime.Init("config/config.json")
|
appIns := hotime.Init("config/config.json")
|
||||||
go runTcpServer(&appIns) //运行tcp监测,产线监测使用
|
|
||||||
//RESTfull接口适配
|
//RESTfull接口适配
|
||||||
appIns.SetConnectListener(func(context *hotime.Context) bool {
|
appIns.SetConnectListener(func(context *hotime.Context) bool {
|
||||||
|
|
||||||
//文件上传接口
|
|
||||||
if len(context.RouterString) == 1 && context.RouterString[0] == "ocr" && context.Req.Method == "POST" {
|
|
||||||
|
|
||||||
//读取网络文件
|
|
||||||
ocr := context.Req.FormValue("ocr")
|
|
||||||
if len(ocr) < 100 {
|
|
||||||
|
|
||||||
context.Display(3, "没有上传文件")
|
|
||||||
return false
|
|
||||||
|
|
||||||
}
|
|
||||||
filePath := context.Config.GetString("filePath")
|
|
||||||
if filePath == "" {
|
|
||||||
filePath = "file/2006/01/02/"
|
|
||||||
}
|
|
||||||
path := time.Now().Format(filePath)
|
|
||||||
os.MkdirAll(context.Config.GetString("tpt")+"/"+path, os.ModeDir)
|
|
||||||
|
|
||||||
fi, _ := base64.StdEncoding.DecodeString(ocr)
|
|
||||||
filePath = path + common.Md5(common.ObjToStr(common.RandX(100000, 9999999))) + ".jpg"
|
|
||||||
go func() {
|
|
||||||
|
|
||||||
ioutil.WriteFile(context.Config.GetString("tpt")+"/"+filePath, fi, 0666)
|
|
||||||
}()
|
|
||||||
|
|
||||||
re := tencent.OCR(ocr)
|
|
||||||
|
|
||||||
re1 := tencent.Qrcode(ocr)
|
|
||||||
data := common.Map{"url": filePath}
|
|
||||||
//fmt.Println(re1)
|
|
||||||
data["text"] = common.ObjToMap(re)
|
|
||||||
|
|
||||||
if data["text"] != nil {
|
|
||||||
lis := data.GetMap("text").GetMap("Response").GetSlice("TextDetections")
|
|
||||||
textList := common.Slice{}
|
|
||||||
for k, _ := range lis {
|
|
||||||
li := lis.GetMap(k).GetString("DetectedText")
|
|
||||||
if li != "" {
|
|
||||||
textList = append(textList, li)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data["text"] = textList
|
|
||||||
}
|
|
||||||
|
|
||||||
data["qrcode"] = common.ObjToMap(re1)
|
|
||||||
if data["qrcode"] != nil {
|
|
||||||
lis := data.GetMap("qrcode").GetMap("Response").GetSlice("CodeResults")
|
|
||||||
textList := common.Slice{}
|
|
||||||
for k, _ := range lis {
|
|
||||||
li := lis.GetMap(k).GetString("Url")
|
|
||||||
if li != "" {
|
|
||||||
textList = append(textList, li)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data["qrcode"] = textList
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(data.ToJsonString())
|
|
||||||
context.Display(0, data)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
//文件上传接口
|
|
||||||
if len(context.RouterString) == 1 && context.RouterString[0] == "qrcode" && context.Req.Method == "POST" {
|
|
||||||
|
|
||||||
//读取网络文件
|
|
||||||
ocr := context.Req.FormValue("ocr")
|
|
||||||
if len(ocr) < 100 {
|
|
||||||
|
|
||||||
context.Display(3, "没有上传文件")
|
|
||||||
return false
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
filePath := context.Config.GetString("filePath")
|
|
||||||
if filePath == "" {
|
|
||||||
filePath = "file/2006/01/02/"
|
|
||||||
}
|
|
||||||
path := time.Now().Format(filePath)
|
|
||||||
e := os.MkdirAll(context.Config.GetString("tpt")+"/"+path, os.ModeDir)
|
|
||||||
if e != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fi, _ := base64.StdEncoding.DecodeString(ocr)
|
|
||||||
filePath = path + common.Md5(common.ObjToStr(common.RandX(100000, 9999999))) + ".jpg"
|
|
||||||
ioutil.WriteFile(context.Config.GetString("tpt")+"/"+filePath, fi, 0666)
|
|
||||||
}()
|
|
||||||
|
|
||||||
re1 := tencent.Qrcode(ocr)
|
|
||||||
data := common.Map{}
|
|
||||||
data["qrcode"] = common.ObjToMap(re1)
|
|
||||||
if data["qrcode"] != nil {
|
|
||||||
lis := data.GetMap("qrcode").GetMap("Response").GetSlice("CodeResults")
|
|
||||||
textList := common.Slice{}
|
|
||||||
for k, _ := range lis {
|
|
||||||
li := lis.GetMap(k).GetString("Url")
|
|
||||||
if li != "" {
|
|
||||||
textList = append(textList, li)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data["qrcode"] = textList
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(data.ToJsonString())
|
|
||||||
context.Display(0, data)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -145,99 +29,3 @@ func main() {
|
|||||||
"app": app.Project,
|
"app": app.Project,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
func Process(conn net.Conn, appIns *hotime.Application) {
|
|
||||||
// 循环接收客户端发送的数据
|
|
||||||
client := conn.RemoteAddr().String() // 客户端IP:port
|
|
||||||
client = client[:strings.Index(client, ":")]
|
|
||||||
defer conn.Close() // 关闭conn
|
|
||||||
for {
|
|
||||||
// 创建一个新的切片
|
|
||||||
buf := make([]byte, 1024)
|
|
||||||
// fmt.Printf("服务器在等待客户端%s发送信息\n", conn.RemoteAddr().String())
|
|
||||||
n, err := conn.Read(buf) // 从conn中读取
|
|
||||||
// 等待客户端通过conn发送信息,
|
|
||||||
// 如果客户端没有发送(write),就会阻塞在这里
|
|
||||||
if err != nil {
|
|
||||||
// 一般为这个err
|
|
||||||
fmt.Printf("客户端%s已退出..\n", client)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// 显示客户端发送的内容到服务器的终端
|
|
||||||
sn := string(buf[:n])
|
|
||||||
sn = strings.Replace(sn, "\r", "", -1)
|
|
||||||
fmt.Println(client, sn) // 读到了n个数据
|
|
||||||
|
|
||||||
if len(sn) < 3 {
|
|
||||||
//that.Display(3, "参数不足,请补充参数")
|
|
||||||
fmt.Println(client, sn, "参数过短") // 读到了n个数据
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
vs := appIns.Db.Select("produce", "sn,id,product_id",
|
|
||||||
common.Map{"AND": common.Map{"produce.sn[~]": sn[:len(sn)/2+1], "state[!]": 0}})
|
|
||||||
produce := common.Map{"ld": 10000}
|
|
||||||
for _, v := range vs {
|
|
||||||
ld := common.StrLd(v.GetString("sn"), sn, true)
|
|
||||||
if ld < produce.GetCeilInt("ld") {
|
|
||||||
v["ld"] = ld
|
|
||||||
produce = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
oldSn := appIns.Db.Get("produce_product", "id", common.Map{"AND": common.Map{"sn": sn, "produce_id": produce.GetCeilInt("id")}})
|
|
||||||
if oldSn != nil {
|
|
||||||
fmt.Println(client, sn, "已经添加请勿重复添加") // 读到了n个数据
|
|
||||||
continue
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
data := common.Map{
|
|
||||||
"sn": sn,
|
|
||||||
"product_id": produce.GetCeilInt("product_id"),
|
|
||||||
"produce_id": produce.GetCeilInt("id"),
|
|
||||||
"create_time": time.Now().Unix(),
|
|
||||||
"modify_time": time.Now().Unix(),
|
|
||||||
}
|
|
||||||
|
|
||||||
productLine := appIns.Db.Get("product_line", "id", common.Map{"ipaddr": client})
|
|
||||||
|
|
||||||
if productLine != nil {
|
|
||||||
data["product_line_id"] = productLine.GetCeilInt("id")
|
|
||||||
}
|
|
||||||
|
|
||||||
id := appIns.Db.Insert("produce_product", data)
|
|
||||||
if id == 0 {
|
|
||||||
//that.Display(4, "添加新成品失败,请重新添加")
|
|
||||||
fmt.Println(client, sn, "添加新成品失败,请重新添加") // 读到了n个数据
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
appIns.Db.Update("product", common.Map{"count[#]": "`count`+1"}, common.Map{"id": produce.GetCeilInt("product_id")})
|
|
||||||
appIns.Db.Update("produce", common.Map{"now[#]": "`now`+1"}, common.Map{"id": produce.GetCeilInt("id")})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func runTcpServer(appIns *hotime.Application) {
|
|
||||||
|
|
||||||
listen, err := net.Listen("tcp", "0.0.0.0:10000")
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("listen err =", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer listen.Close() // 延时关闭listen
|
|
||||||
fmt.Println("listening success:", listen.Addr())
|
|
||||||
|
|
||||||
// 循环等待客户端来连接
|
|
||||||
fmt.Println("等待客户端来连接..")
|
|
||||||
for {
|
|
||||||
conn, err := listen.Accept()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("Accept() err =", err)
|
|
||||||
} else {
|
|
||||||
fmt.Printf("客户端%s已连接..\n", conn.RemoteAddr().String())
|
|
||||||
}
|
|
||||||
// 准备一个协程,为客户端服务
|
|
||||||
go Process(conn, appIns)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user