Files
1818web-hoduan/docs/plaza-work-report-feature-summary.md

196 lines
5.7 KiB
Markdown
Raw Permalink Normal View History

2026-02-13 18:18:20 +08:00
# 广场作品投诉功能实施总结
## 概述
成功实现广场作品投诉功能,用户可以对违规作品进行投诉,管理员审核投诉并处理。
## 功能特性
### 1. 投诉类型
支持6种投诉类型
- `political` - 政治敏感
- `pornographic` - 色情低俗
- `violent` - 暴力血腥
- `dangerous` - 危险行为
- `uncomfortable` - 引人不适
- `other` - 其他
### 2. 投诉限制机制
- **每日投诉限制**每个用户每天最多投诉10次
- **防重复投诉**:同一用户不能重复投诉同一作品
- **防自投诉**:不能投诉自己发布的作品
- **自动重置**每日0点自动重置投诉计数
### 3. 投诉状态
- `pending` - 待审核
- `approved` - 投诉成立
- `rejected` - 投诉不成立
### 4. 管理员审核
- **投诉成立**:下架作品(修改审核状态为 `rejected`,状态改为 `hidden`
- **投诉不成立**:驳回投诉
- **处理备注**:必须填写审核备注说明处理原因
## 数据库设计
### 1. plaza_work_report投诉表
```sql
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投诉限制表
```sql
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
```
**请求体:**
```json
{
"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
```
**请求体:**
```json
{
"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. **执行数据库脚本**
```sql
source V12__add_plaza_work_report.sql;
```
2. **部署代码**
- 部署所有新增和修改的文件
- 重启应用服务
3. **验证功能**
- 测试用户提交投诉
- 测试投诉限制机制
- 测试管理员审核投诉
- 测试投诉成立后作品下架
## 注意事项
1. **投诉限制**每日最多10次跨天自动重置
2. **防重复投诉**:同一用户对同一作品只能投诉一次
3. **防自投诉**:不能投诉自己发布的作品
4. **作品下架**:投诉成立时,作品审核状态改为 `rejected`,状态改为 `hidden`
5. **审核备注**:管理员审核时必须填写处理备注
## 完成时间
2025-11-14