From 4711e1812c71f177c37bbd22c21f9eeee2e22ebe Mon Sep 17 00:00:00 2001 From: taoshihan <630892807@qq.com> Date: Wed, 22 Mar 2023 15:03:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=B6=88=E6=81=AF=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/go-fly.sql | 1 - controller/main.go | 2 +- controller/message.go | 22 +++++++++++- models/messages.go | 17 +++++++-- router/api.go | 2 ++ static/css/common.css | 4 +-- static/demos/websocket.html | 62 +++++++++++++++++++++++++++++++++ static/js/chat-page.js | 51 ++------------------------- static/templates/chat_page.html | 7 ++-- 9 files changed, 111 insertions(+), 57 deletions(-) create mode 100644 static/demos/websocket.html diff --git a/config/go-fly.sql b/config/go-fly.sql index a036e62..d82fe6c 100644 --- a/config/go-fly.sql +++ b/config/go-fly.sql @@ -150,7 +150,6 @@ CREATE TABLE `reply_item` ( KEY `user_id` (`user_id`), KEY `group_id` (`group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8| -INSERT INTO `reply_item` (`id`, `content`, `group_id`, `user_id`, `item_name`) VALUES (NULL, '在这里[官网]link[https://gofly.sopans.com]!','1','kefu2', '官方地址在哪?')| DROP TABLE IF EXISTS `land_page`| CREATE TABLE `land_page` ( `id` int(11) NOT NULL, diff --git a/controller/main.go b/controller/main.go index e1bbaef..a2b306a 100644 --- a/controller/main.go +++ b/controller/main.go @@ -110,7 +110,7 @@ func MainCheckAuth(c *gin.Context) { } func GetStatistics(c *gin.Context) { visitors := models.CountVisitors() - message := models.CountMessage() + message := models.CountMessage(nil,nil) session := len(ws.ClientList) kefuNum := 0 c.JSON(200, gin.H{ diff --git a/controller/message.go b/controller/message.go index 40e6622..bb16b42 100644 --- a/controller/message.go +++ b/controller/message.go @@ -111,7 +111,7 @@ func SendMessageV2(c *gin.Context) { ws.OneKefuMessage(kefuInfo.Name, str) //ws.KefuMessage(vistorInfo.VisitorId, content, kefuInfo) kefu, ok := ws.KefuList[kefuInfo.Name] - if !ok || kefu == nil{ + if !ok || kefu == nil { go SendNoticeEmail(content+"|"+vistorInfo.Name, content) } go ws.VisitorAutoReply(vistorInfo, kefuInfo, content) @@ -287,3 +287,23 @@ func GetMessagesV2(c *gin.Context) { "result": chatMessages, }) } +func GetMessagespages(c *gin.Context) { + visitorId := c.Query("visitor_id") + page, _ := strconv.Atoi(c.DefaultQuery("page", "1")) + pageSize, _ := strconv.Atoi(c.DefaultQuery("pagesize", "10")) + if pageSize > 20 { + pageSize = 20 + } + count := models.CountMessage("visitor_id = ?", visitorId) + list := models.FindMessageByPage(uint(page), uint(pageSize), "message.visitor_id = ?", visitorId) + c.JSON(200, gin.H{ + "code": 200, + "msg": "ok", + "result": gin.H{ + "count": count, + "page": page, + "list": list, + "pagesize": pageSize, + }, + }) +} diff --git a/models/messages.go b/models/messages.go index c9e9760..516305c 100644 --- a/models/messages.go +++ b/models/messages.go @@ -100,8 +100,21 @@ func FindMessageByWhere(query interface{}, args ...interface{}) []MessageKefu { } //查询条数 -func CountMessage() uint { +func CountMessage(query interface{}, args ...interface{}) uint { var count uint - DB.Model(&Message{}).Count(&count) + DB.Model(&Message{}).Where(query, args...).Count(&count) return count } +//分页查询 +func FindMessageByPage(page uint, pagesize uint, query interface{}, args ...interface{}) []*MessageKefu { + offset := (page - 1) * pagesize + if offset < 0 { + offset = 0 + } + var messages []*MessageKefu + DB.Table("message").Select("message.*,visitor.avator visitor_avator,visitor.name visitor_name,user.avator kefu_avator,user.nickname kefu_name").Offset(offset).Joins("left join user on message.kefu_id=user.name").Joins("left join visitor on visitor.visitor_id=message.visitor_id").Where(query, args...).Limit(pagesize).Order("message.id desc").Find(&messages) + for _, mes := range messages { + mes.CreateTime = mes.CreatedAt.Format("2006-01-02 15:04:05") + } + return messages +} \ No newline at end of file diff --git a/router/api.go b/router/api.go index 4463dd0..7f45031 100644 --- a/router/api.go +++ b/router/api.go @@ -19,6 +19,8 @@ func InitApiRouter(engine *gin.Engine) { v2.GET("/message_close", controller.SendCloseMessageV2) //绑定 v2.POST("/bindOfficial", controller.PostBindOfficial) + //分页查询消息 + v2.GET("/messagesPages", controller.GetMessagespages) } engine.GET("/captcha", controller.GetCaptcha) engine.POST("/check", controller.LoginCheckPass) diff --git a/static/css/common.css b/static/css/common.css index b9a8c4e..752c3fc 100644 --- a/static/css/common.css +++ b/static/css/common.css @@ -217,14 +217,14 @@ font-size: 14px; } .chatContent2 { - border-radius: 0px 8px 8px 8px; + border-radius: 8px 8px 8px 0px; padding: 10px 15px; } .chatBoxMe{ margin-top: 10px; } .chatBoxMe .chatContent2 { - border-radius: 8px 0px 8px 8px; + border-radius: 8px 8px 0px 8px; background-color: #cde0ff; color: #000; } diff --git a/static/demos/websocket.html b/static/demos/websocket.html new file mode 100644 index 0000000..a1a8eb0 --- /dev/null +++ b/static/demos/websocket.html @@ -0,0 +1,62 @@ + + + + + Title + + + + + + \ No newline at end of file diff --git a/static/js/chat-page.js b/static/js/chat-page.js index 9e15192..4e59a57 100644 --- a/static/js/chat-page.js +++ b/static/js/chat-page.js @@ -24,6 +24,7 @@ new Vue({ showFaceIcon:false, isIframe:false, kefuInfo:{}, + showLoadMore:false, }, methods: { //初始化websocket @@ -215,54 +216,8 @@ new Vue({ // } }, //获取信息列表 - getMesssagesByVisitorId:function(isAll){ - let _this=this; - $.ajax({ - type:"get", - url:"/messages?visitorId="+this.visitor.visitor_id, - success: function(data) { - if(data.code==200 && data.result!=null&&data.result.length!=0){ - _this.msgListNum=data.result.length; - let msgList=data.result; - _this.msgList=[]; - if(!isAll&&msgList.length>1){ - var i=msgList.length-1 - }else{ - _this.msgListNum=0; - var i=0; - } - for(;i - + 开源智能在线客服系统 @@ -32,6 +32,9 @@
+
<{v.time}>
@@ -78,7 +81,7 @@
-

公告通知 +

公告通知

<{kefuInfo.allNotice}>