智能客服SaaS平台(后端代码)
单体架构服务
具体架构信息请参考架构设计文档:
https://kdocs.cn/l/sf3SUPU11
[文件] 智能客服SaaS平台系统架构设计概要.docx
集成框架
spring-boot、mybatis、redis、netty、mysql
权限拦截
基于spring AOP的拦截器,拦截token和接口请求地址
在线接口文档
服务启动ip+端口(例如localhost:8080)
swagger2访问路径:ip:port/swagger-ui.html
离线接口文档
地址:https://www.kdocs.cn/p/67638393629?from=docs&source=docsWeb
mybatis generator使用
配置resources目录下的 generatorConfig.xml(具体配置参数请参考官方文档)
点击idea中的maven工具下的plugin:mybatis-generator:generate
数据库变更脚本
文件地址:resources/sql-script/sql.sql
服务打包
使用maven工具:mvn run install
使用idea编辑器:集成maven插件,点击install
本服务打包为jar包,配置文件可以放置在jar包之外
数据库版本处理
mysql5.7.5及以上版本实现了对功能依赖的检测。默认启用了ONLY_FULL_GROUP_BY SQL模式。在该模式下,我们使用GROUP BY查询时,出现在SELECT字段后面的只能是GROUP BY后面的分组字段,或使用聚合函数包裹着的字段,否则会报错如下信息:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database.table.column' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
当使用ORDER BY查询时,不能使用SELECT DISTINCT去重查询。否则会报错如下信息:
Expression #1 of ORDER BY clause is not in SELECT list, references column 'database.table.column' which is not in SELECT list; this is incompatible with DISTINCT
解决方法 通过命令关闭ONLY_FULL_GROUP_BY SQL模式
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
但该方法在重启Mysql服务后会失效,重启服务后会发现ONLY_FULL_GROUP_BY还是存在的。
通过修改mysql的配置文件关闭ONLY_FULL_GROUP_BY SQL模式
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION