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/putils" "github.com/gin-gonic/gin" "time" ) const ( sounda = "sounda" //提示音a soundb = "soundb" //提示音b soundc = "soundc" //提示音c soundd = "soundd" //提示音d sounde = "sounde" //报警音e soundf = "soundf" //报警音f soundg = "soundg" //报警音g ) 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 { if v.PrintNo == "" { errs = append(errs, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", v.PrintNo)) continue } printers, _ := dao.GetPrinters(db, appID, v.PrintNo, 0, 0, 0) 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, Sound: sounda, Volume: 4, } 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 { if v == "" { errs = append(errs, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", v)) continue } printers, _ := dao.GetPrinters(db, appID, v, 0, 0, 0) 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.FieldLastOperator, model.FieldDeletedAt); 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, sound string, volume int) (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, 0, 0, 0) if len(printers) == 0 { return fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) } printer := printers[0] printer.UpdatedAt = &now printer.LastOperator = tokenInfo.User.Name fields = append(fields, model.FieldUpdatedAt, model.FieldLastOperator) if name != printer.Name { printer.Name = name fields = append(fields, "name") } //if sim != printer.IccID { // printer.IccID = sim // fields = append(fields, "iccid") //} if sound != printer.Sound { printer.Sound = sound fields = append(fields, "sound") } if volume != printer.Volume { printer.Volume = volume fields = append(fields, "volume") } 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, 0, 0, 0) 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 } 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, 0, 0, 0) 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) }