增加记录来源

pull/30/head
taoshihan1991 4 years ago
parent 1365e1af78
commit 4744dd586f

@ -40,6 +40,7 @@ type ClientMessage struct {
Content string `json:"content"` Content string `json:"content"`
City string `json:"city"` City string `json:"city"`
ClientIp string `json:"client_ip"` ClientIp string `json:"client_ip"`
Refer string `json:"refer"`
} }
//定时检测客户端是否在线 //定时检测客户端是否在线
func init() { func init() {
@ -239,7 +240,7 @@ func singleBroadcaster(){
} }
clientList[clientMsg.Id] = user clientList[clientMsg.Id] = user
//插入数据表 //插入数据表
models.CreateVisitor(clientMsg.Name,clientMsg.Avator,message.c.ClientIP(),clientMsg.ToId,clientMsg.Id,message.c.Request.Referer(),clientMsg.City,clientMsg.ClientIp) models.CreateVisitor(clientMsg.Name,clientMsg.Avator,message.c.ClientIP(),clientMsg.ToId,clientMsg.Id,clientMsg.Refer,clientMsg.City,clientMsg.ClientIp)
userInfo := make(map[string]string) userInfo := make(map[string]string)
userInfo["uid"] = user.id userInfo["uid"] = user.id
userInfo["username"] = user.name userInfo["username"] = user.name

@ -1,12 +1,60 @@
package controller package controller
import ( import (
"encoding/json"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"github.com/taoshihan1991/imaptool/config" "github.com/taoshihan1991/imaptool/config"
"github.com/taoshihan1991/imaptool/models" "github.com/taoshihan1991/imaptool/models"
"log"
"strconv" "strconv"
) )
func PostVisitor(c *gin.Context) {
name := c.PostForm("name")
avator := c.PostForm("avator")
toId := c.PostForm("to_id")
id := c.PostForm("id")
refer := c.PostForm("refer")
city := c.PostForm("city")
client_ip := c.PostForm("client_ip")
if name==""||avator==""||toId==""||id==""||refer==""||city==""||client_ip==""{
c.JSON(200, gin.H{
"code": 400,
"msg": "error",
})
return
}
kefuInfo:=models.FindUser(toId)
if kefuInfo.ID==0{
c.JSON(200, gin.H{
"code": 400,
"msg": "用户不存在",
})
return
}
models.CreateVisitor(name,avator,c.ClientIP(),toId,id,refer,city,client_ip)
userInfo := make(map[string]string)
userInfo["uid"] = id
userInfo["username"] = name
userInfo["avator"] = avator
msg := TypeMessage{
Type: "userOnline",
Data: userInfo,
}
str, _ := json.Marshal(msg)
kefuConns:=kefuList[toId]
if kefuConns!=nil{
for k,kefuConn:=range kefuConns{
log.Println(k,"xxxxxxxx")
kefuConn.WriteMessage(websocket.TextMessage,str)
}
}
c.JSON(200, gin.H{
"code": 200,
"msg": "ok",
})
}
func GetVisitor(c *gin.Context) { func GetVisitor(c *gin.Context) {
visitorId:=c.Query("visitorId") visitorId:=c.Query("visitorId")
vistor:=models.FindVisitorByVistorId(visitorId) vistor:=models.FindVisitorByVistorId(visitorId)

@ -77,6 +77,7 @@ func main() {
engine.GET("/mysql",middleware.JwtApiMiddleware,middleware.CasbinACL, controller.MysqlGetConf) engine.GET("/mysql",middleware.JwtApiMiddleware,middleware.CasbinACL, controller.MysqlGetConf)
engine.POST("/mysql",middleware.JwtApiMiddleware,middleware.CasbinACL, controller.MysqlSetConf) engine.POST("/mysql",middleware.JwtApiMiddleware,middleware.CasbinACL, controller.MysqlSetConf)
engine.POST("/visitor",controller.PostVisitor)
engine.GET("/visitor",middleware.JwtApiMiddleware, controller.GetVisitor) engine.GET("/visitor",middleware.JwtApiMiddleware, controller.GetVisitor)
engine.GET("/visitors",middleware.JwtApiMiddleware, controller.GetVisitors) engine.GET("/visitors",middleware.JwtApiMiddleware, controller.GetVisitors)
engine.GET("/setting_kefu_list",tmpl.PageKefuList) engine.GET("/setting_kefu_list",tmpl.PageKefuList)

@ -139,6 +139,10 @@
<i class="el-icon-s-tools"></i> <i class="el-icon-s-tools"></i>
<span slot="title">来源:<{visitor.refer}></span> <span slot="title">来源:<{visitor.refer}></span>
</el-menu-item> </el-menu-item>
<el-menu-item>
<i class="el-icon-s-tools"></i>
<span slot="title">ClientIP<{visitor.source_ip}></span>
</el-menu-item>
<el-menu-item> <el-menu-item>
<i class="el-icon-s-tools"></i> <i class="el-icon-s-tools"></i>
<span slot="title">IP<{visitor.client_ip}></span> <span slot="title">IP<{visitor.client_ip}></span>
@ -186,6 +190,7 @@
client_ip:"", client_ip:"",
city:"", city:"",
status:"", status:"",
source_ip:"",
}, },
visitors:[], visitors:[],
visitorCount:0, visitorCount:0,
@ -474,6 +479,7 @@
_this.visitor.refer=r.refer; _this.visitor.refer=r.refer;
_this.visitor.city=r.city; _this.visitor.city=r.city;
_this.visitor.client_ip=r.client_ip; _this.visitor.client_ip=r.client_ip;
_this.visitor.source_ip=r.source_ip;
_this.visitor.status=r.status==1?"在线":"离线"; _this.visitor.status=r.status==1?"在线":"离线";
} }
if(data.code!=200){ if(data.code!=200){

@ -157,6 +157,7 @@
mes.type = "userInit"; mes.type = "userInit";
userinfo.client_ip=returnCitySN["cip"]; userinfo.client_ip=returnCitySN["cip"];
userinfo.city=returnCitySN["cname"]; userinfo.city=returnCitySN["cname"];
userinfo.refer="{{.Refer}}";
mes.data = userinfo; mes.data = userinfo;
this.socket.send(JSON.stringify(mes)); this.socket.send(JSON.stringify(mes));
}, },

@ -16,10 +16,12 @@ func PageChat(c *gin.Context) {
kefuId := c.Query("kefu_id") kefuId := c.Query("kefu_id")
lang,_ := c.Get("lang") lang,_ := c.Get("lang")
language:=config.CreateLanguage(lang.(string)) language:=config.CreateLanguage(lang.(string))
refer:=c.Request.Referer()
c.HTML(http.StatusOK, "chat_page.html", gin.H{ c.HTML(http.StatusOK, "chat_page.html", gin.H{
"KEFU_ID":kefuId, "KEFU_ID":kefuId,
"SendBtn":language.Send, "SendBtn":language.Send,
"Lang":lang.(string), "Lang":lang.(string),
"Refer":refer,
}) })
} }

Loading…
Cancel
Save