diff --git a/controllers/print_controller.go b/controllers/print_controller.go index 6558e46..e822b89 100644 --- a/controllers/print_controller.go +++ b/controllers/print_controller.go @@ -61,7 +61,7 @@ func GetPrinters(c *gin.Context) { return } if !CallFunc(c, func() (retVal interface{}, errCode string, err error) { - retVal, err = print_server.GetPrinters(c, param.AppID, param.PrintNo, param.Name, param.Status, param.IsOnline, param.Offset, param.PageSize) + retVal, err = print_server.GetPrinters(tokenInfo.User.UserID, param.AppID, param.PrintNo, param.Name, param.Status, param.IsOnline, param.Offset, param.PageSize) return retVal, "", err }) { return diff --git a/dao/print_bill.go b/dao/print_bill.go index 7e2c4b6..3b1e239 100644 --- a/dao/print_bill.go +++ b/dao/print_bill.go @@ -4,6 +4,7 @@ import ( "git.rosy.net.cn/jx-print/globals" "git.rosy.net.cn/jx-print/model/app_model" "github.com/jmoiron/sqlx" + "strings" ) // QueryPrintBill 查询打印机账户是否存在 @@ -29,6 +30,27 @@ func QueryPrintBill(db *sqlx.Tx, userId, printNo string) ([]*app_model.PrintBill return result, nil } +// QueryPrintBillList 查询打印机余额 +func QueryPrintBillList(userId string, printNo []string) ([]*app_model.PrintBill, error) { + db := globals.GetTxDb() + sql := `SELECT * FROM print_bill WHERE 1 = 1 ` + var param []interface{} + if userId != "" { + sql += ` AND user_id = ? ` + param = append(param, userId) + } + if len(printNo) > 0 { + sql += " AND print_no IN (" + GenQuestionMarks(len(printNo)) + ")" + param = append(param, printNo) + } + + var result []*app_model.PrintBill + if err := db.Select(&result, sql, param...); err != nil { + return nil, err + } + return result, nil +} + // InitPrintBill 初始化打印机账户 func InitPrintBill(txDB *sqlx.Tx, param *app_model.PrintBill) error { if err := InsertTx(txDB, param); err != nil { @@ -61,3 +83,20 @@ func UpdatePrintToSystem(db *sqlx.Tx, printNo string) error { } return nil } + +func GenQuestionMarks(count int) (marks string) { + if count > 0 { + if count == 1 { + marks = "?" + } else { + builder := &strings.Builder{} + builder.Grow(1 + (count-1)*3) + builder.WriteString("?") + for i := 1; i < count; i++ { + builder.WriteString(", ?") + } + marks = builder.String() + } + } + return marks +} diff --git a/dao/print_dao.go b/dao/print_dao.go index 439f294..c6156df 100644 --- a/dao/print_dao.go +++ b/dao/print_dao.go @@ -9,7 +9,7 @@ import ( "time" ) -func GetPrinters(db *sqlx.DB, appID int, printNo string, status, statusNeq, flowFlag int) (printers []*model.Printer, err error) { +func GetPrinters(db *sqlx.DB, appID int, printNo string, status, statusNeq, flowFlag int, userId string) (printers []*model.Printer, err error) { sql := ` SELECT * FROM printer @@ -36,6 +36,10 @@ func GetPrinters(db *sqlx.DB, appID int, printNo string, status, statusNeq, flow sql += " AND flow_flag = ?" sqlParams = append(sqlParams, flowFlag) } + if userId != "" { + sql += " AND user_id = ?" + sqlParams = append(sqlParams, userId) + } if err = db.Select(&printers, sql, sqlParams...); err == nil { return printers, err } @@ -83,7 +87,6 @@ func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnl if err = db.Select(&printers, sql+sqlOther, sqlParams...); err != nil { return nil, err } - return &model.PagedInfo{TotalCount: count, Data: printers}, err } diff --git a/model/model.go b/model/model.go index 5164080..72f0083 100644 --- a/model/model.go +++ b/model/model.go @@ -93,8 +93,9 @@ type PrintInfo struct { } type PagedInfo struct { - TotalCount int `json:"totalCount"` - Data interface{} `json:"data"` + TotalCount int `json:"totalCount"` + Data interface{} `json:"data"` + PrintBill map[string]int64 `json:"print_bill"` } type ModelIDCULD struct { diff --git a/services/print_server/app_server/wx_print.go b/services/print_server/app_server/wx_print.go index 83df052..acadbc4 100644 --- a/services/print_server/app_server/wx_print.go +++ b/services/print_server/app_server/wx_print.go @@ -30,7 +30,7 @@ func QueryPrintKeyIsExit(printInfo *model.PrintInfo, phone, bizId, code string, return false, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", printInfo.PrintNo) } - printers, _ := dao.GetPrinters(db, appId, printInfo.PrintNo, 0, 0, 0) + printers, _ := dao.GetPrinters(db, appId, printInfo.PrintNo, 0, 0, 0, "") // 打印机已经被绑定 if len(printers) != 0 { // 修改绑定 @@ -57,7 +57,7 @@ func DeletePrintCheck(printNo string, phone, bizId, code string, appId int) erro return fmt.Errorf("验证码错误") } - printers, _ := dao.GetPrinters(db, appId, printNo, 0, 0, 0) + printers, _ := dao.GetPrinters(db, appId, printNo, 0, 0, 0, "") if len(printers) != 1 { return fmt.Errorf("打印机不存在或异常,联系管理员") } @@ -85,7 +85,7 @@ func AddPrinters(txDB *sqlx.Tx, tokenInfo *model.TokenInfo, appID int, printInfo errs = append(errs, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", v.PrintNo)) continue } - printers, _ := dao.GetPrinters(db, appID, v.PrintNo, 0, 0, 0) + printers, _ := dao.GetPrinters(db, appID, v.PrintNo, 0, 0, 0, "") if len(printers) != 0 && printers[0].UserId != "system" { errs = append(errs, fmt.Errorf("打印机已经被绑定!print_no :%s 。", v.PrintNo)) continue @@ -122,7 +122,11 @@ func AddPrinters(txDB *sqlx.Tx, tokenInfo *model.TokenInfo, appID int, printInfo } func GetPrinters(appID int, printNo, name string, status, isOnline, offset, pageSize int, userId string) (page *model.PagedInfo, err error) { - return dao.GetPrintersPage(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize, userId) + page, err = dao.GetPrintersPage(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize, userId) + if err != nil { + return nil, err + } + return } func GetPrintIsUse(printNo string) (bool, string, error) { @@ -140,7 +144,7 @@ func DelPrinters(appID int, tokenInfo *model.TokenInfo, printNos string) (err er if apps, _ := dao.GetApps(db, appID, "", ""); len(apps) == 0 { return fmt.Errorf("未查询到此应用!app_id:%d", appID) } - printers, _ := dao.GetPrinters(db, appID, printNos, 0, 0, 0) + printers, _ := dao.GetPrinters(db, appID, printNos, 0, 0, 0, "") if len(printers) == 0 { return fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNos) } @@ -167,7 +171,7 @@ func UpdatePrinter(appID int, tokenInfo *model.TokenInfo, printNo, name, sound s return fmt.Errorf("未查询到此应用!app_id:%d", appID) } - printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0) + printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0, "") if len(printers) == 0 { return fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) } @@ -231,7 +235,7 @@ func GetPrintMessages(appID int, tokenInfo *model.TokenInfo, printNo, msgID stri 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) + 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) } @@ -243,9 +247,10 @@ func GetPrinterReport(tokenInfo *model.TokenInfo) (getPrinterReportResult *app_m db = globals.GetDB() weekCount, DayCount, DayUnCount = 0, 0, 0 onlineC, offlineC, flowC, paperC = 0, 0, 0, 0 + userId = tokenInfo.User.UserID ) getPrinterReportResult = &app_model.GetPrinterReportResult{} - apps, _ := dao.GetApps(db, 0, tokenInfo.User.UserID, "") + apps, _ := dao.GetApps(db, 0, userId, "") if len(apps) == 0 { apps = []*model.Apps{ &model.Apps{ @@ -255,7 +260,7 @@ func GetPrinterReport(tokenInfo *model.TokenInfo) (getPrinterReportResult *app_m } } for _, app := range apps { - printers, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 0) + printers, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 0, userId) for _, printer := range printers { weeks, _ := dao.GetPrintMessages(db, printer.PrintNo, "", utils.Time2Str(time.Now().AddDate(0, 0, -7)), utils.Time2Str(time.Now()), 0) weekCount += len(weeks) @@ -264,13 +269,13 @@ func GetPrinterReport(tokenInfo *model.TokenInfo) (getPrinterReportResult *app_m dayUns, _ := dao.GetPrintMessages(db, printer.PrintNo, "", utils.Time2Str(time.Now().AddDate(0, 0, -1)), utils.Time2Str(time.Now()), 1) DayUnCount += len(dayUns) } - onlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOnline, 0, 0) + onlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOnline, 0, 0, userId) onlineC += len(onlines) - offlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOffline, 0, 0) + offlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOffline, 0, 0, userId) offlineC += len(offlines) - flows, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 1) + flows, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 1, userId) flowC += len(flows) - papers, _ := dao.GetPrinters(db, app.ID, "", model.PrinterStatusWithouPaper, 0, 0) + papers, _ := dao.GetPrinters(db, app.ID, "", model.PrinterStatusWithouPaper, 0, 0, userId) paperC += len(papers) } diff --git a/services/print_server/print.go b/services/print_server/print.go index af91389..f112053 100644 --- a/services/print_server/print.go +++ b/services/print_server/print.go @@ -1,6 +1,7 @@ package print_server import ( + "encoding/json" "fmt" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-print/dao" @@ -38,7 +39,7 @@ func AddPrinters(c *gin.Context, tokenInfo *model.TokenInfo, appID int, printInf errs = append(errs, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", v.PrintNo)) continue } - printers, _ := dao.GetPrinters(db, appID, v.PrintNo, 0, 0, 0) + 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 @@ -68,8 +69,28 @@ func AddPrinters(c *gin.Context, tokenInfo *model.TokenInfo, appID int, printInf 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 GetPrinters(userId string, appID int, printNo, name string, status, isOnline, offset, pageSize int) (page *model.PagedInfo, err error) { + page, err = dao.GetPrintersPage(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize, "") + if err != nil { + return nil, err + } + print2 := make([]model.Printer, 0, 0) + if err := json.Unmarshal([]byte(utils.Interface2String(page.Data)), &print2); err != nil { + return nil, err + } + + printList := make([]string, 0, len(print2)) + for _, v := range print2 { + printList = append(printList, v.PrintNo) + } + printBillList, err := dao.QueryPrintBillList(userId, printList) + if err != nil { + return nil, err + } + for _, v := range printBillList { + page.PrintBill[v.PrintNo] = v.PrintBalance + } + return } func DelPrinters(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNos []string) (err error) { @@ -89,7 +110,7 @@ func DelPrinters(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNos errs = append(errs, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", v)) continue } - printers, _ := dao.GetPrinters(db, appID, v, 0, 0, 0) + 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 @@ -117,7 +138,7 @@ func UpdatePrinter(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printN return fmt.Errorf("未查询到此应用!app_id:%d", appID) } - printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0) + printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0, "") if len(printers) == 0 { return fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) } @@ -186,7 +207,7 @@ func GetPrintMessages(c *gin.Context, appID int, tokenInfo *model.TokenInfo, pri 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) + 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) } @@ -208,14 +229,15 @@ func GetPrinterReport(c *gin.Context, tokenInfo *model.TokenInfo) (getPrinterRep db = globals.GetDB() weekCount, DayCount, DayUnCount = 0, 0, 0 onlineC, offlineC, flowC, paperC = 0, 0, 0, 0 + userId = tokenInfo.User.UserID ) getPrinterReportResult = &GetPrinterReportResult{} - apps, _ := dao.GetApps(db, 0, tokenInfo.User.UserID, "") + apps, _ := dao.GetApps(db, 0, userId, "") if len(apps) == 0 { return nil, err } for _, app := range apps { - printers, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 0) + printers, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 0, userId) for _, printer := range printers { weeks, _ := dao.GetPrintMessages(db, printer.PrintNo, "", utils.Time2Str(time.Now().AddDate(0, 0, -7)), utils.Time2Str(time.Now()), 0) weekCount += len(weeks) @@ -224,13 +246,13 @@ func GetPrinterReport(c *gin.Context, tokenInfo *model.TokenInfo) (getPrinterRep dayUns, _ := dao.GetPrintMessages(db, printer.PrintNo, "", utils.Time2Str(time.Now().AddDate(0, 0, -1)), utils.Time2Str(time.Now()), 1) DayUnCount += len(dayUns) } - onlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOnline, 0, 0) + onlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOnline, 0, 0, userId) onlineC += len(onlines) - offlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOffline, 0, 0) + offlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOffline, 0, 0, userId) offlineC += len(offlines) - flows, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 1) + flows, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 1, userId) flowC += len(flows) - papers, _ := dao.GetPrinters(db, app.ID, "", model.PrinterStatusWithouPaper, 0, 0) + papers, _ := dao.GetPrinters(db, app.ID, "", model.PrinterStatusWithouPaper, 0, 0, userId) paperC += len(papers) } getPrinterReportResult.WeekPrintCount = weekCount diff --git a/services/print_server/sim.go b/services/print_server/sim.go index 529ecc7..cd93f72 100644 --- a/services/print_server/sim.go +++ b/services/print_server/sim.go @@ -28,7 +28,7 @@ func SimFlowDaySettle() (err error) { return } //找出所有状态不为 超流量的打印机(iccid卡) - printers, _ := dao.GetPrinters(db, 0, "", 0, 0, 0) + printers, _ := dao.GetPrinters(db, 0, "", 0, 0, 0, "") for _, v := range printers { //查询前一日使用的流量数 if v.IccID != "" { @@ -92,7 +92,7 @@ func SimFlowMonthSettle() { return } //找出所有有iccid 卡的 - printers, _ := dao.GetPrinters(db, 0, "", 0, 0, 0) + printers, _ := dao.GetPrinters(db, 0, "", 0, 0, 0, "") for _, v := range printers { if v.IccID != "" { if err := FlowIncome(db, v.IccID, 30, "MB", model.FlowIncomeTypeJX, ""); err == nil { @@ -127,7 +127,7 @@ func GetCardsInfo(tokenInfo *model.TokenInfo, appID int, printNo string, cardSta db = globals.GetDB() ) if printNo != "" { - printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0) + printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0, "") if len(printers) == 0 { err = fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) return nil, err