修改设备设置及登录判断
This commit is contained in:
@@ -37,6 +37,7 @@ func (*DeviceApi) SevaDeviceInfo(ctx *gin.Context) {
|
||||
}
|
||||
// 获取当前的用户ID跟token信息
|
||||
token, _ := ctx.Get("token")
|
||||
IP := ctx.ClientIP()
|
||||
// 保存当前的设备
|
||||
DeviceService := services.InitDeviceService()
|
||||
DeviceService.UpdateByToken(token.(string), &models.Device{
|
||||
@@ -47,6 +48,7 @@ func (*DeviceApi) SevaDeviceInfo(ctx *gin.Context) {
|
||||
Cpu: paramsJson.CPU,
|
||||
Mem: paramsJson.Mem,
|
||||
Disk: paramsJson.Disk,
|
||||
Ip: IP,
|
||||
})
|
||||
res = libs.ErrorCode["SevaSuccessful"]
|
||||
ctx.JSON(http.StatusOK, gin.H{
|
||||
@@ -55,3 +57,14 @@ func (*DeviceApi) SevaDeviceInfo(ctx *gin.Context) {
|
||||
"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"
|
||||
"go-desk-service/libs"
|
||||
userpb "go-desk-service/proto/gen"
|
||||
"go-desk-service/services"
|
||||
"log"
|
||||
"net/http"
|
||||
"sync"
|
||||
@@ -64,7 +65,8 @@ func (*Websocks) Init(ctx *gin.Context) {
|
||||
return
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
deviceService := services.InitDeviceService()
|
||||
deviceService.Login(tokenStr)
|
||||
// 将保存连接状态
|
||||
// ClientsMu.Lock()
|
||||
// Clients[TokenStatus.UserId] = conn
|
||||
@@ -74,6 +76,9 @@ func (*Websocks) Init(ctx *gin.Context) {
|
||||
mt, message, err := conn.ReadMessage()
|
||||
if err != nil {
|
||||
log.Printf("读取错误: %v (客户端: %s)", err, conn.RemoteAddr())
|
||||
log.Println("客户端断开", tokenStr)
|
||||
deviceService := services.InitDeviceService()
|
||||
deviceService.Logout(tokenStr)
|
||||
break
|
||||
}
|
||||
log.Printf("收到来自 %s 的消息: %s", conn.RemoteAddr(), string(message))
|
||||
|
||||
@@ -15,6 +15,7 @@ type Device struct {
|
||||
Mem string `gorm:"mem"`
|
||||
Disk string `gorm:"disk"`
|
||||
LoginStatus int `gorm:"login_status"` // 1: 已登录, 0: 未登录
|
||||
Ip string `gorm:"ip"`
|
||||
CreatedAt time.Time `gorm:"created_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) {
|
||||
group := app.Group("/device", middleware.TokenAuth())
|
||||
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) {
|
||||
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 {
|
||||
return 0, err
|
||||
}
|
||||
@@ -95,3 +95,24 @@ func (d *DeviceService) SetUserLoginStatus(userId int64, token, deviceUid string
|
||||
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