Go to file
Charles7c 706e488e84 style: 优化部分代码格式
1.部分方法返回调整为内联
2.已抽取 ExcelBaseEnumConverter 至 ContiNew Starter CRUD 模块
3.移除无用类 UpdateStatusReq
2024-01-13 16:13:12 +08:00
.gitee refactor: 根据发展需要,拆分前端项目 continew-admin-ui 到独立仓库 2024-01-02 21:30:59 +08:00
.github refactor: 根据发展需要,拆分前端项目 continew-admin-ui 到独立仓库 2024-01-02 21:30:59 +08:00
.idea chore: 更新图标文件 2024-01-05 19:43:35 +08:00
.image release: v1.3.0 2023-11-04 21:53:26 +08:00
.style style: 优化全局代码格式 2024-01-10 22:08:45 +08:00
continew-admin-common style: 优化部分代码格式 2024-01-13 16:13:12 +08:00
continew-admin-monitor refactor: 适配 Crane4j 数据填充组件 2024-01-12 23:19:00 +08:00
continew-admin-system style: 优化部分代码格式 2024-01-13 16:13:12 +08:00
continew-admin-tool docs: 完善项目模块描述,重构 README 项目结构,再度降低上手难度 2024-01-12 19:28:13 +08:00
continew-admin-webapi style: 优化部分代码格式 2024-01-13 16:13:12 +08:00
docker refactor: 重构原有文件上传接口并优化配置文件配置格式 2023-12-29 21:44:34 +08:00
.gitignore chore: 新增 idea 图标 2023-11-19 18:20:19 +08:00
CHANGELOG.md release: v2.2.0 2024-01-01 00:18:06 +08:00
LICENSE 优化:引入 spotless 插件(代码等格式化插件),已对现有代码执行了格式优化(mvn spotless:apply) 2022-12-10 18:41:46 +08:00
lombok.config refactor: 移除所有的 @Accessors(chain = true),并全局配置禁止使用 2023-08-11 23:59:44 +08:00
pom.xml chore: continew-starter 1.1.1 => 1.2.0 2024-01-11 22:30:31 +08:00
README.md docs: 完善项目模块描述,重构 README 项目结构,再度降低上手难度 2024-01-12 19:28:13 +08:00

ContiNew Admin 中后台管理框架

License Release GitHub stars GitHub forks Gitee stars Gitee forks Release Release Release

