BallCat 旨在为项目快速开发提供一系列的基础能力,方便使用者根据项目需求快速进行功能拓展。
在以前使用其他后台管理脚手架进行开发时,经常会遇到因为项目业务原因需要进行二开的问题,在长期的开发后,一旦源项目进行迭代升级,很难进行同步更新。
为了解决这一问题,BallCat 将自身所有的业务和功能都设计为可插拔的依赖,方便用户自由组装和卸载。
开发时,用户以依赖的方式引入 BallCat 所提供的模块,当 BallCat 项目升级时,用户只需同步更新版本号,即可获得功能更新。
Ballcat 已将所有 JAR 包都推送至中央仓库,也会为每个版本的升级改动列出详细的更新日志,以及增量 SQL。
如果在使用中遇到了必须通过二开修改源码才能解决的问题或功能时,欢迎提 issues,如果功能具有通用性,我们会为 BallCat 添加此能力,也欢迎直接 PR 你的改动。
• Github 地址 :https://github.com/ballcat-projects/ballcat
• Gitee 地址:https://gitee.com/ballcat-projects/ballcat (如果 Github 访问速度比较慢的话,可以访问 Gitee )
• 文档地址:http://www.ballcat.cn/
•后端 :Spring Boot、Spring Security、Spring Security OAuth2、Mybatis Plus、Hutool
•前端 :Vue、Vue Router、Vuex、Axios、Ant Design Vue(前端对应的 react 版本已经在开发中,Vue3 版本也是未来肯定要支持的)
项目 | 简介 | gitee 地址 | github 地址 |
ballcat | 核心项目组件 | https://gitee.com/ballcat-projects/ballcat | https://github.com/ballcat-projects/ballcat |
ballcat-ui-vue | 管理后台前端 | https://gitee.com/ballcat-projects/ballcat-ui-vue | https://github.com/ballcat-projects/ballcat-ui-vue |
ballcat-codegen | 代码生成器 | https://gitee.com/ballcat-projects/ballcat-codegen | https://github.com/ballcat-projects/ballcat-codegen |
ballcat-samples | 使用示例 | https://gitee.com/ballcat-projects/ballcat-samples | https://github.com/ballcat-projects/ballcat-samples |
ballcat-boot | 单体应用模板项目 | https://gitee.com/ballcat-projects/ballcat-boot | https://github.com/ballcat-projects/ballcat-boot |
注意 ballcat 是核心组件仓库,如果需要启动后端服务,请使用 ballcat-boot
演示地址 (账户:admin ;密码:a123456) :
http://preview.ballcat.cn/
演示效果:
代码生成器提供了在线编辑模板的功能,以及多数据源的支持。
只需启动一个代码生成器服务放在测试服,所有项目需要生成代码时都可以复用此生成器,减少了频繁切换项目启动生成器的繁琐。
演示地址:
http://codegen.ballcat.cn/
演示效果:
BallCat 为后台管理的一些基本需求提供了以下五个业务模块,用户可以按需引入:
•ballcat-auth(授权模块) :用于支撑 OAuth2 的授权服务器,集成了登录图像验证码,登录AES密码解密过滤器等相关功能。目前使用 Spring-Security-OAuth2 作为基础,后续将迁移到 spring-authorization-server 项目。•ballcat-system(系统模块) :提供了用户管理、角色管理、菜单管理、组织架构、字典管理、系统配置等这些后台管理系统中不可或缺的核心功能。
•ballcat-log(日志模块) :提供了登录日志、操作日志、访问日志等日志记录功能,提供了 TraceId,可串联一次请求中的所有日志信息。日志默认存储位置在 mysql 中,用户可以按需定制日志处理逻辑。
•ballcat-i18n(国际化模块) :提供了基于数据库的国际化信息配置存储方案,提供 local + redis 双重缓存处理,提升国际化处理效率。
•ballcat-notify(通知模块) :目前提供了系统公告的能力,下个版本将会新增通知相关的功能。
BallCat 项目模块结构
功能模块和业务无关,非 ballcat 项目也可以引入这些模块获得功能增强,用户按照实际业务需求选择模块进行集成。
包括但不限于以下这些功能 :
•数据权限控制,在 orm 层实现,基于 Jsqparse 解析 Sql,进行权限范围的 sql 注入
•国际化功能,不仅支持 spring 原生的文件配置形式,还可以自定义动态加载国际化配置
•注解使用 redis 缓存、分布式锁,防击穿,全局key前缀等功能
•注解快速实现 excel 导入导出功能
•支付功能:包括支付宝、微信、USDT 虚拟货币等
•基于 S3 协议的对象存储封装,方便一套代码兼容大部分云平台,如阿里云,七牛云,腾讯云
目前提供的功能模块列表
|-- ballcat-common -- 基础公用组件
| |-- ballcat-common-core -- 核心组件
| |-- ballcat-common-desensitize -- 脱敏基础组件
| |-- ballcat-common-i18n -- 国际化基础组件
| |-- ballcat-common-idempoten -- 幂等基础组件
| |-- ballcat-common-log -- 日志基础组件
| |-- ballcat-common-model -- 公用的一些模型
| |-- ballcat-common-redis -- redis基础组件
| |-- ballcat-common-security -- 安全相关,以及资源服务器配置
| |-- ballcat-common-util -- 公用的工具
| `-- ballcat-common-websocket -- 对于 spring websocket 的一些抽象封装
|-- ballcat-dependencies -- ballcat项目本身各子模块的依赖管理,以及第三方模块的依赖管理
|-- ballcat-extends -- 扩展模块,大多是对于一些第三方组件的扩展处理
| |-- ballcat-extend-dingtalk -- 钉钉的一些操作封装
| |-- ballcat-extend-kafka -- kafka 的一些操作扩展
| |-- ballcat-extend-kafka-stream -- kafka 流处理的一些操作扩展
| |-- ballcat-extend-mybatis-plus -- 基于 mybatis-plus 相关的一些扩展
| |-- ballcat-extend-pay-ali -- 针对支付宝支付的一些操作封装
| |-- ballcat-extend-pay-virtual -- 针对虚拟货币支付的一些操作封装
| |-- ballcat-extend-pay-wx -- 针对微信支付的一些操作封装
| `-- ballcat-extend-redis-module -- redis module 的扩展功能(暂时只有布隆过滤器)
|-- ballcat-starters
| |-- ballcat-spring-boot-starter-datascope -- 数据权限控制
| |-- ballcat-spring-boot-starter-dingtalk -- 钉钉集成工具
| |-- ballcat-spring-boot-starter-easyexcel -- 通过注解快速导入导出excle(easyexcel)
| |-- ballcat-spring-boot-starter-i18n -- 国际化方案
| |-- ballcat-spring-boot-starter-job -- 定时任务集成(目前仅xxl-job)
| |-- ballcat-spring-boot-starter-kafka -- 消息队列 kafka 集成
| |-- ballcat-spring-boot-starter-log -- 访问日志,操作日志,TraceId注入
| |-- ballcat-spring-boot-starter-mail -- 邮件发送
| |-- ballcat-spring-boot-starter-oss -- 对象存储(所有支持 AWS S3 协议的云存储,如阿里云,七牛云,腾讯云)
| |-- ballcat-spring-boot-starter-pay -- 支付相关
| |-- ballcat-spring-boot-starter-redis -- 提供注解使用 redis, 分布式锁,防击穿,全局key前缀等功能
| |-- ballcat-spring-boot-starter-sms -- 短信接入 starter
| |-- ballcat-spring-boot-starter-swagger -- swagger文档配置(提供无注册中心的文档聚合方案)
| |-- ballcat-spring-boot-starter-websocket -- 基于 common-websocket 的自动配置
| `-- ballcat-spring-boot-starter-xss -- xss 防注入相关
开始之前,请先确保您已经配置好以下环境
名称 | 版本 |
JDK | 1.8 |
MySQL | 5.7.8 + |
Redis | 3.2 + |
node | 10.0 + |
npm | 6.0 + |
另:请在您的开发工具中安装好 Lombok
插件,Lombok 的使用参看其 官方文档
最新版本的 Idea 中已经自带了 Lombok 插件
•版本: mysql5.7.8+•默认字符集:utf8mb4•默认排序规则:utf8mb4_general_ci
按下面顺序依次执行 ballcat/docs
目录下的数据库脚本:
# 建库语句
scheme.sql
# 核心库
ballcat.sql
# 国际化相关 SQL, 无需国际化功能则不用执行此处代码
ballcat-i18n.sql
建议使用 switchHost 软件管理hosts配置!
也可直接修改本地host文件: windows系统下host文件位于 C:\Windows\System32\drivers\etc\hosts
新增如下host:
127.0.0.1 ballcat-mysql
127.0.0.1 ballcat-redis
127.0.0.1 ballcat-admin
其中 127.0.0.1
按需替换成开发环境 ip
git clone https://github.com/ballcat-projects/ballcat-boot.git
直接在开发工具中启动 SpringBoot 的启动类 AdminApplication
即可
git clone https://github.com/ballcat-projects/ballcat-ui-vue.git
安装项目依赖,使用 yarn 或 npm 都可以
# 安装依赖
yarn install
----- 或者 --------
# 安装依赖
npm install
打开命令行进入项目根目录,或 在 IDE 提供的命令行工具中执行
# 启动服务
yarn serve
----- 或者 -----
# 启动服务
npm run serve
默认前端项目路径:http://localhost:8000/
默认用户名密码:admin / a123456
参看官方文档,快速搭建一章: http://www.ballcat.cn/guide/quick-start.html
快速开始 安装 $ go get github.com/labstack/echo/... 编写 Hello, World! 创建 server.go 文件 package main import ( "net/http" "github.com/labstack/echo" ) func main() { e := echo.New() e.GET("/", fu
一面 8.14 自我介绍 实习内容,没有深挖 Hive 的存储格式 orc parquet 有没有了解过Cube, grouping sets 有没有了解过 group by ,sort by,cluster by ,distribute by 的区别 Mr的工作流程 Yarn的调度框架 Hive内部表外部表区别 Lag lead first_value last_value含义 Row_numb
Hello World 如何调试 如何新增一个Controller 如何使用models/dao 如何使用models/service
介绍 通过本章节你可以了解到 Vant 的安装方法和基本使用姿势。 安装 通过 npm 安装 在现有项目中使用 Vant 时,可以通过 npm 或 yarn 进行安装: # Vue 2 项目,安装 Vant 2.x 版本: npm i vant -S # Vue 3 项目,安装 Vant 3.x 版本: npm i vant@next -S 通过 CDN 安装 使用 Vant 最简单的方法是直
安装 npm i feart --save-dev # or yarn add feart 引入组件 No.1 : 使用 babel-plugin-import (推荐) # 安装 babel-plugin-import 插件 npm i babel-plugin-import --save-dev // 在 .babelrc 或 babel.config.js 中添加插件配置 {
本节课程提供一个使用 Spark 的快速介绍,首先我们使用 Spark 的交互式 shell(用 Python 或 Scala) 介绍它的 API。当演示如何在 Java, Scala 和 Python 写独立的程序时,看编程指南里完整的参考。 依照这个指南,首先从 Spark 网站下载一个 Spark 发行包。因为我们不会使用 HDFS,你可以下载任何 Hadoop 版本的包。 Spark Sh
快速上手 本节将介绍如何在项目中使用 Element。 使用 vue-cli@3 我们为新版的 vue-cli 准备了相应的 Element 插件,你可以用它们快速地搭建一个基于 Element 的项目。 使用 Starter Kit 我们提供了通用的项目模板,你可以直接使用。对于 Laravel 用户,我们也准备了相应的模板,同样可以直接下载使用。 如果不希望使用我们提供的模板,请继续阅读。 引
新手教程项目:cube-application-guide 遇到问题,先移步 QA 使用 nuxt,请参考示例仓库 脚手架 vue-cli >= 3 如果你正在使用新版本的 Vue CLI vue-cli@3,那么推荐你直接使用 vue-cli-plugin-cube-ui 插件。在你初始化完项目后直接执行 vue add cube-ui 即可。 在执行的时候,会询问一些配置项,这个和老版本的 模