Files
jx-print/services/print.go
2021-07-08 15:52:50 +08:00

147 lines
4.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package services
import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-print/dao"
"git.rosy.net.cn/jx-print/globals"
"git.rosy.net.cn/jx-print/model"
putils "git.rosy.net.cn/jx-print/utils"
"github.com/gin-gonic/gin"
"time"
)
func AddPrinters(c *gin.Context, tokenInfo *model.TokenInfo, appID int, printInfos []*model.PrintInfo) (err error) {
var (
db = globals.GetDB()
errs []error
now = time.Now()
)
if len(printInfos) > 50 {
return fmt.Errorf("每次最多添加50台")
}
if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 {
return fmt.Errorf("未查询到此应用app_id:%d", appID)
}
for _, v := range printInfos {
printers, _ := dao.GetPrinters(db, appID, v.PrintNo)
if len(printers) > 0 {
errs = append(errs, fmt.Errorf("此打印机已被其他应用绑定print_no :%s 。", v.PrintNo))
continue
}
printer := &model.Printer{
CreatedAt: &now,
UpdatedAt: &now,
DeletedAt: &utils.DefaultTimeValue,
LastOperator: tokenInfo.User.Name,
AppID: appID,
PrintNo: v.PrintNo,
Name: v.Name,
SIM: v.SIM,
Status: model.PrinterStatusNormal,
IsOnline: model.PrinterOffline,
}
if err = dao.Insert(db, printer); err != nil {
errs = append(errs, err)
}
}
if len(errs) > 0 {
err = putils.BuildErr(errs)
}
return err
}
func GetPrinters(c *gin.Context, appID int, printNo, name string, status, isOnline, offset, pageSize int) (page *model.PagedInfo, err error) {
return dao.GetPrintersPage(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize)
}
func DelPrinters(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNos []string) (err error) {
var (
db = globals.GetDB()
errs []error
now = time.Now()
)
if len(printNos) > 50 {
return fmt.Errorf("每次最多删除50台")
}
if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 {
return fmt.Errorf("未查询到此应用app_id:%d", appID)
}
for _, v := range printNos {
printers, _ := dao.GetPrinters(db, appID, v)
if len(printers) == 0 {
errs = append(errs, fmt.Errorf("未在该应用下查到此打印机app_id: %d, print_no: %s", appID, v))
continue
}
printer := printers[0]
printer.DeletedAt = &now
printer.LastOperator = tokenInfo.User.Name
if err = dao.Update(db, printer, model.FieldDeletedAt, model.FieldLastOperator); err != nil {
errs = append(errs, err)
}
}
if len(errs) > 0 {
err = putils.BuildErr(errs)
}
return err
}
func UpdatePrinter(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo, name, sim string) (err error) {
var (
db = globals.GetDB()
now = time.Now()
fields []string
)
if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 {
return fmt.Errorf("未查询到此应用app_id:%d", appID)
}
printers, _ := dao.GetPrinters(db, appID, printNo)
if len(printers) == 0 {
return fmt.Errorf("未在该应用下查到此打印机app_id: %d, print_no: %s", appID, printNo)
}
printer := printers[0]
if name != printer.Name {
printer.Name = name
fields = append(fields, "name")
}
if sim != printer.SIM {
printer.SIM = sim
fields = append(fields, "sim")
}
printer.DeletedAt = &now
printer.LastOperator = tokenInfo.User.Name
fields = append(fields, model.FieldLastOperator, model.FieldDeletedAt)
if err = dao.Update(db, printer, fields...); err != nil {
return err
}
return err
}
func TestPrint(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo string, orderNo int, content string) (msgID string, err error) {
var (
db = globals.GetDB()
now = time.Now()
)
msgID = now.Format("20060102150405") + "_" + putils.RandStringBytesWithNumber(8)
if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 {
return "", fmt.Errorf("未查询到此应用app_id:%d", appID)
}
printers, _ := dao.GetPrinters(db, appID, printNo)
if len(printers) == 0 {
return "", fmt.Errorf("未在该应用下查到此打印机app_id: %d, print_no: %s", appID, printNo)
}
printMsg := &model.PrintMsg{
CreatedAt: &now,
UpdatedAt: &now,
LastOperator: tokenInfo.User.Name,
DeletedAt: &utils.DefaultTimeValue,
PrintNo: printNo,
OrderNo: orderNo,
Content: content,
MsgID: msgID,
}
err = dao.Insert(db, printMsg)
return msgID, err
}