# 会员模块结构说明 ## 模块概述 `ruoyi-member` 模块是系统会员中心模块,负责 App 端用户管理、认证授权、设备管理、消息推送等核心功能。 - **包名**: `org.dromara.member` - **状态**: ✅ 核心功能已实现 ## 已完成工作 ### 1. 模块结构 - ✅ 创建了完整的模块目录结构 - ✅ 创建了 `pom.xml` 配置文件 - ✅ 配置了模块依赖关系 ### 2. 配置类 - ✅ 创建了 JWT 过滤器配置 (`AppJwtFilter`) - ✅ 创建了 JWT Web 配置 (`AppJwtWebConfig`) - ✅ 配置了组件扫描和过滤器注册 ### 3. 数据库 - ✅ 创建了所有业务表的实体类和 Mapper - ✅ 实现了数据库表的 CRUD 操作 - ✅ 配置了逻辑删除和字段自动填充 ### 4. 核心功能 - ✅ 用户管理(注册、登录、信息管理) - ✅ 角色管理(角色CRUD、用户角色关联) - ✅ 设备管理(设备绑定、推送令牌管理) - ✅ 文件管理(文件上传、下载、管理) - ✅ 消息管理(消息推送、通知管理) - ✅ 操作日志(日志记录、查询、统计) - ✅ 登录日志(登录日志记录、查询) - ✅ 版本管理(App版本管理、更新检查) - ✅ 社交认证(第三方登录、绑定) - ✅ JWT认证(令牌生成、刷新、验证) ### 5. 异常处理 - ✅ 创建了统一的异常处理类 (`AppExceptionHandler`) - ✅ 定义了业务异常类(`DeviceException`, `FileException`, `VersionException`) ### 6. API接口 - ✅ 实现了管理端接口(用户、角色、配置管理) - ✅ 实现了移动端接口(用户、角色、设备、文件、消息、日志、版本管理) - ✅ 实现了认证接口(JWT登录、注册、刷新) ## 核心功能模块 ### 1. 用户管理 (AppUser) - **职责**: 用户注册、登录、信息管理、密码管理 - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_user`, `app_user_role` ### 2. 角色管理 (AppRole) - **职责**: 角色管理、用户角色关联 - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_role`, `app_user_role` ### 3. 设备管理 (AppDevice) - **职责**: 用户设备绑定、推送令牌管理、设备状态管理 - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_device` ### 4. 文件管理 (AppFile) - **职责**: 文件上传、下载、管理(头像、文档、图片等) - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_file` ### 5. 消息管理 (AppMessage) - **职责**: 消息推送、通知管理、用户消息关联 - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_message`, `app_user_message` ### 6. 操作日志 (AppOperLog) - **职责**: 用户操作日志记录、查询、统计分析 - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_oper_log` ### 7. 登录日志 (AppLoginLog) - **职责**: 用户登录日志记录、查询 - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_login_log` ### 8. 版本管理 (AppVersion) - **职责**: App 版本管理、更新检查、强制更新 - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_version` ### 9. 社交认证 (AppSocialAuth) - **职责**: 第三方登录(微信、QQ、微博等) - **状态**: ✅ 核心功能已实现 - **数据库表**: `app_social_auth` ### 10. JWT认证 (JwtUtil) - **职责**: JWT 令牌生成、刷新、验证 - **状态**: ✅ 核心功能已实现 - **配置文件**: `AppJwtFilter`, `AppJwtWebConfig` ## 数据库表结构说明 ### 1. 用户表 (app_user) - **功能**: 存储 App 端用户基本信息 - **关键字段**: `user_id`, `user_name`, `nick_name`, `phone`, `email`, `password`, `status`, `avatar`, `sex`, `login_ip`, `login_date`, `register_time` - **索引**: `user_name` (唯一), `phone`, `email` - **状态说明**: - `status`: 0-正常, 1-停用 - `sex`: 0-男, 1-女, 2-未知 - `del_flag`: 0-存在, 1-删除 ### 2. 角色表 (app_role) - **功能**: 存储 App 端角色信息 - **关键字段**: `role_id`, `role_name`, `role_key`, `role_sort`, `status` - **索引**: `role_key` (唯一), `status` - **状态说明**: - `status`: 0-正常, 1-停用 - `del_flag`: 0-存在, 1-删除 ### 3. 用户角色关联表 (app_user_role) - **功能**: 存储用户和角色的关联关系 - **关键字段**: `user_id`, `role_id` - **索引**: `user_id`, `role_id`, `uk_user_role` (唯一索引) - **说明**: 多对多关系,一个用户可以有多个角色,一个角色可以分配给多个用户 ### 4. 设备表 (app_device) - **功能**: 存储用户绑定的设备信息 - **关键字段**: `device_id`, `user_id`, `device_type`, `device_name`, `device_model`, `device_brand`, `os_version`, `app_version`, `push_token`, `is_active`, `last_active_time` - **索引**: `user_id`, `device_type`, `push_token` - **状态说明**: - `device_type`: ios, android, h5 - `is_active`: 0-否, 1-是 - `del_flag`: 0-存在, 2-删除 ### 5. 文件表 (app_file) - **功能**: 存储用户上传的文件信息 - **关键字段**: `file_id`, `user_id`, `file_name`, `original_name`, `file_path`, `file_url`, `file_size`, `file_type`, `file_suffix`, `file_category`, `storage_service`, `status`, `download_count`, `is_public`, `file_md5` - **索引**: `user_id`, `file_category`, `file_md5`, `status` - **状态说明**: - `file_category`: 1-头像, 2-文档, 3-图片, 4-视频, 5-音频, 6-其他 - `status`: 0-正常, 1-删除 - `is_public`: 0-私有, 1-公开 - `del_flag`: 0-存在, 2-删除 ### 6. 消息表 (app_message) - **功能**: 存储系统消息和通知 - **关键字段**: `message_id`, `title`, `content`, `message_type`, `target_type`, `target_ids`, `send_time`, `status` - **索引**: `message_type`, `target_type`, `status`, `send_time` - **状态说明**: - `message_type`: system-系统消息, notice-通知, activity-活动 - `target_type`: all-全部用户, user-指定用户, role-指定角色 - `status`: 0-待发送, 1-已发送, 2-发送失败 - `del_flag`: 0-存在, 2-删除 ### 7. 用户消息关联表 (app_user_message) - **功能**: 存储用户消息的读取记录 - **关键字段**: `id`, `user_id`, `message_id`, `is_read`, `read_time` - **索引**: `user_id`, `message_id`, `is_read` - **状态说明**: - `is_read`: 0-未读, 1-已读 - `del_flag`: 0-存在, 2-删除 ### 8. 操作日志表 (app_oper_log) - **功能**: 存储用户操作日志 - **关键字段**: `oper_id`, `title`, `business_type`, `method`, `request_method`, `oper_name`, `oper_url`, `oper_ip`, `oper_location`, `oper_param`, `json_result`, `status`, `error_msg`, `oper_time`, `cost_time` - **索引**: `oper_name`, `status`, `oper_time`, `business_type` - **状态说明**: - `business_type`: 0-其它, 1-新增, 2-修改, 3-删除 - `status`: 0-正常, 1-异常 ### 9. 登录日志表 (app_login_log) - **功能**: 存储用户登录日志 - **关键字段**: `info_id`, `user_name`, `status`, `ipaddr`, `login_location`, `browser`, `os`, `msg`, `login_time` - **索引**: `user_name`, `status`, `login_time`, `ipaddr` - **状态说明**: - `status`: 0-成功, 1-失败 ### 10. 版本表 (app_version) - **功能**: 存储 App 版本信息 - **关键字段**: `version_id`, `version_code`, `version_name`, `update_content`, `download_url`, `is_force`, `platform` - **索引**: `platform`, `version_code` - **状态说明**: - `platform`: android, ios - `is_force`: 0-否, 1-是 - `del_flag`: 0-存在, 2-删除 ### 11. 社交认证表 (app_social_auth) - **功能**: 存储第三方登录授权信息 - **关键字段**: `id`, `user_id`, `platform`, `platform_uid`, `open_id`, `union_id`, `access_token`, `expire_in`, `refresh_token`, `scope` - **索引**: `user_id`, `platform`, `platform_uid`, `open_id`, `union_id` - **状态说明**: - `platform`: wechat_mp-微信小程序, wechat_open-微信开放平台, qq-QQ, weibo-微博 - `del_flag`: 0-存在, 2-删除 ## 功能清单 ### 1. 用户管理 #### 已实现功能 ✅ ##### 用户基础功能 - ✅ 用户注册 - 账号注册(支持用户名、手机号、邮箱注册) - 账号唯一性校验 - 手机号唯一性校验 - 邮箱唯一性校验 - 注册时自动分配默认角色 - ✅ 用户登录 - 账号密码登录 - 手机号验证码登录 ✅(在 ruoyi-server 模块实现) - 邮箱验证码登录 ✅(在 ruoyi-server 模块实现) - 验证码发送(短信/邮箱)✅(在 ruoyi-server 模块实现) - JWT 令牌生成 - 登录日志记录 - ✅ 用户信息管理 - 用户列表查询(分页、条件筛选) - 用户详情查询 - 用户新增/修改/删除 - 用户状态管理(启用/停用) - 用户信息导出 - ✅ 用户资料管理 - 用户资料查询 - 用户资料修改 - 头像管理(关联文件表) - ✅ 密码管理 - 修改密码(需验证旧密码) - 重置密码(管理员操作) - 密码加密(BCrypt) - ✅ 第三方账号绑定 - 第三方账号绑定/解绑 ✅(在 ruoyi-server 模块实现) - 查询绑定列表 ✅ #### 待实现功能 ⏳ - [ ] 忘记密码(通过手机号/邮箱验证码找回密码) - [ ] 独立的手机号/邮箱绑定功能(当前可通过更新用户资料方式修改) - [ ] 用户等级体系 - 用户等级定义 - 用户等级升级规则 - 用户积分/经验值管理 - [ ] 用户标签 - 用户标签管理 - 用户标签关联 - 标签筛选用户 ### 2. 角色管理 #### 已实现功能 ✅ - ✅ 角色CRUD操作 - 角色列表查询(分页、条件筛选) - 角色详情查询 - 角色新增/修改/删除 - 角色导出功能 - ✅ 角色状态管理 - 启用/禁用角色 - ✅ 用户角色关联 - 查询用户已分配角色 - 查询用户未分配角色 - 分配角色给用户 - 取消用户角色关联 - 批量分配/取消角色 #### 待实现功能 ⏳ - [ ] 角色权限管理 - 角色权限配置 - 权限点管理 - 权限验证(需集成权限框架) - [ ] 角色数据权限 - 数据权限范围配置 - 数据权限过滤 ### 3. 设备管理 #### 已实现功能 ✅ - ✅ 设备绑定 - 设备信息绑定 - 设备信息更新 - ✅ 设备查询 - 设备列表查询 - 设备详情查询 - 我的设备列表查询 - 活跃设备查询 - ✅ 设备状态管理 - 设备活跃状态更新 - 推送令牌管理 - 设备心跳检测 - ✅ 设备解绑 - 设备解绑功能 #### 待实现功能 ⏳ - [ ] 设备推送管理 - 消息推送(需集成推送服务) - 推送记录查询 - 推送统计 - [ ] 设备安全 - 设备指纹识别 - 异常设备检测 - 设备黑名单管理 ### 4. 文件管理 #### 已实现功能 ✅ - ✅ 文件上传 - 单文件上传 - 批量文件上传 - 头像上传 - ✅ 文件查询 - 文件列表查询(分页) - 文件详情查询 - 按分类查询文件 - 公开文件查询 - ✅ 文件下载 - 文件下载 - 下载次数统计 - ✅ 文件管理 - 文件信息修改 - 文件状态管理 - 文件公开/私有设置 - 文件删除 - ✅ 文件校验 - 文件MD5校验(秒传功能) - 文件统计 #### 待实现功能 ⏳ - [ ] 文件存储优化 - 文件存储服务商集成(OSS、COS等) - 文件CDN加速 - 文件压缩处理 - [ ] 文件预览 - 图片预览 - 文档预览(PDF、Office等) - 视频播放 - [ ] 文件分享 - 文件分享链接生成 - 分享链接访问控制 - 分享统计 ### 5. 消息管理 #### 已实现功能 ✅ - ✅ 消息管理 - 消息列表查询(分页) - 消息详情查询 - 消息新增/修改/删除 - 消息导出 - ✅ 用户消息 - 我的消息列表查询 - 未读消息数量查询 - 消息标记已读 - 批量标记已读 - 全部标记已读 - ✅ 消息推送 - 系统消息发送 - 个人消息发送 - 消息推送(需集成推送服务) - 消息广播 #### 待实现功能 ⏳ - [ ] 消息推送集成 - 推送服务集成(极光推送、个推等) - 推送消息发送 - 推送结果回调 - 推送统计 - [ ] 消息模板 - 消息模板管理 - 模板变量替换 - [ ] 消息分类 - 消息分类管理 - 消息分类筛选 - [ ] 消息设置 - 用户消息推送设置 - 消息免打扰时段 - 消息接收方式设置 ### 6. 操作日志 #### 已实现功能 ✅ - ✅ 日志记录 - 操作日志记录 - 批量操作日志记录 - ✅ 日志查询 - 日志列表查询(分页、条件筛选) - 我的操作日志查询 - 日志详情查询 - 日志导出 - ✅ 日志统计 - 操作日志统计 - 行为分析 - 热门操作统计 - 错误操作统计 - ✅ 日志清理 - 日志清理 - 按时间清理日志 #### 待实现功能 ⏳ - [ ] 日志分析 - 操作趋势分析 - 用户行为分析 - 异常操作分析 - [ ] 日志告警 - 异常操作告警 - 告警规则配置 ### 7. 登录日志 #### 已实现功能 ✅ - ✅ 登录日志记录 - 登录成功/失败日志记录 - 登录IP、地点、浏览器等信息记录 - ✅ 登录日志查询 - 登录日志列表查询(分页、条件筛选) - 登录日志详情查询 - 登录日志导出 #### 待实现功能 ⏳ - [ ] 登录安全 - 异常登录检测 - 异地登录提醒 - 登录IP白名单/黑名单 - [ ] 登录统计 - 登录统计报表 - 登录趋势分析 - 登录设备分析 ### 8. 版本管理 #### 已实现功能 ✅ - ✅ 版本管理 - 版本列表查询(分页) - 版本详情查询 - 版本新增/修改/删除 - 版本导出 - ✅ 版本检查 - 检查更新 - 获取最新版本 - 版本历史查询 - 强制更新检查 - 更新信息查询 - 版本对比 - ✅ 版本统计 - 版本下载记录 - 版本安装记录 #### 待实现功能 ⏳ - [ ] 版本发布流程 - 版本发布审核 - 版本发布通知 - [ ] 版本回退 - 版本回退功能 - 回退记录 ### 9. 社交认证 #### 已实现功能 ✅ - ✅ 第三方登录 - 微信小程序登录 - 微信开放平台登录 - QQ登录 - 微博登录 - ✅ 授权管理 - 授权信息存储 - 授权信息查询 - 授权绑定/解绑 ✅(在 ruoyi-server 模块实现) #### 待实现功能 ⏳ - [ ] 更多第三方登录 - 支付宝登录 - 抖音登录 - 苹果登录(Apple ID) - [ ] 授权管理增强 - 授权过期处理 - 授权刷新 - 授权撤销 ### 10. JWT认证 #### 已实现功能 ✅ - ✅ JWT令牌生成 - Access Token生成 - Refresh Token生成 - ✅ JWT令牌验证 - Token验证过滤器 - Token有效性校验 - ✅ JWT令牌刷新 - Token刷新接口 - ✅ 用户登录/登出 - 登录接口(生成Token) - 登出接口(Token失效) - ✅ 验证码 - 图形验证码生成 #### 待实现功能 ⏳ - [ ] Token安全增强 - Token黑名单(Redis存储) - Token刷新策略优化 - Token过期时间配置 - [ ] 多端登录管理 - 多设备登录控制 - 登录设备列表查询 - 强制下线功能 ## API接口详细说明 ### 管理端接口 #### 用户管理 (`/admin/member/user`) - `GET /admin/member/user/list` - 查询用户列表(分页) - `GET /admin/member/user/{userId}` - 获取用户详情 - `POST /admin/member/user` - 新增用户 - `PUT /admin/member/user` - 修改用户 - `DELETE /admin/member/user/{userIds}` - 删除用户 - `POST /admin/member/user/export` - 导出用户列表 - `GET /admin/member/user/profile` - 获取当前用户资料 - `PUT /admin/member/user/profile` - 修改当前用户资料 - `PUT /admin/member/user/resetPwd` - 重置用户密码 - `PUT /admin/member/user/changeStatus` - 修改用户状态 - `GET /admin/member/user/authRole/{userId}` - 查询用户角色 - `GET /admin/member/user/deptTree` - 查询部门树(预留) #### 角色管理 (`/admin/member/role`) - `GET /admin/member/role/list` - 查询角色列表(分页) - `GET /admin/member/role/{roleId}` - 获取角色详情 - `POST /admin/member/role` - 新增角色 - `PUT /admin/member/role` - 修改角色 - `DELETE /admin/member/role/{roleIds}` - 删除角色 - `POST /admin/member/role/export` - 导出角色列表 - `GET /admin/member/role/optionselect` - 查询角色选项列表 - `GET /admin/member/role/authUser/allocatedList` - 查询已分配用户角色列表 - `GET /admin/member/role/authUser/unallocatedList` - 查询未分配用户角色列表 - `PUT /admin/member/role/authUser/cancelAll` - 取消授权用户所有角色 - `PUT /admin/member/role/authUser/selectAll` - 批量选择授权用户角色 #### 配置管理 (`/admin/member/config`) - `GET /admin/member/config/list` - 查询配置列表 - `GET /admin/member/config/{configId}` - 获取配置详情 - `POST /admin/member/config` - 新增配置 - `PUT /admin/member/config` - 修改配置 - `DELETE /admin/member/config/{configIds}` - 删除配置 - `POST /admin/member/config/export` - 导出配置列表 - `DELETE /admin/member/config/refreshCache` - 刷新配置缓存 - `GET /admin/member/config/configKey/{configKey}` - 根据配置键查询配置值 - `GET /admin/member/config/systemInfo` - 获取系统信息 - `GET /admin/member/config/statistics` - 获取统计数据 ### 移动端接口 #### 用户管理 (`/app/member/user`) - `GET /app/member/user/list` - 查询用户列表 - `GET /app/member/user/{userId}` - 获取用户详情 - `POST /app/member/user` - 新增用户 - `PUT /app/member/user` - 修改用户 - `DELETE /app/member/user/{userIds}` - 删除用户 - `POST /app/member/user/export` - 导出用户列表 - `PUT /app/member/user/resetPwd` - 重置密码 - `PUT /app/member/user/changeStatus` - 修改状态 - `GET /app/member/user/profile/{userId}` - 获取用户资料 - `GET /app/member/user/getInfo` - 获取当前用户信息 - `GET /app/member/user/profile` - 获取当前用户资料 - `PUT /app/member/user/profile` - 修改用户资料 - `PUT /app/member/user/profile/updatePwd` - 修改密码 #### 角色管理 (`/app/member/role`) - `GET /app/member/role/list` - 查询角色列表 - `GET /app/member/role/{roleId}` - 获取角色详情 - `POST /app/member/role` - 新增角色 - `PUT /app/member/role` - 修改角色 - `DELETE /app/member/role/{roleIds}` - 删除角色 - `POST /app/member/role/export` - 导出角色列表 - `GET /app/member/role/optionselect` - 查询角色选项列表 - `GET /app/member/role/authUser/allocatedList` - 查询已分配用户角色列表 - `GET /app/member/role/authUser/unallocatedList` - 查询未分配用户角色列表 - `PUT /app/member/role/authUser/cancel` - 取消授权用户角色 - `PUT /app/member/role/authUser/cancelAll` - 取消授权用户所有角色 - `PUT /app/member/role/authUser/selectAll` - 批量选择授权用户角色 #### 设备管理 (`/app/member/device`) - `GET /app/member/device/list` - 查询设备列表 - `GET /app/member/device/{deviceId}` - 获取设备详情 - `POST /app/member/device/bind` - 绑定设备 - `PUT /app/member/device` - 修改设备信息 - `DELETE /app/member/device/{deviceId}` - 解绑设备 - `GET /app/member/device/my` - 查询我的设备列表 - `GET /app/member/device/active` - 查询活跃设备列表 - `PUT /app/member/device/{deviceId}/status` - 更新设备状态 - `PUT /app/member/device/{deviceId}/push-token` - 更新推送令牌 - `POST /app/member/device/{deviceId}/heartbeat` - 设备心跳 - `GET /app/member/device/by-push-token` - 根据推送令牌查询设备 #### 文件管理 (`/app/member/file`) - `GET /app/member/file/list` - 查询文件列表 - `GET /app/member/file/{fileId}` - 获取文件详情 - `POST /app/member/file` - 新增文件记录 - `PUT /app/member/file` - 修改文件信息 - `DELETE /app/member/file/{fileIds}` - 删除文件 - `POST /app/member/file/upload` - 上传文件 - `POST /app/member/file/upload/avatar` - 上传头像 - `POST /app/member/file/upload/batch` - 批量上传文件 - `GET /app/member/file/category/{fileCategory}` - 按分类查询文件 - `GET /app/member/file/download/{fileId}` - 下载文件 - `PUT /app/member/file/status/{fileId}` - 更新文件状态 - `PUT /app/member/file/public/{fileId}` - 更新文件公开状态 - `GET /app/member/file/statistics` - 获取文件统计 - `GET /app/member/file/check/{fileMd5}` - 检查文件是否存在 - `GET /app/member/file/public/category/{fileCategory}` - 查询公开文件 #### 消息管理 (`/app/member/message`) - `GET /app/member/message/list` - 查询消息列表 - `GET /app/member/message/myMessages` - 查询我的消息列表 - `GET /app/member/message/unreadCount` - 查询未读消息数量 - `GET /app/member/message/{messageId}` - 获取消息详情 - `POST /app/member/message` - 新增消息 - `PUT /app/member/message` - 修改消息 - `DELETE /app/member/message/{messageIds}` - 删除消息 - `POST /app/member/message/export` - 导出消息列表 - `PUT /app/member/message/markRead/{messageId}` - 标记消息已读 - `PUT /app/member/message/markReadBatch` - 批量标记消息已读 - `PUT /app/member/message/markAllRead` - 全部标记已读 - `POST /app/member/message/sendSystem` - 发送系统消息 - `POST /app/member/message/sendPersonal` - 发送个人消息 - `POST /app/member/message/push` - 推送消息 - `POST /app/member/message/broadcast` - 广播消息 #### 操作日志 (`/app/member/operlog`) - `GET /app/member/operlog/list` - 查询操作日志列表 - `GET /app/member/operlog/my` - 查询我的操作日志 - `GET /app/member/operlog/{operId}` - 获取操作日志详情 - `POST /app/member/operlog` - 新增操作日志 - `PUT /app/member/operlog` - 修改操作日志 - `DELETE /app/member/operlog/{operIds}` - 删除操作日志 - `POST /app/member/operlog/export` - 导出操作日志列表 - `DELETE /app/member/operlog/clean` - 清理操作日志 - `DELETE /app/member/operlog/cleanByTime` - 按时间清理操作日志 - `GET /app/member/operlog/statistics` - 获取操作日志统计 - `GET /app/member/operlog/behavior` - 获取行为分析 - `GET /app/member/operlog/popular` - 获取热门操作 - `GET /app/member/operlog/errors` - 获取错误操作 - `POST /app/member/operlog/record` - 记录操作 - `POST /app/member/operlog/batchRecord` - 批量记录操作 #### 版本管理 (`/app/member/version`) - `GET /app/member/version/list` - 查询版本列表 - `GET /app/member/version/{versionId}` - 获取版本详情 - `GET /app/member/version/checkUpdate` - 检查更新 - `GET /app/member/version/latest` - 获取最新版本 - `GET /app/member/version/history` - 获取版本历史 - `GET /app/member/version/checkForceUpdate` - 检查强制更新 - `GET /app/member/version/updateInfo` - 获取更新信息 - `GET /app/member/version/compare` - 版本对比 - `POST /app/member/version/download/{versionId}` - 记录下载 - `POST /app/member/version/install/{versionId}` - 记录安装 ### 认证接口 #### JWT认证 (`/app/jwt`) - `GET /app/jwt/captcha` - 获取验证码 - `POST /app/jwt/register` - 用户注册 - `POST /app/jwt/login` - 用户登录 - `POST /app/jwt/refresh` - 刷新Token - `POST /app/jwt/logout` - 用户登出 #### 第三方账号绑定 (`/app/auth`) - 在 ruoyi-server 模块 - `POST /app/auth/bind/social` - 绑定第三方账号 - `POST /app/auth/unbind/social` - 解绑第三方账号 - `GET /app/auth/social/list` - 获取用户绑定的第三方账号列表 - `GET /app/auth/binding/{source}` - 获取第三方登录跳转URL - `POST /app/auth/social/binding` - 社交账号绑定回调 ## 技术栈与开发规范 ### 技术栈 - **框架**: Spring Boot 3.x - **ORM**: MyBatis-Plus - **数据库**: MySQL 8.0+ - **认证**: Sa-Token + JWT - **API文档**: Swagger/OpenAPI 3.0 - **构建工具**: Maven - **安全**: Spring Security Crypto (BCrypt) ### 开发规范 #### 包结构规范 - `controller` - 控制器层(分为 `admin` 和 `app` 两个子包) - `domain` - 实体类(包含 `bo` 业务对象和 `vo` 视图对象子包) - `mapper` - MyBatis Mapper 接口 - `service` - 服务接口(实现类放在 `impl` 子包) - `config` - 配置类(JWT过滤器、Web配置等) - `exception` - 异常处理类 - `utils` - 工具类(JWT工具等) #### 代码规范 - 统一使用 Lombok 简化代码 - 统一异常处理,使用 `ServiceException` 抛出业务异常 - 统一返回格式,使用 `R` 封装返回结果 - 统一分页查询,使用 `PageQuery` 和 `TableDataInfo` - 统一日志记录,使用 `@Log` 注解记录操作日志 - 统一权限控制,管理端接口使用 `@SaCheckPermission` 注解 #### 数据库设计规范 - 表名使用 `app_` 前缀 - 字段命名使用下划线命名法(snake_case) - 必须包含 `create_by`, `create_time`, `update_by`, `update_time` 字段 - 删除标记使用逻辑删除(`del_flag` 字段) - 状态字段统一使用 `status`,0表示启用/正常,1表示禁用/异常 #### API设计规范 - RESTful 风格设计 - 管理端接口路径:`/admin/member/{module}/{resource}` - 移动端接口路径:`/app/member/{module}/{resource}` - 使用 HTTP 标准方法:GET(查询)、POST(新增)、PUT(修改)、DELETE(删除) - 统一使用 JSON 格式进行数据交互 - 使用 Swagger 注解完善接口文档 ## 模块依赖关系 ``` ruoyi-member (会员中心模块) ├── 依赖: ruoyi-common-* (通用工具模块) │ ├── ruoyi-common-core (核心工具) │ ├── ruoyi-common-doc (API文档) │ ├── ruoyi-common-log (日志) │ ├── ruoyi-common-mybatis (MyBatis) │ ├── ruoyi-common-security (安全) │ ├── ruoyi-common-web (Web) │ ├── ruoyi-common-excel (Excel) │ ├── ruoyi-common-translation (翻译) │ ├── ruoyi-common-social (社交登录) │ ├── ruoyi-common-satoken (权限认证) │ └── ruoyi-common-oss (对象存储) ├── 依赖: sa-token-spring-boot3-starter (Sa-Token) ├── 依赖: sa-token-jwt (JWT支持) └── 依赖: spring-security-crypto (密码加密) ``` ## 模块集成说明 ### 与 ruoyi-server 模块的集成 - **登录功能集成**: 手机号登录、邮箱登录功能在 `ruoyi-server` 模块实现 - `AppSmsAuthStrategy` - 手机号登录策略 - `AppEmailAuthStrategy` - 邮箱登录策略 - `CaptchaController` - 验证码发送接口 - **第三方账号绑定集成**: 第三方账号绑定/解绑功能在 `ruoyi-server` 模块实现 - `AppAuthController` - 提供绑定/解绑接口 - **用户服务集成**: `ruoyi-server` 模块通过依赖 `ruoyi-member` 模块使用用户服务 ### 与其他模块的集成 - **文件存储**: 依赖 `ruoyi-common-oss` 模块,支持对象存储服务集成(OSS、COS等) - **社交登录**: 依赖 `ruoyi-common-social` 模块,支持第三方登录(微信、QQ、微博等) - **权限认证**: 依赖 `ruoyi-common-satoken` 模块,使用 Sa-Token 进行权限管理 ## 下一步工作 ### 功能完善 1. **用户管理增强** - [x] 手机号/邮箱登录功能 ✅(已在 ruoyi-server 模块实现) - [x] 第三方账号绑定/解绑功能 ✅(已在 ruoyi-server 模块实现) - [ ] 忘记密码功能(通过手机号/邮箱验证码找回密码) - [ ] 独立的手机号/邮箱绑定功能(当前可通过更新用户资料方式修改) - [ ] 用户等级体系 - [ ] 用户标签管理 2. **角色权限系统** - [ ] 权限点管理 - [ ] 角色权限配置 - [ ] 数据权限管理 3. **消息推送集成** - [ ] 集成推送服务(极光推送、个推等) - [ ] 消息推送功能完善 - [ ] 推送统计功能 4. **文件管理增强** - [ ] 文件存储服务集成(OSS、COS等) - [ ] 文件预览功能 - [ ] 文件分享功能 5. **安全增强** - [ ] Token黑名单机制 - [ ] 多端登录管理 - [ ] 异常登录检测 - [ ] 登录IP白名单/黑名单 6. **日志分析** - [ ] 操作日志分析功能 - [ ] 登录日志分析功能 - [ ] 日志告警功能 ### 性能优化 1. **缓存优化** - [ ] 用户信息缓存(Redis) - [ ] 角色权限缓存 - [ ] 配置信息缓存 2. **数据库优化** - [ ] 索引优化 - [ ] 查询优化 - [ ] 分表策略(日志表) ### 测试验证 1. **单元测试** - [ ] Service层单元测试 - [ ] Controller层单元测试 2. **集成测试** - [ ] API接口测试 - [ ] 业务流程测试 ## 开发指南 ### 新增功能开发步骤 1. **数据库设计** - 设计表结构(遵循数据库设计规范) - 确保字段命名规范,包含必要的索引 - 添加必要的状态字段和逻辑删除字段 2. **创建实体类** - 在 `domain` 包下创建实体类 - 创建对应的 `Bo`(业务对象)和 `Vo`(视图对象) - 使用 Lombok 简化代码 3. **创建 Mapper** - 在 `mapper` 包下创建 Mapper 接口 - 继承 `BaseMapper` 获得基础 CRUD 功能 - 如需复杂查询,在 `resources/mapper/member` 下创建 XML 文件 4. **创建 Service** - 在 `service` 包下创建 Service 接口 - 在 `service/impl` 包下创建 Service 实现类 - 实现业务逻辑,使用事务注解保证数据一致性 5. **创建 Controller** - 管理端接口:在 `controller/admin` 包下创建 - 移动端接口:在 `controller/app` 包下创建 - 添加 Swagger 注解完善接口文档 - 添加权限控制注解(管理端使用 `@SaCheckPermission`) 6. **测试验证** - 编写单元测试(可选) - 使用 Swagger UI 测试接口 - 验证业务逻辑正确性 ### 代码迁移指南 如果要将现有代码迁移到新的模块结构: 1. **创建新模块结构**(如果尚未创建) 2. **复制代码到新模块** 3. **修改包名**(如需要) 4. **更新导入语句** 5. **更新 Mapper XML 文件中的命名空间** 6. **测试验证功能正常** ## 注意事项 1. **登录功能**: 手机号登录、邮箱登录功能已在 `ruoyi-server` 模块实现(通过 `AppSmsAuthStrategy` 和 `AppEmailAuthStrategy`),验证码发送功能通过 `CaptchaController` 提供 2. **密码安全**: 用户密码使用 BCrypt 加密,确保密码安全存储 3. **Token安全**: JWT Token 需要设置合理的过期时间,建议使用 Refresh Token 机制 4. **文件上传**: 文件上传需要限制文件大小和类型,防止恶意文件上传 5. **消息推送**: 消息推送需要集成第三方推送服务,注意推送频率限制 6. **日志管理**: 操作日志和登录日志会随着时间增长,建议定期清理或归档 7. **设备管理**: 设备绑定需要考虑设备唯一性,避免重复绑定 8. **社交登录**: 第三方登录需要配置相应的应用ID和密钥 9. **数据一致性**: 用户删除需要考虑关联数据(设备、文件、消息等)的处理 10. **并发安全**: 用户注册、登录等操作需要考虑并发安全性 11. **异常处理**: 需要统一异常处理,避免敏感信息泄露 12. **模块集成**: 注意与 `ruoyi-server` 模块的集成关系,部分功能(如登录、第三方绑定)在 server 模块实现 13. **配置管理**: JWT 过滤器配置在 `AppJwtWebConfig` 中,需要正确配置过滤路径 14. **权限控制**: 管理端接口需要添加权限控制,移动端接口需要添加登录验证