评价本身也能填「观后感受」

- lib/db.php:reviews 表新增 feelings 列。建表语句里带上,同时补一条
  ALTER TABLE 迁移 —— 上一版已经上线过没有该列的 reviews 表,老库要能自动补列。
- lib/reviews.php:saveReview() 接收感受并落库;getMovieReviews()/getMyReview()
  把 feelings 解析成 key 列表(旧记录为 NULL → 空数组,不报错)。
- detail.php:评价表单加了「我看完的感受(可多选)」,与讨论用的是同一套感受;
  修改评价时原勾选自动回填,取消勾选即清空;已保存的感受在评价正文下方以只读标签展示。

感受仍然只存 key(happy/sad/…),emoji 与文案统一在 feelingCatalog() 里维护。
This commit is contained in:
2026-09-22 13:03:04 +08:00
parent a2c26ad002
commit dc5e788f27
4 changed files with 71 additions and 21 deletions
+8 -6
View File
@@ -55,8 +55,9 @@
- **打分 1-10**:详情页「💬 评价与讨论」区块里点数字即可打分,右侧实时显示「7 分 · 不错」;打分用的是原生单选框,禁用 JS 也能照常提交。
- **写评价**:一段正文(最多 5000 字)。**每个账号对每部电影只有一条评价**,再次提交即修改,页面上会标注「已编辑」。
- **讨论**:任意账号都能在任意一条评价下面参与讨论(正文最多 1000 字)。
- **观后感受(可多选)**:发讨论时可以勾选自己的观后感受,每种感受一个专属 emoji:😄 开心、🥹 感动、🥰 温暖、🤩 激动、🤔 深思、😰 紧张、😨 恐惧、😲 震惊、😢 难受、😠 气愤、😴 无聊、😵 困惑。勾选多少个都行,展示时按固定顺序排列。
- 感受只把 key(如 `happy`)存进数据库,emoji 与文案统一在 `lib/reviews.php` 的 `feelingCatalog()` 里维护,**以后换 emoji / 改文案都不用动数据**。
- **观后感受(可多选)**:**写评价时**和**发讨论时**都可以勾选自己的观后感受,每种感受一个专属 emoji:😄 开心、🥹 感动、🥰 温暖、🤩 激动、🤔 深思、😰 紧张、😨 恐惧、😲 震惊、😢 难受、😠 气愤、😴 无聊、😵 困惑。勾选多少个都行(最多 6 个),展示时按固定顺序排列。
- 评价上的感受会显示在这条评价正文下面;修改评价时原来勾的会自动带上,取消勾选即清空。
- 感受只把 key(如 `happy`)存进数据库(`reviews.feelings` / `review_comments.feelings`),emoji 与文案统一在 `lib/reviews.php` 的 `feelingCatalog()` 里维护,**以后换 emoji / 改文案都不用动数据**。
- **评分概况**:详情页标题栏显示「N 条评价 · 均分 X」;首页列表卡片上有评价的电影会显示 `⭐ 均分`。
- **删除**:只能删除**自己**的评价与讨论;删除评价时其下的讨论一并删除。删除电影时也会清掉对应的评价与讨论(SQLite 默认未开启外键级联,由程序手动清理)。
@@ -157,7 +158,7 @@ MovieLog_Server/
| `persons` | 观影人 | `name`(唯一)、`color`、`avatar` |
| `viewers` | 电影 ↔ 观影人关联 | `movie_id`、`person_id`、`name`(历史遗留字段) |
| `movie_photos` | 电影多图 | `movie_id`、`photo_path`、`created_at` |
| `reviews` | 电影评价 | `movie_id`、`admin_id`(评价人是账号,不是观影人)、`rating`(1-10)、`content`、`created_at`、`updated_at`;**`(movie_id, admin_id)` 上有唯一索引**,保证一个账号一部电影只一条 |
| `reviews` | 电影评价 | `movie_id`、`admin_id`(评价人是账号,不是观影人)、`rating`(1-10)、`content`、`feelings`(写评价时选的观后感受,同样是 JSON 数组)、`created_at`、`updated_at`;**`(movie_id, admin_id)` 上有唯一索引**,保证一个账号一部电影只一条 |
| `review_comments` | 评价下的讨论 | `review_id`、`admin_id`、`content`、`feelings`(感受 key 的 JSON 数组,如 `["happy","sad"]`)、`created_at` |
| `settings` | 键值配置与缓存 | `name`(唯一)、`value`。存存储驱动选择、各云厂商配置、图片访问方式等;**云厂商密钥以 `enc:v1:gcm:` 前缀密文落库**(密钥文件 `db/.settings.key`,首次保存时自动生成,**丢失后密文不可恢复**) |
@@ -268,9 +269,10 @@ server {
1. 打开任意一部电影的详情页,滚到最下面的「💬 评价与讨论」。
2. **打分**:点「我的评分」后面的 1-10 任意一个数字(选中会变橙色),旁边实时显示「几分 · 怎么样」。
3. **写评价**:在下面文本框里写正文,点「📝 发表评价」。
- 已经评价过时,这一块会变成「✏️ 修改我的评价」,按钮是「💾 保存修改」——同一部电影不会留下两条你的评价。
4. **参与讨论**:在别人的(或自己的)任意一条评价下面,写一句话,顺手勾几个**观后感受**(😄 🥹 🥰 🤩 🤔 😰 😨 😲 😢 😠 😴 😵,可多选),点「💬 发表讨论」。
3. **写评价**:在下面文本框里写正文;再到「我看完的感受(可多选)」里勾几个感受 emoji,点「📝 发表评价」。
- 已经评价过时,这一块会变成「✏️ 修改我的评价」,按钮是「💾 保存修改」——同一部电影不会留下两条你的评价,**原来勾的感受会自动带上**,取消勾选就是清掉。
- 评价保存后,感受会以只读小标签显示在这条评价正文下面。
4. **参与讨论**:在别人的(或自己的)任意一条评价下面,写一句话,同样可以勾选感受,点「💬 发表讨论」。
- 讨论会带上评价人的头像、昵称,以及你选的感受 emoji。
5. **删除**:自己发的评价和讨论,右侧有删除按钮(别人的没有);删评价时下面的讨论会一起删掉。