# remember_20261105 **Repository Path**: burns/remember_20261105 ## Basic Information - **Project Name**: remember_20261105 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-05 - **Last Updated**: 2026-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 记得住 把难以记忆的内容,通过图片、歌曲、笑话、顺口溜等方式描述出来,让大家用轻松的方式记住复杂内容。 - 所有人都可以发布「难记的内容」 - 所有人都可以用「记忆妙招」回复,帮助大家记住 - 支持点赞、收藏、评论、回复、互动消息 - 5 个 Tab:首页、广场、发布、消息、我的 - Android App 使用 uni-app 开发,后端使用 Spring Boot 3 + JDK 17 + MySQL 8 ## 功能清单 | 模块 | 功能 | | --- | --- | | 首页 | 最新 / 最热内容流、分类筛选、搜索、点赞、收藏、跳转详情 | | 广场 | 按分类浏览内容、分类热度、最新 / 最热排序 | | 发布 | 标题、分类、内容、配图(最多 9 张)、难度、标签 | | 消息 | 点赞 / 收藏 / 评论通知、未读角标、全部已读 | | 我的 | 个人资料、发布数 / 获赞 / 收藏统计、我的发布、我的收藏、编辑资料、退出登录 | | 详情 | 内容展示、配图预览、点赞收藏、评论 / 回复、选择记忆方法(顺口溜 / 歌曲 / 图片 / 笑话 / 谐音 / 其他) | | 账号 | 注册、登录、JWT 无状态鉴权、退出登录 | ## 目录结构 ``` remember_20261105/ ├── backend/ # Spring Boot 3 后端 │ ├── pom.xml │ └── src/main/ │ ├── java/com/jidezhu/ │ │ ├── config/ # Web、MyBatis-Plus、Jackson、元数据填充 │ │ ├── controller/ # REST API │ │ ├── dto/ # 请求参数 │ │ ├── entity/ # 数据库实体 │ │ ├── mapper/ # MyBatis-Plus Mapper │ │ ├── security/ # JWT、登录拦截、用户上下文 │ │ ├── service/ # 业务逻辑 │ │ ├── vo/ # 返回对象 │ │ └── seed/ # 首次启动演示数据 │ └── resources/ │ ├── application.yml │ └── db/schema.sql # 建库建表 + 分类种子数据 ├── frontend/ # uni-app 前端(可直接用 HBuilderX 打开) │ ├── pages/ # 首页、广场、发布、消息、我的、详情、登录注册等 │ ├── components/ # post-card、jd-avatar、empty-state │ ├── api/ # 接口封装 │ ├── store/ # 登录状态 │ ├── utils/ # 请求、时间、URL、登录校验、消息角标 │ ├── static/ # TabBar 图标、Logo │ ├── pages.json │ ├── manifest.json │ └── scripts/gen-icons.mjs # 重新生成 TabBar 图标 / Logo ├── docker-compose.yml # 可选:一条命令启动 MySQL └── README.md ``` ## 技术栈 ### 后端 - Spring Boot 3.2.5 - JDK 17 - MyBatis-Plus 3.5.6 - MySQL 8 - JWT(jjwt 0.12.5) - BCrypt 密码加密 - Lombok ### 前端 - uni-app(Vue 3) - HBuilderX 编译运行(H5 / Android) - 原生组件 + 自定义 TabBar 图标 - SCSS 设计变量 ## 快速开始 ### 1. 准备数据库 方式一:使用 Docker Compose ```bash docker compose up -d ``` 方式二:本机已有 MySQL ```bash mysql -uroot -p < backend/src/main/resources/db/schema.sql ``` 脚本会创建 `jidezhu` 数据库、所有数据表,并写入 9 个内容分类。 ### 2. 启动后端 ```bash cd backend mvn spring-boot:run ``` 默认配置: | 配置 | 默认值 | 说明 | | --- | --- | --- | | `DB_URL` | `jdbc:mysql://localhost:3306/jidezhu?...` | 数据库地址 | | `DB_USERNAME` | `root` | 数据库用户名 | | `DB_PASSWORD` | `root` | 数据库密码 | | `JWT_SECRET` | `jidezhu-remember-secret-key-...` | JWT 密钥,生产环境必须修改 | | `UPLOAD_DIR` | `./uploads` | 图片上传目录 | 例如本机 MySQL 密码不是 `root`: ```bash $env:DB_PASSWORD="你的密码" mvn spring-boot:run ``` 后端启动成功后: - 接口地址:`http://localhost:8080` - 图片地址:`http://localhost:8080/uploads/...` - 首次启动会自动写入演示数据(3 个用户、8 条内容、演示评论、点赞收藏、消息) #### 演示账号 | 用户名 | 密码 | | --- | --- | | `demo` | `123456` | | `xiaohe` | `123456` | | `cat` | `123456` | ### 3. 启动前端 1. 安装 [HBuilderX](https://www.dcloud.io/hbuilderx.html) 2. `文件` → `打开目录`,选择 `frontend` 目录 3. `运行` → `运行到浏览器` → Chrome,即可预览 H5 4. Android App: - `运行` → `手机/模拟器` → 运行到 Android 设备 - 打包:`发行` → `原生 App-云打包` #### 修改后端地址 打开 `frontend/config.js`: ```js // #ifdef APP-PLUS BASE_URL = 'http://10.0.2.2:8080' // Android 模拟器 // #endif // #ifdef H5 let BASE_URL = 'http://localhost:8080' // #endif ``` - H5 预览:`http://localhost:8080` - Android 模拟器:`http://10.0.2.2:8080` - Android 真机:改成电脑局域网 IP,例如 `http://192.168.1.8:8080`,手机和电脑需在同一 Wi-Fi 下 `manifest.json` 已配置 Android 网络权限和明文流量(`usesCleartextTraffic: true`),允许 App 访问 `http://` 后端。 - `manifest.json` 中的 `appid` 可留空,HBuilderX 打包时会自动分配;如需上架应用市场,请替换为自己的 appid。 - 启动图标默认使用 HBuilderX 默认图标;如需自定义,可在 `manifest.json` 的 `app-plus.distribute.icons` 中配置,项目内已生成 `static/app-icon.png` 可供使用。 - 更详细的接口字段与示例见 [docs/api.md](docs/api.md)。 ## 接口总览 统一返回格式: ```json { "code": 0, "message": "ok", "data": {} } ``` 分页返回: ```json { "list": [], "total": 100, "page": 1, "size": 10, "hasMore": true } ``` | 方法 | 路径 | 说明 | 是否需要登录 | | --- | --- | --- | --- | | POST | `/api/auth/register` | 注册(自动登录) | 否 | | POST | `/api/auth/login` | 登录 | 否 | | POST | `/api/auth/logout` | 退出登录 | 否 | | GET | `/api/users/me` | 当前用户信息 | 是 | | PUT | `/api/users/me` | 修改昵称 / 头像 / 简介 | 是 | | GET | `/api/users/me/posts` | 我的发布 | 是 | | GET | `/api/users/me/favorites` | 我的收藏 | 是 | | GET | `/api/users/{id}` | 用户主页 | 否 | | GET | `/api/users/{id}/posts` | 用户发布列表 | 否 | | GET | `/api/categories` | 分类列表 | 否 | | GET | `/api/posts` | 内容列表(分类 / 关键词 / 排序 / 分页) | 否 | | GET | `/api/posts/{id}` | 内容详情(自动增加浏览量) | 否 | | POST | `/api/posts` | 发布内容 | 是 | | DELETE | `/api/posts/{id}` | 删除自己的内容 | 是 | | POST | `/api/posts/{id}/like` | 点赞 / 取消点赞 | 是 | | POST | `/api/posts/{id}/favorite` | 收藏 / 取消收藏 | 是 | | GET | `/api/posts/{postId}/comments` | 评论列表(两级树形) | 否 | | POST | `/api/posts/{postId}/comments` | 发表评论 / 回复 | 是 | | DELETE | `/api/comments/{id}` | 删除自己的评论 | 是 | | POST | `/api/comments/{id}/like` | 评论点赞 / 取消点赞 | 是 | | GET | `/api/messages` | 互动消息 | 是 | | GET | `/api/messages/unread-count` | 未读消息数 | 是 | | PUT | `/api/messages/{id}/read` | 标记已读 | 是 | | PUT | `/api/messages/read-all` | 全部已读 | 是 | | POST | `/api/upload/image` | 上传图片,返回 `{ url }` | 是 | ## 数据模型 - `t_user`:用户 - `t_category`:内容分类 - `t_post`:发布的难记内容 - `t_comment`:评论(支持两级回复,记录 `method_type` 记忆方法) - `t_post_like`:内容点赞 - `t_favorite`:内容收藏 - `t_comment_like`:评论点赞 - `t_message`:点赞 / 收藏 / 评论互动消息 ## 说明 1. JWT 是无状态的,退出登录由客户端清除本地 token 完成;如需强制下线,可再引入 Redis 黑名单或 token 版本号。 2. 图片默认保存到后端工作目录下的 `uploads/`,通过 `/uploads/**` 静态资源访问。 3. `uploads/`、`target/` 已在 `.gitignore` 中排除。 4. 演示数据仅在 `t_user` 为空时写入;如需重置演示数据,删除全部数据后重启后端即可。