当前位置: 首页 > news >正文

【开源项目】BallCat 项目脚手架

简介

  

🎉🎉🎉 基于 React 和 Ant Design 版本的前端 ballcat-ui-react 已发布,欢迎大家尝鲜使用

BallCat 组织旨在为项目快速开发提供一系列的基础能力,方便使用者根据项目需求快速进行功能拓展。

在以前使用其他后台管理脚手架进行开发时,经常会遇到因为项目业务原因需要进行二开的问题,在长期的开发后,一旦源项目进行迭代升级,很难进行同步更新。

为了解决这一问题,BallCat 将自身所有的业务和功能都设计为可插拔的依赖,方便用户自由组装和卸载。

开发时,用户以依赖的方式引入 BallCat 所提供的模块,当 BallCat 项目升级时,用户只需同步更新版本号,即可获得功能更新。

Ballcat 已将所有 JAR 包都推送至中央仓库,也会为每个版本的升级改动列出详细的更新日志,以及增量 SQL。

如果在使用中遇到了必须通过二开修改源码才能解决的问题或功能时,欢迎提 issues,如果功能具有通用性,我们会为 BallCat 添加此能力,也欢迎直接 PR 你的改动。

  • Github 地址 :GitHub - ballcat-projects/ballcat: 😸一个快速开发脚手架,快速搭建企业级后台管理系统,并提供多种便捷starter进行功能扩展。主要功能包括前后台用户分离,菜单权限,数据权限,定时任务,访问日志,操作日志,异常日志,统一异常处理,XSS过滤,SQL防注入,国际化 等多种功能
  • Gitee 地址:ballcat: 😸一个快速开发脚手架,快速搭建企业级后台管理系统,并提供多种便捷starter进行功能扩展。主要功能包括前后台用户分离,菜单权限,数据权限,定时任务,访问日志,操作日志,异常日志,统一异常处理,XSS过滤,SQL防注入等多种功能 (如果 Github 访问速度比较慢的话,可以访问 Gitee )
  • 文档地址:| BallCat

技术栈

  • 后端 :Spring Boot、Spring Security、Spring Security OAuth2、Mybatis Plus、Hutool

  • 前端 :

    • Vue、Vue Router、Vuex、Axios、Ant Design Vue(目前基于 Vue2,Vue3 版本将会跟随 AntDesignVue 3.x 一起上线)
    • React、Ant Design、Umi、TypeScript

相关仓库

项目简介gitee 地址github 地址
ballcat核心项目组件ballcat: 😸一个快速开发脚手架,快速搭建企业级后台管理系统,并提供多种便捷starter进行功能扩展。主要功能包括前后台用户分离,菜单权限,数据权限,定时任务,访问日志,操作日志,异常日志,统一异常处理,XSS过滤,SQL防注入等多种功能GitHub - ballcat-projects/ballcat: 😸一个快速开发脚手架,快速搭建企业级后台管理系统,并提供多种便捷starter进行功能扩展。主要功能包括前后台用户分离,菜单权限,数据权限,定时任务,访问日志,操作日志,异常日志,统一异常处理,XSS过滤,SQL防注入,国际化 等多种功能
ballcat-ui-vue管理后台前端ballcat-ui-vue: 🐱‍🏍 ballcat 权限管理的前端Vue实现GitHub - ballcat-projects/ballcat-ui-vue: 🐱‍🏍 ballcat 权限管理的前端Vue实现
ballcat-ui-react管理后台前端ballcat-ui-react: 🐱‍🏍 ballcat 权限管理的前端 React 实现GitHub - ballcat-projects/ballcat-ui-react: 🐱‍🏍 ballcat 权限管理的前端React实现
ballcat-codegen代码生成器ballcat-codegen: 🛠ballcat 组织开源的一款代码生成器,支持 Mysql、Oracle、Postgre、SqlSserver 等多种数据源,可在线管理数据源以及模板数据GitHub - ballcat-projects/ballcat-codegen: 🛠ballcat 的代码生成器
ballcat-samples使用示例ballcat-samples: 🐱‍👓ballcat 项目的一些使用示例GitHub - ballcat-projects/ballcat-samples: 🐱‍👓ballcat 项目的一些使用示例
ballcat-boot单体应用模板项目ballcat-boot: 🐱‍🚀 Ballcat 基于 SpringBoot 的快速启动项目GitHub - ballcat-projects/ballcat-boot: 🐱‍🚀 Ballcat 基于 SpringBoot 的快速启动项目

注意 ballcat 是核心组件仓库,如果需要启动后端服务,请使用 ballcat-boot

项目演示

后台管理

演示地址 (账户:admin ;密码:a123456) :

Ballcat Admin UI 预览

演示效果

代码生成器

代码生成器提供了在线编辑模板的功能,以及多数据源的支持。

