添加修改删除打印机接口

This commit is contained in:
suyl
2021-07-01 11:12:06 +08:00
parent 58fba95c0f
commit 585eb0e0de
6 changed files with 224 additions and 29 deletions

View File

@@ -0,0 +1,60 @@
package cms
import (
"fmt"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
)
func AddPrinter(appID int, printNo, printKey, name string) (err error) {
var (
db = dao.GetDB()
)
//看有没有重复的
if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) > 0 {
return fmt.Errorf("此应用已经绑定了该打印机print_no : %v", printNo)
}
printer := &model.Printer{
AppID: appID,
PrintNo: printNo,
PrintKey: printKey,
Name: name,
Status: model.PrinterStatusNormal,
}
dao.WrapAddIDCULDEntity(printer, "")
if err = dao.CreateEntity(db, printer); err != nil {
return err
}
return err
}
func DelPrinter(appID int, printNo string) (err error) {
var (
db = dao.GetDB()
)
//看有没有
if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) == 0 {
return fmt.Errorf("该应用下未找到该打印机print_no : %v", printNo)
} else {
if _, err = dao.DeleteEntity(db, printers[0]); err != nil {
return err
}
}
return err
}
func UpdatePrinter(appID int, printNo, name string) (err error) {
var (
db = dao.GetDB()
)
//看有没有
if printers, _ := dao.GetPrinters(db, appID, printNo); len(printers) == 0 {
return fmt.Errorf("该应用下未找到该打印机print_no : %v", printNo)
} else {
printers[0].Name = name
if _, err = dao.UpdateEntity(db, printers[0], "Name"); err != nil {
return err
}
}
return err
}

View File

