diff --git a/business/model/dao/dao_print.go b/business/model/dao/dao_print.go new file mode 100644 index 000000000..07a0cc0fc --- /dev/null +++ b/business/model/dao/dao_print.go @@ -0,0 +1 @@ +package dao diff --git a/controllers/api_controller.go b/controllers/api_controller.go index c388c9dab..b4de91394 100644 --- a/controllers/api_controller.go +++ b/controllers/api_controller.go @@ -1,18 +1,15 @@ package controllers import ( - "encoding/hex" "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" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego/server/web" - "net" "net/url" - "os" "reflect" - "strconv" ) type ApiController struct { @@ -110,7 +107,6 @@ func (c *ApiController) CallOpenAPI() { //call urls, _ = c.Input() dataMap = utils.URLValues2Map(urls) - delete(dataMap, keyAppID) delete(dataMap, keyMethod) delete(dataMap, keyTimestamp) parms = []reflect.Value{reflect.ValueOf(dataMap)} @@ -155,62 +151,21 @@ func (c *ApiController) AddPrint(dataMap map[string]interface{}) (data string, e } func (c *ApiController) DoPrint(dataMap map[string]interface{}) (data string, err error) { - data = dataMap["data"].(string) - server := "print.jxcs.net:8000" - tcpAddr, err := net.ResolveTCPAddr("tcp4", server) - if err != nil { - fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error()) - os.Exit(1) + var ( + content = dataMap["data"].(string) + printNo = dataMap["print_no"].(string) + orderNo = utils.Interface2Int64WithDefault(dataMap["order_no"], 0) + db = dao.GetDB() + ) + if orderNo == 0 { + return data, fmt.Errorf("订单序号不能为0") } - conn, err := net.DialTCP("tcp", nil, tcpAddr) - if err != nil { - return + printMsg := &model.PrintMsg{ + PrintNo: printNo, + Content: content, + OrderNo: int(orderNo), } - textChan = make(chan string, 10) - textChan <- data - go connHandler(conn) + dao.WrapAddIDCULDEntity(printMsg, "") + dao.CreateEntity(db, printMsg) return data, err } - -func connHandler(c net.Conn) { - str := "1e" - const1 := "0200ff50" - orderNo := "0001" //订单序列号 - printInit := "1b40" //打印机初始化 - voice := "1b59415501" //语音响一次 - check := "ff" - select { - case s := <-textChan: - //写入数据 - printData := hex.EncodeToString([]byte(s)) - lenData := int64(len(str) + len(const1) + len(orderNo) + len(printInit) + len(voice) + 1 + 2 + len(printData)) - x1, x2 := int2h8l8(lenData / 2) - data := str + x1 + x2 + const1 + orderNo + printInit + voice + printData + check - n, err := c.Write([]byte(data)) - if err != nil { - fmt.Println("Write err:", err, n) - return - } - } -} - -func int2h8l8(i int64) (h, l string) { - origin2 := fmt.Sprintf("%b", i) - flag := 16 - len(origin2) - for i := 0; i < flag; i++ { - origin2 = "0" + origin2 - } - begin8 := origin2[:8] - end8 := origin2[8:] - r1, _ := strconv.ParseInt(begin8, 2, 32) - r2, _ := strconv.ParseInt(end8, 2, 32) - h = fmt.Sprintf("%x", r1) - l = fmt.Sprintf("%x", r2) - if len(h) < 2 { - h = "0" + h - } - if len(l) < 2 { - l = "0" + l - } - return h, l -}