diff --git a/dao/print_dao.go b/dao/print_dao.go index c6156df..5b5578c 100644 --- a/dao/print_dao.go +++ b/dao/print_dao.go @@ -90,6 +90,50 @@ func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnl return &model.PagedInfo{TotalCount: count, Data: printers}, err } +func GetPrintAndBill(db *sqlx.DB, appID int, printNo, name string, status, isOnline, offset, pageSize int, userId string) (page *model.PageInfoAndPrintBill, 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.PageInfoAndPrintBill{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} diff --git a/model/model.go b/model/model.go index c23ea1a..224cee0 100644 --- a/model/model.go +++ b/model/model.go @@ -93,9 +93,13 @@ type PrintInfo struct { } type PagedInfo struct { - TotalCount int `json:"totalCount"` - Data interface{} `json:"data"` - PrintBill map[string]int64 `json:"printBill"` + TotalCount int `json:"totalCount"` + Data interface{} `json:"data"` +} + +type PageInfoAndPrintBill struct { + TotalCount int `json:"totalCount"` + Data []*Printer `json:"data"` } type ModelIDCULD struct { @@ -198,6 +202,7 @@ type Printer struct { FlowFlag int `json:"flow_flag" db:"flow_flag"` //是否超流量了,1表示超了 OfflineCount int `json:"offline_count" db:"offline_count"` //掉线次数 UserId string `json:"user_id" db:"user_id"` //打印机所属用户 + PrintBill int64 `json:"-" db:"-"` // 账户余额 } type PrintMsg struct { diff --git a/services/print_server/app_server/wx_print.go b/services/print_server/app_server/wx_print.go index e46d7cf..b05a244 100644 --- a/services/print_server/app_server/wx_print.go +++ b/services/print_server/app_server/wx_print.go @@ -121,31 +121,30 @@ func AddPrinters(txDB *sqlx.Tx, tokenInfo *model.TokenInfo, appID int, printInfo return err } -func GetPrinters(appID int, printNo, name string, status, isOnline, offset, pageSize int, userId string) (page *model.PagedInfo, err error) { - page, err = dao.GetPrintersPage(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize, userId) +func GetPrinters(appID int, printNo, name string, status, isOnline, offset, pageSize int, userId string) (page *model.PageInfoAndPrintBill, err error) { + page, err = dao.GetPrintAndBill(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize, userId) if err != nil { return nil, err } - globals.SugarLogger.Debugf("============page1 %s", utils.Format4Output(page, false)) - print2 := page.Data.([]model.Printer) - // make([]model.Printer, 0, 0) - //if err := json.Unmarshal([]byte(utils.Interface2String(page.Data)), &print2); err != nil { - // return nil, err - //} - printList := make([]interface{}, 0, len(print2)) - for _, v := range print2 { + printList := make([]interface{}, 0, len(page.Data)) + for _, v := range page.Data { printList = append(printList, v.PrintNo) } + printBillList, err := dao.QueryPrintBillList(userId, printList) if err != nil { return nil, err } - page.PrintBill = make(map[string]int64, len(printBillList)) for _, v := range printBillList { - page.PrintBill[v.PrintNo] = v.PrintBalance + for _, b := range page.Data { + if v.PrintNo != b.PrintNo { + continue + } + b.PrintBill = v.PrintBalance + } } - globals.SugarLogger.Debugf("============page2 %s", utils.Format4Output(page, false)) + return }