3.0 已发布:中后台管理系统中的小众,代码洁癖只专注企业开发的舒适体验
====================================
中后台管理系统中的小众群体项目,此项目算起来已维护有 1 年半时间,依赖每天下班后 20:00-23:00 及部分假期的业余时间。
起因有很多,但最后开始则是现所处公司主要做管理系统,于代码洁癖的个人来讲,想在公司开发项目时,有一个良好的开发体验,不止是后端的开发体验。而一开始就开源出来,除了希望借助开源的力量,帮忙找找 Bug,其次就是愿契合这个小众群体的朋友开发管理系统时也舒服、规范一些。
近期刚上新 v3.0.1,前端推翻重做(< v2.5 版本前端样式还行,但前端开发体验太差),有兴趣的小众大佬欢迎指点。
友情提示:没看过代码就不要评论换皮、换壳,各种 admin 大佬项目,咱要是抄,维护 1 年半也不至于还没上个定时任务。Talk is cheap, show the code.
先放截图及演示环境,已经点进来且仍有兴趣的大佬您再往下拉,没兴趣的大佬您转身。
📚 在线文档 | 🚀 演示地址(账号/密码:admin/admin123)
系统截图
受篇幅长度及功能更新频率影响,下方仅为系统 部分 功能于 2024年5月3日 进行的截图,更多新增功能及细节请访问演示环境或 clone 代码到本地启动查看。
| 登录页面 | 仪表盘 |
| — | — |
| 仪表盘-查看公告 | 账号管理 |
| 安全设置 | 安全设置-修改邮箱 |
| 安全设置-修改邮箱-邮箱验证码 | 系统管理-系统配置 |
| 系统管理-用户管理-列表 | 系统管理-用户管理-新增 |
| 系统管理-部门管理-列表 | 系统管理-部门管理-新增 |
| 系统管理-角色管理-列表 | 系统管理-角色管理-新增 |
| 系统管理-菜单管理-列表 | 系统管理-菜单管理-新增 |
| 系统管理-公告管理-列表 | 系统管理-公告管理-修改 |
| 系统管理-字典管理-列表 | 系统管理-字典项管理 |
| 系统管理-文件管理-列表-1 | 系统管理-文件管理-列表-2 |
| 系统管理-文件管理-图片 | 系统管理-文件管理-音乐 |
| 系统工具-代码生成-配置 | 系统工具-代码生成-预览 |
| 系统监控-在线用户 | 系统监控-系统日志-登录日志 |
| 系统监控-系统日志-操作日志 | 系统监控-系统日志-操作日志-详情 |
对了,响应式也做了做处理。
简介
ContiNew Admin(Continue New Admin)持续迭代优化的前后端分离中后台管理系统框架。开箱即用,重视每一处代码规范,重视每一种解决方案细节,持续提供舒适的开发体验。
当前采用的技术栈:Spring Boot3(Java17)、Vue3 & TS & Vite & Arco Design、Sa-Token、MyBatisPlus、Redisson、JetCache、JustAuth、Crane4j、EasyExcel、Liquibase、Hutool 等。
项目源码
| | Gitee | GitHub |
| — | — | — |
| 后端 | gitee.com/continew/co… | github.com/Charles7c/c… |
| 前端 | gitee.com/continew/co… | github.com/Charles7c/c… |
| 2.5 版本前端 | gitee.com/continew/co… | github.com/Charles7c/c… |
为什么选它
如需完整图文描述,请点击打开《在线文档》查阅。
1.甄选技术栈: ContiNew(Continue New) 项目致力于持续迭代优化,让技术不掉队。在技术选型时,进行深度广泛地调研,从流行度、成熟度和发展潜力等多方面甄选技术栈。 e.g. 前端:Vue3 & Arco Design Vue(字节出品,高颜值,丰富细节 UI 框架)、TypeScript、Vite5;后端:Spring Boot3、Sa-Token、MyBatis Plus、Redisson、JetCache、Crane4j、Hutool 等。
2.Starter 组件: 从 v2.1.0 版本开始,抽取并封装后端基础组件及各框架集成配置到 ContiNew Starter 项目,且 已发布至 Maven 中央仓库,可在你的任意项目中直接引入所需依赖使用。即使你不用脚手架项目,难道能让你搭项目框架更快、更爽、更省力的 Starter 也要 Say No 吗?
3.CRUD 套件: 封装通用增删改查套件,适配后端各分层,几分钟即可提供一套 CRUD API,包括新增、修改、批量删除、查询详情、分页列表查询、全部列表查询、树型列表查询、导出到 Excel,且 API 支持按实际所需开放或扩展。
@Tag(name = "部门管理 API")
@RestController
@CrudRequestMapping(value = "/system/dept", api = {Api.TREE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE, Api.EXPORT})
public class DeptController extends BaseController<DeptService, DeptResp, DeptDetailResp, DeptQuery, DeptReq> {}
4.代码生成器: 提供代码生成器,已配套前、后端代码生成模板,数据表设计完之后,简单配置一下即可生成前、后端 80% 的代码,包含 CRUD API、权限控制、参数校验、接口文档等内容。如果业务不复杂,也可能就是 99% 的代码。
5.改善开发体验: 持续适配、优化能改善开发体验的组件。
- 适配 Crane4j 数据填充组件,减少因为一个用户名而产生的联表回填;
- 适配 P6Spy SQL 性能分析组件,开发期间方便监控 SQL 执行;
- 适配 TLog 链路追踪组件,方便在杂乱的日志文件中追踪你某次请求的日志记录;
- 适配 JetCache 缓存框架(比 Spring Cache 更强大易用),通过注解声明即可快速实现方法级缓存,极大改善编码式缓存体验,且支持灵活的二级缓存配置、分布式自动刷新等能力;
- 适配 ContiNew Starter 组件,针对多数框架进行了深度封装的 starter,改善你在开发每个 Spring Boot Web 项目的体验。
6.Almost最佳后端规范: 后端严格遵循阿里巴巴 Java 编码规范,注释覆盖率 > 45%,接口参数示例 100%,代码分层使用体验佳,变量、方法命名清晰统一,前端代码也使用严格的 ESLint、StyleLint 等检查。良好的设计,代码复用率极高!写代码时,让你有一种无需多写,理应如此的感觉。代码洁癖者的福音,不看莫吱声。
3.0 后的前端更令人惊喜。
7.卓越工程: 后端采用模块化工程结构,并适配了统一项目版本号、编译项目自动代码格式化、代码混淆等插件,提供了自定义打包部署结构配置(配置文件、三方依赖和主程序分离),提供全套环境及应用的 Docker Compose 部署脚本。为了减少您开发新项目时的改造耗时,项目品牌配置持续进行深度聚合,简单的配置和结构修改即可快速开始独属于你的新项目。
8.业务脚手架: 有颜有料,不止是说说而已,无论是 2.5 还是 3.0,UI 细节的打磨都可以让你无需过多调整即可拿来商用。提供基于 RBAC 的权限控制、通用数据权限,包含丰富的通用业务功能:第三方登录,邮箱、短信(生产级炸弹漏洞处理方案),用户管理、角色管理、部门管理、文件管理、系统配置、系统日志、消息中心、公告等,设计用心,逻辑合理闭环。
一个好的脚手架项目,不仅仅是提供一系列组件集成与配置,也不仅仅是封装一堆好用的工具,还更应该提供一系列通用基础业务解决方案及设计,为初创团队项目减负。
9.高可靠代码: 项目 CI 已集成 Sonarqube、Codacy,Push 即触发代码质量扫描,并定期进行 CVE 漏洞扫描,及时解决潜在问题。
由于篇幅有限,且项目正处于高速发展期,更多功能正在陆续上线(敬请关注仓库或群内动态)。另外像最基本的统一异常、错误处理,基础线程池等配置就不在此赘述,细节优化详情请 clone 代码查看。
Talk is cheap, show me the code.
系统功能
- 个人中心:支持基础信息修改、安全设置(密码修改、邮箱绑定、手机号绑定(并提供行为验证码、短信限流等安全处理)、第三方账号绑定/解绑)、头像裁剪上传等能力
- 用户管理:提供系统用户的新增维护,支持禁用登录及重置指定用户密码
- 角色管理:对权限与菜单进行分配,可根据部门设置角色的数据权限
- 菜单管理:已实现菜单动态路由,后端可配置化,支持多级菜单
- 部门管理:可配置系统组织架构,以树形表格展示
- 公告管理:提供公告的发布、查看和删除等功能。管理员可以在后台发布公告,并可以设置公告的生效时间、终止时间,以 markdown-it 为内核渲染 Markdown 格式内容显示
- 消息管理:提供消息查看、标记已读、全部已读、删除等功能(适配对接导航栏站内信功能)(v3.1 重构,v2.5 版可用)
- 字典管理:提供对系统公用数据字典的维护,例如:公告类型,支持字典标签背景色和排序等配置
- 文件管理:提供文件上传、下载、预览(目前支持图片、音视频)、重命名、切换视图(列表、网格)等功能
- 存储管理:提供文件存储库新增、编辑、删除等功能,支持本地存储、兼容 S3 协议存储
- 系统配置:提供修改系统标题、Logo、favicon 等基础配置功能,以方便用户系统与其自身品牌形象保持一致(v3.1 支持邮件配置)
- 代码生成:提供根据数据库表自动生成相应的前后端 CRUD 代码的功能
- 在线用户:管理当前登录用户,可一键踢下线
- 系统日志:提供登录日志、操作日志管理功能,可查看指定日志的详细请求及响应信息
核心技术栈
前端:Vue3 & TS & Vite5 & Arco Design Vue,下方为后端主要技术栈介绍。
| 名称 | 版本 | 简介 |
| — | — | — |
| ContiNew Starter | 2.0.0 | ContiNew Starter 包含了一系列经过企业实践优化的依赖包(如 MyBatis-Plus、SaToken),可轻松集成到应用中,为开发人员减少手动引入依赖及配置的麻烦,为 Spring Boot Web 项目的灵活快速构建提供支持。 |
| Spring Boot | 3.1.10 | 简化 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.5 | MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。 |
| dynamic-datasource-spring-boot-starter | 4.3.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 | 用于管理数据库版本,跟踪、管理和应用数据库变化。 |
| JetCache | 2.7.5 | 一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。提供了比 SpringCache 更加强大的注解,可以原生的支持 TTL、两级缓存、分布式自动刷新,还提供了 Cache 接口用于手工缓存操作。 |
| Redisson | 3.28.0 | 不仅仅是一个 Redis Java 客户端,Redisson 充分的利用了 Redis 键值数据库提供的一系列优势,为使用者提供了一系列具有分布式特性的常用工具:分布式锁、限流器等。 |
| Redis | 7.2.3 | 高性能的 key-value 数据库。 |
| X File Storage | 2.1.0 | 一行代码将文件存储到本地、FTP、SFTP、WebDAV、阿里云 OSS、华为云 OBS…等其它兼容 S3 协议的存储平台。 |
| SMS4J | 3.2.1 | 短信聚合框架,轻松集成多家短信服务,解决接入多个短信 SDK 的繁琐流程。 |
| Just Auth | 1.16.6 | 开箱即用的整合第三方登录的开源组件,脱离繁琐的第三方登录 SDK,让登录变得 So easy! |
| Easy Excel | 3.3.4 | 一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。 |
| AJ-Captcha | 1.3.0 | Java 行为验证码,包含滑动拼图、文字点选两种方式,UI支持弹出和嵌入两种方式。 |
| Easy Captcha | 1.6.2 | Java 图形验证码,支持 gif、中文、算术等类型,可用于 Java Web、JavaSE 等项目。 |
| Crane4j | 2.7.0 | 一个基于注解的,用于完成一切 “根据 A 的 key 值拿到 B,再把 B 的属性映射到 A” 这类需求的字段填充框架。 |
| Knife4j | 4.5.0 | 前身是 swagger-bootstrap-ui,集 Swagger2 和 OpenAPI3 为一体的增强解决方案。 |
| Hutool | 5.8.27 | 小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。 |
| Lombok | 1.18.30 | 在 Java 开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码,让编写的类更加简洁。 |
后记
看完上面您仍有意,欢迎进群交流:技术支持 | ContiNew Admin。项目交流群 190+ 水友。
发过仅一篇软文,各种“高端”、“爱做狗”评论都有,不予过多置评,良言一句三冬暖,恶语伤人六月寒。
Talk is cheap, show the code.
原文链接: https://juejin.cn/post/7364274025277653043
文章收集整理于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除,如若转载,请注明出处:http://www.cxyroad.com/17054.html