首页 > 其他分享 >开源在线客服系统-客服系统历史消息记录功能-点击加载历史聊天记录-分页展示历史消息功能实现

开源在线客服系统-客服系统历史消息记录功能-点击加载历史聊天记录-分页展示历史消息功能实现

时间:2023-04-12 12:33:13浏览次数:53  
标签:历史 客服 messages 功能 id item visitor avator page

之前开发的开源在线客服系统gofly,访客端一直没有展示历史聊天记录,最近抽时间给加上了

实现的效果就是,访客刚进聊天界面,如果存在历史记录,按5条分页,默认查询加载5条聊天记录。

如果历史记录超过5条,顶部出现 “点击加载更多” 按钮,点击按钮就分页查询历史记录,堆入消息记录数组里。

 

访客前端js部分,因为历史记录里需要区分是客服发的,还是访客发的,所以进行了判断。

js数组unshift的意思就是往数组前面插入元素

        //获取信息列表
        getHistoryMessage:function(){
            let params={
                page:this.messages.page,
                pagesize: this.messages.pagesize,
                visitor_id: this.visitor.visitor_id,
            }
            let _this=this;
            $.get("/2/messagesPages",params,function(res){
                let msgList=res.result.list;
                if(msgList.length>=_this.messages.pagesize){
                    _this.showLoadMore=true;
                }else{
                    _this.showLoadMore=false;
                }
                for(let i in msgList){
                    let item = msgList[i];
                    let content = {}
                    if (item["mes_type"] == "kefu") {
                        item.is_kefu = true;
                        item.avator=item["kefu_avator"];

                    } else {
                        item.is_kefu = false;
                        item.avator=item["visitor_avator"];
                    }
                    item.time = item["create_time"];
                    _this.msgList.unshift(item);
                }
                if(_this.messages.page==1){
                    _this.scrollBottom();
                }
                _this.messages.page++;
            });
        },

 

后端golang gin框架部分:

 

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,
        },
    })
}

 

models部分,你可以参考我的代码,但是我的和你的业务表结构不一致,自己修改才能使用

//查询条数
func CountMessage(query interface{}, args ...interface{}) uint {
    var count uint
    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
}

实现的效果图

 

 

 

这个客服系统是开源的,但是不能用于任何商业性项目。

如果需要商用,可以联系我,购买部署多用户商务版

官网地址:gofly.v1kf.com

开源地址:https://github.com/taoshihan1991/go-fly

标签:历史,客服,messages,功能,id,item,visitor,avator,page
From: https://www.cnblogs.com/taoshihan/p/17309401.html

相关文章

  • LoRa振动传感器终端的功能有哪些
    LoRa振动传感器终端是一款支持LoRaWAN标准的资产监测产品,本产品基于三轴加速度计实现仓储环境物品振动监测,并通过LoRa技术实现无线报警功能。该产品可应用于安防系统中,主要应用于智能仓储、智慧工地、酱酒数字平台、智慧油田、智慧工厂等地方贵重物品监测。三轴无线振动传感器符......
  • 带你揭开神秘的javascript AST面纱之AST 基础与功能
    作者:京东科技周明亮AST基础与功能在前端里面有一个很重要的概念,也是最原子化的内容,就是AST,几乎所有的框架,都是基于AST进行改造运行,比如:React/Vue/Taro等等。多端的运行使用,都离不开AST这个概念。在大家理解相关原理和背景后,我们可以通过手写简单的编译器,简单实现......
  • new bing侧边栏撰写功能尝试--STM32的使用
    生成结果如下:stm32的使用stm32是一种基于ARMCortex-M内核的32位微控制器,由意法半导体(ST)推出。stm32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势,是目前市场上最受欢迎的单片机之一。本文将介绍stm32的基本特点和使用方法,帮助新手入门stm32的......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能多功能学习机从0到1快速入门——官网推荐
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 在线客服系统搜索访客功能-通过访客名称、访客VisitorId、访客IP地址、聊天消息来进行
    在使用客服系统的时候,访客数量一旦多了起来,想要找到某一个访客是很困难的,很多时候我们需要快速定位到某一个访客,这里就需要用到搜索访客的功能了。 唯一客服系统的访客搜索功能1.访客名称搜索功能,如果我们对接了自己系统的访客名称,那么我们直接输入名称就能找到该访客了。但......
  • C++中&的功能 及 用法
    参考资料:C++中&的功能及用法-konglingbin-博客园(cnblogs.com)对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。......
  • 园子的现代化建设-博客版本控制:发布博客设置历史版本功能
    虽然园子当前面临着商业化的巨大困难与挑战,但园子的现代化建设也在尽自己所能地向前推进。今天晚上我们发布了博客后台的一个小功能——博客设置历史版本,当您在博客后台设置页面修改了某个设置(比如公告)并保存时,会生成一个历史版本,您可以查看并还原这个历史版本。使用方法:在博客......
  • 2023.3月产品小报丨微信管理小程序功能上线;SDK 新增小程序收藏功能
    阳春三月,草长莺飞。在迎接春天到来的日子里,让我们看看FinClip又有哪些新的功能上线吧!产品方面的相关动向 营销模板上线,支持快速生成营销小程序在小程序开放平台,点击左侧的「小程序管理-营销模板」,可查询支持营销模板资源,您可以选择对应的模板,快速生成营销小程序,在不同应用进行分......
  • Apipost智能Mock功能详解
    在接口开发过程中,Mock功能可以帮助开发者快速测试和验证接口的正确性和稳定性,以便快速迭代和修复问题。Apipost推出智能Mock功能,可以在智能期望中填写一些触发条件,开启后,Apipost会根据已设置的触发条件,自动匹配旗下的参数判断规则,若满足条件,则会启用预设的期望。这篇文章会模拟用户......
  • AI智能安防监控EasyCVR视频融合平台播放鉴权功能的介绍及配置
    EasyCVR视频融合平台基于云边端协同架构,支持海量视频汇聚管理,在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。平台可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、......