@@ -1 +1,27 @@
package dao
import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
)
func GetPrinters(db *DaoDB, appID int, printNo string) (printers []*model.Printer, err error) {
sql := `
SELECT *
FROM printer
WHERE 1 = 1 AND deleted_at = ?
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
}
if appID != 0 {
sql += " AND app_id = ?"
sqlParams = append(sqlParams, appID)
}
if printNo != "" {
sql += " AND print_no = ?"
sqlParams = append(sqlParams, printNo)
}
err = GetRows(db, &printers, sql, sqlParams)
return printers, err
}

View File

@@ -11,10 +11,11 @@ const (
ErrCodeJsonSyncErr = "-105"
ErrCodeOpenAPIParamErrMethod = "1001" //参数错误method
ErrCodeOpenAPIParamErrTimeStamp = "1002" //参数错误timestamp
ErrCodeOpenAPIParamErrMethod = "-1001" //参数错误method
ErrCodeOpenAPIParamErrTimeStamp = "-1002" //参数错误timestamp
ErrCodeOpenAPIParamErrSign = "-1003" //参数错误sign
ErrCodeOpenAPIParamErrNormal = "1000" //api非通用参数错误
ErrCodeOpenAPIParamErrNormal = "-1000" //api非通用参数错误
)
var (

View File

@@ -1,5 +1,9 @@
package model
const (
PrinterStatusNormal = 0 //正常
)
type Printer struct {
ModelIDCULD

View File

@@ -1,15 +1,18 @@
package controllers
import (
"encoding/json"
"crypto/md5"
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/server/web"
"net/url"
"reflect"
"strings"
"time"
)
type ApiController struct {
@@ -23,9 +26,16 @@ const (
keySign = "sign"
)
const (
keyPrintNo = "print_no"
keyPrintKey = "print_key"
keyName = "name"
keyStatus = "status"
keyOrderNo = "order_no"
)
var (
routerMap map[string]reflect.Value
textChan chan string
)
func Init() {
@@ -60,16 +70,19 @@ func (c *ApiController) CallOpenAPI() {
accessID = utils.GetUUID()
requireParams []string
dataMap = make(map[string]interface{})
//now = time.Now().Unix()
now = time.Now().Unix()
parms, result []reflect.Value
urls url.Values
app = &model.Apps{}
db = dao.GetDB()
)
var (
appID, sign, method string
//timestamp int64
appID int
sign, method string
timestamp int64
)
//判断必传参数是否传入begin
if appID = c.GetString(keyAppID); appID == "" {
if appID, err = c.GetInt(keyAppID); err != nil {
requireParams = append(requireParams, keyAppID)
}
if method = c.GetString(keyMethod); method == "" {
@@ -78,9 +91,9 @@ func (c *ApiController) CallOpenAPI() {
if sign = c.GetString(keySign); sign == "" {
requireParams = append(requireParams, keySign)
}
//if timestamp, err = c.GetInt64("timestamp"); err != nil {
// requireParams = append(requireParams, "timestamp")
//}
if timestamp, err = c.GetInt64(keyTimestamp); err != nil {
requireParams = append(requireParams, keyTimestamp)
}
if len(requireParams) > 0 {
err = buildParamRequiredErr(requireParams)
}
@@ -89,26 +102,43 @@ func (c *ApiController) CallOpenAPI() {
goto end
}
//判断timestamp传入是否正确begin
//if len(utils.Int64ToStr(timestamp)) != len(utils.Int64ToStr(now)) {
// err = buildTimestampParamErr()
// errCode = model.ErrCodeOpenAPIParamErrTimeStamp
//}
//if now-timestamp < 5 {
// err = buildTimestampParamErr()
// errCode = model.ErrCodeOpenAPIParamErrTimeStamp
//}
if len(utils.Int64ToStr(timestamp)) != len(utils.Int64ToStr(now)) {
err = buildTimestampParamErr()
errCode = model.ErrCodeOpenAPIParamErrTimeStamp
}
if now-timestamp < 5 {
err = buildTimestampParamErr()
errCode = model.ErrCodeOpenAPIParamErrTimeStamp
}
//判断timestamp传入是否正确end
if err != nil {
goto end
}
//判断app_id和sign匹配begin
//判断app_id和sign匹配begin ,sign = app_id + app_key + timestamp的MD5加密
app.ID = appID
if err = dao.GetEntity(db, app); err != nil {
goto end
} else {
if app.Status != model.UserStatusNormal {
errCode = model.ErrCodeGeneralFailed
err = fmt.Errorf("很抱歉您的应用已失效!")
goto end
}
appKey := app.AppKey
signOrigin := fmt.Sprintf("%x", md5.Sum([]byte(utils.Int2Str(appID)+appKey+utils.Int64ToStr(timestamp))))
if strings.Compare(sign, signOrigin) != 0 {
errCode = model.ErrCodeOpenAPIParamErrSign
err = buildMethodParamSign()
goto end
}
}
//判断app_id和sign匹配end
//call
urls, _ = c.Input()
dataMap = utils.URLValues2Map(urls)
delete(dataMap, keyMethod)
delete(dataMap, keyTimestamp)
delete(dataMap, keySign)
parms = []reflect.Value{reflect.ValueOf(dataMap)}
if routerMap[method] == reflect.ValueOf(nil) {
errCode = model.ErrCodeOpenAPIParamErrMethod
@@ -143,12 +173,75 @@ success:
}
}
func (c *ApiController) AddPrint(dataMap map[string]interface{}) (data, errCode string, err error) {
if dataMap[keySign].(string) != "222" {
return "", errCode, buildParamErr(keySign)
func (c *ApiController) AddPrinter(dataMap map[string]interface{}) (data, errCode string, err error) {
var (
printNo, printKey, name string
appID int
)
if _, ok := dataMap[keyPrintNo].(string); !ok {
return buildParamErrCodeAndErr(keyPrintNo)
} else {
if printNo = dataMap[keyPrintNo].(string); printNo == "" {
return buildParamErrCodeAndErr(keyPrintNo)
}
}
data2, err := json.Marshal(dataMap)
return string(data2), errCode, err
if _, ok := dataMap[keyPrintKey].(string); !ok {
return buildParamErrCodeAndErr(keyPrintKey)
} else {
if printKey = dataMap[keyPrintKey].(string); printKey == "" {
return buildParamErrCodeAndErr(keyPrintKey)
}
}
appID = dataMap[keyAppID].(int)
name = dataMap[keyName].(string)
if err = cms.AddPrinter(appID, printNo, printKey, name); err != nil {
return "", model.ErrCodeGeneralFailed, err
}
return "", errCode, err
}
func (c *ApiController) DelPrinter(dataMap map[string]interface{}) (data, errCode string, err error) {
var (
printNo string
appID int
)
if _, ok := dataMap[keyPrintNo].(string); !ok {
return buildParamErrCodeAndErr(keyPrintNo)
} else {
if printNo = dataMap[keyPrintNo].(string); printNo == "" {
return buildParamErrCodeAndErr(keyPrintNo)
}
}
appID = dataMap[keyAppID].(int)
if err = cms.DelPrinter(appID, printNo); err != nil {
return "", model.ErrCodeGeneralFailed, err
}
return "", errCode, err
}
func (c *ApiController) UpdatePrinter(dataMap map[string]interface{}) (data, errCode string, err error) {
var (
printNo, name string
appID int
)
if _, ok := dataMap[keyPrintNo].(string); !ok {
return buildParamErrCodeAndErr(keyPrintNo)
} else {
if printNo = dataMap[keyPrintNo].(string); printNo == "" {
return buildParamErrCodeAndErr(keyPrintNo)
}
}
if _, ok := dataMap[keyName].(string); !ok {
return buildParamErrCodeAndErr(keyName)
} else {
if name = dataMap[keyName].(string); name == "" {
return buildParamErrCodeAndErr(keyName)
}
}
appID = dataMap[keyAppID].(int)
if err = cms.UpdatePrinter(appID, printNo, name); err != nil {
return "", model.ErrCodeGeneralFailed, err
}
return "", errCode, err
}
func (c *ApiController) DoPrint(dataMap map[string]interface{}) (data, errCode string, err error) {
@@ -169,7 +262,7 @@ func (c *ApiController) DoPrint(dataMap map[string]interface{}) (data, errCode s
}
dao.WrapAddIDCULDEntity(printMsg, "")
if err = dao.CreateEntity(db, printMsg); err != nil {
return data, errCode, err
return data, model.ErrCodeGeneralFailed, err
}
return data, errCode, err
}

View File

@@ -1,6 +1,9 @@
package controllers
import "fmt"
import (
"fmt"
"git.rosy.net.cn/jx-callback/business/model"
)
type CallResult struct {
Code string `json:"code"`
@@ -21,10 +24,18 @@ func buildParamRequiredErr(str []string) (err error) {
return fmt.Errorf(msg)
}
func buildParamErrCodeAndErr(str string) (data, errCode string, err error) {
return data, model.ErrCodeOpenAPIParamErrNormal, fmt.Errorf("参数[%s]错误,请传入正确的值!", str)
}
func buildParamErr(str string) (err error) {
return fmt.Errorf("参数[%s]错误,请传入正确的值!", str)
}
func buildMethodParamSign() (err error) {
return fmt.Errorf("参数['sign']校验失败,请传入正确的值!")
}
func buildMethodParamErr() (err error) {
return fmt.Errorf("参数['method']错误,请传入正确的值!")
}