📚 在线文档 | 🚀 演示地址(账号/密码admin/admin123

简介

ContiNew AdminContinue New Admin持续迭代优化的前后端分离中后台管理系统框架。开箱即用持续提供舒适的开发体验依托开源协作模式提升技术透明度、放大集体智慧、共创优秀实践源源不断地为企业级项目开发提供助力。

当前采用的技术栈Spring Boot3Java17、Vue3 & Arco Design、Sa-Token、MyBatis Plus、Redisson、Liquibase、JustAuth、Easy Excel、Hutool、TypeScript、Vite4 等。

项目起源

我热衷于做数据归档,归档后的数据可以提高学习/工作效率,为记忆“减负”,在持续的数据归档中,优质的“沉淀”会带来非匀速、跨越式的学习/工作体验。数据归档是一件需要持续去做的事情

从接触程序代码的第一天,我的程序数据归档也随之开始了,刷过的算法题、笔记、对接各种组件的配置文件,甚至于一些亮眼的样式设计、“如诗”的代码片段。这些数据的沉淀丰富了我的解决方案,提高了我的编程效率,逐渐为各种场景落实成了一个个雏形程序。再后来,我意识到,我归档的这些雏形程序,有一个更为妥贴的名称:程序框架/脚手架

技术的发展,导致这些雏形程序的生命周期很是短暂,它们有别于我归档的其他数据,有时由于工作的原因,没有时间很好的去沉淀它们,在使用时变得越来越不顺手。所以,某段时间,我放弃了维护,而是去采用一些更为成熟的框架。

不过,在陆续几年使用了一些同类框架之后,我前后遇到了一些困难:

  1. 想要找到一个扩展性佳,代码规范良好,开发体验舒适的框架很不容易,总是差些什么
  2. 对于初始使用似乎过度设计,上手困难?或是功能不全,全在专业版(收费)?更甚者,代码阅读性差,文档还要收费
  3. 好不容易找到一些相较合适的,没过“多久”,部分作者可能谈恋爱了,没法对外发“电”了
  4. 提 PR 可能又和原作者理念不一致,对部分框架进行二开,但又会囿于原始设计
  5. 在工作中,很多想法/设计受限于客户需求、开发工期,必须优先以交付为导向,想要依靠工作来完善一个脚手架,既不现实也不甚美妙

最终,我选择自己在业余时间从头写一个试试,从添加每一个依赖开始,我希望它能持续的迭代优化、演进,所以我把它命名为 ContiNewContinue New。我希望它不仅仅能吸收我的需求,而是依托开源协作模式,接受更多的可能性,沉淀更优秀的思考,设计。另外,开源出来,如果能为更广泛的小伙伴提供舒适的开发体验那就更好了。

项目源码

后端源码 前端源码
GitHub github.com/Charles7c/continew-admin github.com/Charles7c/continew-admin-ui
Gitee gitee.com/Charles7c/continew-admin gitee.com/Charles7c/continew-admin-ui

主要特性

  • 🔥 下方部分通用基础能力及配置,已抽取到 ContiNew Starter 项目,现 已发布至 Maven 中央仓库,为 Spring Boot Web 项目开发提供更灵活的助力
  • 精选技术栈:使用综合考虑成熟度、流行性、发展潜力较佳的技术栈,包括 Spring Boot、MyBatis Plus、Sa-Token、Hutool 等
  • 高效率开发:后端提供了 CRUD 组件,在 Controller 中只需添加一个注解,即可自动生成增、删、改、查、分页、列表、树列表等 API
  • 提供代码生成功能,根据用户提供的项目信息和配置,自动生成前后端项目结构、代码文件和部分逻辑代码,提高开发效率
  • 一个注解解决一个条件查询,基于注解的通用查询方式,降低拼接 MyBatis Plus QueryWrapper 的烦恼
  • 提供一套 Base 基类BaseDO、BaseResp、BaseController、BaseService、扩展版 BaseMapper 等),方便复用和扩展
  • 编写或基于 Hutool 扩展部分工具类,提供校验工具和实践,提高开发效率(能 PR 到 Hutool 的已尽量 PR
  • 支持 API 级别的功能权限与数据权限,可自定义操作
  • 前后端统一异常拦截处理,统一输出异常信息,避免繁琐的异常判断
  • 自动初始化数据:通过 Liquibase 管理数据库脚本版本记录,并在系统第一次启动时自动进行数据初始化,无须额外配置导入
  • 提供多项实用基础配置例如Jackson 针对日期、通用枚举的序列化、反序列化配置,统一线程池配置等
  • 良好的代码、配置文件结构和命名,完善的代码注释甚至包括 Git Commit 信息、接口文档参数示例,遵循阿里巴巴 《Java开发手册(黄山版)》 的代码规范,保证代码质量和可维护性
  • 更多细节及实践,敬请探索与关注

系统功能

Tip

更多功能和优化正在赶来💦,最新项目计划、进展请进群或关注 任务清单更新日志

  • 个人中心:支持基础信息修改、安全设置(密码修改、邮箱绑定、手机号绑定(并提供行为验证码、短信限流等安全处理)、第三方账号绑定/解绑)、头像裁剪上传、个人操作日志查看
  • 用户管理:提供用户的相关配置,新增用户后,默认密码为 123456
  • 部门管理:可配置系统组织架构,树形表格展示
  • 角色管理:对权限与菜单进行分配,可根据部门设置角色的数据权限
  • 菜单管理:已实现菜单动态路由,后端可配置化,支持多级菜单
  • 公告管理:提供公告的发布、查看和删除等功能。管理员可以在后台发布公告,并可以设置公告的生效时间、终止时间,以 markdown-it 为内核渲染 Markdown 格式内容显示
  • 消息管理:提供消息查看、标记已读、全部已读、删除等功能(适配对接导航栏站内信功能)
  • 字典管理:提供对系统公用数据字典的维护,例如:公告类型,支持字典标签背景色和排序等配置
  • 文件管理:提供文件上传、下载、预览(目前支持图片、音视频)、重命名、切换视图(列表、网格)等功能
  • 存储库管理:提供文件存储库新增、编辑、删除、导出等功能
  • 系统配置提供修改系统标题、Logo、favicon 等基础配置功能,以方便用户系统与其自身品牌形象保持一致(暂未开放高级配置)
  • 代码生成:提供根据数据库表自动生成相应的前后端 CRUD 代码的功能
  • 在线用户:管理当前登录用户,可一键踢下线
  • 日志管理:提供在线用户监控、登录日志监控、操作日志监控和系统日志监控等监控功能

系统截图

Tip

受篇幅长度及功能更新频率影响,下方仅为系统 部分 功能于 2023年11月4日 进行的截图,更多新增功能及细节请登录演示环境或 clone 代码到本地启动查看。

登录页面 仪表盘
仪表盘-查看公告 个人中心-安全设置
个人中心-安全设置-修改邮箱 个人中心-修改邮箱-发送验证码
个人中心-修改邮箱-邮箱验证码 个人中心-操作日志
数据可视化-分析页 数据可视化-多维数据分析页
系统管理-用户管理-列表 系统管理-用户管理-新增
系统管理-部门管理-列表 系统管理-部门管理-新增
系统管理-角色管理-列表 系统管理-角色管理-新增
系统管理-菜单管理-列表 系统管理-菜单管理-新增
系统管理-公告管理-列表 系统管理-公告管理-新增
系统管理-消息管理-列表 站内信
系统管理-字典管理-列表 系统管理-字典管理-新增
系统管理-系统配置 系统管理-系统配置-恢复默认
系统工具-代码生成-列表 系统工具-代码生成-配置
系统监控-在线用户 系统监控-操作日志
系统监控-系统日志 系统监控-系统日志-详情

快速开始

Tip

更详细的流程,请查看在线文档《快速开始》

# 1.克隆本项目
git clone https://github.com/Charles7c/continew-admin.git

# 2.在 IDEIntelliJ IDEA/Eclipse中打开本项目

# 3.修改配置文件中的数据源配置信息、Redis 配置信息、邮件配置信息等
# [3.也可以在 IntelliJ IDEA 中直接配置程序启动环境变量DB_HOST、DB_PORT、DB_USER、DB_PWD、DB_NAMEREDIS_HOST、REDIS_PORT、REDIS_PWD、REDIS_DB]

# 4.启动程序
# 4.1 启动成功:访问 http://localhost:8000/页面输出Xxx started successfully.
# 4.2 接口文档http://localhost:8000/doc.html

# 5.部署
# 5.1 Docker 部署
#   5.1.1 服务器安装好 docker 及 docker-compose参考https://blog.charles7c.top/categories/fragments/2022/10/31/CentOS%E5%AE%89%E8%A3%85Docker
#   5.1.2 执行 mvn package 进行项目打包,将 target/app 目录下的所有内容放到 /docker/continew-admin 目录下
#   5.1.3 将 docker 目录上传到服务器 / 目录下并授权chmod -R 777 /docker
#   5.1.4 修改 docker-compose.yml 中的 MySQL 配置、Redis 配置、continew-admin-server 配置、Nginx 配置
#   5.1.5 执行 docker-compose up -d 创建并后台运行所有容器
# 5.2 其他方式部署

核心技术栈

名称 版本 简介
ContiNew Starter 1.2.0-SNAPSHOT ContiNew Starter 包含了一系列经过企业实践优化的依赖包(如 MyBatis-Plus、SaToken可轻松集成到应用中为开发人员减少手动引入依赖及配置的麻烦为 Spring Boot Web 项目的灵活快速构建提供支持。
Spring Boot 3.1.7 简化 Spring 应用的初始搭建和开发过程基于“约定优于配置”的理念使开发人员不再需要定义样板化的配置。Spring Boot 3.0 开始,要求 Java 17 作为最低版本)
Undertow 2.3.10.Final 采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。
Sa-Token + JWT 1.37.0 轻量级 Java 权限认证框架,让鉴权变得简单、优雅。
MyBatis Plus 3.5.4.1 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。
dynamic-datasource-spring-boot-starter 4.2.0 基于 Spring Boot 的快速集成多数据源的启动器。
Hikari 5.0.1 JDBC 连接池,号称 “史上最快连接池”SpringBoot 在 2.0 之后,采用的默认数据库连接池就是 Hikari。
MySQL 8.0.33 体积小、速度快、总体拥有成本低,是最流行的关系型数据库管理系统之一。
mysql-connector-j 8.0.33 MySQL Java 驱动。
P6Spy 3.9.1 SQL 性能分析组件。
Liquibase 4.20.0 用于管理数据库版本,跟踪、管理和应用数据库变化。
Redisson 3.25.2 不仅仅是一个 Redis Java 客户端Redisson 充分的利用了 Redis 键值数据库提供的一系列优势,为使用者提供了一系列具有分布式特性的常用工具:分布式锁、限流器等。
Redis 7.2.3 高性能的 key-value 数据库。
X File Storage 2.0.0 一行代码将文件存储到本地、FTP、SFTP、WebDAV、阿里云 OSS、华为云 OBS...等其它兼容 S3 协议的存储平台。
SMS4J 3.0.4 短信聚合框架,轻松集成多家短信服务,解决接入多个短信 SDK 的繁琐流程。
Just Auth 1.16.6 开箱即用的整合第三方登录的开源组件,脱离繁琐的第三方登录 SDK让登录变得 So easy
Easy Excel 3.3.3 一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。
AJ-Captcha 1.3.0 Java 行为验证码包含滑动拼图、文字点选两种方式UI支持弹出和嵌入两种方式。
Easy Captcha 1.6.2 Java 图形验证码,支持 gif、中文、算术等类型可用于 Java Web、JavaSE 等项目。
Knife4j 4.4.0 前身是 swagger-bootstrap-ui集 Swagger2 和 OpenAPI3 为一体的增强解决方案。
Hutool 5.8.24 小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。
Lombok 1.18.30 在 Java 开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码,让编写的类更加简洁。

项目结构

采用按功能拆分模块的开发方式,项目目录结构如下:

Tip

下方项目目录结构是按照模块的层次顺序进行介绍的,实际 IDE 中 continew-admin-common 模块会因为字母排序原因排在上方。

continew-admin
├─ continew-admin-webapiAPI 及打包部署模块)
│  ├─ src
│  │  ├─ main
│  │  │  ├─ java/top/charles7c/continew/admin
│  │  │  │  ├─ webapi
│  │  │  │  │  ├─ auth系统认证相关 API
│  │  │  │  │  ├─ common通用相关 API
│  │  │  │  │  ├─ monitor系统监控相关 API
│  │  │  │  │  ├─ system系统管理相关 API
│  │  │  │  │  └─ tool系统工具相关 API
│  │  │  │  └─ ContiNewAdminApplication.javaSpring Boot 启动程序)
│  │  │  └─ resources
│  │  │     ├─ config核心配置目录
│  │  │     │  ├─ application-dev.yml开发环境配置文件
│  │  │     │  ├─ application-prod.yml生产环境配置文件
│  │  │     │  └─ application.yml通用配置文件
│  │  │     ├─ db/changelogLiquibase 数据脚本配置目录)
│  │  │     ├─ templates模板配置目录例如邮件模板
│  │  │     ├─ banner.txtBanner 配置文件)
│  │  │     └─ logback-spring.xml日志配置文件
│  │  └─ test测试相关代码目录
│  └─ pom.xml包含打包相关配置
├─ continew-admin-monitor系统监控模块存放系统监控相关业务功能例如在线用户、日志管理等
│  ├─ src
│  │  ├─ main
│  │  │  ├─ java/top/charles7c/continew/admin/monitor
│  │  │  │  ├─ config系统监控相关配置
│  │  │  │  ├─ enums系统监控相关枚举
│  │  │  │  ├─ mapper系统监控相关 Mapper
│  │  │  │  ├─ model系统监控相关模型
│  │  │  │  │  ├─ entity系统监控相关实体对象
│  │  │  │  │  ├─ query系统监控相关查询条件
│  │  │  │  │  └─ resp系统监控相关响应对象Response
│  │  │  │  └─ service系统监控相关业务接口及实现类
│  │  │  └─ resources
│  │  │     └─ mapper系统监控相关 Mapper XML 文件目录)
│  │  └─ test测试相关代码目录
│  └─ pom.xml
├─ continew-admin-system系统管理模块存放系统管理相关业务功能例如部门管理、角色管理、用户管理等
│  ├─ src
│  │  ├─ main
│  │  │  ├─ java/top/charles7c/continew/admin
│  │  │  │  ├─ auth系统认证相关业务
│  │  │  │  │  ├─ config系统认证相关配置
│  │  │  │  │  ├─ model系统认证相关模型
│  │  │  │  │  │  ├─ query系统认证相关查询条件
│  │  │  │  │  │  ├─ req系统认证相关请求对象Request
│  │  │  │  │  │  └─ resp系统认证相关响应对象Response
│  │  │  │  │  └─ service系统认证相关业务接口及实现类
│  │  │  │  └─ system系统管理相关业务
│  │  │  │     ├─ config系统管理相关配置
│  │  │  │     ├─ enums系统管理相关枚举
│  │  │  │     ├─ mapper系统管理相关 Mapper
│  │  │  │     ├─ model系统管理相关模型
│  │  │  │     │  ├─ entity系统管理相关实体对象
│  │  │  │     │  ├─ query系统管理相关查询条件
│  │  │  │     │  ├─ req系统管理相关请求对象Request
│  │  │  │     │  └─ resp系统管理相关响应对象Response
│  │  │  │     └─ service系统管理相关业务接口及实现类
│  │  │  └─ resources
│  │  │     └─ mapper系统管理相关 Mapper XML 文件目录)
│  │  └─ test测试相关代码目录
│  └─ pom.xml
├─ continew-admin-tool系统工具模块存放系统工具相关业务功能例如代码生成等
│  ├─ src
│  │  ├─ main
│  │  │  ├─ java/top/charles7c/continew/admin/tool
│  │  │  │  ├─ config系统工具相关配置
│  │  │  │  ├─ enums系统工具相关枚举
│  │  │  │  ├─ mapper系统工具相关 Mapper
│  │  │  │  ├─ model系统工具相关模型
│  │  │  │  │  ├─ entity系统工具相关实体对象
│  │  │  │  │  ├─ query系统工具相关查询条件
│  │  │  │  │  ├─ req系统工具相关请求对象Request
│  │  │  │  │  └─ resp系统工具相关响应对象Response
│  │  │  │  └─ service系统工具相关业务接口及实现类
│  │  │  └─ resources
│  │  │     ├─ templates/generator代码生成相关模板目录
│  │  │     └─ generator.properties代码生成类型映射配置文件
│  │  └─ test测试相关代码目录
│  └─ pom.xml
├─ continew-admin-common公共模块存放公共工具类公共配置等
│  ├─ src
│  │  ├─ main/java/top/charles7c/continew/admin/common
│  │  │  ├─ config公共配置
│  │  │  ├─ constant公共常量
│  │  │  ├─ enums公共枚举
│  │  │  ├─ model公共模型
│  │  │  │  ├─ dto公共 DTOData Transfer Object
│  │  │  │  ├─ req公共请求对象Request
│  │  │  │  └─ resp公共响应对象Response
│  │  │  └─ util公共工具类
│  │  └─ test测试相关代码目录
│  └─ pom.xml
├─ .giteeGitee 相关配置目录,实际开发时直接删除)
├─ .githubGitHub 相关配置目录,实际开发时直接删除)
├─ .idea
│  └─ icon.pngIDEA 项目图标,实际开发时直接删除)
├─ .image截图目录实际开发时直接删除
├─ .style代码格式相关配置目录实际开发时根据需要取舍删除时注意删除 spotless 插件配置)
├─ .gitignoreGit 忽略文件相关配置文件)
├─ docker项目部署相关配置目录实际开发时可备份后直接删除
├─ LICENSE开源协议文件
├─ CHANGELOG.md更新日志文件实际开发时直接删除
├─ README.md项目 README 文件,实际开发时替换为真实内容)
├─ lombok.configLombok 全局配置文件)
└─ pom.xml包含版本锁定及全局插件相关配置

