sangoes-boot
sangoes-boot 开源,由 springboot2.x+mybatis-plus+rabbitmq+redis+oauth2.0+react+antd 等完成的单体架构, 旨在解决 Java 单体工程的快速搭建和部署,sangoes-cloud(分布式架构)正在开发中....
使用说明
相关技术
后端:
- springboot2.x spring 生态
- mybatis-Plus
- hutools
- oauth2.x jwtt
- redis
- rabbitmq
- HikariCP 连接池
- elk
- oss 和 fastdfs
- docker docker-compose
前端:
- react.js
- umijs
- antd
相关
前端:
- sangoes-boot:https://github.com/sangoes/sangoes-boot
后端:
- sangoes-web:https://github.com/sangoes/sangoes-web
模块解释
sangoes-boot --父工程
-dockerfile --docker配置
-docs --文档
-sangoes-common --工具集合
-sangoes-generator --自动生产
-sangeoes-uc --主程序
-security --安全类
-config --配置类
-modules --模块
-admin --基础服务
-ms --消息服务
-sql --sangoes-boot sql
-docker.sh --docker 部署脚本
功能列表
- 登录:账号登录(密码登录) 短信登录(暂时没接入短信方)
- 用户管理:用户添加 用户删除 用户修改 绑定角色 修改密码 批量删除用户 绑定部门
- 角色管理:添加角色 删除角色 修改角色 绑定菜单权限 批量删除角色
- 菜单管理:添加菜单 修改菜单 删除菜单 添加权限 修改权限 删除权限 批量删除权限
- 上传文件:OSS(阿里云)
- 工具:cache 正则删除 RedisUtil
- 文档管理
- 授权管理:添加授权 删除授权 批量删除授权
- 部门管理:添加部门 编辑部门 删除部门
- 字典管理:添加字典 添加子字典 删除 编辑
- 日志管理
待做
部门管理
字典管理日志管理(filter)(aop)日志异常- cms 管理
队列- ELK
- 个人中心 个人设置
- CacheCloud
分布式限流- 白名单 黑名单
- 使用文档
- 消息中心
- 一二级缓存
- 监控
- 分库分表
分表 - 文件管理
- 定时(计划)管理
api 数据加密解密分布式锁(redis)
FIXME
- 同一账号同时登录,第二个账号无法获取数据(报错:AuthUtils java.lang.NullPointerException)(猜测是因为 SecurityContextHolder 造成的,修复从 token 中获取)
开发
1.环境
redis rabbitmq mysql elasticsearch
java1.8+idea/vscode
若出现 getter/setter 错误,请安装 IntelliJ Lombok plugin
2.导入 sql
创建 sql create database boot
导入 sql sangoes-boot/sql/boot.sql
3.修改配置
sangoes-boot/sangoes-uc/src/resources/application.yml
4.运行
sangoes-boot/sangoes-uc/src/UCApplication
部署
- 安装 docker docker-compose
- 导入 sql
- 运行 sangoes-boot/docker.sh
注意
使用 redis cache 约定
- @Cacheable(value=,key=) value 的值尽可能不与 key 的重复
- @Caching() 多用
- @CacheRegexRemove(key=) key 为表达式
- @CacheRegexRemove(value=) 尽量少用 如果 value 表达式的值和 key 的表达式的值重复将会一起删除 尽量少用
问题
- VSCode 中运行 sangoes-generator 报错:Evaluation failed because the thread is not suspended 出现此报错的原因是:vscode 的内置调试控制台不支持 java 输入。所以需要在 debug 配置文件里修改调试控制台,只需将 console 属性修改为 internalTerminal 或者 externalTerminal 即可。即内置或外置终端