logo
0
0
WeChat Login
xxh<xxh@qq.com>
feat: 初始化小程序后端服务器完整架构

小程序后端服务器项目

项目概述

这是一个基于Spring Boot 3的小程序后端服务器项目,提供用户认证、用户管理等核心功能。项目采用现代化的技术栈和标准化的开发规范。

技术栈

  • 框架: Spring Boot 3.5.4
  • Java版本: Java 17
  • 数据库: MySQL 8.0
  • 持久层: MyBatis
  • 安全框架: Spring Security + JWT
  • 密码加密: BCrypt
  • 邮件服务: Spring Boot Mail
  • 容器化: Docker + Docker Compose
  • 构建工具: Maven
  • 开发工具: Lombok

项目结构

src/main/java/com/example/demo/
├── DemoApplication.java          # 主启动类
├── config/                       # 配置类
│   └── WebSecurityConfig.java    # 安全配置
├── controller/                   # 控制器层
│   ├── AuthController.java       # 认证控制器
│   └── UserController.java       # 用户控制器
├── service/                      # 服务层
│   └── UserService.java          # 用户服务
├── repository/                   # 数据访问层
│   └── UserRepository.java       # 用户数据访问
├── entity/                       # 实体类
│   └── User.java                 # 用户实体
├── dto/                          # 数据传输对象
│   ├── request/                  # 请求DTO
│   │   ├── LoginRequest.java     # 登录请求
│   │   └── RegisterRequest.java  # 注册请求
│   └── response/                 # 响应DTO
│       └── LoginResponse.java    # 登录响应
├── common/                       # 公共类
│   ├── ApiResponse.java          # 统一响应格式
│   └── GlobalExceptionHandler.java # 全局异常处理
├── security/                     # 安全相关
│   └── JwtAuthenticationFilter.java # JWT认证过滤器
└── utils/                        # 工具类
    └── JwtUtils.java             # JWT工具类

核心功能

1. 用户认证系统

  • ✅ 用户注册(支持邮箱验证)
  • ✅ 用户登录(JWT令牌认证)
  • ✅ JWT令牌刷新
  • ✅ 用户名/邮箱可用性检查

2. 用户管理系统

  • ✅ 获取用户信息(支持权限控制)
  • ✅ 更新用户信息
  • ✅ 修改用户密码
  • ✅ 用户列表查询(管理员权限)
  • ✅ 分页查询用户
  • ✅ 用户统计信息
  • ✅ 删除用户(管理员权限)

3. 安全特性

  • ✅ JWT令牌认证
  • ✅ 密码BCrypt加密
  • ✅ 基于角色的权限控制(USER/ADMIN)
  • ✅ CORS跨域支持
  • ✅ 全局异常处理
  • ✅ 参数验证

API接口文档

认证接口

1. 用户登录

  • 接口: POST /api/auth/login
  • 描述: 用户登录获取JWT令牌
  • 请求体:
{
  "username": "testuser",
  "password": "password123"
}
  • 响应:
{
  "code": 200,
  "message": "登录成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "tokenType": "Bearer",
    "expiresIn": 86400,
    "userInfo": {
      "userId": 1,
      "username": "testuser",
      "email": "test@example.com",
      "role": "USER"
    }
  },
  "timestamp": "2025-09-30T11:00:00Z"
}

2. 用户注册

  • 接口: POST /api/auth/register
  • 描述: 用户注册新账户
  • 请求体:
{
  "username": "newuser",
  "password": "Password123",
  "confirmPassword": "Password123",
  "email": "newuser@example.com",
  "verificationCode": "123456"
}

3. 检查用户名可用性

  • 接口: GET /api/auth/check-username?username=testuser
  • 描述: 检查用户名是否已被使用

4. 检查邮箱可用性

  • 接口: GET /api/auth/check-email?email=test@example.com
  • 描述: 检查邮箱是否已被注册

5. 刷新JWT令牌

  • 接口: POST /api/auth/refresh-token
  • 请求头: Authorization: Bearer <current_token>
  • 描述: 刷新JWT令牌

