From 1578be6b4b4e89babe6b4d2416a944ac213f7e9f Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sun, 7 Jul 2024 11:14:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=A7=E8=A1=8C=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E6=97=A0=E8=BE=93=E5=87=BA=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=AD=E5=AF=B9=E7=94=A8=E6=88=B7=E7=9A=84?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/cid.go | 2 +- handler/cid.go | 12 ++++++------ handler/im.go | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/dao/cid.go b/dao/cid.go index d87573b..f6872ea 100644 --- a/dao/cid.go +++ b/dao/cid.go @@ -92,7 +92,7 @@ func FindRunLogByAuthID(auth_id int) []CIDRunLog { func FindRunLogByID(auth_id, cid_id int) []CIDRunLog { var cidRunLog []CIDRunLog - DB.Debug().Where("cid_id = ? and auth_id = ?", cid_id, auth_id).Find(&cidRunLog) + DB.Debug().Where("cid_id = ? and auth_id = ?", cid_id, auth_id).Order("created_at desc").Find(&cidRunLog) return cidRunLog } func FindRunLogByCIDLogID(id, auth_id int) []CIDRunLog { diff --git a/handler/cid.go b/handler/cid.go index 2707f2e..168c802 100644 --- a/handler/cid.go +++ b/handler/cid.go @@ -79,15 +79,15 @@ fi echo "end"` //执行脚本 cmd := exec.Command("/bin/bash", "-c", scriptContent) + // 使用bytes.Buffer捕获输出 + var out bytes.Buffer + cmd.Stdout = &out err3 := cmd.Run() err3_info := "" if err3 != nil { err3_info = err3.Error() } fmt.Println("bash content:", scriptContent) - // 使用bytes.Buffer捕获输出 - var out bytes.Buffer - cmd.Stdout = &out dao.CreateRunLog(req.ID, authID, scriptContent, out.String(), err3_info) //添加执行日志 c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": "success"}) @@ -218,14 +218,14 @@ fi echo "end"` //执行脚本 cmd := exec.Command("/bin/bash", "-c", scriptContent) + // 使用bytes.Buffer捕获输出 + var out bytes.Buffer + cmd.Stdout = &out err3 := cmd.Run() err3_info := "" if err3 != nil { err3_info = err3.Error() } - // 使用bytes.Buffer捕获输出 - var out bytes.Buffer - cmd.Stdout = &out dao.CreateRunLog(cid, res.Auth_id, scriptContent, out.String(), err3_info) //添加执行日志 c.JSON(200, gin.H{"code": proto.SuccessCode, "message": "success", "data": "success"}) } else { diff --git a/handler/im.go b/handler/im.go index dd0c39b..7340624 100644 --- a/handler/im.go +++ b/handler/im.go @@ -181,6 +181,7 @@ func SRMessage(c *gin.Context) { var res3 []byte var msg proto.Message if res2 != "" { + //若有消息则发送消息 msg.Type = "msg" msg.Msg = res2 msg.From_user_id = id1 @@ -194,12 +195,25 @@ func SRMessage(c *gin.Context) { msg.Session = res res3, _ = json.Marshal(msg) } + //判断对方是否在线,若不在线则发送离线消息,否则正常发送消息 + if worker.IsContainKey(to_user_id+"_status") == true { + if worker.GetRedis(to_user_id+"_status") == "0" { + msg.Type = "offline" + msg.Msg = "offline" + msg.From_user_id = -1 + msg.Session = res + res3, _ = json.Marshal(msg) + } + } err2 := ws.WriteMessage(websocket.TextMessage, res3) if err2 != nil { + worker.SetRedisWithExpire("user_"+id.(string)+"_status", "0", time.Second*120) //设置用户在线状态,1为在线,0为离线,5秒后过期 clientsMux.Lock() delete(clients, ws) clientsMux.Unlock() break + } else { + worker.SetRedisWithExpire("user_"+id.(string)+"_status", "1", time.Second*5) //设置用户在线状态,1为在线,0为离线,5秒后过期 } time.Sleep(time.Second * 1) // 每1秒查询一次 } else {