只需启动一个代码生成器服务放在测试服,所有项目需要生成代码时都可以复用此生成器,减少了频繁切换项目启动生成器的繁琐。

演示地址

代码生成器

演示效果

业务模块

BallCat 为后台管理的一些基本需求提供了以下五个业务模块,用户可以按需引入:

  • ballcat-auth(授权模块) :用于支撑 OAuth2 的授权服务器,集成了登录图像验证码,登录AES密码解密过滤器等相关功能。目前使用 Spring-Security-OAuth2 作为基础,后续将迁移到 spring-authorization-server 项目。
  • ballcat-system(系统模块) :提供了用户管理、角色管理、菜单管理、组织架构、字典管理、系统配置等这些后台管理系统中不可或缺的核心功能。
  • ballcat-log(日志模块) :提供了登录日志、操作日志、访问日志等日志记录功能,提供了 TraceId,可串联一次请求中的所有日志信息。日志默认存储位置在 mysql 中,用户可以按需定制日志处理逻辑。
  • ballcat-i18n(国际化模块) :提供了基于数据库的国际化信息配置存储方案,提供 local + redis 双重缓存处理,提升国际化处理效率。
  • ballcat-notify(通知模块) :目前提供了系统公告的能力,下个版本将会新增通知相关的功能。

功能模块

功能模块和业务无关,非 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-openapi          -- 对 springdoc-openapi 的一点封装扩展
|   |-- ballcat-extend-pay-ali          -- 针对支付宝支付的一些操作封装
|   |-- ballcat-extend-pay-virtual      -- 针对虚拟货币支付的一些操作封装
|   |-- ballcat-extend-pay-wx           -- 针对微信支付的一些操作封装
|   |-- ballcat-extend-redis-module     -- redis module 的扩展功能(暂时只有布隆过滤器)
|   `-- ballcat-extend-tesseract        -- 对 OCR 文字识别工具的一个操作封装
|-- ballcat-starters                -- Spring Boot快速启动器      
|   |-- ballcat-spring-boot-starter-datascope   -- 数据权限控制
|   |-- ballcat-spring-boot-starter-dingtalk    -- 钉钉集成工具
|   |-- ballcat-spring-boot-starter-easyexcel   -- 通过注解快速导入导出excle(easyexcel)
|   |-- ballcat-spring-boot-starter-file        -- 文件上传 FTP or Local
|   |-- ballcat-spring-boot-starter-i18n        -- 国际化方案
|   |-- ballcat-spring-boot-starter-idempotent  -- 幂等处理方案
|   |-- ballcat-spring-boot-starter-ip2region   -- 离线IP查询方案
|   |-- 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-web         -- Web工程封装
|   |-- ballcat-spring-boot-starter-websocket	-- 基于 common-websocket 的自动配置
|   `-- ballcat-spring-boot-starter-xss	        -- xss 防注入相关

相关文章:

【开源项目】BallCat 项目脚手架

简介 🎉🎉🎉 基于 React 和 Ant Design 版本的前端 ballcat-ui-react 已发布,欢迎大家尝鲜使用 BallCat 组织旨在为项目快速开发提供一系列的基础能力,方便使用者根据项目需求快速进行功能拓展。 在以前使用其他后台管…...

KlayGE-004-InputCaps 例子分析

