298 lines
8.1 KiB
Go
298 lines
8.1 KiB
Go
package dao
|
|
|
|
import (
|
|
"errors"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-print/globals"
|
|
"git.rosy.net.cn/jx-print/model"
|
|
"github.com/jmoiron/sqlx"
|
|
"time"
|
|
)
|
|
|
|
func GetPrinters(db *sqlx.DB, appID int, printNo string, status, statusNeq, flowFlag int) (printers []*model.Printer, err error) {
|
|
sql := `
|
|
SELECT *
|
|
FROM printer
|
|
WHERE 1 = 1 AND deleted_at = ?
|
|
`
|
|
sqlParams := []interface{}{utils.DefaultTimeValue}
|
|
if appID != 0 {
|
|
sql += " AND app_id = ?"
|
|
sqlParams = append(sqlParams, appID)
|
|
}
|
|
if printNo != "" {
|
|
sql += " AND print_no = ?"
|
|
sqlParams = append(sqlParams, printNo)
|
|
}
|
|
if status != 0 {
|
|
sql += " AND status = ?"
|
|
sqlParams = append(sqlParams, status)
|
|
}
|
|
if statusNeq != 0 {
|
|
sql += " AND status <> ?"
|
|
sqlParams = append(sqlParams, statusNeq)
|
|
}
|
|
if flowFlag != 0 {
|
|
sql += " AND flow_flag = ?"
|
|
sqlParams = append(sqlParams, flowFlag)
|
|
}
|
|
if err = db.Select(&printers, sql, sqlParams...); err == nil {
|
|
return printers, err
|
|
}
|
|
return printers, err
|
|
}
|
|
|
|
func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnline, offset, pageSize int, userId string) (page *model.PagedInfo, err error) {
|
|
sqlCount := `SELECT COUNT(id) count `
|
|
sql := `SELECT * `
|
|
sqlOther := ` FROM printer WHERE 1 = 1 AND deleted_at = ?`
|
|
sqlParams := []interface{}{utils.DefaultTimeValue}
|
|
if appID != 0 {
|
|
sqlOther += " AND app_id = ?"
|
|
sqlParams = append(sqlParams, appID)
|
|
}
|
|
if printNo != "" {
|
|
sqlOther += " AND print_no = ?"
|
|
sqlParams = append(sqlParams, printNo)
|
|
}
|
|
if name != "" {
|
|
sqlOther += " AND name LIKE ?"
|
|
sqlParams = append(sqlParams, "%"+name+"%")
|
|
}
|
|
if status != model.StatusAll {
|
|
sqlOther += " AND status = ?"
|
|
sqlParams = append(sqlParams, status)
|
|
}
|
|
if isOnline != model.StatusAll {
|
|
sqlOther += " AND is_online = ?"
|
|
sqlParams = append(sqlParams, isOnline)
|
|
}
|
|
if userId != "" {
|
|
sqlOther += " AND user_id = ?"
|
|
sqlParams = append(sqlParams, userId)
|
|
}
|
|
//查总数
|
|
count := 0
|
|
row := db.DB.QueryRow(sqlCount+sqlOther, sqlParams...)
|
|
if err = row.Scan(&count); err != nil {
|
|
return page, err
|
|
}
|
|
sqlOther += " LIMIT ? OFFSET ?"
|
|
sqlParams = append(sqlParams, pageSize, offset)
|
|
var printers []model.Printer
|
|
if err = db.Select(&printers, sql+sqlOther, sqlParams...); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &model.PagedInfo{TotalCount: count, Data: printers}, err
|
|
}
|
|
|
|
func GetPrintIsUse(printNo string) (bool, string, error) {
|
|
sql := `SELECT * FROM printer WHERE deleted_at = ? AND print_no = ?`
|
|
param := []interface{}{utils.DefaultTimeValue, printNo}
|
|
var result []*model.Printer
|
|
if err := globals.GetDB().Select(&result, sql, param...); err != nil {
|
|
return false, "", err
|
|
}
|
|
if len(result) != 1 {
|
|
return false, "", nil
|
|
}
|
|
return len(result) == 1, result[0].PrintKey, nil
|
|
}
|
|
|
|
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(id) 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
|
|
}
|
|
|
|
func GetPrintMessages(db *sqlx.DB, printNo, msgID, beginAt, endAt string, statusNeq int) (printMsgs []*model.PrintMsg, err error) {
|
|
var (
|
|
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(id) 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)
|
|
}
|
|
if statusNeq != 0 {
|
|
sqlOhter += " AND status <> ?"
|
|
sqlParams = append(sqlParams, statusNeq)
|
|
}
|
|
//查总数
|
|
row := db.DB.QueryRow(sqlCount+sqlOhter, sqlParams...)
|
|
if err = row.Scan(&count); err != nil {
|
|
return printMsgs, err
|
|
}
|
|
if err = db.Select(&printMsgs, sql+sqlOhter, sqlParams...); err == nil {
|
|
return printMsgs, err
|
|
}
|
|
return printMsgs, err
|
|
}
|
|
|
|
func GetPrinter(db *sqlx.DB, printNo, iccID string) (printer *model.Printer, err error) {
|
|
var (
|
|
printers []*model.Printer
|
|
)
|
|
sql := `
|
|
SELECT *
|
|
FROM printer
|
|
WHERE 1 = 1 AND deleted_at = ?
|
|
`
|
|
sqlParams := []interface{}{utils.DefaultTimeValue}
|
|
if printNo != "" {
|
|
sql += " AND print_no = ?"
|
|
sqlParams = append(sqlParams, printNo)
|
|
}
|
|
if iccID != "" {
|
|
sql += " AND icc_id = ?"
|
|
sqlParams = append(sqlParams, iccID)
|
|
}
|
|
if err = db.Select(&printers, sql, sqlParams...); err == nil && len(printers) > 0 {
|
|
return printers[0], err
|
|
}
|
|
return printer, err
|
|
}
|
|
|
|
// GetUserBindAppNo 获取用户绑定app数
|
|
func GetUserBindAppNo(db *sqlx.DB, userId string) (int, error) {
|
|
sql := `
|
|
SELECT *
|
|
FROM printer
|
|
WHERE 1 = 1 AND deleted_at = ? AND user_id = ?
|
|
`
|
|
sqlParams := []interface{}{utils.DefaultTimeValue}
|
|
sqlParams = append(sqlParams, utils.DefaultTimeValue, userId)
|
|
|
|
var printers []*model.Printer
|
|
if err := db.Select(&printers, sql, sqlParams...); err != nil {
|
|
return 0, err
|
|
}
|
|
return len(printers), nil
|
|
}
|
|
|
|
// GetPrintById 根据用户id和打印机编号获取打印机
|
|
func GetPrintById(userId, printNo string) (bool, *model.Printer, error) {
|
|
var printer []*model.Printer
|
|
sql := `SELECT * FROM printer WHERE print_no = ? AND user_id = ? AND deleted_at = ?`
|
|
if err := globals.GetDB().Select(&printer, sql, []interface{}{printNo, userId, utils.DefaultTimeValue}...); err != nil {
|
|
return false, nil, err
|
|
}
|
|
if len(printer) != 1 {
|
|
return false, nil, errors.New("用户打印机数据异常,联系管理员") // 打印机编号唯一
|
|
}
|
|
return true, printer[0], nil
|
|
}
|
|
|
|
// DeletePrinterMsg 删除打印机消息
|
|
func DeletePrinterMsg(printNos string) error {
|
|
_, err := globals.GetDB().Exec(`DELETE FROM print_msg WHERE print_no = ?`, []interface{}{printNos}...)
|
|
return err
|
|
}
|
|
|
|
// UpdatePrintUser 将打印机所属用户值为空
|
|
func UpdatePrintUser(db *sqlx.Tx, userId, printNo string) error {
|
|
sql := `UPDATE printer SET print_key = ?,user_id = ? WHERE print_no = ? `
|
|
_, err := globals.GetDB().Exec(sql, []interface{}{"system", "system", printNo}...)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// ClearPrintMsg 清空打印机消息
|
|
func ClearPrintMsg(printNo string) error {
|
|
sql := `UPDATE print_msg SET status = ? WHERE print_no = ? AND status = ?`
|
|
_, err := globals.GetDB().Exec(sql, []interface{}{model.PrintMsgErr, printNo, model.PrintMsgWait}...) // 1-待打印
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|