JDWA 技术文档
首页
  • 数据库
  • 前端开发
  • 后端开发
  • 开发工具
  • 虚拟化技术
  • KVM显卡直通
  • FPGA仿真固件
  • 项目实战
  • 踩坑记录
  • 开发心得
  • 软件工具
  • 学习资料
  • 开发环境
更新日志
关于我
Gitee
GitHub
首页
  • 数据库
  • 前端开发
  • 后端开发
  • 开发工具
  • 虚拟化技术
  • KVM显卡直通
  • FPGA仿真固件
  • 项目实战
  • 踩坑记录
  • 开发心得
  • 软件工具
  • 学习资料
  • 开发环境
更新日志
关于我
Gitee
GitHub
  • Green-U低碳生活平台(后端)

    • JDWA Green-U 后端技术文档索引
    • JDWA Green-U 项目架构概述
    • JDWA Green-U 数据库设计文档
    • JDWA Green-U 用户认证模块技术文档
    • JDWA Green-U 用户活动模块技术文档
    • JDWA Green-U 碳减排统计模块技术文档
    • JDWA Green-U 积分系统模块技术文档
    • JDWA Green-U 成就系统模块技术文档
    • JDWA Green-U 奖品兑换模块技术文档
    • JDWA Green-U API接口文档
    • JDWA Green-U 系统安全机制与防护措施
    • JDWA Green-U 部署与运维指南

JDWA Green-U 项目架构概述

本文档详细介绍了JDWA Green-U项目的整体架构设计、技术选型、开发环境配置以及项目目录结构,旨在帮助开发者快速了解项目的技术体系和开发规范。

  • 项目简介
    • 业务目标
    • 用户群体
  • 系统架构
    • 整体架构图
    • 前端环境配置
  • 项目目录结构
    • 后端项目结构
    • 前端项目结构
  • 开发规范
    • 编码规范
    • 开发流程
  • 部署架构
    • 开发环境
    • 测试环境
    • 生产环境
  • 扩展性设计
    • 水平扩展
    • 垂直扩展
  • 安全性设计
  • 性能优化
  • 监控与运维
  • 参考资源

项目简介

JDWA Green-U是一款面向环保领域的低碳生活应用,旨在鼓励用户通过日常行为减少碳排放,培养绿色生活习惯。系统记录用户的绿色行为(如步行、骑行、使用公共交通等),计算碳减排量,并通过积分奖励、成就体系等激励机制,引导用户持续参与环保活动。

业务目标

  • 记录和量化用户的绿色低碳行为
  • 通过积分、成就系统激励用户持续参与
  • 建立社区互动和环保知识分享平台
  • 提供环保商品兑换和公益活动参与渠道

用户群体

  • 环保意识较强的年轻人
  • 追求健康生活方式的人群
  • 参与公益活动的社会群体
  • 各类环保组织和企业

系统架构

JDWA Green-U采用现代化的多层架构设计,结合前后端分离的开发模式,保证系统的可扩展性和维护性。

整体架构图

┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │ │ │ │ │ │ │ 客户端层 │<---->│ 应用服务层 │<---->│ 数据存储层 │ │ │ │ │ │ │ └────────────────┘ └────────────────┘ └────────────────┘ │ │ │ ┌──────┴───────┐ ┌────────┴───────┐ ┌───────┴──────┐ │ Web前端 │ │ 业务逻辑处理 │ │ MySQL数据库 │ │ 移动应用 │ │ API接口 │ │ Redis缓存 │ │ 微信小程序 │ │ 认证授权 │ │ 文件存储 │ └──────────────┘ └────────────────┘ └──────────────┘


### 架构分层说明

1. **客户端层**:
   - 基于Vue.js的Web前端应用
   - 微信小程序
   - 移动应用(计划中)

2. **应用服务层**:
   - 基于Spring Boot的RESTful API服务
   - 用户认证与授权服务
   - 业务逻辑处理服务
   - 数据分析与统计服务

3. **数据存储层**:
   - MySQL关系型数据库
   - Redis缓存
   - 文件存储服务

### 技术架构特点

- **前后端分离**:通过RESTful API实现前后端解耦,前端与后端可独立开发和部署
- **无状态设计**:采用JWT实现无状态的用户认证,便于系统水平扩展
- **模块化结构**:业务功能按模块划分,降低耦合度,便于团队协作开发
- **安全性考虑**:全面的权限控制、数据加密和API安全防护

## 技术选型

### 后端技术栈

| 技术 | 版本 | 说明 |
|------|------|------|
| Spring Boot | 2.7.x | 应用框架 |
| MyBatis-Plus | 3.5.x | ORM框架 |
| Spring Security | 2.7.x | 安全框架 |
| JWT | 0.11.x | 用户认证 |
| MySQL | 8.0 | 关系型数据库 |
| Redis | 6.x | 缓存服务 |
| Maven | 3.8.x | 构建工具 |
| Lombok | 1.18.x | 代码简化工具 |
| Hutool | 5.8.x | 工具类库 |

