2017-08-17 02:37:00 +00:00
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
2021-05-21 20:52:03 +00:00
|
|
|
|
"../../hotime"
|
2021-07-03 20:03:29 +00:00
|
|
|
|
"../../hotime/common"
|
2021-10-21 14:52:40 +00:00
|
|
|
|
"../dri/ddsms"
|
2021-12-09 02:58:53 +00:00
|
|
|
|
"../dri/tencent"
|
2021-06-05 18:27:22 +00:00
|
|
|
|
"./admin"
|
2021-08-28 05:05:12 +00:00
|
|
|
|
"./app"
|
2021-12-09 02:58:53 +00:00
|
|
|
|
"encoding/base64"
|
2017-09-05 03:09:13 +00:00
|
|
|
|
"fmt"
|
2021-07-03 20:03:29 +00:00
|
|
|
|
"io"
|
2021-12-09 02:58:53 +00:00
|
|
|
|
"io/ioutil"
|
2021-12-27 06:00:08 +00:00
|
|
|
|
"net"
|
2021-07-03 20:03:29 +00:00
|
|
|
|
"os"
|
|
|
|
|
"strings"
|
2018-04-08 16:02:13 +00:00
|
|
|
|
"time"
|
2017-08-17 02:37:00 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
2021-09-15 20:33:10 +00:00
|
|
|
|
date, _ := time.Parse("2006-01-02 15:04", time.Now().Format("2006-01-02")+" 14:00")
|
|
|
|
|
fmt.Println(date, date.Unix())
|
2021-10-26 16:27:24 +00:00
|
|
|
|
//fmt.Println("0123456"[1:7])
|
2021-06-04 02:04:37 +00:00
|
|
|
|
appIns := hotime.Init("config/config.json")
|
2021-12-27 06:00:08 +00:00
|
|
|
|
go runTcpServer(&appIns) //运行tcp监测,产线监测使用
|
2021-05-28 18:57:03 +00:00
|
|
|
|
//RESTfull接口适配
|
2017-09-05 03:09:13 +00:00
|
|
|
|
appIns.SetConnectListener(func(context *hotime.Context) bool {
|
2021-07-06 20:08:40 +00:00
|
|
|
|
|
2021-09-15 20:33:10 +00:00
|
|
|
|
if len(context.RouterString) > 1 && context.RouterString[0] == "admin" {
|
2021-08-29 23:36:17 +00:00
|
|
|
|
if context.RouterString[1] == "hotime" && context.RouterString[2] == "login" {
|
|
|
|
|
return true
|
|
|
|
|
}
|
2021-09-15 20:33:10 +00:00
|
|
|
|
if context.RouterString[1] == "hotime" && context.RouterString[2] == "logout" {
|
|
|
|
|
return true
|
|
|
|
|
}
|
2021-08-29 23:36:17 +00:00
|
|
|
|
|
2021-09-11 21:35:14 +00:00
|
|
|
|
if context.Session("admin_id").Data == nil {
|
2021-08-29 23:36:17 +00:00
|
|
|
|
context.Display(2, "你还没有登录")
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-09 02:58:53 +00:00
|
|
|
|
//文件上传接口
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
}
|
2021-12-14 21:56:31 +00:00
|
|
|
|
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)
|
2021-12-09 02:58:53 +00:00
|
|
|
|
|
2021-12-14 21:56:31 +00:00
|
|
|
|
fi, _ := base64.StdEncoding.DecodeString(ocr)
|
|
|
|
|
filePath = path + common.Md5(common.ObjToStr(common.RandX(100000, 9999999))) + ".jpg"
|
2021-12-09 02:58:53 +00:00
|
|
|
|
go func() {
|
|
|
|
|
|
|
|
|
|
ioutil.WriteFile(context.Config.GetString("tpt")+"/"+filePath, fi, 0666)
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
re := tencent.OCR(ocr)
|
|
|
|
|
|
|
|
|
|
re1 := tencent.Qrcode(ocr)
|
2021-12-14 21:56:31 +00:00
|
|
|
|
data := common.Map{"url": filePath}
|
2021-12-09 02:58:53 +00:00
|
|
|
|
//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)
|
2021-12-11 20:22:30 +00:00
|
|
|
|
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)
|
2021-12-09 02:58:53 +00:00
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-03 20:03:29 +00:00
|
|
|
|
//文件上传接口
|
|
|
|
|
if len(context.RouterString) == 1 && context.RouterString[0] == "file" && context.Req.Method == "POST" {
|
|
|
|
|
|
|
|
|
|
//读取网络文件
|
|
|
|
|
fi, fheader, err := context.Req.FormFile("file")
|
|
|
|
|
if err != nil {
|
|
|
|
|
context.Display(3, err)
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
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 {
|
|
|
|
|
context.Display(3, e)
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
filePath = path + common.Md5(common.ObjToStr(common.RandX(100000, 9999999))) + fheader.Filename[strings.LastIndex(fheader.Filename, "."):]
|
|
|
|
|
newFile, e := os.Create(context.Config.GetString("tpt") + "/" + filePath)
|
|
|
|
|
|
|
|
|
|
if e != nil {
|
|
|
|
|
context.Display(3, e)
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_, e = io.Copy(newFile, fi)
|
|
|
|
|
|
|
|
|
|
if e != nil {
|
|
|
|
|
context.Display(3, e)
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
context.Display(0, filePath)
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
2021-05-28 18:57:03 +00:00
|
|
|
|
if len(context.RouterString) < 2 || len(context.RouterString) > 3 ||
|
|
|
|
|
!(context.Router[context.RouterString[0]] != nil &&
|
|
|
|
|
context.Router[context.RouterString[0]][context.RouterString[1]] != nil) {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
//排除无效操作
|
|
|
|
|
if len(context.RouterString) == 2 &&
|
|
|
|
|
context.Req.Method != "GET" &&
|
|
|
|
|
context.Req.Method != "POST" {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
//列表检索
|
|
|
|
|
if len(context.RouterString) == 2 &&
|
|
|
|
|
context.Req.Method == "GET" {
|
2021-08-28 05:05:12 +00:00
|
|
|
|
if context.Router[context.RouterString[0]][context.RouterString[1]]["search"] == nil {
|
|
|
|
|
return true
|
|
|
|
|
}
|
2021-05-28 18:57:03 +00:00
|
|
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["search"](context)
|
|
|
|
|
}
|
|
|
|
|
//新建
|
|
|
|
|
if len(context.RouterString) == 2 &&
|
|
|
|
|
context.Req.Method == "POST" {
|
2021-08-28 05:05:12 +00:00
|
|
|
|
if context.Router[context.RouterString[0]][context.RouterString[1]]["add"] == nil {
|
|
|
|
|
return true
|
|
|
|
|
}
|
2021-05-28 18:57:03 +00:00
|
|
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["add"](context)
|
|
|
|
|
}
|
2021-08-28 22:08:19 +00:00
|
|
|
|
if len(context.RouterString) == 3 &&
|
|
|
|
|
context.Req.Method == "POST" {
|
|
|
|
|
return true
|
|
|
|
|
}
|
2021-05-28 18:57:03 +00:00
|
|
|
|
//查询单条
|
|
|
|
|
if len(context.RouterString) == 3 &&
|
|
|
|
|
context.Req.Method == "GET" {
|
2021-08-28 05:05:12 +00:00
|
|
|
|
|
|
|
|
|
if context.Router[context.RouterString[0]][context.RouterString[1]]["info"] == nil {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
2021-05-28 18:57:03 +00:00
|
|
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["info"](context)
|
|
|
|
|
}
|
|
|
|
|
//更新
|
|
|
|
|
if len(context.RouterString) == 3 &&
|
|
|
|
|
context.Req.Method == "PUT" {
|
2021-08-28 05:05:12 +00:00
|
|
|
|
|
|
|
|
|
if context.Router[context.RouterString[0]][context.RouterString[1]]["update"] == nil {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
2021-05-28 18:57:03 +00:00
|
|
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["update"](context)
|
|
|
|
|
}
|
|
|
|
|
//移除
|
|
|
|
|
if len(context.RouterString) == 3 &&
|
|
|
|
|
context.Req.Method == "DELETE" {
|
2021-08-28 05:05:12 +00:00
|
|
|
|
|
|
|
|
|
if context.Router[context.RouterString[0]][context.RouterString[1]]["remove"] == nil {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
|
2021-05-28 18:57:03 +00:00
|
|
|
|
context.Router[context.RouterString[0]][context.RouterString[1]]["remove"](context)
|
|
|
|
|
}
|
|
|
|
|
context.View()
|
|
|
|
|
return false
|
2017-09-05 03:09:13 +00:00
|
|
|
|
})
|
2017-08-17 02:37:00 +00:00
|
|
|
|
|
2021-06-03 18:57:56 +00:00
|
|
|
|
//makeCode := code.MakeCode{}
|
|
|
|
|
//fmt.Println(common.ObjToStr(makeCode.Db2JSON("admin","test",appIns.Db)))
|
2021-10-21 14:52:40 +00:00
|
|
|
|
if ddsms.DefaultDDY.ApiKey == "" {
|
|
|
|
|
ddsms.DefaultDDY.Init(appIns.Config.GetString("smsKey"))
|
|
|
|
|
}
|
2021-06-03 18:57:56 +00:00
|
|
|
|
|
2017-09-05 03:09:13 +00:00
|
|
|
|
appIns.Run(hotime.Router{
|
2021-06-05 18:27:22 +00:00
|
|
|
|
"admin": admin.Project,
|
2021-08-28 05:05:12 +00:00
|
|
|
|
"app": app.Project,
|
|
|
|
|
//"app": hotime.Proj{
|
|
|
|
|
// "index": hotime.Ctr{
|
|
|
|
|
// "test": func(this *hotime.Context) {
|
|
|
|
|
//
|
|
|
|
|
// data := this.Db.Get("cached", "*")
|
|
|
|
|
// fmt.Println(data)
|
|
|
|
|
// fmt.Println(this.Session("test").ToCeilInt())
|
|
|
|
|
// this.Session("test1", 98984984)
|
|
|
|
|
// fmt.Println(this.Session("test1").Data)
|
|
|
|
|
// this.Error.SetError(errors.New("dasdasdas"))
|
|
|
|
|
// //fmt.Println(this.Db.GetTag())
|
|
|
|
|
// //this.Application.Log.Error("dasdasdas")
|
|
|
|
|
// //this.Log.Error("dadasdasd")
|
|
|
|
|
// //x:=this.Db.Action(func(db hotime.HoTimeDB) bool {
|
|
|
|
|
// //
|
|
|
|
|
// // db.Insert("user",hotime.Map{"unickname":"dasdas"})
|
|
|
|
|
// //
|
|
|
|
|
// // return true
|
|
|
|
|
// //})
|
|
|
|
|
// //hotime.LogError("dasdasdasdasdas")
|
|
|
|
|
// this.Display(5, "dsadas")
|
|
|
|
|
// },
|
|
|
|
|
// "websocket": func(this *hotime.Context) {
|
|
|
|
|
// hdler := websocket.Handler(func(ws *websocket.Conn) {
|
|
|
|
|
// for true {
|
|
|
|
|
// msg := make([]byte, 5120)
|
|
|
|
|
// n, err := ws.Read(msg)
|
|
|
|
|
// go func() {
|
|
|
|
|
// time.Sleep(time.Second * 5)
|
|
|
|
|
// ws.Write([]byte("dsadasdasgregergrerge"))
|
|
|
|
|
//
|
|
|
|
|
// }()
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// fmt.Printf("Receive: %s\n", msg[:n])
|
|
|
|
|
//
|
|
|
|
|
// send_msg := "[" + string(msg[:n]) + "]"
|
|
|
|
|
// m, err := ws.Write([]byte(send_msg))
|
|
|
|
|
// if err != nil {
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// fmt.Printf("Send: %s\n", msg[:m])
|
|
|
|
|
// }
|
|
|
|
|
// })
|
|
|
|
|
// hdler.ServeHTTP(this.Resp, this.Req)
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
//},
|
2017-09-05 03:09:13 +00:00
|
|
|
|
})
|
2017-08-17 02:37:00 +00:00
|
|
|
|
}
|
2021-12-27 06:00:08 +00:00
|
|
|
|
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{"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
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|