前后端分离管理系统 - 现代化解决方案全解析

17 阅读8分钟

ORANGE 前后端分离管理系统 - 现代化解决方案全解析

项目地址:github.com/yluiop123/o…

演示地址:yluiop123.github.io/orange/

swagger文档:yluiop123.github.io/orange/#swa…

一、项目简介

ORANGE 是一个完整的前后端分离企业级管理系统,采用前沿的现代技术栈设计。项目集成了权限管理、可视化数据展示、地理信息系统(GIS)、3D 可视化等功能,是学习现代全栈开发和构建企业应用的优秀参考。

1.PNG

2.PNG

捕获.PNG

核心特性

  • 🎨 精美的现代化 UI 设计(基于 shadcn/ui)
  • 🔐 完整的权限管理系统(RBAC 模型)
  • 📊 丰富的数据可视化能力
  • 🗺️ 多种地图引擎支持(Leaflet、Cesium、L7)
  • 🌍 国际化多语言支持
  • 🎭 动态主题切换(深色/浅色模式)
  • ⚡ 高性能渲染和响应式设计

二、技术架构概览

前端架构

ORANGE 前端采用最新的 React 19 + Vite 技术栈,提供极速的开发体验和构建性能。

核心技术栈

  • 框架:React 19 + Vite 6(秒级热更新)

  • 状态管理:Zustand(轻量、高效)

  • UI 框架:shadcn/ui + TailwindCSS(高度可定制化)

  • 路由:React Router v7

  • 国际化:react-intl(完整的 i18n 解决方案)

  • 类型验证:Zod(类型安全的表单验证)

  • 可视化

    • 图表:ECharts、Recharts、Ant Design Charts
    • 地图:Leaflet、Cesium、OpenLayers、L7、Mapbox
    • 3D:Three.js、Babylon.js、React Three Fiber
  • Mock API:Mock Service Worker(完整的离线开发能力)

项目特点

  1. 企业级组件库:包含权限树、角色选择、分组选择等业务专用组件
  2. 多种数据展示:支持表格、图表、地图、3D 场景等多维度数据呈现
  3. 完整的后台系统页面:包括仪表板、用户管理、角色权限配置等
  4. 响应式设计:完美适配桌面、平板、手机等各类设备

后端架构

ORANGE 后端采用 Spring Boot 4.0.2,构建高效的 RESTful API 服务。

核心技术栈

  • 框架:Spring Boot 4.0.2
  • ORM:Spring Data JPA
  • 安全:Spring Security + JWT(256-bit RSA 加密)
  • 数据库:PostgreSQL
  • 缓存:Caffeine(本地高速缓存)
  • API 文档:SpringDoc OpenAPI 3.0

功能模块

  1. 认证系统:JWT token 认证、登录/登出、token 刷新
  2. 用户管理:用户的增删改查、状态管理、密码重置
  3. 角色管理:灵活的角色定义、角色权限分配、角色状态控制
  4. 权限管理:树形权限结构、支持多级权限层级、权限继承关系
  5. 组织管理:组织树形结构、节点移动/排序、组织与用户关联

三、系统架构设计

前后端交互流程

┌─────────────────────────────────────────────────────────────┐
                     用户浏览器                               
└────────────────┬────────────────────────────────────────────┘
                  HTTP/HTTPS
                 
┌─────────────────────────────────────────────────────────────┐
              前端应用(React 19 + Vite)                    
  ┌────────────────────────────────────────────────────────┐ 
   Components: 权限树、角色选择、数据表格等               
   Pages: 仪表板、系统管理、数据分析                     
   State: Zustand 全局状态管理                           
  └────────────────────────────────────────────────────────┘ 
└────────────────┬────────────────────────────────────────────┘
                  RESTful API (Axios)
                  JWT Token Authorization
                 
┌─────────────────────────────────────────────────────────────┐
            后端 API(Spring Boot 4.0.2                   
  ┌────────────────────────────────────────────────────────┐ 
   Controllers: 用户/角色/权限/组织 REST 接口             
   Services: 业务逻辑和权限校验                         
   Entities: JPA 实体映射                               
   Security: Spring Security + JWT 验证                 
  └────────────────────────────────────────────────────────┘ 
└────────────────┬────────────────────────────────────────────┘
                  JDBC/JPA
                 
┌─────────────────────────────────────────────────────────────┐
            数据库(PostgreSQL)                              
  ┌────────────────────────────────────────────────────────┐ 
   sys_user, sys_role, sys_permission, sys_group        
   关联表:user_role, role_permission, user_permission  
  └────────────────────────────────────────────────────────┘ 
└─────────────────────────────────────────────────────────────┘

RBAC 权限模型

用户 (User)
  ├─ 拥有多个角色 (Role)
  │  ├─ 角色拥有多个权限 (Permission)
  │  └─ 权限可分级(树形结构)
  ├─ 直接权限 (Direct Permission)
  └─ 所属组织 (Group)

四、核心功能详解

4.1 权限管理系统

ORANGE 采用经典的 RBAC(Role-Based Access Control)权限模型,支持:

  • 灵活的权限分配:支持按角色分配权限,也支持直接分配用户权限
  • 权限缓存:使用 Caffeine 缓存权限数据,提高权限校验性能
  • 细粒度控制:支持菜单权限、接口权限、数据权限等多个维度

4.2 可视化数据展示

前端集成了业界主流的可视化库,支持:

图表库

  • ECharts:功能强大的商业级图表库,支持 100+ 种图表
  • Recharts:轻量级 React 原生图表组件
  • Ant Design Charts:蚂蚁金服出品的专业图表库

地图引擎

  • Leaflet:轻量级开源地图库,支持自定义扩展
  • Cesium:3D 地球展示,支持卫星影像、地形等
  • L7:阿里云大地点数据可视化方案
  • OpenLayers:功能完整的 GIS 库

3D 可视化

  • Three.js:最流行的 WebGL 库
  • Babylon.js:微软出品的成熟 3D 引擎
  • React Three Fiber:将 Three.js 暴露为 React 组件

4.3 国际化支持

ORANGE 使用 react-intl 提供专业的国际化方案:

  • 内置支持:英文(en-US)、中文(zh-CN)
  • 灵活扩展:轻松添加更多语言支持
  • 运行时切换:用户可在设置中实时切换语言
  • 翻译管理:统一的翻译文件管理

4.4 主题系统

支持灵活的主题切换:

  • 深色/浅色主题:自动适配系统偏好设置
  • 主题颜色:预设多种配色方案(蓝、绿、橙、红、玫瑰、紫、黄)
  • 动态切换:无需刷新即可实时切换主题

五、快速开发指南

5.1 前端开发

环境准备
# 需要 Node.js v18+ 和 pnpm v10.28.2+
node --version  # v18.0.0+
pnpm --version  # v10.28.2+
快速启动
# 克隆项目
git clone https://github.com/yluiop123/orange.git
cd orange/vite-shadcn

# 安装依赖(推荐使用 pnpm)
pnpm install

# 启动开发服务器
pnpm dev

# 访问应用
# 应用首页:http://localhost:3000/
# Swagger API:http://localhost:3000/swagger
常用命令
pnpm dev          # 启动开发服务器(支持热更新)
pnpm build        # 生产构建
pnpm lint         # 代码检查
pnpm preview      # 预览生产构建
pnpm analyze      # 分析包大小
新增页面示例
// src/pages/my-page/index.tsx
import { Card } from '@/components/ui/card'

export default function MyPage() {
  return (
    <div className="flex flex-col gap-4">
      <Card className="p-6">
        <h1 className="text-2xl font-bold">我的页面</h1>
        <p className="text-gray-600">这是一个新增的页面</p>
      </Card>
    </div>
  )
}
新增组件示例
// src/components/my-component.tsx
import { Button } from '@/components/ui/button'

interface MyComponentProps {
  title: string
  onAction: () => void
}

export function MyComponent({ title, onAction }: MyComponentProps) {
  return (
    <div className="flex items-center gap-2">
      <span>{title}</span>
      <Button onClick={onAction}>操作</Button>
    </div>
  )
}

5.2 后端开发

环境准备
# 需要 Java 25、PostgreSQL 和 Maven 3.6+
java -version    # java 25.0.x
psql --version   # PostgreSQL 12+
mvn --version    # Maven 3.6+
快速启动
# 进入后端目录
cd orange/springboot

# 创建数据库
createdb orange

# 生成 RSA 密钥对(放在 src/main/resources/keys/)
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem

# 配置数据库连接(application.yaml)
# 启动应用
mvn spring-boot:run

# 访问应用
# API 首页:http://localhost:8080
# Swagger UI:http://localhost:8080/swagger-ui.html
新增实体示例
// src/main/java/com/orange/entity/Product.java
import jakarta.persistence.*;
import lombok.Data;

@Data
@Entity
@Table(name = "product")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String name;

    private String description;
}
新增接口示例
// src/main/java/com/orange/repository/ProductRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
import com.orange.entity.Product;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

