first commit
This commit is contained in:
195
docs/plaza-work-report-feature-summary.md
Normal file
195
docs/plaza-work-report-feature-summary.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# 广场作品投诉功能实施总结
|
||||
|
||||
## 概述
|
||||
成功实现广场作品投诉功能,用户可以对违规作品进行投诉,管理员审核投诉并处理。
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 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
|
||||
|
||||
Reference in New Issue
Block a user