### 前端技术栈

| 技术 | 版本 | 说明 |
|------|------|------|
| Vue.js | 3.x | 前端框架 |
| Element Plus | 2.x | UI组件库 |
| Axios | 1.x | HTTP客户端 |
| Vite | 4.x | 构建工具 |
| VueRouter | 4.x | 路由管理 |
| Pinia | 2.x | 状态管理 |
| ESLint | 8.x | 代码规范检查 |

### 开发和运维工具

| 技术 | 说明 |
|------|------|
| Git | 版本控制 |
| GitHub | 代码托管 |
| Jenkins | CI/CD |
| Docker | 容器化部署 |
| Nginx | 反向代理服务器 |
| Swagger/OpenAPI | API文档 |

## 开发环境配置

### 所需软件

- **JDK**: 版本 11 或以上
- **Maven**: 版本 3.6.0 或以上
- **MySQL**: 版本 8.0
- **Redis**: 版本 6.0 或以上
- **Node.js**: 版本 16.x 或以上
- **IDE**: IntelliJ IDEA (推荐) 或 Eclipse
- **Git**: 版本 2.x 或以上

### 后端环境配置

1. **克隆项目仓库**:
```bash
git clone https://github.com/AAASS554/jdwa-green-u.git
cd jdwa-green-u
  1. 配置数据库:
CREATE DATABASE jdwa_green CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  1. 修改项目配置: 编辑 src/main/resources/application.yml:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/jdwa_green?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  
  redis:
    host: localhost
    port: 6379
    password: 
    database: 0
  1. 构建项目:
mvn clean package -DskipTests
  1. 运行项目:
java -jar target/jdwa-green-u-0.0.1-SNAPSHOT.jar

前端环境配置

  1. 安装依赖:
cd jdwa-frontend
npm install
  1. 配置API地址: 编辑 .env 文件:
VITE_API_BASE_URL=http://localhost:8080/api
  1. 启动开发服务器:
npm run dev
  1. 构建生产版本:
npm run build

项目目录结构

后端项目结构

jdwa-backend/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── jdwa/
│   │   │           └── green/
│   │   │               ├── JDWAGreenApplication.java  # 启动类
│   │   │               ├── common/                   # 通用组件
│   │   │               │   ├── JDWAResult.java       # 统一返回结果
│   │   │               │   ├── constants/            # 常量定义
│   │   │               │   └── exception/            # 异常处理
│   │   │               ├── config/                   # 配置类
│   │   │               │   ├── JDWASecurityConfig.java   # 安全配置
│   │   │               │   ├── JDWARedisConfig.java      # Redis配置
│   │   │               │   └── JDWAMybatisPlusConfig.java # MyBatis配置
│   │   │               ├── controller/               # 控制器
│   │   │               │   ├── JDWABaseController.java   # 基础控制器
│   │   │               │   ├── JDWAUserController.java   # 用户控制器
│   │   │               │   ├── JDWAActivityController.java # 活动控制器
│   │   │               │   └── ...
│   │   │               ├── entity/                   # 实体类
│   │   │               │   ├── JDWAUser.java         # 用户实体
│   │   │               │   ├── JDWAActivity.java     # 活动实体
│   │   │               │   └── ...
│   │   │               ├── mapper/                   # MyBatis Mapper
│   │   │               │   ├── JDWAUserMapper.java   # 用户Mapper
│   │   │               │   ├── JDWAActivityMapper.java # 活动Mapper
│   │   │               │   └── ...
│   │   │               ├── model/                    # 数据模型
│   │   │               │   ├── request/              # 请求模型
│   │   │               │   └── response/             # 响应模型
│   │   │               ├── security/                 # 安全模块
│   │   │               │   ├── JDWAUserDetails.java        # 用户详情
│   │   │               │   ├── JDWAUserDetailsService.java # 用户详情服务
│   │   │               │   └── JDWAJwtAuthenticationFilter.java # JWT过滤器
│   │   │               ├── service/                  # 服务层
│   │   │               │   ├── JDWABaseService.java      # 基础服务接口
│   │   │               │   ├── JDWAUserService.java      # 用户服务
│   │   │               │   └── JDWAActivityService.java    # 活动服务
│   │   │               └── ...
│   │   └── ...
│   └── ...

前端项目结构

jdwa-frontend/
├── public/                         # 静态资源
├── src/
│   ├── api/                        # API接口
│   │   ├── index.js                # API入口
│   │   ├── user.js                 # 用户相关API
│   │   └── ...
│   ├── assets/                     # 静态资源
│   │   ├── images/                 # 图片资源
│   │   └── styles/                 # 样式文件
│   ├── components/                 # 公共组件
│   │   ├── layout/                 # 布局组件
│   │   ├── common/                 # 通用组件
│   │   └── ...
│   ├── router/                     # 路由配置
│   │   └── index.js
│   ├── store/                      # 状态管理
│   │   ├── index.js                # Store入口
│   │   ├── modules/                # Store模块
│   │   └── ...
│   ├── utils/                      # 工具函数
│   │   ├── request.js              # 请求工具
│   │   ├── auth.js                 # 认证工具
│   │   └── ...
│   ├── views/                      # 页面组件
│   │   ├── home/                   # 首页
│   │   ├── user/                   # 用户相关
│   │   ├── activity/               # 活动相关
│   │   └── ...
│   ├── App.vue                     # 主组件
│   └── main.js                     # 入口文件
├── .env                            # 环境变量
├── .eslintrc.js                    # ESLint配置
├── package.json                    # 依赖配置
├── vite.config.js                  # Vite配置
└── README.md                       # 项目说明

开发规范

编码规范

  • 命名规范:

    • 类名:使用JDWA前缀,驼峰命名法,如JDWAUserService
    • 方法名:驼峰命名法,如getUserById
    • 变量名:驼峰命名法,如userId
    • 常量名:全大写,下划线分隔,如MAX_USER_COUNT
  • 注释规范:

    • 类注释:包含作者、创建日期、类描述
    • 方法注释:包含方法描述、参数、返回值
    • 关键代码注释:解释复杂逻辑的实现思路
  • 包结构规范:

    • 按功能模块划分包
    • 接口和实现分离,实现类放在impl子包中

开发流程

  1. 任务分配:通过GitHub Issues分配开发任务
  2. 分支管理:
    • main:主分支,保持稳定可发布状态
    • develop:开发分支,集成各个功能分支
    • feature/xxx:功能分支,用于开发具体功能
    • bugfix/xxx:修复分支,用于修复线上Bug
  3. 代码提交:
    • 提交信息格式:[模块名] 操作:具体内容
    • 例如:[用户模块] 新增:用户注册功能
  4. 代码审查:通过Pull Request进行代码审查
  5. 持续集成:自动执行单元测试和代码质量检查
  6. 发布流程:版本号管理,自动化部署

部署架构

开发环境

  • 单机部署
  • 内嵌Tomcat运行
  • H2内存数据库(可选)或本地MySQL

测试环境

  • Docker容器化部署
  • MySQL + Redis
  • Nginx反向代理

生产环境

  • 负载均衡:Nginx
  • 应用服务器:多实例部署
  • 数据库:MySQL主从复制
  • 缓存服务:Redis集群
  • 文件存储:对象存储服务
┌───────────┐
│           │
│   用户    │
│           │
└─────┬─────┘
      │
┌─────▼─────┐    ┌───────────┐
│           │    │           │
│   Nginx   ├────►  静态资源  │
│           │    │           │
└─────┬─────┘    └───────────┘
      │
      ├───────────┬───────────┐
      │           │           │
┌─────▼─────┐ ┌───▼───┐  ┌────▼───┐
│           │ │       │  │        │
│ 应用服务器1│ │应用服务器2│  │应用服务器N│
│           │ │       │  │        │
└─────┬─────┘ └───┬───┘  └────┬───┘
      │           │           │
┌─────▼───────────▼───────────▼─────┐
│                                    │
│         数据服务层(MySQL/Redis)     │
│                                    │
└────────────────────────────────────┘

扩展性设计

水平扩展

  • 应用服务无状态化,支持多实例部署
  • 数据库读写分离,主从复制
  • Redis集群提供高性能缓存

垂直扩展

  • 业务模块化,支持未来拆分为微服务
  • 预留服务注册与发现的接入点
  • 考虑消息队列用于解耦高并发场景

安全性设计

  • JWT Token认证,保护API接口
  • 密码加密存储,防止数据泄露风险
  • 输入验证和参数过滤,防止注入攻击
  • 权限控制,保证数据访问安全
  • 日志审计,记录关键操作

性能优化

  • 合理使用缓存,减轻数据库压力
  • 数据库索引优化,提高查询效率
  • 延迟加载和按需加载策略
  • 定时任务处理耗时操作
  • 静态资源CDN分发

监控与运维

  • 应用健康检查
  • 性能指标监控
  • 日志集中管理
  • 异常报警机制
  • 数据备份与恢复

参考资源

  • Spring Boot官方文档
  • MyBatis-Plus官方文档
  • Vue.js官方文档
  • 微服务架构设计模式
  • 阿里巴巴Java开发手册
Prev
JDWA Green-U 后端技术文档索引
Next
JDWA Green-U 数据库设计文档