修改设备设置及登录判断

This commit is contained in:
zyj
2025-09-17 18:29:30 +08:00
parent 25e0620a3f
commit c2f5721ddd
5 changed files with 43 additions and 2 deletions

View File

@@ -37,6 +37,7 @@ func (*DeviceApi) SevaDeviceInfo(ctx *gin.Context) {
} }
// 获取当前的用户ID跟token信息 // 获取当前的用户ID跟token信息
token, _ := ctx.Get("token") token, _ := ctx.Get("token")
IP := ctx.ClientIP()
// 保存当前的设备 // 保存当前的设备
DeviceService := services.InitDeviceService() DeviceService := services.InitDeviceService()
DeviceService.UpdateByToken(token.(string), &models.Device{ DeviceService.UpdateByToken(token.(string), &models.Device{
@@ -47,6 +48,7 @@ func (*DeviceApi) SevaDeviceInfo(ctx *gin.Context) {
Cpu: paramsJson.CPU, Cpu: paramsJson.CPU,
Mem: paramsJson.Mem, Mem: paramsJson.Mem,
Disk: paramsJson.Disk, Disk: paramsJson.Disk,
Ip: IP,
}) })
res = libs.ErrorCode["SevaSuccessful"] res = libs.ErrorCode["SevaSuccessful"]
ctx.JSON(http.StatusOK, gin.H{ ctx.JSON(http.StatusOK, gin.H{
@@ -55,3 +57,14 @@ func (*DeviceApi) SevaDeviceInfo(ctx *gin.Context) {
"data": res.Data, "data": res.Data,
}) })
} }
func (*DeviceApi) GetAll(ctx *gin.Context) {
userId, _ := ctx.Get("userID")
DeviceService := services.InitDeviceService()
devices := DeviceService.GetAll(userId.(int64))
ctx.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": "",
"data": devices,
})
}

View File

@@ -5,6 +5,7 @@ import (
grpcClient "go-desk-service/grpc-client" grpcClient "go-desk-service/grpc-client"
"go-desk-service/libs" "go-desk-service/libs"
userpb "go-desk-service/proto/gen" userpb "go-desk-service/proto/gen"
"go-desk-service/services"
"log" "log"
"net/http" "net/http"
"sync" "sync"
@@ -64,7 +65,8 @@ func (*Websocks) Init(ctx *gin.Context) {
return return
} }
defer conn.Close() defer conn.Close()
deviceService := services.InitDeviceService()
deviceService.Login(tokenStr)
// 将保存连接状态 // 将保存连接状态
// ClientsMu.Lock() // ClientsMu.Lock()
// Clients[TokenStatus.UserId] = conn // Clients[TokenStatus.UserId] = conn
@@ -74,6 +76,9 @@ func (*Websocks) Init(ctx *gin.Context) {
mt, message, err := conn.ReadMessage() mt, message, err := conn.ReadMessage()
if err != nil { if err != nil {
log.Printf("读取错误: %v (客户端: %s)", err, conn.RemoteAddr()) log.Printf("读取错误: %v (客户端: %s)", err, conn.RemoteAddr())
log.Println("客户端断开", tokenStr)
deviceService := services.InitDeviceService()
deviceService.Logout(tokenStr)
break break
} }
log.Printf("收到来自 %s 的消息: %s", conn.RemoteAddr(), string(message)) log.Printf("收到来自 %s 的消息: %s", conn.RemoteAddr(), string(message))

View File

@@ -15,6 +15,7 @@ type Device struct {
Mem string `gorm:"mem"` Mem string `gorm:"mem"`
Disk string `gorm:"disk"` Disk string `gorm:"disk"`
LoginStatus int `gorm:"login_status"` // 1: 已登录, 0: 未登录 LoginStatus int `gorm:"login_status"` // 1: 已登录, 0: 未登录
Ip string `gorm:"ip"`
CreatedAt time.Time `gorm:"created_at;type:timestamptz"` CreatedAt time.Time `gorm:"created_at;type:timestamptz"`
UpdatedAt time.Time `gorm:"updated_at;type:timestamptz"` UpdatedAt time.Time `gorm:"updated_at;type:timestamptz"`
} }

View File

@@ -14,4 +14,5 @@ var DeviceApi api.DeviceApi
func (*Device) Init(app *gin.Engine) { func (*Device) Init(app *gin.Engine) {
group := app.Group("/device", middleware.TokenAuth()) group := app.Group("/device", middleware.TokenAuth())
group.POST("/seva", DeviceApi.SevaDeviceInfo) group.POST("/seva", DeviceApi.SevaDeviceInfo)
group.POST("/all", DeviceApi.GetAll)
} }

View File

@@ -60,7 +60,7 @@ func (d *DeviceService) GetInfoByToken(token string) (*models.Device, error) {
func (d *DeviceService) GetUserLoginStatus(userId int64) (int, error) { func (d *DeviceService) GetUserLoginStatus(userId int64) (int, error) {
var count int64 var count int64
err := d.db.Model(&models.Device{}).Where("user_id = ? AND login_status = ?", userId, 1).Count(&count).Error err := d.db.Model(&models.Device{}).Where("user_id = ?", userId).Count(&count).Error
if err != nil { if err != nil {
return 0, err return 0, err
} }
@@ -95,3 +95,24 @@ func (d *DeviceService) SetUserLoginStatus(userId int64, token, deviceUid string
UpdatedAt: time.Now(), UpdatedAt: time.Now(),
}) })
} }
func (d *DeviceService) Logout(token string) {
d.db.Model(&models.Device{}).Where("token = ?", token).Updates(map[string]interface{}{
"login_status": 0,
"updated_at": time.Now(),
})
}
func (d *DeviceService) GetAll(userId int64) []models.Device {
var device []models.Device
d.db.Select("id", "hostname", "platform", "platform_version", "mac", "cpu", "mem", "disk", "device_uid", "login_status", "ip").Model(&models.Device{}).Where("user_id = ?", userId).Find(&device)
return device
}
func (d *DeviceService) Login(token string) {
d.db.Model(&models.Device{}).Where("token = ?", token).Updates(&models.Device{
LoginStatus: 1,
UpdatedAt: time.Now(),
})
}