From 3aec25bbddc2c5d0e6810d44869e7628c68d09ff Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Thu, 1 Jul 2021 14:51:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E6=89=93=E5=8D=B0=E6=9C=BA=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/print.go | 51 +++++++++++++++++++++++++++++++ business/jxstore/cms/temp.go | 57 ----------------------------------- controllers/api_controller.go | 23 ++++++++++++++ 3 files changed, 74 insertions(+), 57 deletions(-) diff --git a/business/jxstore/cms/print.go b/business/jxstore/cms/print.go index c1cd94f93..7e03ba007 100644 --- a/business/jxstore/cms/print.go +++ b/business/jxstore/cms/print.go @@ -1,12 +1,20 @@ package cms import ( + "encoding/json" "fmt" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" + "net" + "os" "time" ) +type PrintInfo struct { + PrintNo string + AppID int +} + func AddPrinter(appID int, printNo, printKey, name string) (err error) { var ( db = dao.GetDB() @@ -110,3 +118,46 @@ func GetPrintMsg(appID int, msgID string) (printMsg *model.PrintMsg, err error) } return printMsg, err } + +func GetPrinterStatus(appID int, printNo string) (status int, err error) { + var ( + db = dao.GetDB() + ) + //看有没有 + if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) == 0 { + return status, fmt.Errorf("该应用下未找到该打印机!print_no : %v", printNo) + } else { + server := "print.jxcs.net:8000" + tcpAddr, err := net.ResolveTCPAddr("tcp4", server) + if err != nil { + os.Exit(1) + return status, err + } + conn, err := net.DialTCP("tcp", nil, tcpAddr) + if err != nil { + return status, err + } + status = connHandler(conn, &PrintInfo{ + PrintNo: printNo, + AppID: appID, + }) + } + return status, err +} + +func connHandler(c net.Conn, printInfo *PrintInfo) (status int) { + defer c.Close() + //缓冲 + buf := make([]byte, 1024) + for { + data, _ := json.Marshal(printInfo) + //写入数据 + c.Write(data) + //服务器端返回的数据写入buf + c.Read(buf) + //status = buf[:] + //服务器端回传的信息 + //fmt.Println("server response:", string(buf[0:cnt])) + } + return status +} diff --git a/business/jxstore/cms/temp.go b/business/jxstore/cms/temp.go index 0a0d8486b..6280d0cf9 100644 --- a/business/jxstore/cms/temp.go +++ b/business/jxstore/cms/temp.go @@ -1,66 +1,9 @@ package cms -import ( - "fmt" - "git.rosy.net.cn/baseapi/utils" - "net" - "os" -) - var ( textChan chan string ) func TestTemp() { - server := "127.0.0.1:8000" - tcpAddr, err := net.ResolveTCPAddr("tcp4", server) - if err != nil { - fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) - os.Exit(1) - } - fmt.Println("tcpaddr", utils.Format4Output(tcpAddr, true)) - conn, err := net.DialTCP("tcp", nil, tcpAddr) - if err != nil { - fmt.Println("Dial err:", err) - return - } - textChan = make(chan string, 10) - connHandler(conn) -} -func TestTemp2(data string) { - textChan <- data -} - -func connHandler(c net.Conn) { - //接收终端输入 - //reader := bufio.NewReader(os.Stdin) - //缓冲 - //buf := make([]byte, 1024) - fmt.Println("Please input data...") - go func() { - for { - //读取终端输入直到读取到\n - //input, err := reader.ReadString('\n') - //if err != nil { - // fmt.Println("ReadString err:", err) - // return - //} - s := <-textChan - //写入数据 - n, err := c.Write([]byte(s)) - if err != nil { - fmt.Println("Write err:", err, n) - return - } - //服务器端返回的数据写入buf - //cnt, err := c.Read(buf) - //if err != nil { - // fmt.Println("Read err:", err) - // return - //} - //服务器端回传的信息 - //fmt.Println("server response:", string(buf[0:cnt])) - } - }() } diff --git a/controllers/api_controller.go b/controllers/api_controller.go index e2ea1c298..30dd5844b 100644 --- a/controllers/api_controller.go +++ b/controllers/api_controller.go @@ -340,3 +340,26 @@ func (c *ApiController) GetPrintMsg(dataMap map[string]interface{}) (data, errCo } return data, errCode, err } + +//查询打印机状态 +func (c *ApiController) GetPrinterStatus(dataMap map[string]interface{}) (data, errCode string, err error) { + var ( + printNo string + appID int + ) + globals.SugarLogger.Debugf("Begin API GetPrinterStatus data: [%v]", utils.Format4Output(dataMap, false)) + if _, ok := dataMap[keyPrintNo].(string); !ok { + return buildParamErrCodeAndErr(keyPrintNo) + } else { + if printNo = dataMap[keyPrintNo].(string); printNo == "" { + return buildParamErrCodeAndErr(keyPrintNo) + } + } + appID = dataMap[keyAppID].(int) + if status, err := cms.GetPrinterStatus(appID, printNo); err != nil { + return "", model.ErrCodeGeneralFailed, err + } else { + return utils.Int2Str(status), errCode, err + } + return data, errCode, err +}