package cms import ( "encoding/json" "fmt" "git.rosy.net.cn/baseapi/utils" "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() ) //看有没有重复的 if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) > 0 { return fmt.Errorf("此应用已经绑定了该打印机!print_no : %v", printNo) } printer := &model.Printer{ AppID: appID, PrintNo: printNo, PrintKey: printKey, Name: name, Status: model.PrinterStatusOffline, } dao.WrapAddIDCULDEntity(printer, "") if err = dao.CreateEntity(db, printer); err != nil { return err } return err } func DelPrinter(appID int, printNo string) (err error) { var ( db = dao.GetDB() ) //看有没有 if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) == 0 { return fmt.Errorf("该应用下未找到该打印机!print_no : %v", printNo) } else { if _, err = dao.DeleteEntity(db, printers[0]); err != nil { return err } } return err } func UpdatePrinter(appID int, printNo, name string) (err error) { var ( db = dao.GetDB() ) //看有没有 if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) == 0 { return fmt.Errorf("该应用下未找到该打印机!print_no : %v", printNo) } else { printers[0].Name = name if _, err = dao.UpdateEntity(db, printers[0], "Name"); err != nil { return err } } return err } func DelPrinterSeq(appID int, printNo string) (err error) { var ( db = dao.GetDB() ) //看有没有 if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) == 0 { return fmt.Errorf("该应用下未找到该打印机!print_no : %v", printNo) } else { printMsgs, _ := dao.GetPrintMsgs(db, printNo, "", model.PrintMsgWait) for _, v := range printMsgs { v.DeletedAt = time.Now() if _, err = dao.UpdateEntity(db, v, "DeletedAt"); err != nil { return err } } } return err } func DoPrint(appID int, msgID, printNo, content string, orderNo int) (err error) { var ( db = dao.GetDB() ) printMsg := &model.PrintMsg{ PrintNo: printNo, Content: content, OrderNo: orderNo, MsgID: msgID, } dao.WrapAddIDCULDEntity(printMsg, "") if err = dao.CreateEntity(db, printMsg); err != nil { return err } return err } func GetPrintMsg(appID int, msgID string) (printMsg *model.PrintMsg, err error) { var ( db = dao.GetDB() ) if printMsgs, _ := dao.GetPrintMsgs(db, "", msgID, model.PrintMsgAll); len(printMsgs) > 0 { for _, v := range printMsgs { return v, err } } else { return printMsg, fmt.Errorf("未找到该消息!msg_id :%v", msgID) } 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) data, _ := json.Marshal(printInfo) //写入数据 c.Write(data) //服务器端返回的数据写入buf n, _ := c.Read(buf) status = utils.Str2Int(string(buf[:n])) //服务器端回传的信息 fmt.Println("server response:", string(buf[:n])) return status }