From fc810dd289653dfacc9a5005a29cdd56fcdfb275 Mon Sep 17 00:00:00 2001 From: lijun <2021141461138@stu.scu.edu.cn> Date: Mon, 20 May 2024 11:16:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=B7=BB=E5=8A=A0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=8A=B6=E6=80=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/device.go | 13 ++++++--- handler/device.go | 63 ++++++++++++++++++++++++++++++++++++++-- main.go | 1 + service/deviceService.go | 8 +++++ 4 files changed, 78 insertions(+), 7 deletions(-) diff --git a/dao/device.go b/dao/device.go index 5b55e03..7700513 100644 --- a/dao/device.go +++ b/dao/device.go @@ -5,13 +5,13 @@ type Device struct { AuthID int `gorm:"column:auth_id"` DeviceName string `gorm:"column:device_name"` DeviceType string `gorm:"column:device_type"` - DeviceStatus int `gorm:"column:device_status"` + DeviceStatus string `gorm:"column:device_status"` DeviceLocation string `gorm:"column:device_location"` DeviceIP string `gorm:"column:device_ip"` DeviceInfo string `gorm:"column:device_info"` } -func CreateDevice(authID int, deviceName, deviceType string, deviceStatus int, deviceLocation, deviceIP, deviceInfo string) int { +func CreateDevice(authID int, deviceName, deviceType string, deviceStatus, deviceLocation, deviceIP, deviceInfo string) int { device := Device{AuthID: authID, DeviceName: deviceName, DeviceType: deviceType, DeviceStatus: deviceStatus, DeviceLocation: deviceLocation, DeviceIP: deviceIP, DeviceInfo: deviceInfo} DB.Create(&device) return device.ID @@ -34,10 +34,15 @@ func FindDeviceByAuthID(auth_id int) []Device { return devices } -func UpdateDeviceByID(id, auth_id int, deviceName, deviceType string, deviceStatus int, deviceLocation, deviceIP, deviceInfo string) { +func SetDeviceStatus(status string, id, auth_id int) bool { + DB.Model(&Device{}).Where("device_id = ? and auth_id = ?", id, auth_id).Updates(Device{DeviceStatus: status}) + return true +} + +func UpdateDeviceByID(id, auth_id int, deviceName, deviceType string, deviceStatus, deviceLocation, deviceIP, deviceInfo string) { DB.Model(&Device{}).Where("device_id = ? and auth_id = ?", id, auth_id).Updates(Device{DeviceName: deviceName, DeviceType: deviceType, DeviceStatus: deviceStatus, DeviceLocation: deviceLocation, DeviceIP: deviceIP, DeviceInfo: deviceInfo}) } -func UpdateDeviceStatusByID(id, auth_id, status int) { +func UpdateDeviceStatusByID(id, auth_id int, status string) { DB.Model(&Device{}).Where("device_id = ? and auth_id = ?", id, auth_id).Updates(Device{DeviceStatus: status}) } diff --git a/handler/device.go b/handler/device.go index d90b170..5782a45 100644 --- a/handler/device.go +++ b/handler/device.go @@ -6,10 +6,67 @@ import ( "videoplayer/service" ) +type DeviceAddReq struct { + DeviceName string `json:"device_name"` + DeviceIP string `json:"device_ip"` + DeviceStatus string `json:"device_status"` + AuthID int `json:"auth_id"` + DeviceInfo string `json:"device_info"` + DeviceType string `json:"device_type"` + DeviceLocation string `json:"device_location"` +} + +type DeviceStatus struct { + IP string `json:"ip"` + Status string `json:"status"` + ID int `json:"id"` +} + func SetUpDeviceGroup(router *gin.Engine) { - videoGroup := router.Group("/device") - videoGroup.POST("/get_device_list", GetDeviceList) - videoGroup.POST("/restart", RestartDevice) + deviceGroup := router.Group("/device") + deviceGroup.POST("/get_device_list", GetDeviceList) + deviceGroup.POST("/restart", RestartDevice) + deviceGroup.POST("/add_device", AddDevice) + deviceGroup.POST("/set_device_status", SetDeviceStatus) + +} +func SetDeviceStatus(c *gin.Context) { + var req DeviceStatus + if err := c.ShouldBindJSON(&req); err == nil { + if req.IP != "" { + if service.SetDeviceStatus(req.Status, req.ID, c.GetInt("id")) { + c.JSON(200, gin.H{"code": 0, "message": "success"}) + } else { + c.JSON(400, gin.H{"code": 1, "message": "failed"}) + } + } + } + c.JSON(400, gin.H{"code": 1, "message": "failed"}) +} + +func AddDevice(c *gin.Context) { + var req DeviceAddReq + if err := c.ShouldBindJSON(&req); err == nil { + user_id := c.GetInt("id") + device_id := service.AddDevice(req.DeviceName, req.DeviceIP, req.DeviceStatus, req.DeviceInfo, req.DeviceType, req.DeviceLocation, user_id) + if device_id != 0 { + c.JSON(200, gin.H{ + "code": 0, + "message": "success", + "device_id": device_id, + }) + } else { + c.JSON(400, gin.H{ + "code": 1, + "message": "failed", + }) + } + } else { + c.JSON(400, gin.H{ + "code": 1, + "message": "failed", + }) + } } func GetDeviceList(c *gin.Context) { diff --git a/main.go b/main.go index be11cf4..f6fe30e 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,7 @@ func main() { r.Use(JWTAuthMiddleware()) // 使用 JWT 认证中间件 handler.SetUpVideoGroup(r) handler.SetUpUserGroup(r) + handler.SetUpDeviceGroup(r) r.Run(":8082") // listen and serve on 0.0.0.0:8082 defer dao.Close() defer worker.CloseRedis() diff --git a/service/deviceService.go b/service/deviceService.go index ef4f066..b4d7efc 100644 --- a/service/deviceService.go +++ b/service/deviceService.go @@ -9,3 +9,11 @@ func GetDeviceList(auth_id int) []dao.Device { func GetDevice(id, auth_id int) dao.Device { return dao.FindDeviceByID(id, auth_id) } + +func AddDevice(deviceName, deviceIP, deviceStatus, deviceInfo, deviceType, deviceLocation string, authID int) int { + return dao.CreateDevice(authID, deviceName, deviceType, deviceStatus, deviceLocation, deviceIP, deviceInfo) +} + +func SetDeviceStatus(status string, id, auth_id int) bool { + return dao.SetDeviceStatus(status, id, auth_id) +}