From 88bba5d4b50f5d2768c6f865436bddb59db7b3ae Mon Sep 17 00:00:00 2001 From: akrike <1625167628@qq.com> Date: Wed, 18 Jun 2025 22:06:42 +0800 Subject: [PATCH] add ws share api --- internal/app/api/ws.go | 14 +++++++++++++- internal/app/logic/ws_share.go | 18 ++++++++++++++++++ internal/app/model/ws_share.go | 4 +++- internal/app/repository/ws_share.go | 18 ++++++++++++++++++ 4 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 internal/app/logic/ws_share.go diff --git a/internal/app/api/ws.go b/internal/app/api/ws.go index 67daab3..c65d1ba 100644 --- a/internal/app/api/ws.go +++ b/internal/app/api/ws.go @@ -97,7 +97,7 @@ func (w *wsApi) WebsocketShareHandle(ctx *gin.Context) { errCheck(ctx, data.ExpireTime.Unix() <= time.Now().Unix(), "Share expired!") proc, err := logic.ProcessCtlLogic.GetProcess(data.Pid) errCheck(ctx, err != nil, err) - guestName := "guest-" + strconv.Itoa(data.Id) // 构造访客用户名 + guestName := "guest-" + strconv.Itoa(int(data.ID)) // 构造访客用户名 errCheck(ctx, proc.HasWsConn(guestName), "A connection already exists; unable to establish a new one!") errCheck(ctx, proc.State.State != 1, "The process is currently running.") errCheck(ctx, !proc.VerifyControl(), "Insufficient permissions; please check your access rights!") @@ -105,6 +105,8 @@ func (w *wsApi) WebsocketShareHandle(ctx *gin.Context) { errCheck(ctx, err != nil, "WebSocket connection upgrade failed!") log.Logger.Infow("ws连接成功") + data.UpdatedAt = time.Now() + repository.WsShare.Edit(data) proc.SetTerminalSize(utils.GetIntByString(ctx.Query("cols")), utils.GetIntByString(ctx.Query("rows"))) wsCtx, cancel := context.WithCancel(context.Background()) @@ -174,3 +176,13 @@ func (w *wsApi) startWsConnect(wci *WsConnetInstance, cancel context.CancelFunc, }() } + +func GetWsShareList(ctx *gin.Context) { + rOk(ctx, "Operation successful!", logic.WsSahreLogic.GetWsShareList()) +} + +func DeleteWsShareById(ctx *gin.Context) { + err := logic.WsSahreLogic.DeleteById(ctx.GetInt("id")) + errCheck(ctx, err != nil, err) + rOk(ctx, "Operation successful!", nil) +} diff --git a/internal/app/logic/ws_share.go b/internal/app/logic/ws_share.go new file mode 100644 index 0000000..4f74ebb --- /dev/null +++ b/internal/app/logic/ws_share.go @@ -0,0 +1,18 @@ +package logic + +import ( + "github.com/lzh-1625/go_process_manager/internal/app/model" + "github.com/lzh-1625/go_process_manager/internal/app/repository" +) + +type wsShareLogic struct{} + +var WsSahreLogic = &wsShareLogic{} + +func (w *wsShareLogic) GetWsShareList() []*model.WsShare { + return repository.WsShare.GetWsShareList() +} + +func (w *wsShareLogic) DeleteById(id int) error { + return repository.WsShare.Delete(id) +} diff --git a/internal/app/model/ws_share.go b/internal/app/model/ws_share.go index 6633e83..993067a 100644 --- a/internal/app/model/ws_share.go +++ b/internal/app/model/ws_share.go @@ -2,10 +2,12 @@ package model import ( "time" + + "gorm.io/gorm" ) type WsShare struct { - Id int `gorm:"primaryKey;autoIncrement;column:id" json:"id"` + gorm.Model Pid int `gorm:"column:pid" json:"pid"` Write bool `gorm:"column:write" json:"write"` ExpireTime time.Time `gorm:"column:expire_time" json:"expireTime"` diff --git a/internal/app/repository/ws_share.go b/internal/app/repository/ws_share.go index 16d8986..071ff79 100644 --- a/internal/app/repository/ws_share.go +++ b/internal/app/repository/ws_share.go @@ -17,3 +17,21 @@ func (p *wsShare) GetWsShareDataByToken(token string) (data *model.WsShare, err func (p *wsShare) AddShareData(data model.WsShare) error { return db.Save(&data).Error } + +func (p *wsShare) GetWsShareList() (data []*model.WsShare) { + ws := query.WsShare + data, _ = ws.Find() + return +} + +func (p *wsShare) Delete(id int) error { + ws := query.WsShare + _, err := ws.Where(ws.Id.Eq(id)).Delete() + return err +} + +func (p *wsShare) Edit(data *model.WsShare) error { + ws := query.WsShare + _, err := ws.Where(ws.Id.Eq(int(data.ID))).Updates(data) + return err +}