// src/main/java/com/orange/controller/ProductController.java
import org.springframework.web.bind.annotation.*;
import com.orange.entity.Product;

@RestController
@RequestMapping("/product")
public class ProductController {
    private final ProductRepository productRepository;

    @GetMapping("/list")
    public Page<Product> list() {
        return productRepository.findAll(Pageable.unpaged());
    }

    @PostMapping("/add")
    public Product add(@RequestBody Product product) {
        return productRepository.save(product);
    }
}

六、项目亮点与优势

1. 现代化技术栈

✨ 采用业界最新的技术:

  • React 19 带来了更强的并发能力和性能优化
  • Vite 6 提供秒级的热更新和极速构建
  • TypeScript 全覆盖,类型安全有保障
  • Spring Boot 4.0.2 同步最新的 Spring 生态

2. 完整的权限管理

🔐 开箱即用的权限系统:

  • RBAC 模型经经验证,适合大多数企业场景
  • 支持树形权限结构,方便管理复杂的权限体系
  • JWT 认证安全可靠,支持 token 刷新
  • 权限缓存提升性能

3. 丰富的可视化能力

📊 集成多种可视化方案:

  • 5+ 个图表库,满足各种数据展示需求
  • 4+ 个地图引擎,支持从平面地图到 3D 地球
  • 完整的 3D 可视化能力,支持场景互动

4. 学习价值高

📚 完美的学习项目:

  • 前后端完整分离,展示真实的系统架构
  • 代码规范清晰,易于理解和参考
  • 涵盖从基础到高级的各类技术
  • 包含完整的最佳实践

七、应用场景

ORANGE 系统适用于以下场景:

企业应用

  • 企业级权限管理后台
  • 内部业务管理系统
  • 员工信息管理系统
  • 流程审批系统

数据分析

  • 数据可视化大屏
  • BI 分析平台
  • 实时监控面板
  • 地理信息分析系统

SaaS 平台

  • 多租户权限隔离
  • 用户权限分配
  • 组织结构管理
  • 功能模块授权

地理信息应用

  • 地图应用开发
  • 位置服务平台
  • 地理数据展示
  • 3D 场景呈现

八、文件结构导览

orange/
├── 前端应用
│   └── vite-shadcn/
│       ├── src/
│       │   ├── components/        # React 组件库
│       │   ├── pages/            # 页面路由
│       │   ├── hooks/            # React Hooks
│       │   ├── store/            # Zustand 状态管理
│       │   ├── lib/              # 工具库和配置
│       │   ├── locale/           # 国际化
│       │   ├── themes/           # 主题文件
│       │   └── mock/             # Mock API 数据
│       ├── package.json          # 依赖配置
│       └── vite.config.ts        # Vite 构建配置
├── 后端应用
│   └── springboot/
│       ├── src/
│       │   ├── main/
│       │   │   ├── java/com/orange/
│       │   │   │   ├── entity/   # JPA 实体
│       │   │   │   ├── controller/ # REST 控制器
│       │   │   │   ├── service/  # 业务逻辑
│       │   │   │   ├── repository/ # 数据仓库
│       │   │   │   └── config/   # 配置类
│       │   │   └── resources/
│       │   │       ├── keys/     # JWT 密钥
│       │   │       ├── application.yaml # 配置文件
│       │   │       └── templates/ # 模板文件
│       │   └── test/             # 单元测试
│       ├── pom.xml               # Maven 依赖
│       └── README.md             # 后端文档
├── database/
│   └── postgres/
│       ├── ddl.sql              # 数据库建表脚本
│       └── dml.sql              # 初始数据脚本
└── README.md                     # 项目主文档

九、总结与展望

ORANGE 是一个集现代化设计、完整功能、高效性能于一身的企业级管理系统。

核心优势

前后端完整分离:清晰的架构边界,易于维护和扩展
技术栈前沿:采用业界最新的主流技术
功能模块完整:权限、用户、角色等开箱即用
可视化能力强:多种图表、地图、3D 展示方案
代码质量高:规范清晰,易于学习和参考
生产级别:经过验证,可直接工作于商业项目

未来规划

我们持续在以下方向优化和扩展:

  • 📱 移动端适配优化
  • 🔄 离线能力增强
  • 🚀 性能进一步优化
  • 🌐 更多语言支持
  • 📊 更多图表和地图库集成
  • 🔌 插件系统架构