修改设备设置及登录判断
This commit is contained in:
@@ -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,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user