智能在线客服系统源码二次开发

客服源码是使用Golang(又称Go)开发的,Go是Google公司开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go 天生支持并发。好处太多就不多说了。
全源码客服系统用户,想要针对自己的业务,进行二次开发,那么就需要了解一下我们客服系统的开发逻辑,从而进行定制化的功能开发。
系统架构:Golang Gin框架 + MySQL + 前端 ElementUI
源码网址:https://gofly.v1kf.com

前端二开需求

想要修改前端界面,删除某些功能,或修改某些文字,可以查看下面介绍
我们的前端是传统的开发模式,不是node编译后部署形式,前端没有独立的项目
所有展示的页面地址,都是后端的地址,后端把前端html模板页渲染出来展示

渲染前端页面的原理

Gin框架引入并渲染前端页面后,前端页面就是传统的开发模式了,可以引入js写样式等
Golang Gin框架展示一个静态页面,是在路由处理中加载模板页面。在./router/view.go中是所有与前端页面展示有关的逻辑。
如果访问地址是 /douyin.html ,那么路由处理类似下面。页面模板地址位于 ./static/templates/下

修改访客聊天页

前端页面地址位于 ./static/templates/default/chat_page.html
想要删除或隐藏某些工具栏上的按钮,可以直接在页面里找到元素位置,直接删除掉。
如果找不到元素的位置,可以直接在模板文件中搜索页面中不可变的字符串,比如下面的class属性,不可动态引入的
寻找其他元素位置,可以同理直接在 ./static/templates/下全局搜索

对接开发需求

SSO单点登录第三方系统接入

第三方系统单点登录客服系统,例如第三方商城系统或者是其他内部CRM系统,与客服系统进行对接。
  • 第三方系统账号与客服账号绑定
首先商家账号与客服账号需要绑定,可以设置账号名一致,或者自行创建绑定关系表
管理员在系统配置中,设置IP白名单,只有白名单中的服务才可以访问下面的接口
  • 通过内部接口获取token
GET请求
域名/other/internalToken?account=客服账号
这时可以得到token,拿着token往下面的链接跳转
  • 通过SSO接口跳转到客服系统指定页面
GET /sso?token=【token】&redirect=【跳转地址】
例如:/sso?token=xxxxxxxxxx&redirect=/main

数据库需求

配置文件

当前项目的 ./config/mysql.json 是数据库配置文件

SQL文件

主sql文件是 ./import.sql
变更sql文件是 ./config/alter.sql ,里面按照时间记录了对应的变更语句
 

Golang开发工具

一般我们使用的ide开发工具是Goland,属于jetbrains全家桶中的一员
安装就是从官网下载,正常软件的安装过程
https://www.jetbrains.com/go/download/#section=windows

破解步骤

安装完成后是收费的,需要使用破解工具激活一下
暂时无法在飞书文档外展示此内容

Golang开发语言

Go语言与PHP有许多不同之处,并且有着天然的优势,以下是Go语言与PHP的一些比较
  • Go语言是一种静态类型的编程语言,而PHP是动态类型的编程语言。这意味着Go语言编译器会在编译时检查类型,而PHP在运行时会动态检查类型。这使得Go语言程序在编译期间更安全,因为错误和类型混淆可以在编译期间发现和修复,而PHP程序则要在运行时才能发现这些问题。
  • Go语言是一种编译型语言,而PHP是一种解释型语言。这意味着Go语言程序在编译成机器码之后才能运行,而PHP程序则在运行时被解释成机器码。这使得Go语言程序在运行时更快,因为它们不需要解释,而PHP程序则需要在每次运行时都解释一遍。
  • Go语言拥有内存管理的自动垃圾回收机制,Go语言和PHP都拥有自动垃圾回收机制,但Go语言的内存管理模型更简单、更高效,使得Go语言程序更易于编写和维护。
  • Go语言提供了并发编程的原生支持,这是Go语言相对于PHP的一个优势。Go语言的并发模型采用了协程(或称为goroutine)的概念,它是Go语言提供的轻量级的线程,可以在单个进程中并行执行多个任务。Go语言的并发模型非常简单易用,可以方便地实现多任务并行处理,提高程序的执行效率。
 
  PHP可以使用多进程来实现多任务并行处理。但是,PHP的多进程多线程支持并不是很好,并且创建和管理多线程也比较复杂。此外,PHP的进程管理也相对较为复杂,需要使用第三方库或扩展才能实现。
  常见的PHP库是workerman框架,是基于PHP语言原生开发的。PHP的进程管理功能并不是很完善,这可能是由于PHP的设计理念和使用场景导致的。
  PHP可以用来创建守护进程,但是由于PHP的进程管理功能并不是很完善,所以在使用PHP创建守护进程时可能会存在一些问题。
  具体来说,PHP可能存在以下问题:
  • 创建进程的代码可能存在语法错误或逻辑错误,导致守护进程无法正常运行。
  • 在创建守护进程时,可能会发生内存泄漏或其他性能问题,导致守护进程崩溃。
  • 在运行过程中,守护进程可能会遇到意外的环境错误或系统故障,导致守护进程崩溃。
  • PHP不适合开发常驻进程类服务,会莫名其妙僵死,功能上就是会出现访客消息不实时推送,需要刷新才展示。
      
Go语言是一种静态类型、编译型语言,具有较好的进程管理能力。因此,使用Go语言创建守护进程相对于使用PHP创建守护进程来说可能更加稳定。
具体来说,Go语言的优势如下:
  • 编译型语言:Go语言是一种编译型语言,在编译阶段就可以发现代码中的语法错误和逻辑错误,因此Go语言创建的守护进程很少会因为代码错误导致崩溃。
  • 静态类型:Go语言是一种静态类型语言,在编译阶段就能确定变量的类型,这有助于避免类型转换错误和内存泄漏。因此,Go语言创建的守护进程很少会因为内存泄漏导致崩溃。
  • 良好的并发支持:Go语言提供了轻量级的并发模型(即协程),可以方便地实现多任务并行处理。这有助于避免单任务瓶颈,提高守护进程的运行效率。
Go 语言的协程(goroutine)与多线程在并发编程中各有优势,但在 Go 语言中,协程通常是首选的并发机制。以下是 Go 语言协程相对于多线程的一些优势:
  1. 轻量级:Go 语言的协程比传统的线程轻量级得多。创建和销毁协程的开销非常小,可以轻松创建数以百万计的协程。
  2. 栈大小:协程的栈大小是可配置的,并且默认较小(通常为几千字节),当协程进行系统调用时可以自动扩栈。而线程的栈通常较大(如几MB),且不可动态调整。
  3. 调度:Go 协程由 Go 运行时(runtime)管理,采用协作式调度,而线程通常由操作系统内核管理,采用抢占式调度。这意味着协程的调度开销更小。
  4. 并发模型:Go 语言的并发模型基于 CSP(Communicating Sequential Processes),通过 channels 进行协程间的通信,这使得编写并发程序更加安全和简单。
  5. 避免竞态条件:由于 Go 语言的内存模型和 channels 的设计,使用协程可以更容易避免竞态条件,而多线程编程中需要使用锁等同步机制来避免竞态条件。
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容