diff --git a/controllers/print_controller.go b/controllers/print_controller.go index 9120282..df34b6b 100644 --- a/controllers/print_controller.go +++ b/controllers/print_controller.go @@ -32,7 +32,7 @@ func AddPrinters(c *gin.Context) { return } if !callFunc(c, func() (retVal interface{}, errCode string, err error) { - err = services.AddPrinters(c, tokenInfo.User.UserID, param.AppID, printInfos) + err = services.AddPrinters(c, tokenInfo, param.AppID, printInfos) return retVal, "", err }) { return @@ -51,7 +51,7 @@ func GetPrinters(c *gin.Context) { Name string `json:"name" form:"name"` //打印机备注,模糊 Status int `json:"status" form:"status"` //打印机状态。正常还是缺纸 IsOnline int `json:"is_online" form:"is_online"` //在线状态。1在线,0离线 - Offset int `json:"offset" form:"offset" binding:"required"` + Offset int `json:"offset" form:"offset"` PageSize int `json:"page_size" form:"page_size" binding:"required"` }{} ) @@ -71,3 +71,64 @@ func GetPrinters(c *gin.Context) { } return } + +//删除打印机 POST +func DelPrinters(c *gin.Context) { + var ( + err error + tokenInfo *model.TokenInfo + param = &struct { + AppID int `json:"app_id" form:"app_id" binding:"required"` + PrintNos string `json:"print_nos" form:"print_nos" binding:"required"` //打印机编号s + }{} + printNos []string + ) + globals.SugarLogger.Debugf("Begin API :%s params: %v ip: %s", c.Request.URL, c.Params, c.ClientIP()) + if err = c.Bind(¶m); err != nil { + buildErrJson(c, err) + return + } + if tokenInfo = checkToken(c); tokenInfo == nil { + return + } + if err = utils.UnmarshalUseNumber([]byte(param.PrintNos), &printNos); err != nil { + buildErrJson(c, err) + return + } + if !callFunc(c, func() (retVal interface{}, errCode string, err error) { + err = services.DelPrinters(c, param.AppID, tokenInfo, printNos) + return retVal, "", err + }) { + return + } + return +} + +//更新打印机 POST +func UpdatePrinter(c *gin.Context) { + var ( + err error + tokenInfo *model.TokenInfo + param = &struct { + AppID int `json:"app_id" form:"app_id" binding:"required"` + PrintNo string `json:"print_no" form:"print_no" binding:"required"` //打印机编号 + Name string `json:"name" form:"name"` //打印机备注,模糊 + SIM string `json:"sim" form:"sim"` //sim卡 + }{} + ) + globals.SugarLogger.Debugf("Begin API :%s params: %v ip: %s", c.Request.URL, c.Params, c.ClientIP()) + if err = c.Bind(¶m); err != nil { + buildErrJson(c, err) + return + } + if tokenInfo = checkToken(c); tokenInfo == nil { + return + } + if !callFunc(c, func() (retVal interface{}, errCode string, err error) { + err = services.UpdatePrinter(c, param.AppID, tokenInfo, param.PrintNo, param.Name, param.SIM) + return retVal, "", err + }) { + return + } + return +} diff --git a/dao/print_dao.go b/dao/print_dao.go index 5c1babb..868841c 100644 --- a/dao/print_dao.go +++ b/dao/print_dao.go @@ -30,9 +30,7 @@ func GetPrinters(db *sqlx.DB, appID int, printNo string) (printers []*model.Prin func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnline, offset, pageSize int) (page *model.PagedInfo, err error) { var ( printers []*model.Printer - count = &struct { - Count int `json:"count"` - }{} + count int ) sqlCount := ` SELECT COUNT(*) count @@ -67,14 +65,14 @@ func GetPrintersPage(db *sqlx.DB, appID int, printNo, name string, status, isOnl } //查总数 row := db.DB.QueryRow(sqlCount+sqlOhter, sqlParams...) - if err = row.Scan(count.Count); err != nil { + if err = row.Scan(&count); err != nil { return page, err } sqlOhter += " LIMIT ? OFFSET ?" sqlParams = append(sqlParams, pageSize, offset) if err = db.Select(&printers, sql+sqlOhter, sqlParams...); err == nil { return &model.PagedInfo{ - TotalCount: count.Count, + TotalCount: count, Data: printers, }, err } diff --git a/routers/router.go b/routers/router.go index a255b71..a2acc49 100644 --- a/routers/router.go +++ b/routers/router.go @@ -22,6 +22,8 @@ func Init(r *gin.Engine) { print := v2.Group("/print") print.GET("/addPrinters", controllers.AddPrinters) print.GET("/getPrinters", controllers.GetPrinters) + print.GET("/delPrinters", controllers.DelPrinters) + print.GET("/updatePrinter", controllers.UpdatePrinter) //v1是不需要token的 v1 := r.Group("v1") diff --git a/services/print.go b/services/print.go index cf82167..76b2620 100644 --- a/services/print.go +++ b/services/print.go @@ -11,7 +11,7 @@ import ( "time" ) -func AddPrinters(c *gin.Context, userID string, appID int, printInfos []*model.PrintInfo) (err error) { +func AddPrinters(c *gin.Context, tokenInfo *model.TokenInfo, appID int, printInfos []*model.PrintInfo) (err error) { var ( db = globals.GetDB() errs []error @@ -20,7 +20,7 @@ func AddPrinters(c *gin.Context, userID string, appID int, printInfos []*model.P if len(printInfos) > 50 { return fmt.Errorf("每次最多添加50台!") } - if apps, _ := dao.GetApps(db, appID, userID, ""); len(apps) == 0 { + if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { return fmt.Errorf("未查询到此应用!app_id:%d", appID) } for _, v := range printInfos { @@ -30,15 +30,16 @@ func AddPrinters(c *gin.Context, userID string, appID int, printInfos []*model.P continue } printer := &model.Printer{ - CreatedAt: &now, - UpdatedAt: &now, - DeletedAt: &utils.DefaultTimeValue, - AppID: appID, - PrintNo: v.PrintNo, - Name: v.Name, - SIM: v.SIM, - Status: model.PrinterStatusNormal, - IsOnline: model.PrinterOffline, + CreatedAt: &now, + UpdatedAt: &now, + DeletedAt: &utils.DefaultTimeValue, + LastOperator: tokenInfo.User.Name, + AppID: appID, + PrintNo: v.PrintNo, + Name: v.Name, + SIM: v.SIM, + Status: model.PrinterStatusNormal, + IsOnline: model.PrinterOffline, } if err = dao.Insert(db, printer); err != nil { errs = append(errs, err) @@ -53,3 +54,66 @@ func AddPrinters(c *gin.Context, userID string, appID int, printInfos []*model.P 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 DelPrinters(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNos []string) (err error) { + var ( + db = globals.GetDB() + errs []error + now = time.Now() + ) + if len(printNos) > 50 { + return fmt.Errorf("每次最多删除50台!") + } + if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { + return fmt.Errorf("未查询到此应用!app_id:%d", appID) + } + for _, v := range printNos { + printers, _ := dao.GetPrinters(db, appID, v) + if len(printers) == 0 { + errs = append(errs, fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, v)) + continue + } + printer := printers[0] + printer.DeletedAt = &now + printer.LastOperator = tokenInfo.User.Name + if err = dao.Update(db, printer, model.FieldDeletedAt, model.FieldLastOperator); err != nil { + errs = append(errs, err) + } + } + if len(errs) > 0 { + err = putils.BuildErr(errs) + } + return err +} + +func UpdatePrinter(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo, name, sim string) (err error) { + var ( + db = globals.GetDB() + now = time.Now() + fields []string + ) + if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { + return fmt.Errorf("未查询到此应用!app_id:%d", appID) + } + + printers, _ := dao.GetPrinters(db, appID, printNo) + if len(printers) == 0 { + return fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) + } + printer := printers[0] + if name != printer.Name { + printer.Name = name + fields = append(fields, "name") + } + if sim != printer.SIM { + printer.SIM = sim + fields = append(fields, "sim") + } + printer.DeletedAt = &now + printer.LastOperator = tokenInfo.User.Name + fields = append(fields, model.FieldLastOperator, model.FieldDeletedAt) + if err = dao.Update(db, printer, fields...); err != nil { + return err + } + return err +}