# user-center **Repository Path**: RicheFactory/user-center ## Basic Information - **Project Name**: user-center - **Description**: 本项目作为统一认证中心,将承担所有关联项目的登录注册功能。后续项目用户访问任一关联系统时,均会自动跳转至本中心完成身份验证,从而构建起一套集中化、标准化的用户管理体系。用户一旦登录,后续访问其他任何关联项目均无需重复验证,实现 "一次登录,全域通行" 的便捷体验。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-09 - **Last Updated**: 2025-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 用户中心系统 (User Center) ## 📋 项目简介 用户中心系统是一个基于 Spring Boot 的用户管理服务,提供用户注册、登录、信息管理等核心功能。采用现代化的技术栈和三层架构设计,支持分布式部署和高并发场景。 ### 主要功能 - 🔐 用户注册与登录 - 👤 用户信息管理(查询、更新、删除) - 🏷️ 基于标签的用户搜索 - 👥 用户推荐功能 - 🔒 权限管理(管理员/普通用户) - 📊 分页查询 - 💾 Session 共享(基于 Redis) ## 🛠️ 技术栈 ### 后端框架 - **Spring Boot 2.6.4** - 核心框架 - **MyBatis-Plus 3.5.3.1** - ORM 框架 - **MySQL 8.0.33** - 数据持久化 - **Redis** - 缓存与 Session 存储 ### 开发工具 - **Lombok 1.18.24** - 简化实体类编写 - **Gson 2.10.1** - JSON 序列化处理 - **Apache Commons Lang3** - 通用工具类 - **Commons Pool2** - Redis 连接池管理 ### 构建工具 - **Maven** - 依赖管理与项目构建 - **Spring Boot DevTools** - 热部署支持 ## 📁 项目结构 ``` user-center/ ├── src/main/java/com/riche/usercenter/ │ ├── common/ # 通用模块 │ │ ├── BaseResponse.java # 统一响应封装 │ │ ├── ErrorCode.java # 错误码枚举 │ │ └── ResultUtils.java # 结果工具类 │ ├── config/ # 配置类 │ │ ├── CorsConfig.java # 跨域配置 │ │ ├── MybatisPlusConfig.java # MyBatis-Plus 配置 │ │ ├── RedisConfig.java # Redis 配置 │ │ └── RedisTemplateConfig.java # Redis 模板配置 │ ├── contant/ # 常量定义 │ │ └── UserConstant.java # 用户常量 │ ├── controller/ # 控制层 │ │ └── UserController.java # 用户接口控制器 │ ├── exception/ # 异常处理 │ │ ├── BusinessException.java # 业务异常 │ │ └── GlobalExceptionHandler.java # 全局异常处理器 │ ├── handler/ # 处理器 │ │ └── MyMetaObjectHandler.java # 字段自动填充处理器 │ ├── mapper/ # 数据访问层 │ │ └── UserMapper.java # 用户 Mapper 接口 │ ├── model/ # 数据模型 │ │ ├── domain/ │ │ │ └── User.java # 用户实体类 │ │ └── request/ │ │ ├── UserLoginRequest.java # 登录请求对象 │ │ └── UserRegisterRequest.java # 注册请求对象 │ ├── service/ # 业务逻辑层 │ │ ├── impl/ │ │ │ └── UserServiceImpl.java # 用户服务实现 │ │ └── UserService.java # 用户服务接口 │ └── UserCenterApplication.java # 启动类 ├── src/main/resources/ │ ├── mapper/ │ │ └── UserMapper.xml # MyBatis 映射文件 │ ├── application.yml # 应用配置(开发环境) │ ├── application-prod.yml # 应用配置(生产环境) │ └── banner.txt # 启动横幅 ├── src/test/ # 测试代码 ├── sql/ │ └── tables.sql # 数据库建表脚本 └── pom.xml # Maven 配置文件 ``` ## 🚀 快速开始 ### 环境要求 - **JDK 8** 或更高版本 - **Maven 3.x** - **MySQL 8.0+** - **Redis** ### 安装步骤 1. **克隆项目** ```bash git clone cd user-center ``` 2. **创建数据库** ```sql CREATE DATABASE yupi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 3. **导入数据表** - 执行 `sql/tables.sql` 文件中的 SQL 语句 4. **配置应用** - 修改 `src/main/resources/application.yml` 配置文件: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/yupi?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai username: root password: your_password redis: host: 127.0.0.1 port: 6379 database: 2 ``` 5. **启动 Redis** ```bash redis-server ``` 6. **编译项目** ```bash mvn clean install ``` 7. **运行项目** ```bash mvn spring-boot:run ``` 或直接运行 `UserCenterApplication` 主类 8. **访问服务** - 服务地址: `http://localhost:8080/dev-api` ## 📡 API 接口 ### 用户注册 - **URL**: `POST /dev-api/user/register` - **请求体**: ```json { "userAccount": "testuser", "userPassword": "12345678", "checkPassword": "12345678" } ``` ### 用户登录 - **URL**: `POST /dev-api/user/login` - **请求体**: ```json { "userAccount": "testuser", "userPassword": "12345678" } ``` ### 获取当前用户 - **URL**: `GET /dev-api/user/current` - **说明**: 需要登录 ### 用户搜索(管理员) - **URL**: `POST /dev-api/user/search` - **请求体**: ```json { "username": "关键词", "userAccount": "账号" } ``` ### 根据标签搜索用户 - **URL**: `GET /dev-api/user/search/tags?tagNameList=标签1,标签2` - **说明**: 需要登录 ### 用户推荐 - **URL**: `GET /dev-api/user/recommend?pageSize=10&pageNum=1` - **说明**: 分页推荐用户 ### 更新用户信息 - **URL**: `POST /dev-api/user/update` - **请求体**: ```json { "id": 1, "username": "新昵称", "avatarUrl": "头像URL" } ``` ### 删除用户(管理员) - **URL**: `POST /dev-api/user/delete` - **请求体**: 用户ID ### 用户登出 - **URL**: `POST /dev-api/user/logout` ## 🏗️ 架构设计 ### 三层架构 - **Controller 层**: 接收 HTTP 请求,参数校验,调用 Service - **Service 层**: 业务逻辑处理,事务控制 - **Mapper 层**: 数据访问,SQL 操作 ### 核心特性 - ✅ **统一响应格式**: 使用 `BaseResponse` 封装返回结果 - ✅ **全局异常处理**: 统一处理业务异常和系统异常 - ✅ **字段自动填充**: 创建时间、更新时间自动维护 - ✅ **逻辑删除**: 数据软删除,保证数据安全 - ✅ **Session 共享**: 基于 Redis 实现分布式 Session - ✅ **密码加密**: MD5 加密存储用户密码 - ✅ **脱敏处理**: 敏感信息不返回前端 ## 🔐 权限说明 ### 用户角色 - **普通用户 (userRole = 0)**: 基础功能权限 - **管理员 (userRole = 1)**: 全部管理权限 ### 权限控制 - 用户搜索、删除等操作需要管理员权限 - 更新用户信息需要本人或管理员权限 ## 📊 数据库设计 ### user 表 | 字段 | 类型 | 说明 | |------|------|------| | id | bigint | 主键(自增) | | username | varchar(255) | 用户昵称 | | userAccount | varchar(256) | 登录账号 | | avatarUrl | varchar(255) | 头像地址 | | gender | tinyint | 性别 | | userPassword | varchar(512) | 密码(MD5加密) | | phone | varchar(20) | 手机号 | | email | varchar(512) | 邮箱 | | userStatus | tinyint | 账号状态(0-禁用 1-正常) | | userRole | int | 角色(0-普通用户 1-管理员) | | tags | varchar | 标签(JSON格式) | | profile | varchar | 用户简介 | | createTime | datetime | 创建时间 | | updateTime | datetime | 更新时间 | | isDelete | tinyint | 逻辑删除(0-未删除 1-已删除) | ## 🧪 测试 ```bash # 运行所有测试 mvn test # 运行指定测试类 mvn test -Dtest=UserServiceTest ``` ## 📦 打包部署 ### 打包 ```bash mvn clean package -DskipTests ``` 生成的 jar 包位于 `target/user-center-0.0.1-SNAPSHOT.jar` ### 运行 ```bash java -jar target/user-center-0.0.1-SNAPSHOT.jar ``` ### 生产环境配置 ```bash java -jar target/user-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod ``` ## 🔧 配置说明 ### application.yml 核心配置 ```yaml server: port: 8080 # 服务端口 servlet: context-path: /dev-api # 接口前缀 spring: datasource: url: jdbc:mysql://localhost:3306/yupi # 数据库地址 username: root password: 123456 redis: host: 127.0.0.1 # Redis 地址 port: 6379 database: 2 session: timeout: 86400 # Session 过期时间(秒) store-type: redis # Session 存储方式 mybatis-plus: global-config: db-config: logic-delete-field: isDelete # 逻辑删除字段 ``` ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 📝 开发规范 - 遵循阿里巴巴 Java 开发手册 - 使用 Lombok 简化代码 - 统一使用 RESTful API 风格 - 必要的注释和文档 ## 📄 许可证 本项目采用 MIT 许可证 ## 👨‍💻 作者 **Gao Ruiqi** ## 📮 联系方式 如有问题或建议,欢迎联系:776409491@qq.com --- ⭐ 如果这个项目对你有帮助,请给一个 Star!