diff --git a/controllers/print_controller.go b/controllers/print_controller.go index 2b39cc9..d03e426 100644 --- a/controllers/print_controller.go +++ b/controllers/print_controller.go @@ -161,3 +161,35 @@ func TestPrint(c *gin.Context) { } return } + +//查询打印记录 GET +func GetPrintMessages(c *gin.Context) { + var ( + err error + tokenInfo *model.TokenInfo + param = &struct { + AppID int `json:"app_id" form:"app_id" binding:"required"` + PrintNo string `json:"print_no" form:"print_no" binding:"required"` //打印机编号 + MsgID string `json:"msg_id" form:"msg_id"` //消息ID + BeginAt string `json:"begin_at" form:"begin_at"` //开始时间 默认一周内 + EndAt string `json:"end_at" form:"end_at"` + Offset int `json:"offset" form:"offset"` + PageSize int `json:"page_size" form:"page_size"` + }{} + ) + globals.SugarLogger.Debugf("Begin API :%s params: %v ip: %s", c.Request.URL, c.Params, c.ClientIP()) + if err = c.Bind(¶m); err != nil { + buildErrJson(c, err) + return + } + if tokenInfo = checkToken(c); tokenInfo == nil { + return + } + if !callFunc(c, func() (retVal interface{}, errCode string, err error) { + retVal, err = services.GetPrintMessages(c, param.AppID, tokenInfo, param.PrintNo, param.MsgID, param.BeginAt, param.EndAt, param.Offset, param.PageSize) + return retVal, "", err + }) { + return + } + return +} diff --git a/dao/print_dao.go b/dao/print_dao.go index 868841c..6ab521a 100644 --- a/dao/print_dao.go +++ b/dao/print_dao.go @@ -4,6 +4,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-print/model" "github.com/jmoiron/sqlx" + "time" ) func GetPrinters(db *sqlx.DB, appID int, printNo string) (printers []*model.Printer, err error) { @@ -78,3 +79,62 @@ func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnl } return page, err } + +func GetPrintMessagesPage(db *sqlx.DB, printNo, msgID, beginAt, endAt string, offset, pageSize int) (page *model.PagedInfo, err error) { + var ( + printMsgs []*model.PrintMsg + count int + beginTime, endTime time.Time + ) + if beginAt == "" { + beginTime = utils.Time2Date(time.Now().AddDate(0, 0, -7)) + } else { + beginTime = utils.Str2Time(beginAt) + } + if endAt == "" { + endTime = utils.Str2Time(utils.Time2Str(utils.Time2Date(time.Now())) + " 23:59:59") + } else { + endTime = utils.Str2Time(endAt) + } + sqlCount := ` + SELECT COUNT(*) count + ` + sql := ` + SELECT * + ` + sqlOhter := ` + FROM print_msg + WHERE 1 = 1 AND deleted_at = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + if printNo != "" { + sqlOhter += " AND print_no = ?" + sqlParams = append(sqlParams, printNo) + } + if msgID != "" { + sqlOhter += " AND msg_id = ?" + sqlParams = append(sqlParams, msgID) + } + if beginTime != utils.ZeroTimeValue { + sqlOhter += " AND created_at > ?" + sqlParams = append(sqlParams, beginTime) + } + if endTime != utils.ZeroTimeValue { + sqlOhter += " AND created_at < ?" + sqlParams = append(sqlParams, endTime) + } + //查总数 + row := db.DB.QueryRow(sqlCount+sqlOhter, sqlParams...) + if err = row.Scan(&count); err != nil { + return page, err + } + sqlOhter += " LIMIT ? OFFSET ?" + sqlParams = append(sqlParams, pageSize, offset) + if err = db.Select(&printMsgs, sql+sqlOhter, sqlParams...); err == nil { + return &model.PagedInfo{ + TotalCount: count, + Data: printMsgs, + }, err + } + return page, err +} diff --git a/routers/router.go b/routers/router.go index 369b21d..ab3a044 100644 --- a/routers/router.go +++ b/routers/router.go @@ -25,6 +25,7 @@ func Init(r *gin.Engine) { print.GET("/delPrinters", controllers.DelPrinters) print.GET("/updatePrinter", controllers.UpdatePrinter) print.GET("/testPrint", controllers.TestPrint) + print.GET("/getPrintMessages", controllers.GetPrintMessages) //v1是不需要token的 v1 := r.Group("v1") diff --git a/services/print.go b/services/print.go index 79eb5a9..81319a6 100644 --- a/services/print.go +++ b/services/print.go @@ -144,3 +144,17 @@ func TestPrint(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo st err = dao.Insert(db, printMsg) return msgID, err } + +func GetPrintMessages(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo, msgID string, beginAt, endAt string, offset, pageSize int) (page *model.PagedInfo, err error) { + var ( + db = globals.GetDB() + ) + if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { + return nil, fmt.Errorf("未查询到此应用!app_id:%d", appID) + } + printers, _ := dao.GetPrinters(db, appID, printNo) + if len(printers) == 0 { + return nil, fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) + } + return dao.GetPrintMessagesPage(db, printNo, msgID, beginAt, endAt, offset, pageSize) +}