用户管理接口

1. 获取所有用户(管理员)

  • 接口: GET /api/users
  • 权限: ADMIN
  • 描述: 获取系统中所有用户列表

2. 根据ID获取用户

  • 接口: GET /api/users/{id}
  • 权限: ADMIN 或 用户本人
  • 描述: 获取指定用户的详细信息

3. 获取当前用户信息

  • 接口: GET /api/users/me
  • 权限: 已认证用户
  • 描述: 获取当前登录用户的信息

4. 更新用户信息

  • 接口: PUT /api/users/{id}
  • 权限: ADMIN 或 用户本人
  • 请求体:
{
  "username": "newusername",
  "email": "newemail@example.com"
}

5. 修改用户密码

  • 接口: PUT /api/users/{id}/password
  • 权限: ADMIN 或 用户本人
  • 请求体:
{
  "oldPassword": "oldpass123",
  "newPassword": "newpass123"
}

6. 删除用户(管理员)

  • 接口: DELETE /api/users/{id}
  • 权限: ADMIN
  • 描述: 删除指定用户

7. 获取用户统计信息(管理员)

  • 接口: GET /api/users/stats
  • 权限: ADMIN
  • 描述: 获取用户总数等统计信息

8. 分页获取用户列表(管理员)

  • 接口: GET /api/users/page?page=1&size=10
  • 权限: ADMIN
  • 描述: 分页查询用户列表

数据库设计

用户表 (user)

CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(100) NOT NULL COMMENT '密码(加密)',
  `email` varchar(100) DEFAULT NULL COMMENT '邮箱地址',
  `role` varchar(20) NOT NULL DEFAULT 'USER' COMMENT '用户角色',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_username` (`username`),
  UNIQUE KEY `uk_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

快速开始

1. 环境要求

  • Java 17+
  • MySQL 8.0+
  • Maven 3.6+
  • Docker (可选)

2. 数据库配置

  1. 创建MySQL数据库 demo
  2. 执行初始化脚本 scripts/sql/init_database.sql
  3. 修改 application.properties 中的数据库连接信息

3. 运行项目

方式一:直接运行

# 编译项目
mvn clean compile

# 运行项目
mvn spring-boot:run

方式二:Docker运行

# 使用Docker Compose启动
docker-compose up -d

4. 测试接口

项目启动后,可以通过以下方式测试接口:

配置说明

application.properties 主要配置

# 服务器配置
server.port=8080

# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=22222hua

# JWT配置
jwt.secret=mySecretKeyForJWTTokenGenerationAndValidation2025
jwt.expiration=86400000
jwt.issuer=demo-app

# 邮件配置
spring.mail.host=smtp.163.com
spring.mail.username=webdom@163.com
spring.mail.password=PJgBcDuEcz3u8Ymq

开发规范

1. 代码规范

  • 使用统一的代码注释格式
  • 遵循驼峰命名规范
  • 每个类和方法都有详细注释
  • 使用Lombok减少样板代码

2. API规范

  • 统一使用ApiResponse响应格式
  • 统一的错误码和错误信息
  • 支持国际化(中文)
  • RESTful API设计

3. 安全规范

  • 密码BCrypt加密存储
  • JWT令牌认证
  • 基于角色的权限控制
  • 输入参数验证

后续开发计划

短期计划

  • 实现邮箱验证码服务
  • 添加用户登出功能
  • 实现管理员管理界面
  • 添加API接口文档(Swagger)

中期计划

  • 实现文件上传功能
  • 添加用户头像管理
  • 实现消息推送功能
  • 添加操作日志记录

长期计划

  • 实现微信小程序登录
  • 添加第三方登录支持
  • 实现分布式会话管理
  • 添加监控和性能优化

贡献指南

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

联系方式

如有问题或建议,请通过以下方式联系:


注意: 这是一个演示项目,生产环境使用前请确保:

  1. 修改默认的JWT密钥
  2. 配置正确的数据库连接
  3. 设置合适的CORS策略
  4. 启用HTTPS
  5. 配置生产环境的日志级别