From e5b76d24fa2167f9684646781ff9c5047e2a40a0 Mon Sep 17 00:00:00 2001 From: taoshihan1991 <630892807@qq.com> Date: Thu, 24 Sep 2020 14:56:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BF=E5=AE=A2=E6=B3=A8=E5=86=8C=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/chat.go | 5 +- controller/visitor.go | 13 ++++- go.mod | 1 + go.sum | 2 + router/api.go | 2 +- static/js/chat-page.js | 114 +++++++++++++++++------------------------ tools/uuid.go | 8 +++ 7 files changed, 74 insertions(+), 71 deletions(-) create mode 100644 tools/uuid.go diff --git a/controller/chat.go b/controller/chat.go index 40c61c6..5bcc8a4 100644 --- a/controller/chat.go +++ b/controller/chat.go @@ -34,6 +34,7 @@ type ClientMessage struct { Name string `json:"name"` Avator string `json:"avator"` Id string `json:"id"` + VisitorId string `json:"visitor_id"` Group string `json:"group"` Time string `json:"time"` ToId string `json:"to_id"` @@ -235,10 +236,10 @@ func singleBroadcaster(){ conn:conn, name: clientMsg.Name, avator: clientMsg.Avator, - id:clientMsg.Id, + id:clientMsg.VisitorId, to_id:clientMsg.ToId, } - clientList[clientMsg.Id] = user + clientList[clientMsg.VisitorId] = user //插入数据表 models.CreateVisitor(clientMsg.Name,clientMsg.Avator,message.c.ClientIP(),clientMsg.ToId,clientMsg.Id,clientMsg.Refer,clientMsg.City,clientMsg.ClientIp) userInfo := make(map[string]string) diff --git a/controller/visitor.go b/controller/visitor.go index afe90de..8ae524c 100644 --- a/controller/visitor.go +++ b/controller/visitor.go @@ -63,6 +63,9 @@ func PostVisitorLogin(c *gin.Context) { avator := fmt.Sprintf("/static/images/%d.jpg",rand.Intn(14)) toId := c.PostForm("to_id") id := c.PostForm("id") + if id==""{ + id = tools.Uuid() + } refer := c.PostForm("refer") var ( city string @@ -76,7 +79,7 @@ func PostVisitorLogin(c *gin.Context) { name="匿名网友" } client_ip := c.PostForm("client_ip") - log.Println(name,avator,c.ClientIP(),toId,id,refer,city,client_ip) + //log.Println(name,avator,c.ClientIP(),toId,id,refer,city,client_ip) if name==""||avator==""||toId==""||id==""||refer==""||city==""||client_ip==""{ c.JSON(200, gin.H{ "code": 400, @@ -84,6 +87,14 @@ func PostVisitorLogin(c *gin.Context) { }) 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) visitor:=models.FindVisitorByVistorId(id) c.JSON(200, gin.H{ diff --git a/go.mod b/go.mod index 2d90499..3824f9f 100644 --- a/go.mod +++ b/go.mod @@ -18,6 +18,7 @@ require ( github.com/gorilla/websocket v1.4.2 github.com/ipipdotnet/ipdb-go v1.3.0 github.com/jinzhu/gorm v1.9.14 + github.com/satori/go.uuid v1.2.0 github.com/spf13/cobra v0.0.5 github.com/swaggo/gin-swagger v1.2.0 github.com/swaggo/swag v1.5.1 diff --git a/go.sum b/go.sum index b37a547..13784ed 100644 --- a/go.sum +++ b/go.sum @@ -150,6 +150,8 @@ github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= diff --git a/router/api.go b/router/api.go index 46f0e07..22cea9a 100644 --- a/router/api.go +++ b/router/api.go @@ -40,7 +40,7 @@ func InitApiRouter(engine *gin.Engine){ engine.POST("/mysql",middleware.JwtApiMiddleware,middleware.RbacAuth, controller.MysqlSetConf) engine.GET("/visitors_online", controller.GetVisitorOnlines) engine.GET("/clear_online_tcp", controller.DeleteOnlineTcp) - engine.POST("/visitor_login",controller.PostVisitorLogin) + engine.POST("/visitor_login",middleware.Ipblack,controller.PostVisitorLogin) engine.POST("/visitor",controller.PostVisitor) engine.GET("/visitor",middleware.JwtApiMiddleware, controller.GetVisitor) engine.GET("/visitors",middleware.JwtApiMiddleware, controller.GetVisitors) diff --git a/static/js/chat-page.js b/static/js/chat-page.js index 36169cf..795f0c0 100644 --- a/static/js/chat-page.js +++ b/static/js/chat-page.js @@ -1,10 +1,10 @@ -var guest={}; -guest.id = ""; -guest.name = typeof(returnCitySN)!="undefined" ?returnCitySN["cname"]+"网友":"匿名"; -guest.avator = "/static/images/"+Math.floor(Math.random()*(14-0+1)+0)+".jpg"; -guest.group = "1"; -guest.to_id=KEFU_ID!=""? KEFU_ID:"kefu2"; - +// var guest={}; +// guest.id = ""; +// guest.name = typeof(returnCitySN)!="undefined" ?returnCitySN["cname"]+"网友":"匿名"; +// guest.avator = "/static/images/"+Math.floor(Math.random()*(14-0+1)+0)+".jpg"; +// guest.group = "1"; +// guest.to_id=KEFU_ID!=""? KEFU_ID:"kefu2"; +KEFU_ID=KEFU_ID!=""? KEFU_ID:"kefu2"; new Vue({ el: '#app', delimiters:["<{","}>"], @@ -31,23 +31,23 @@ new Vue({ OnOpen() { this.chatTitle="连接成功!" //从缓存中取出用户 - let userinfo=this.getUserInfo(); + // let userinfo=this.getUserInfo(); let mes = {} mes.type = "userInit"; - userinfo.client_ip=returnCitySN["cip"]; - userinfo.city=returnCitySN["cname"]; - userinfo.refer=REFER; - mes.data = userinfo; + // userinfo.client_ip=returnCitySN["cip"]; + // userinfo.city=returnCitySN["cname"]; + // userinfo.refer=REFER; + mes.data = this.visitor; this.socket.send(JSON.stringify(mes)); }, OnMessage(e) { const redata = JSON.parse(e.data); if (redata.type == "kfOnline") { let msg = redata.data - if(this.showKfonline && guest.to_id==msg.id){ + if(this.showKfonline && this.visitor.to_id==msg.id){ return; } - guest.to_id=msg.id; + this.visitor.to_id=msg.id; this.chatTitle=msg.name+",正在与您沟通!" $(".chatBox").append("