Files
1818web-hoduan/docs/plaza-work-report-feature-summary.md
Claude Workbench e3e6f1f29d first commit
2026-02-13 18:18:20 +08:00

5.7 KiB
Raw Permalink Blame History

广场作品投诉功能实施总结

概述

成功实现广场作品投诉功能,用户可以对违规作品进行投诉,管理员审核投诉并处理。

功能特性

1. 投诉类型

支持6种投诉类型

  • political - 政治敏感
  • pornographic - 色情低俗
  • violent - 暴力血腥
  • dangerous - 危险行为
  • uncomfortable - 引人不适
  • other - 其他

2. 投诉限制机制

  • 每日投诉限制每个用户每天最多投诉10次
  • 防重复投诉:同一用户不能重复投诉同一作品
  • 防自投诉:不能投诉自己发布的作品
  • 自动重置每日0点自动重置投诉计数

3. 投诉状态

  • pending - 待审核
  • approved - 投诉成立
  • rejected - 投诉不成立

4. 管理员审核

  • 投诉成立:下架作品(修改审核状态为 rejected,状态改为 hidden
  • 投诉不成立:驳回投诉
  • 处理备注:必须填写审核备注说明处理原因

数据库设计

1. plaza_work_report投诉表

CREATE TABLE `plaza_work_report` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `report_no` VARCHAR(50) NOT NULL COMMENT '投诉编号',
  `work_id` BIGINT NOT NULL COMMENT '被投诉的作品ID',
  `work_no` VARCHAR(50) NOT NULL COMMENT '被投诉的作品编号',
  `reporter_id` BIGINT NOT NULL COMMENT '投诉人用户ID',
  `report_type` VARCHAR(20) NOT NULL COMMENT '投诉类型',
  `report_reason` TEXT COMMENT '投诉原因描述',
  `report_status` VARCHAR(20) DEFAULT 'pending' COMMENT '投诉状态',
  `audit_admin_id` BIGINT COMMENT '审核管理员ID',
  `audit_admin_name` VARCHAR(100) COMMENT '审核管理员名称',
  `audit_remark` TEXT COMMENT '审核备注',
  `audit_time` DATETIME COMMENT '审核时间',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_deleted` TINYINT(1) DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_report_no` (`report_no`),
  KEY `idx_work_id` (`work_id`),
  KEY `idx_reporter_id` (`reporter_id`),
  KEY `idx_report_status` (`report_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. plaza_work_report_limit投诉限制表

CREATE TABLE `plaza_work_report_limit` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `user_id` BIGINT NOT NULL,
  `report_count` INT DEFAULT 0 COMMENT '今日投诉次数',
  `last_report_time` DATETIME COMMENT '最后投诉时间',
  `reset_date` DATE NOT NULL COMMENT '重置日期',
  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

API 接口

用户端接口

1. 提交投诉

POST /user/plaza/reports/submit

请求体:

{
  "workNo": "WORK-20251026-001",
  "reportType": "pornographic",
  "reportReason": "该作品包含不当内容"
}

2. 查询我的投诉列表

GET /user/plaza/reports/my?page=1&size=10

管理员端接口

1. 查询投诉列表

GET /admin/plaza/reports/list?page=1&size=20&reportStatus=pending&reportType=pornographic&workNo=WORK-xxx&reporterId=123

2. 审核投诉

POST /admin/plaza/reports/audit

请求体:

{
  "reportNo": "REPORT-20251114-001",
  "auditResult": "approved",
  "auditRemark": "经审核,该作品确实存在违规内容,已下架处理"
}

3. 获取待审核投诉数量

GET /admin/plaza/reports/pending/count

代码文件清单

数据库

  • V12__add_plaza_work_report.sql - 创建投诉表和限制表

实体类

  • PlazaWorkReport.java - 投诉实体类
  • PlazaWorkReportLimit.java - 投诉限制实体类

DTO

  • PlazaWorkReportDto.java - 投诉相关DTO

Mapper

  • PlazaWorkReportMapper.java - 投诉Mapper接口
  • PlazaWorkReportLimitMapper.java - 投诉限制Mapper接口

Service

  • PlazaWorkReportService.java - 投诉服务接口
  • PlazaWorkReportServiceImpl.java - 投诉服务实现

Controller

  • PlazaWorkReportController.java - 用户端投诉控制器
  • AdminPlazaWorkReportController.java - 管理员端投诉控制器

修改文件

  • PlazaWorkMapper.java - 更新update方法支持审核状态修改

业务流程

用户投诉流程

  1. 用户选择作品并填写投诉信息
  2. 系统检查投诉限制每日10次
  3. 系统检查是否重复投诉
  4. 系统检查是否投诉自己的作品
  5. 创建投诉记录,状态为 pending
  6. 更新用户投诉计数

管理员审核流程

  1. 管理员查看待审核投诉列表
  2. 管理员查看投诉详情(包含作品信息)
  3. 管理员审核投诉:
    • 投诉成立:更新投诉状态为 approved,下架作品(修改作品审核状态为 rejected,状态改为 hidden
    • 投诉不成立:更新投诉状态为 rejected
  4. 记录审核管理员信息和备注

部署步骤

  1. 执行数据库脚本

    source V12__add_plaza_work_report.sql;
    
  2. 部署代码

    • 部署所有新增和修改的文件
    • 重启应用服务
  3. 验证功能

    • 测试用户提交投诉
    • 测试投诉限制机制
    • 测试管理员审核投诉
    • 测试投诉成立后作品下架

注意事项

  1. 投诉限制每日最多10次跨天自动重置
  2. 防重复投诉:同一用户对同一作品只能投诉一次
  3. 防自投诉:不能投诉自己发布的作品
  4. 作品下架:投诉成立时,作品审核状态改为 rejected,状态改为 hidden
  5. 审核备注:管理员审核时必须填写处理备注

完成时间

2025-11-14