mirror of
https://github.com/lkmio/gb-cms.git
synced 2025-09-26 19:51:22 +08:00
feat: 分页查询部标设备列表
This commit is contained in:
11
api.go
11
api.go
@@ -123,13 +123,14 @@ func withJsonParams[T any](f func(params T, w http.ResponseWriter, req *http.Req
|
||||
|
||||
func withJsonResponse[T any](f func(params T, w http.ResponseWriter, req *http.Request) (interface{}, error), params interface{}) func(http.ResponseWriter, *http.Request) {
|
||||
return func(w http.ResponseWriter, req *http.Request) {
|
||||
if err := HttpDecodeJSONBody(w, req, params); err != nil {
|
||||
newParams := new(T)
|
||||
if err := HttpDecodeJSONBody(w, req, newParams); err != nil {
|
||||
Sugar.Errorf("解析请求体失败 err: %s path: %s", err.Error(), req.URL.Path)
|
||||
httpResponseError(w, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
responseBody, err := f(params.(T), w, req)
|
||||
responseBody, err := f(*newParams, w, req)
|
||||
if err != nil {
|
||||
httpResponseError(w, err.Error())
|
||||
} else {
|
||||
@@ -174,6 +175,7 @@ func startApiServer(addr string) {
|
||||
apiServer.router.HandleFunc("/api/v1/jt/device/add", withJsonResponse(apiServer.OnVirtualDeviceAdd, &JTDeviceModel{}))
|
||||
apiServer.router.HandleFunc("/api/v1/jt/device/edit", withJsonResponse(apiServer.OnVirtualDeviceEdit, &JTDeviceModel{}))
|
||||
apiServer.router.HandleFunc("/api/v1/jt/device/remove", withJsonResponse(apiServer.OnVirtualDeviceRemove, &JTDeviceModel{}))
|
||||
apiServer.router.HandleFunc("/api/v1/jt/device/list", withJsonResponse(apiServer.OnVirtualDeviceList, &PageQuery{}))
|
||||
|
||||
apiServer.router.HandleFunc("/api/v1/jt/channel/add", withJsonResponse(apiServer.OnVirtualChannelAdd, &Channel{}))
|
||||
apiServer.router.HandleFunc("/api/v1/jt/channel/edit", withJsonResponse(apiServer.OnVirtualChannelEdit, &Channel{}))
|
||||
@@ -456,11 +458,6 @@ func (api *ApiServer) OnCloseStream(v *StreamIDParams, w http.ResponseWriter, r
|
||||
func (api *ApiServer) OnDeviceList(v *PageQuery, w http.ResponseWriter, r *http.Request) (interface{}, error) {
|
||||
Sugar.Infof("查询设备列表 %v", *v)
|
||||
|
||||
defer func() {
|
||||
// debug发现指针v会重复利用,但是成员变量还是上次的... 手动重置为空值
|
||||
// *v = PageQuery{}
|
||||
}()
|
||||
|
||||
if v.PageNumber == nil {
|
||||
var defaultPageNumber = 1
|
||||
v.PageNumber = &defaultPageNumber
|
||||
|
33
api_jt.go
33
api_jt.go
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
@@ -179,7 +180,7 @@ func (api *ApiServer) OnVirtualChannelAdd(channel *Channel, w http.ResponseWrite
|
||||
|
||||
func (api *ApiServer) OnVirtualChannelEdit(channel *Channel, w http.ResponseWriter, r *http.Request) (interface{}, error) {
|
||||
Sugar.Infof("edit virtual channel: %v", *channel)
|
||||
|
||||
|
||||
oldChannel, err := ChannelDao.QueryChannelByID(channel.ID)
|
||||
if err != nil {
|
||||
Sugar.Errorf("query channel failed: %s", err.Error())
|
||||
@@ -214,3 +215,33 @@ func (api *ApiServer) OnVirtualChannelRemove(channel *Channel, w http.ResponseWr
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (api *ApiServer) OnVirtualDeviceList(v *PageQuery, w http.ResponseWriter, r *http.Request) (interface{}, error) {
|
||||
Sugar.Infof("query virtual device list: %v", *v)
|
||||
|
||||
if v.PageNumber == nil {
|
||||
var defaultPageNumber = 1
|
||||
v.PageNumber = &defaultPageNumber
|
||||
}
|
||||
|
||||
if v.PageSize == nil {
|
||||
var defaultPageSize = 10
|
||||
v.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
devices, total, err := JTDeviceDao.QueryDevices(*v.PageNumber, *v.PageSize)
|
||||
if err != nil {
|
||||
Sugar.Errorf("查询设备列表失败 err: %s", err.Error())
|
||||
return nil, err
|
||||
}
|
||||
|
||||
query := &PageQuery{
|
||||
PageNumber: v.PageNumber,
|
||||
PageSize: v.PageSize,
|
||||
TotalCount: total,
|
||||
TotalPages: int(math.Ceil(float64(total) / float64(*v.PageSize))),
|
||||
Data: devices,
|
||||
}
|
||||
|
||||
return query, nil
|
||||
}
|
||||
|
18
dao_jt.go
18
dao_jt.go
@@ -48,6 +48,8 @@ type DaoJTDevice interface {
|
||||
SaveDevice(model *JTDeviceModel) error
|
||||
|
||||
UpdateDevice(model *JTDeviceModel) error
|
||||
|
||||
QueryDevices(page int, size int) ([]*JTDeviceModel, int, error)
|
||||
}
|
||||
|
||||
type daoJTDevice struct {
|
||||
@@ -127,3 +129,19 @@ func (d *daoJTDevice) UpdateDevice(model *JTDeviceModel) error {
|
||||
return db.Save(model).Error
|
||||
})
|
||||
}
|
||||
|
||||
func (d *daoJTDevice) QueryDevices(page int, size int) ([]*JTDeviceModel, int, error) {
|
||||
var devices []*JTDeviceModel
|
||||
tx := db.Limit(size).Offset((page - 1) * size).Find(&devices)
|
||||
if tx.Error != nil {
|
||||
return nil, 0, tx.Error
|
||||
}
|
||||
|
||||
var total int64
|
||||
tx = db.Model(&JTDeviceModel{}).Count(&total)
|
||||
if tx.Error != nil {
|
||||
return nil, 0, tx.Error
|
||||
}
|
||||
|
||||
return devices, int(total), nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user