|
|
@ -8,6 +8,7 @@ import (
|
|
|
|
"github.com/taoshihan1991/imaptool/config"
|
|
|
|
"github.com/taoshihan1991/imaptool/config"
|
|
|
|
"github.com/taoshihan1991/imaptool/models"
|
|
|
|
"github.com/taoshihan1991/imaptool/models"
|
|
|
|
"github.com/taoshihan1991/imaptool/tools"
|
|
|
|
"github.com/taoshihan1991/imaptool/tools"
|
|
|
|
|
|
|
|
"github.com/taoshihan1991/imaptool/ws"
|
|
|
|
"os"
|
|
|
|
"os"
|
|
|
|
"path"
|
|
|
|
"path"
|
|
|
|
"strings"
|
|
|
|
"strings"
|
|
|
@ -113,6 +114,93 @@ func SendMessage(c *gin.Context) {
|
|
|
|
"msg": "ok",
|
|
|
|
"msg": "ok",
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func SendMessageV2(c *gin.Context) {
|
|
|
|
|
|
|
|
fromId := c.PostForm("from_id")
|
|
|
|
|
|
|
|
toId := c.PostForm("to_id")
|
|
|
|
|
|
|
|
content := c.PostForm("content")
|
|
|
|
|
|
|
|
cType := c.PostForm("type")
|
|
|
|
|
|
|
|
if content == "" {
|
|
|
|
|
|
|
|
c.JSON(200, gin.H{
|
|
|
|
|
|
|
|
"code": 400,
|
|
|
|
|
|
|
|
"msg": "内容不能为空",
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var kefuInfo models.User
|
|
|
|
|
|
|
|
var vistorInfo models.Visitor
|
|
|
|
|
|
|
|
if cType == "kefu" {
|
|
|
|
|
|
|
|
kefuInfo = models.FindUser(fromId)
|
|
|
|
|
|
|
|
vistorInfo = models.FindVisitorByVistorId(toId)
|
|
|
|
|
|
|
|
} else if cType == "visitor" {
|
|
|
|
|
|
|
|
vistorInfo = models.FindVisitorByVistorId(fromId)
|
|
|
|
|
|
|
|
kefuInfo = models.FindUser(toId)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if kefuInfo.ID == 0 || vistorInfo.ID == 0 {
|
|
|
|
|
|
|
|
c.JSON(200, gin.H{
|
|
|
|
|
|
|
|
"code": 400,
|
|
|
|
|
|
|
|
"msg": "用户不存在",
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
models.CreateMessage(kefuInfo.Name, vistorInfo.VisitorId, content, cType)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if cType == "kefu" {
|
|
|
|
|
|
|
|
guest, ok := clientList[vistorInfo.VisitorId]
|
|
|
|
|
|
|
|
if guest == nil || !ok {
|
|
|
|
|
|
|
|
c.JSON(200, gin.H{
|
|
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
|
|
"msg": "ok",
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
conn := guest.conn
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
msg := TypeMessage{
|
|
|
|
|
|
|
|
Type: "message",
|
|
|
|
|
|
|
|
Data: ClientMessage{
|
|
|
|
|
|
|
|
Name: kefuInfo.Nickname,
|
|
|
|
|
|
|
|
Avator: kefuInfo.Avator,
|
|
|
|
|
|
|
|
Id: kefuInfo.Name,
|
|
|
|
|
|
|
|
Time: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
|
|
|
|
|
ToId: vistorInfo.VisitorId,
|
|
|
|
|
|
|
|
Content: content,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
str, _ := json.Marshal(msg)
|
|
|
|
|
|
|
|
conn.WriteMessage(websocket.TextMessage, str)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if cType == "visitor" {
|
|
|
|
|
|
|
|
kefuConns, ok := ws.KefuList[kefuInfo.Name]
|
|
|
|
|
|
|
|
if kefuConns == nil || !ok {
|
|
|
|
|
|
|
|
c.JSON(200, gin.H{
|
|
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
|
|
"msg": "ok",
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
msg := TypeMessage{
|
|
|
|
|
|
|
|
Type: "message",
|
|
|
|
|
|
|
|
Data: ClientMessage{
|
|
|
|
|
|
|
|
Avator: vistorInfo.Avator,
|
|
|
|
|
|
|
|
Id: vistorInfo.VisitorId,
|
|
|
|
|
|
|
|
Name: vistorInfo.Name,
|
|
|
|
|
|
|
|
ToId: kefuInfo.Name,
|
|
|
|
|
|
|
|
Content: content,
|
|
|
|
|
|
|
|
Time: time.Now().Format("2006-01-02 15:04:05"),
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
str, _ := json.Marshal(msg)
|
|
|
|
|
|
|
|
for _, kefuConn := range kefuConns {
|
|
|
|
|
|
|
|
kefuConn.Conn.WriteMessage(websocket.TextMessage, str)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
c.JSON(200, gin.H{
|
|
|
|
|
|
|
|
"code": 200,
|
|
|
|
|
|
|
|
"msg": "ok",
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
func SendVisitorNotice(c *gin.Context) {
|
|
|
|
func SendVisitorNotice(c *gin.Context) {
|
|
|
|
notice := c.Query("msg")
|
|
|
|
notice := c.Query("msg")
|
|
|
|
if notice == "" {
|
|
|
|
if notice == "" {
|
|
|
|