贡献指南

ContiNew Admin 致力于提供开箱即用持续舒适的开发体验。作为一个开源项目Creator 的初心是希望 ContiNew Admin 依托开源协作模式,提升技术透明度、放大集体智慧、共创优秀实践,源源不断地为企业级项目开发提供助力。

我们非常欢迎广大社区用户为 ContiNew Admin 贡献(开发,测试、文档、答疑等) 或优化代码,欢迎各位感兴趣的小伙伴儿,添加微信 讨论或认领任务。

分支说明

ContiNew Admin 的分支目前分为下个大版本的开发分支和上个大版本的维护分支PR 前请注意对应分支是否处于维护状态,版本支持情况请查看 更新日志/版本支持

分支 说明
dev 开发分支,默认为下个大版本的 SNAPSHOT 版本,接受新功能或新功能优化 PR
x.x.x 维护分支,在 vx.x.x 版本维护期终止前(一般为下个大版本发布前),用于修复上个版本的 Bug只接受已有功能修复不接受新功能 PR

贡献代码

如果您想提交新功能或优化现有代码,可以按照以下步骤操作:

  1. 首先,在 Gitee 或 Github 上将项目 fork 到您自己的仓库
  2. 然后,将 fork 过来的项目(即您的项目)克隆到本地
  3. 切换到当前仍在维护的分支(请务必充分了解分支使用说明,可进群联系维护者确认)
  4. 开始修改代码,修改完成后,将代码 commit 并 push 到您的远程仓库
  5. 在 Gitee 或 Github 上新建 pull requestpr选择好源和目标按模板要求填写说明信息后提交即可多多参考 已批准合并的 pr 记录,会大大增加批准合并率)
  6. 最后,耐心等待维护者合并您的请求即可

