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 即可。即内置或外置终端

感谢

mybatis-plus

hutools

umijs

antd