diff --git a/controller/response.go b/controller/response.go
index cd63d15..d650fab 100644
--- a/controller/response.go
+++ b/controller/response.go
@@ -12,3 +12,9 @@ type ChatMessage struct {
Name string `json:"name"`
Avator string `json:"avator"`
}
+type VisitorOnline struct {
+ Uid string `json:"uid"`
+ Username string `json:"username"`
+ Avator string `json:"avator"`
+ LastMessage string `json:"last_message"`
+}
diff --git a/controller/visitor.go b/controller/visitor.go
index 8fec8b4..fce8dec 100644
--- a/controller/visitor.go
+++ b/controller/visitor.go
@@ -8,6 +8,7 @@ import (
"github.com/taoshihan1991/imaptool/config"
"github.com/taoshihan1991/imaptool/models"
"github.com/taoshihan1991/imaptool/tools"
+ "github.com/taoshihan1991/imaptool/ws"
"log"
"math/rand"
"strconv"
@@ -63,7 +64,7 @@ func PostVisitorLogin(c *gin.Context) {
ipcity := tools.ParseIp(c.ClientIP())
avator := fmt.Sprintf("/static/images/%d.jpg", rand.Intn(14))
toId := c.PostForm("to_id")
- id := c.PostForm("id")
+ id := c.PostForm("visitor_id")
if id == "" {
id = tools.Uuid()
}
@@ -184,13 +185,13 @@ func GetVisitorMessage(c *gin.Context) {
func GetVisitorOnlines(c *gin.Context) {
users := make([]map[string]string, 0)
visitorIds := make([]string, 0)
- for uid, visitor := range clientList {
+ for uid, visitor := range ws.ClientList {
userInfo := make(map[string]string)
userInfo["uid"] = uid
- userInfo["name"] = visitor.name
- userInfo["avator"] = visitor.avator
+ userInfo["name"] = visitor.Name
+ userInfo["avator"] = visitor.Avator
users = append(users, userInfo)
- visitorIds = append(visitorIds, visitor.id)
+ visitorIds = append(visitorIds, visitor.Id)
}
//查询最新消息
@@ -216,3 +217,48 @@ func GetVisitorOnlines(c *gin.Context) {
},
})
}
+
+// @Summary 获取客服的在线访客列表接口
+// @Produce json
+// @Success 200 {object} controller.Response
+// @Failure 200 {object} controller.Response
+// @Router /visitors_kefu_online [get]
+func GetKefusVisitorOnlines(c *gin.Context) {
+ kefuName, _ := c.Get("kefu_name")
+ users := make([]*VisitorOnline, 0)
+ visitorIds := make([]string, 0)
+ for uid, visitor := range ws.ClientList {
+ if visitor.To_id != kefuName {
+ continue
+ }
+ userInfo := new(VisitorOnline)
+ userInfo.Uid = uid
+ userInfo.Username = visitor.Name
+ userInfo.Avator = visitor.Avator
+ users = append(users, userInfo)
+ visitorIds = append(visitorIds, visitor.Id)
+ }
+
+ //查询最新消息
+ messages := models.FindLastMessage(visitorIds)
+ temp := make(map[string]string, 0)
+ for _, mes := range messages {
+ temp[mes.VisitorId] = mes.Content
+ }
+ for _, user := range users {
+ user.LastMessage = temp[user.Uid]
+ if user.LastMessage == "" {
+ user.LastMessage = "新访客"
+ }
+ }
+
+ tcps := make([]string, 0)
+ for ip, _ := range clientTcpList {
+ tcps = append(tcps, ip)
+ }
+ c.JSON(200, gin.H{
+ "code": 200,
+ "msg": "ok",
+ "result": users,
+ })
+}
diff --git a/router/api.go b/router/api.go
index dcb73e0..ae0fe57 100644
--- a/router/api.go
+++ b/router/api.go
@@ -50,6 +50,7 @@ func InitApiRouter(engine *gin.Engine) {
engine.GET("/mysql", middleware.JwtApiMiddleware, middleware.RbacAuth, controller.MysqlGetConf)
engine.POST("/mysql", middleware.JwtApiMiddleware, middleware.RbacAuth, controller.MysqlSetConf)
engine.GET("/visitors_online", controller.GetVisitorOnlines)
+ engine.GET("/visitors_kefu_online", middleware.JwtApiMiddleware, controller.GetKefusVisitorOnlines)
engine.GET("/clear_online_tcp", controller.DeleteOnlineTcp)
engine.POST("/visitor_login", middleware.Ipblack, controller.PostVisitorLogin)
engine.POST("/visitor", controller.PostVisitor)
diff --git a/static/html/chat_main.html b/static/html/chat_main.html
index 74e1616..c07c1ac 100644
--- a/static/html/chat_main.html
+++ b/static/html/chat_main.html
@@ -168,7 +168,11 @@
- 时间:<{visitor.created_at}>
+ 创建时间:<{visitor.created_at}>
+
+
+
+ 访问时间:<{visitor.updated_at}>
@@ -198,5 +202,5 @@