请记住,如果您有任何疑问或需要帮助,我们将随时提供支持。

Important

欢迎大家为 ContiNew Admin 贡献代码,我们非常感谢您的支持!为了更好地管理项目,维护者有一些要求:

  1. 请确保代码、配置文件的结构和命名规范良好,完善的代码注释甚至包括接口文档参数示例,并遵循阿里巴巴的 《Java开发手册(黄山版)》 中的代码规范,保证代码质量和可维护性
  2. 在提交代码前,请按照 Angular 提交规范 编写 commit 的 message建议在 IntelliJ IDEA 中下载并安装 Git Commit Template 插件,以便按照规范进行 commit
  3. 提交代码之前,请关闭所有代码窗口,执行 mvn compile 命令(代码格式化插件会在项目编译时对全局代码进行格式修正),编译通过后,不要再打开查看任何代码窗口,直接提交即可,以免不同的 IDE 配置会自动进行代码格式化

反馈交流

欢迎各位小伙伴儿扫描下方二维码加好友,备注 cnadmin,拉你进群,探讨技术、提提需求~

加入交流群后,你将会:

  • 第一时间收到框架动态
  • 第一时间收到框架更新通知
  • 第一时间收到框架 Bug 通知
  • 和众多大佬互相 (huá shuǐ) 交流 (mō yú)
二维码
无加群意愿 如无加群意愿,欢迎在 Issues 中反馈交流~ 🍻

鸣谢

鸣谢

感谢参与贡献的每一位小伙伴🥰

contributors

特别鸣谢

License

GitHub Star 趋势

GitHub Star 趋势