InputCaps处理外部输入的事件 该例子主要由两部分内容: 外部输入事件获取 ​ 可以处理keyboard、mouse、joystick、touch、sensor的输入事件 显示一个ui图标按钮 Input 定义监听事件类型: KlayGE::InputActionDefine actions[] {InputActionDefin…...

组装机经验、软硬件故障排除、网络问题

目录 主板 CPU 内存 显卡 判断显卡好坏的步骤 新买的显卡安装后显示器不亮 电源 其他 网络问题 主板 1.不同主板对于不同数量的内存条安装的位置有要求,要按照主板规定的位置安装不同数量的内存条,特别是服务器主板,否则系统可能起…...

【行为型模式】责任链模式

文章目录1、简介2、结构3、实现方式3.1、案例引入3.2、结构分析3.3、具体实现4、责任链优缺点5、应用场景1、简介 责任链模式(Chain of Responsibility)是一种行为型设计模式,它允许对象在链上依次处理请求,用户只需要将请求发送到责任链上即可&#xf…...

C++命令模式 指挥家:掌控命令模式之美

C指挥家:掌控命令模式之美 (C Conductor: Master the Beauty of Command Pattern一、引言 (Introduction)1.1 命令模式概述 (Overview of Command Pattern)1.2 命令模式的应用场景 (Application Scenarios of Command Pattern)二、命令模式的基本概念 (Basic Concep…...

学会 制作极简搜索浏览器 —— 并将 ChatGPT 接入浏览器

前期回顾 Vue3 Ts Vite pnpm 项目中集成 —— eslint 、prettier、stylelint、husky、commitizen_0.活在风浪里的博客-CSDN博客搭建VIte Ts Vue3项目并集成eslint 、prettier、stylelint、huskyhttps://blog.csdn.net/m0_57904695/article/details/129950163?spm1001.2…...

NumPy 秘籍中文第二版:六、特殊数组和通用函数

原文:NumPy Cookbook - Second Edition 协议:CC BY-NC-SA 4.0 译者:飞龙 在本章中,我们将介绍以下秘籍: 创建通用函数查找勾股三元组用chararray执行字符串操作创建一个遮罩数组忽略负值和极值使用recarray函数创建一…...

各种交叉编译工具链的区别

目录 1 命名规则 2 实例 2.1 arm-none-eabi-gcc 2.2 arm-none-linux-gnueabi-gcc 2.3 arm-eabi-gcc 2.4 armcc 2.5 arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gcc 3 gnueabi和gnueabihf的区别(硬浮点、软浮点) 4 Linaro公司出品的交叉编译工具链 5 ARM公司出…...

密度聚类算法(DBSCAN)实验案例

密度聚类算法(DBSCAN)实验案例 描述 DBSCAN是一种强大的基于密度的聚类算法,从直观效果上看,DBSCAN算法可以找到样本点的全部密集区域,并把这些密集区域当做一个一个的聚类簇。DBSCAN的一个巨大优势是可以对任意形状…...

第07章_面向对象编程(进阶)

第07章_面向对象编程(进阶) 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 1. 关键字:this 1.1 this是什么? 在Java中,this关键字不算难理解…...

异常的讲解(2)

目录 throws异常处理 基本介绍 throws异常处理注意事项和使用细节 自定义异常 基本概念 自定义异常的步骤 throw 和throws的区别 本章作业 第一题 第二题 第三题 第四题 throws异常处理 基本介绍 1)如果一个方法(中的语句执行时)可能生成某种异常,但是…...

jvm内存结构

1. 栈 程序计数器 2. 虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区 1.2栈内存溢出 栈帧过多导致栈内存溢出 /*** 演示栈内存溢出 java.lang.StackOverflowError* -Xss256k*/ public class Demo1_2 {private static int count;public static void main(String[] args) {try {meth…...

要刹车?生成式AI迎新规、行业连发ChatGPT“警报”、多国考虑严监管

4月13日消息,据中国移动通信联合会元宇宙产业工作委员会网站,中国移动通信联合会元宇宙产业工作委员会、中国通信工业协会区块链专业委员会等,共同发布“关于元宇宙生成式人工智能(类 ChatGPT)应用的行业提示”。提示内…...

轻松掌握Qt FTP 机制:实现高效文件传输

轻松掌握Qt FTP:实现高效文件传输一、简介(Introduction)1.1 文件传输协议(FTP)Qt及其网络模块(Qt and its Network Module)QNetwork:二、QNetworkAccessManager上传实例(Qt FTP Upl…...

用AI帮我写一篇关于FPGA的文章,并推荐最热门的FPGA开源项目

FPGA定义 FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,可以在硬件电路中实现各种不同的逻辑功能。与ASIC(Application Specific Integrated Circuit,特定应用集成电路)相比,FPGA…...

从兴趣或问题出发

当我们还沉寂在移动互联网给生活带来众多便利中,以 ChartGPT 为代表的 AI 时代已彻底到来。科技的发展,时刻在改变着我们的生活,我们需要不断地学习新知识和掌握新技能才能享受变化带来的便利,以及自身不被社会淘汰。 因此&#…...

C++ | 探究拷贝对象时的一些编译器优化

👑作者主页:烽起黎明 🏠学习社区:烈火神盾 🔗专栏链接:C 文章目录前言一、传值传参二、传引用传参三、传值返回拷贝构造和赋值重载的辨析四、传引用返回【❌】五、传匿名对象返回六、总计与提炼前言 在传参…...

linux工具gcc/g++/gdb/git的使用

目录 gcc/g 基本概念 指令集 函数库 (重要) gdb使用 基本概念 指令集 项目自动化构建工具make/makefile 进度条小程序 ​编辑 git三板斧 创建仓库 git add git commit git push git status git log gcc/g 基本概念 gcc/g称为编译器…...

Direct3D 12——纹理——纹理

纹理不同于缓冲区资源,因为缓冲区资源仅存储数据数组,而纹理却可以具有多个mipmap层级(后 文有介绍),GPU会基于这个层级进行相应的特殊操作,例如运用过滤器以及多重采样。支持这些特殊 的操作纹理资源都被限定为一些特定的数据格式…...

产品经理必读 | 俞军产品经理十二条军规

最近在学习《俞军产品方法论》,觉得俞军总结的十二条产品经理原则非常受用,分享给大家。 01. 产品经理首先是产品的深度用户 自己设计的产品都没使用过的产品经理,如何明白用户使用的问题,如何解决问题,所以产品经理肯…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...