当前位置: 首页 > 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. 产品经理首先是产品的深度用户 自己设计的产品都没使用过的产品经理,如何明白用户使用的问题,如何解决问题,所以产品经理肯…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...