This commit is contained in:
邹宗楠
2022-08-25 16:10:01 +08:00
parent be87623211
commit 66db5867a4
49 changed files with 2364 additions and 649 deletions

View File

@@ -53,6 +53,97 @@ func Insert(db *sqlx.DB, obj interface{}) (err error) {
return err
}
func InsertTx(db *sqlx.Tx, obj interface{}) (err error) {
var (
value = reflect.ValueOf(obj)
stype = reflect.TypeOf(obj)
sql, values = strings.Builder{}, strings.Builder{}
sqlParams = []interface{}{}
direct reflect.Value
)
if stype.Kind() != reflect.Struct {
direct = reflect.Indirect(value)
stype = stype.Elem()
} else {
direct = value
}
sname := stype.Name()
sql.WriteString("INSERT INTO ")
for i := 0; i < stype.NumField(); i++ {
if stype.Field(i).Type.String() == "*time.Time" {
if direct.Field(i).Interface().(*time.Time) != nil {
values.WriteString(stype.Field(i).Tag.Get("json") + ",")
sqlParams = append(sqlParams, direct.Field(i).Interface())
}
} else {
if !direct.Field(i).IsZero() {
values.WriteString(stype.Field(i).Tag.Get("json") + ",")
sqlParams = append(sqlParams, direct.Field(i).Interface())
}
}
}
sql.WriteString(putils.UnMarshalHr(sname) + "(")
sql.WriteString(values.String()[:len(values.String())-1])
sql.WriteString(") VALUES(")
for i := 0; i < len(strings.Split(values.String(), ","))-1; i++ {
if i != 0 {
sql.WriteString(",")
}
sql.WriteString("?")
}
sql.WriteString(")")
_, err = db.Exec(sql.String(), sqlParams...)
return err
}
func UpdateTx(db *sqlx.Tx, obj interface{}, fields ...string) (err error) {
var (
value = reflect.ValueOf(obj)
stype = reflect.TypeOf(obj)
sql = strings.Builder{}
sqlParams = []interface{}{}
direct reflect.Value
fieldsMap = make(map[string]*struct{})
)
if stype.Kind() != reflect.Struct {
direct = reflect.Indirect(value)
stype = stype.Elem()
} else {
direct = value
}
sname := stype.Name()
sql.WriteString("UPDATE ")
sql.WriteString(putils.UnMarshalHr(sname) + " SET ")
fieldsStr := []string{}
for _, v := range fields {
fieldsStr = append(fieldsStr, v+"=?")
fieldsMap[v] = &struct{}{}
}
sql.WriteString(strings.Join(fieldsStr, ","))
sql.WriteString(" WHERE id = ?")
for i := 1; i < stype.NumField(); i++ {
if fieldsMap[stype.Field(i).Tag.Get("json")] != nil {
if stype.Field(i).Type.String() == "*time.Time" {
if direct.Field(i).Interface().(*time.Time) != nil {
sqlParams = append(sqlParams, direct.Field(i).Interface())
}
} else {
if !direct.Field(i).IsZero() {
sqlParams = append(sqlParams, direct.Field(i).Interface())
}
}
}
}
if direct.Field(0).Int() == 0 {
return err
} else {
sqlParams = append(sqlParams, direct.Field(0).Int())
}
_, err = db.Exec(sql.String(), sqlParams...)
return err
}
func Update(db *sqlx.DB, obj interface{}, fields ...string) (err error) {
var (
value = reflect.ValueOf(obj)

18
dao/print_activation.go Normal file
View File

@@ -0,0 +1,18 @@
package dao
import "git.rosy.net.cn/jx-print/globals"
type PrintActivation struct {
}
var PrintActivationDao = new(PrintActivation)
// QueryPrintHeartBeat 查询打印机是否心跳监听正常
func (p *PrintActivation) QueryPrintHeartBeat(printNo string) (bool, error) {
count := 0
err := globals.GetDB().QueryRow(`SELECT count(print_no) FROM print_activation WHERE print_no = ?`, []interface{}{printNo}...).Scan(&count)
if err != nil {
return false, err
}
return count == 1, nil
}

49
dao/print_bill.go Normal file
View File

@@ -0,0 +1,49 @@
package dao
import (
"git.rosy.net.cn/jx-print/globals"
"git.rosy.net.cn/jx-print/model/app_model"
"github.com/jmoiron/sqlx"
)
// QueryPrintBill 查询打印机账户是否存在
func QueryPrintBill(userId, printNo string) ([]*app_model.PrintBill, error) {
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 := globals.GetDB().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 {
return UpdateTx(db, param, []string{"user_id"}...)
}

35
dao/print_bill_pay.go Normal file
View File

@@ -0,0 +1,35 @@
package dao
import (
"fmt"
"git.rosy.net.cn/jx-print/globals"
order "git.rosy.net.cn/jx-print/model/app_model"
"github.com/jmoiron/sqlx"
)
// InsertPrinterPayRecord 新增充值记录
func InsertPrinterPayRecord(order *order.OrderPay) error {
return Insert(globals.GetDB(), order)
}
// QueryPrinterPayRecord 查询充值记录
func QueryPrinterPayRecord(orderId string) (*order.OrderPay, error) {
sql := `SELECT * FROM order_pay WHERE pay_order_id = ?`
var result []*order.OrderPay
if err := globals.GetDB().Select(&result, sql, []interface{}{orderId}...); err != nil {
return nil, err
}
if len(result) != 1 {
globals.SugarLogger.Errorf("回调查询错误,订单id不存在或者不唯一")
return nil, fmt.Errorf("回调查询错误,订单id不存在或者不唯一")
}
return result[0], nil
}
// UpdatePrinterPayRecord 修改充值表记录状态
func UpdatePrinterPayRecord(db *sqlx.Tx, order *order.OrderPay, field ...string) error {
return UpdateTx(db, order, field...)
}

10
dao/print_bill_record.go Normal file
View File

@@ -0,0 +1,10 @@
package dao
import (
printModel "git.rosy.net.cn/jx-print/model/app_model"
"github.com/jmoiron/sqlx"
)
func AddIncomeRecord(db *sqlx.Tx, param *printModel.PrintBillRecord) error {
return InsertTx(db, param)
}

49
dao/print_bind_store.go Normal file
View File

@@ -0,0 +1,49 @@
package dao
import (
"git.rosy.net.cn/jx-print/globals"
storeModel "git.rosy.net.cn/jx-print/model/app_model"
)
// CreatePrintStoreBind 创建绑定
func CreatePrintStoreBind(param *storeModel.PrintBindStore) error {
return Insert(globals.GetDB(), param)
}
// QueryBindNumber 查询门店绑定数量
func QueryBindNumber(userId, printNo string) (int, error) {
sql := `SELECT count(*) FROM print_bind_store WHERE user_id = ? AND print_no = ?`
count := 0
row := globals.GetDB().DB.QueryRow(sql, []interface{}{userId, printNo}...)
if err := row.Scan(&count); err != nil {
return 0, err
}
return count, nil
}
// RelieveToken 解除授权绑定门店信息
func RelieveToken(userId, printNo string, storeId int64) error {
_, err := globals.GetDB().Exec(`UPDATE print_bind_store SET bind_status = ? WHERE user_id = ? AND print_no = ? AND store_id = ?`, []interface{}{storeModel.StoreBindPrintFail, userId, printNo, storeId}...)
return err
}
// QueryStoreAndUserManager 查询用户门店的绑定关系
func QueryStoreAndUserManager(userId, printNo string, storeId int64) (bool, error) {
count := 0
err := globals.GetDB().DB.QueryRow(`SELECT count(*) FROM print_bind_store WHERE user_id = ? AND print_no = ? AND store_id = ?`, []interface{}{userId, printNo, storeId}...).Scan(&count)
if err != nil {
return false, err
}
if count != 1 {
return false, nil
}
return true, nil
}
// UpdateStoreAuthorize 失去授权
func UpdateStoreAuthorize(storeId int64) error {
_, err := globals.GetDB().Exec(`UPDATE print_bind_store SET store_status = ? WHERE store_id = ?`, []interface{}{storeModel.StoreStatusLose, storeId}...)
return err
}

View File

@@ -79,7 +79,6 @@ func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnl
}
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
@@ -88,6 +87,16 @@ func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnl
return &model.PagedInfo{TotalCount: count, Data: printers}, err
}
func GetPrintIsUse(printNo string) (bool, error) {
sql := `SELECT * FROM printer WHERE deleted_at = ? AND print_no = ?`
param := []interface{}{utils.DefaultTimeValue, printNo}
var result []*model.Printer
if err := globals.GetDB().Select(&result, sql, param...); err != nil {
return false, err
}
return len(result) == 1, nil
}
func GetPrintMessagesPage(db *sqlx.DB, printNo, msgID, beginAt, endAt string, offset, pageSize int) (page *model.PagedInfo, err error) {
var (
printMsgs []*model.PrintMsg
@@ -229,20 +238,20 @@ func GetPrinter(db *sqlx.DB, printNo, iccID string) (printer *model.Printer, err
}
// GetPrintById 根据用户id和打印机编号获取打印机
func GetPrintById(userId, printNo string) (bool, error) {
func GetPrintById(userId, printNo string) (bool, *model.Printer, error) {
var printer []*model.Printer
sql := `SELECT * FROM printer WHERE print_no = ? AND user_id = ? AND deleted_at = ?`
if err := globals.GetDB().Select(&printer, sql, []interface{}{printNo, userId, utils.DefaultTimeValue}...); err != nil {
return false, err
return false, nil, err
}
if len(printer) != 1 {
return false, errors.New("用户打印机数据异常,联系管理员") // 打印机编号唯一
return false, nil, errors.New("用户打印机数据异常,联系管理员") // 打印机编号唯一
}
return true, nil
return true, printer[0], nil
}
// DeletePrinterMsg 删除打印机消息
func DeletePrinterMsg(printNos []string) error {
_, err := globals.GetDB().Exec(`DELETE FROM print_msg WHERE print_no IN (?) `, []interface{}{printNos}...)
func DeletePrinterMsg(printNos string) error {
_, err := globals.GetDB().Exec(`DELETE FROM print_msg WHERE print_no = ?`, []interface{}{printNos}...)
return err
}

View File

@@ -1,9 +1,11 @@
package dao
import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-print/globals"
settingModel "git.rosy.net.cn/jx-print/model/app_model"
"github.com/jmoiron/sqlx"
)
type PrintSettingDao struct{}
@@ -26,13 +28,14 @@ func (p *PrintSettingDao) QueryPrintNoIsExit(printNo string) (bool, error) {
}
// InsertPrintSetting 插入打印机设置
func (p *PrintSettingDao) InsertPrintSetting(param *settingModel.PrintSetting) error {
return Insert(globals.GetDB(), param)
func (p *PrintSettingDao) InsertPrintSetting(tx *sqlx.Tx, param *settingModel.PrintSetting) error {
return InsertTx(tx, param)
}
// UpdatePrinterSetting 修改打印机配置
func (p *PrintSettingDao) UpdatePrinterSetting(param *settingModel.UpdatePrintSetting) error {
db := globals.GetDB()
sql := `UPDATE print_setting SET `
var param2 []interface{}
@@ -41,72 +44,50 @@ func (p *PrintSettingDao) UpdatePrinterSetting(param *settingModel.UpdatePrintSe
param2 = append(param2, param.CallNameSetting)
}
if param.SystemVoice != 0 {
sql += ` system_voice = ? `
sql += ` ,system_voice = ? `
param2 = append(param2, param.SystemVoice)
}
if param.PrintVoiceSetting != "" {
sql += ` print_voice_setting = ? `
sql += ` ,print_voice_setting = ? `
param2 = append(param2, param.PrintVoiceSetting)
}
if param.OrderVoiceSetting != "" {
sql += ` order_voice_setting = ? `
sql += ` ,order_voice_setting = ? `
param2 = append(param2, param.OrderVoiceSetting)
}
if param.RiderVoiceSetting != "" {
sql += ` rider_voice_setting = ? `
sql += ` ,rider_voice_setting = ? `
param2 = append(param2, param.RiderVoiceSetting)
}
if param.CustomerVoiceSetting != "" {
sql += ` customer_voice_setting = ? `
sql += ` ,customer_voice_setting = ? `
param2 = append(param2, param.CustomerVoiceSetting)
}
if param.PickingSetting != "" {
sql += ` picking_setting = ? `
sql += ` ,picking_setting = ? `
param2 = append(param2, param.PickingSetting)
}
sql += ` WHERE print_no = ? `
param2 = append(param2, param.PrintNo)
_, err := db.Exec(sql, param2...)
return err
}
// DeleteSetting 删除打印机设置
func (p *PrintSettingDao) DeleteSetting(printNo []string) error {
_, err := globals.GetDB().Exec(`DELETE FROM print_setting WHERE print_no in (?)`, []interface{}{printNo}...)
func (p *PrintSettingDao) DeleteSetting(printNo string) error {
_, err := globals.GetDB().Exec(`DELETE FROM print_setting WHERE print_no = ?`, []interface{}{printNo}...)
return err
}
// GetUserPrintSetting 获取用户打印机设置
func (p *PrintSettingDao) GetUserPrintSetting(userId, printNo string) {
sql := `
SELECT
s.*
FROM
printer p
INNER JOIN print_setting s ON s.print_no = p.print_no
WHERE
p.user_id = ?
AND p.print_no = ?
`
param := []interface{}{userId, printNo}
var setting *settingModel.PrintSetting
if err := globals.GetDB().QueryRow(sql, param...).Scan(&setting); err != nil {
return
}
if setting == nil {
return
}
//json.Unmarshal([]byte(setting.))
}
// QueryPrintSetting 查询打印机设置
func (p *PrintSettingDao) QueryPrintSetting(printNo string) (*settingModel.PrintSetting, error) {
var result *settingModel.PrintSetting
if err := globals.GetDB().QueryRow(`SELECT * FROM print_setting WHERE print_no = ? AND deleted_at = ?`, printNo, utils.DefaultTimeValue).Scan(&result); err != nil {
var result []*settingModel.PrintSetting
if err := globals.GetDB().Select(&result, `SELECT * FROM print_setting WHERE print_no = ? AND deleted_at = ?`, printNo, utils.DefaultTimeValue); err != nil {
return nil, err
}
return result, nil
if len(result) != 1 {
return nil, fmt.Errorf("打印机设置查询错误,联系管理员")
}
return result[0], nil
}

View File

@@ -11,3 +11,9 @@ func TestGetPrinters(t *testing.T) {
fmt.Println("data=======", data)
fmt.Println("data=======", err)
}
func TestGetPrintUse(t *testing.T) {
have, err := PrintActivationDao.QueryPrintHeartBeat("20220818000001")
fmt.Println(have)
fmt.Println(err)
}

View File

@@ -1,27 +1,33 @@
package dao
import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-print/globals"
"git.rosy.net.cn/jx-print/model/app_model"
)
// GetTempByName 根据模板名称获取模板
func GetTempByName(userID, tempName string) ([]*app_model.SystemTemp, error) {
func GetTempByName(userID, printNo, tempName string) ([]*app_model.SystemTemp, error) {
sql := `SELECT * FROM system_temp WHERE 1=1`
var param []interface{}
if userID != "" {
sql += ` AND user_id = ?`
param = append(param, userID)
}
if printNo != "" {
sql += ` AND print_sn = ?`
param = append(param, printNo)
}
if tempName != "" {
sql += ` AND temp_name = ?`
param = append(param, tempName)
}
sql += ` AND deleted_at = ?`
param = append(param, utils.DefaultTimeValue)
var result []*app_model.SystemTemp
var result []*app_model.SystemTemp
if err := globals.GetDB().Select(&result, sql, param...); err != nil {
return nil, err
}
@@ -34,32 +40,65 @@ func AddTemp(param *app_model.SystemTemp) error {
}
// UpdateOtherTempStatus 修改其他模板为非默认
func UpdateOtherTempStatus(userId string) error {
_, err := globals.GetDB().Exec(`UPDATE system_temp SET is_use = ? WHERE user_id = ?`, []interface{}{2, userId})
func UpdateOtherTempStatus(userId, printNo string) error {
_, err := globals.GetDB().Exec(`UPDATE system_temp SET is_use = ? WHERE user_id = ? AND print_sn = ?`, []interface{}{2, userId, printNo}...)
return err
}
// UpdateTemp 修改模板数据
func UpdateTemp(param *app_model.SystemTemp, fields []string) error {
//sql := `UPDATE system_temp SET `
//var sqlParam []interface{}
//updateBuffer := make([]string, 0, 14)
//if param.CreatedAt != "" {
// updateBuffer = append(updateBuffer, "created_at")
// sqlParam = append(sqlParam, param.Temp)
//}
//if param.UpdatedAt != "" {
//}
//if param.LastOperator != "" {
//}
//if param.DeletedAt != "" {
//}
//if param.TempName != "" {
//}
//if param.TempRank != "" {
//}
//if param.Temp != "" {
//}
//if param.UserId != "" {
//}
//if param.TempType != "" {
//}
//if param.TempSize != "" {
//}
//if param.PrintSn != "" {
//}
//if param.IsUse != "" {
//}
//if param.Properties != "" {
//}
return Update(globals.GetDB(), param, fields...)
}
// DeleteTemp 删除模板数据
func DeleteTemp(id int, userId string) error {
_, err := globals.GetDB().Exec(`DELETE FROM system_temp WHERE id = ? AND user_id = ?`, []interface{}{id, userId}...)
return err
}
// DeleteAllTemp 删除用户所属打印机所有模板
func DeleteAllTemp(userId string, printNo []string) error {
_, err := globals.GetDB().Exec(`DELETE FROM system_temp WHERE user_id = ? AND print_sn IN (?)`, []interface{}{userId, printNo}...)
func DeleteAllTemp(userId string, printNo string) error {
_, err := globals.GetDB().Exec(`DELETE FROM system_temp WHERE user_id = ? AND print_sn = ? `, []interface{}{userId, printNo}...)
return err
}
// SelectUserTemp 查询用户模板
func SelectUserTemp(userId string) ([]*app_model.SystemTemp, error) {
func SelectUserTemp(userId, printSn string) ([]*app_model.SystemTemp, error) {
var result []*app_model.SystemTemp
if err := globals.GetDB().Select(&result, `SELECT * FROM system_temp WHERE user_id = ? AND deleted_at = ? ORDER BY created_at desc `, []interface{}{userId, utils.DefaultTimeValue}...); err != nil {
if err := globals.GetDB().Select(&result, `SELECT * FROM system_temp WHERE user_id = ? AND print_sn = ? AND deleted_at = ? ORDER BY created_at desc `, []interface{}{userId, printSn, utils.DefaultTimeValue}...); err != nil {
return nil, err
}
return result, nil
@@ -87,12 +126,26 @@ func QuerySystemTemp() ([]*app_model.SystemTemp, error) {
}
// SwitchTemp2User 切换模板
func SwitchTemp2User(tempId int, userId string) error {
if _, err := globals.GetDB().Exec(`UPDATE system_temp SET is_use = 2 WHERE user_id = ?`, []interface{}{userId}...); err != nil {
func SwitchTemp2User(tempId int, userId, printSn string) error {
if _, err := globals.GetDB().Exec(`UPDATE system_temp SET is_use = 2 WHERE user_id = ? AND print_sn = ?`, []interface{}{userId, printSn}...); err != nil {
return err
}
if _, err := globals.GetDB().Exec(`UPDATE system_temp SET is_use = 1 WHERE id = ? AND user_id = ?`, []interface{}{tempId, userId}...); err != nil {
if _, err := globals.GetDB().Exec(`UPDATE system_temp SET is_use = 1 WHERE id = ? AND user_id = ? AND print_sn = ?`, []interface{}{tempId, userId, printSn}...); err != nil {
return err
}
return nil
}
// QueryTempById 查询模板根据id
func QueryTempById(id int) (data *app_model.SystemTemp, err error) {
var result []*app_model.SystemTemp
if err := globals.GetDB().Select(&result, `SELECT * FROM system_temp WHERE id = ?`, []interface{}{id}...); err != nil {
return nil, err
}
if len(result) != 1 {
return nil, fmt.Errorf("参数异常")
}
return result[0], nil
}