103 lines
2.7 KiB
Go
103 lines
2.7 KiB
Go
package dao
|
|
|
|
import (
|
|
"git.rosy.net.cn/jx-print/globals"
|
|
"git.rosy.net.cn/jx-print/model/app_model"
|
|
"github.com/jmoiron/sqlx"
|
|
"strings"
|
|
)
|
|
|
|
// QueryPrintBill 查询打印机账户是否存在
|
|
func QueryPrintBill(db *sqlx.Tx, userId, printNo string) ([]*app_model.PrintBill, error) {
|
|
if db == nil {
|
|
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 printNo != "" {
|
|
sql += ` AND print_no = ? `
|
|
param = append(param, printNo)
|
|
}
|
|
|
|
var result []*app_model.PrintBill
|
|
if err := db.Select(&result, sql, param...); err != nil {
|
|
return nil, err
|
|
}
|
|
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 {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// AddMoney 添加充值金额
|
|
func AddMoney(db *sqlx.Tx, printNo string, money int64) error {
|
|
sql := `UPDATE print_bill SET print_balance = print_balance + ? WHERE print_no = ?`
|
|
if _, err := db.Exec(sql, []interface{}{printNo, money}...); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// UpdateBillToUser 当打印机账户从菜市绑定时,未分配用户,用户再使用小程序绑定时,将打印机分配给用户!
|
|
func UpdateBillToUser(db *sqlx.Tx, param *app_model.PrintBill) error {
|
|
sql := `UPDATE print_bill SET user_id = ? WHERE print_no = ?`
|
|
_, err := db.Exec(sql, []interface{}{param.UserId, param.PrintNo}...)
|
|
return err
|
|
}
|
|
|
|
// UpdatePrintToSystem 修改打印机账户所属用户
|
|
func UpdatePrintToSystem(db *sqlx.Tx, printNo string) error {
|
|
sql := `UPDATE print_bill SET user_id = ? WHERE print_no = ?`
|
|
if _, err := db.Exec(sql, []interface{}{"system", printNo}...); err != nil {
|
|
return err
|
|
}
|
|
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
|
|
}
|