BallCatJava 快速開發(fā)腳手架
簡介
BallCat 旨在為項目快速開發(fā)提供一系列的基礎(chǔ)能力,方便使用者根據(jù)項目需求快速進(jìn)行功能拓展。
在以前使用其他后臺管理腳手架進(jìn)行開發(fā)時,經(jīng)常會遇到因為項目業(yè)務(wù)原因需要進(jìn)行二開的問題,在長期的開發(fā)后,一旦源項目進(jìn)行迭代升級,很難進(jìn)行同步更新。
為了解決這一問題,BallCat 將自身所有的業(yè)務(wù)和功能都設(shè)計為可插拔的依賴,方便用戶自由組裝和卸載。
開發(fā)時,用戶以依賴的方式引入 BallCat 所提供的模塊,當(dāng) BallCat 項目升級時,用戶只需同步更新版本號,即可獲得功能更新。
Ballcat 已將所有 JAR 包都推送至中央倉庫,也會為每個版本的升級改動列出詳細(xì)的更新日志,以及增量 SQL。
如果在使用中遇到了必須通過二開修改源碼才能解決的問題或功能時,歡迎提 issues,如果功能具有通用性,我們會為 BallCat 添加此能力,也歡迎直接 PR 你的改動。
? Github 地址 :https://github.com/ballcat-projects/ballcat
? Gitee 地址:https://gitee.com/ballcat-projects/ballcat (如果 Github 訪問速度比較慢的話,可以訪問 Gitee )
? 文檔地址:http://www.ballcat.cn/
技術(shù)棧
?后端 :Spring Boot、Spring Security、Spring Security OAuth2、Mybatis Plus、Hutool
?前端 :Vue、Vue Router、Vuex、Axios、Ant Design Vue(前端對應(yīng)的 react 版本已經(jīng)在開發(fā)中,Vue3 版本也是未來肯定要支持的)
相關(guān)倉庫
| 項目 | 簡介 | 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 | 單體應(yīng)用模板項目 | https://gitee.com/ballcat-projects/ballcat-boot | https://github.com/ballcat-projects/ballcat-boot |
注意 ballcat 是核心組件倉庫,如果需要啟動后端服務(wù),請使用 ballcat-boot
項目演示
后臺管理
演示地址 (賬戶:admin ;密碼:a123456) :
http://preview.ballcat.cn/
演示效果:
代碼生成器
代碼生成器提供了在線編輯模板的功能,以及多數(shù)據(jù)源的支持。
只需啟動一個代碼生成器服務(wù)放在測試服,所有項目需要生成代碼時都可以復(fù)用此生成器,減少了頻繁切換項目啟動生成器的繁瑣。
演示地址:
http://codegen.ballcat.cn/
演示效果:
業(yè)務(wù)模塊
BallCat 為后臺管理的一些基本需求提供了以下五個業(yè)務(wù)模塊,用戶可以按需引入:
?ballcat-auth(授權(quán)模塊) :用于支撐 OAuth2 的授權(quán)服務(wù)器,集成了登錄圖像驗證碼,登錄AES密碼解密過濾器等相關(guān)功能。目前使用 Spring-Security-OAuth2 作為基礎(chǔ),后續(xù)將遷移到 spring-authorization-server 項目。?ballcat-system(系統(tǒng)模塊) :提供了用戶管理、角色管理、菜單管理、組織架構(gòu)、字典管理、系統(tǒng)配置等這些后臺管理系統(tǒng)中不可或缺的核心功能。
?ballcat-log(日志模塊) :提供了登錄日志、操作日志、訪問日志等日志記錄功能,提供了 TraceId,可串聯(lián)一次請求中的所有日志信息。日志默認(rèn)存儲位置在 mysql 中,用戶可以按需定制日志處理邏輯。
?ballcat-i18n(國際化模塊) :提供了基于數(shù)據(jù)庫的國際化信息配置存儲方案,提供 local + redis 雙重緩存處理,提升國際化處理效率。
?ballcat-notify(通知模塊) :目前提供了系統(tǒng)公告的能力,下個版本將會新增通知相關(guān)的功能。
BallCat 項目模塊結(jié)構(gòu)
功能模塊
功能模塊和業(yè)務(wù)無關(guān),非 ballcat 項目也可以引入這些模塊獲得功能增強,用戶按照實際業(yè)務(wù)需求選擇模塊進(jìn)行集成。
包括但不限于以下這些功能 :
?數(shù)據(jù)權(quán)限控制,在 orm 層實現(xiàn),基于 Jsqparse 解析 Sql,進(jìn)行權(quán)限范圍的 sql 注入
?國際化功能,不僅支持 spring 原生的文件配置形式,還可以自定義動態(tài)加載國際化配置
?注解使用 redis 緩存、分布式鎖,防擊穿,全局key前綴等功能
?注解快速實現(xiàn) excel 導(dǎo)入導(dǎo)出功能
?支付功能:包括支付寶、微信、USDT 虛擬貨幣等
?基于 S3 協(xié)議的對象存儲封裝,方便一套代碼兼容大部分云平臺,如阿里云,七牛云,騰訊云
目前提供的功能模塊列表
|-- ballcat-common -- 基礎(chǔ)公用組件| |-- ballcat-common-core -- 核心組件| |-- ballcat-common-desensitize -- 脫敏基礎(chǔ)組件| |-- ballcat-common-i18n -- 國際化基礎(chǔ)組件| |-- ballcat-common-idempoten -- 冪等基礎(chǔ)組件| |-- ballcat-common-log -- 日志基礎(chǔ)組件| |-- ballcat-common-model -- 公用的一些模型| |-- ballcat-common-redis -- redis基礎(chǔ)組件| |-- ballcat-common-security -- 安全相關(guān),以及資源服務(wù)器配置| |-- ballcat-common-util -- 公用的工具| `-- ballcat-common-websocket -- 對于 spring websocket 的一些抽象封裝|-- ballcat-dependencies -- ballcat項目本身各子模塊的依賴管理,以及第三方模塊的依賴管理|-- ballcat-extends -- 擴展模塊,大多是對于一些第三方組件的擴展處理| |-- ballcat-extend-dingtalk -- 釘釘?shù)囊恍┎僮鞣庋b| |-- ballcat-extend-kafka -- kafka 的一些操作擴展| |-- ballcat-extend-kafka-stream -- kafka 流處理的一些操作擴展| |-- ballcat-extend-mybatis-plus -- 基于 mybatis-plus 相關(guān)的一些擴展| |-- 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 -- 數(shù)據(jù)權(quán)限控制| |-- ballcat-spring-boot-starter-dingtalk -- 釘釘集成工具| |-- ballcat-spring-boot-starter-easyexcel -- 通過注解快速導(dǎo)入導(dǎo)出excle(easyexcel)| |-- ballcat-spring-boot-starter-i18n -- 國際化方案| |-- ballcat-spring-boot-starter-job -- 定時任務(wù)集成(目前僅xxl-job)| |-- ballcat-spring-boot-starter-kafka -- 消息隊列 kafka 集成| |-- ballcat-spring-boot-starter-log -- 訪問日志,操作日志,TraceId注入| |-- ballcat-spring-boot-starter-mail -- 郵件發(fā)送| |-- ballcat-spring-boot-starter-oss -- 對象存儲(所有支持 AWS S3 協(xié)議的云存儲,如阿里云,七牛云,騰訊云)| |-- ballcat-spring-boot-starter-pay -- 支付相關(guān)| |-- 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 防注入相關(guān)
快速上手
環(huán)境準(zhǔn)備
開始之前,請先確保您已經(jīng)配置好以下環(huán)境
| 名稱 | 版本 |
| JDK | 1.8 |
| MySQL | 5.7.8 + |
| Redis | 3.2 + |
| node | 10.0 + |
| npm | 6.0 + |
另:請在您的開發(fā)工具中安裝好 Lombok 插件,Lombok 的使用參看其 官方文檔
最新版本的 Idea 中已經(jīng)自帶了 Lombok 插件
數(shù)據(jù)庫配置
?版本: mysql5.7.8+?默認(rèn)字符集:utf8mb4?默認(rèn)排序規(guī)則:utf8mb4_general_ci
按下面順序依次執(zhí)行 ballcat/docs 目錄下的數(shù)據(jù)庫腳本:
# 建庫語句scheme.sql# 核心庫ballcat.sql# 國際化相關(guān) SQL, 無需國際化功能則不用執(zhí)行此處代碼ballcat-i18n.sql
配置本地hosts
建議使用 switchHost 軟件管理hosts配置!
也可直接修改本地host文件: windows系統(tǒng)下host文件位于 C:\Windows\System32\drivers\etc\hosts
新增如下host:
127.0.0.1 ballcat-mysql127.0.0.1 ballcat-redis127.0.0.1 ballcat-admin
其中 127.0.0.1 按需替換成開發(fā)環(huán)境 ip
服務(wù)端準(zhǔn)備
代碼下載
git clone https://github.com/ballcat-projects/ballcat-boot.git
項目啟動
直接在開發(fā)工具中啟動 SpringBoot 的啟動類 AdminApplication 即可
前端準(zhǔn)備
代碼下載
git clone https://github.com/ballcat-projects/ballcat-ui-vue.git
依賴安裝
安裝項目依賴,使用 yarn 或 npm 都可以
# 安裝依賴yarn install----- 或者 --------# 安裝依賴npm install
項目啟動
打開命令行進(jìn)入項目根目錄,或 在 IDE 提供的命令行工具中執(zhí)行
# 啟動服務(wù)yarn serve----- 或者 -----# 啟動服務(wù)npm run serve
訪問項目
默認(rèn)前端項目路徑:http://localhost:8000/
默認(rèn)用戶名密碼:admin / a123456
更多文檔
參看官方文檔,快速搭建一章: http://www.ballcat.cn/guide/quick-start.html
