peixue-dev/Archive/[一次性]审核状态接口实现方案-2026-01-28.md

146 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 审核状态接口实现方案
## 问题分析
前端调用以下API获取审核状态,但后端没有这些接口:
- `/api/teacher/application/status` - 陪伴员
- `/api/manager/application/status` - 管理师
- `/api/distributor/application/status` - 分销员
- `/api/provider/application/status` - 服务商
## 数据表结构
### 陪伴员和管理师
保存在 `user` 表:
```sql
SELECT id, phone, role, status, audit_status, create_time, update_time
FROM user
WHERE id = ? AND role IN ('teacher', 'manager')
```
### 分销员
保存在 `distributor` 表:
```sql
SELECT id, user_id, phone, name, audit_status, create_time, update_time, reject_reason
FROM distributor
WHERE user_id = ?
```
### 服务商
保存在 `provider` 表:
```sql
SELECT id, user_id, phone, name, audit_status, create_time, update_time, reject_reason
FROM provider
WHERE user_id = ?
```
## 实现方案
### 1. TeacherController
```java
@ApiOperation("获取陪伴员申请状态")
@GetMapping("/application/status")
public Result<Map<String, Object>> getApplicationStatus(@CurrentUser Long userId) {
User user = userService.getById(userId);
if (user == null || !"teacher".equals(user.getRole())) {
return Result.error("未找到陪伴员申请信息");
}
Map<String, Object> data = new HashMap<>();
data.put("auditStatus", user.getAuditStatus()); // 0=待审核, 1=已通过, 2=未通过
data.put("phone", user.getPhone());
data.put("createTime", user.getCreateTime());
data.put("updateTime", user.getUpdateTime());
return Result.success(data);
}
```
### 2. ManagerController
```java
@ApiOperation("获取管理师申请状态")
@GetMapping("/application/status")
public Result<Map<String, Object>> getApplicationStatus(@CurrentUser Long userId) {
User user = userService.getById(userId);
if (user == null || !"manager".equals(user.getRole())) {
return Result.error("未找到管理师申请信息");
}
Map<String, Object> data = new HashMap<>();
data.put("auditStatus", user.getAuditStatus());
data.put("phone", user.getPhone());
data.put("createTime", user.getCreateTime());
data.put("updateTime", user.getUpdateTime());
return Result.success(data);
}
```
### 3. DistributorController
```java
@ApiOperation("获取分销员申请状态")
@GetMapping("/application/status")
public Result<Map<String, Object>> getApplicationStatus(@CurrentUser Long userId) {
Distributor distributor = distributorService.lambdaQuery()
.eq(Distributor::getUserId, userId)
.one();
if (distributor == null) {
return Result.error("未找到分销员申请信息");
}
Map<String, Object> data = new HashMap<>();
data.put("auditStatus", distributor.getAuditStatus());
data.put("phone", distributor.getPhone());
data.put("createTime", distributor.getCreateTime());
data.put("updateTime", distributor.getUpdateTime());
data.put("rejectReason", distributor.getRejectReason());
return Result.success(data);
}
```
### 4. ProviderController
```java
@ApiOperation("获取服务商申请状态")
@GetMapping("/application/status")
public Result<Map<String, Object>> getApplicationStatus(@CurrentUser Long userId) {
Provider provider = providerService.lambdaQuery()
.eq(Provider::getUserId, userId)
.one();
if (provider == null) {
return Result.error("未找到服务商申请信息");
}
Map<String, Object> data = new HashMap<>();
data.put("auditStatus", provider.getAuditStatus());
data.put("phone", provider.getPhone());
data.put("createTime", provider.getCreateTime());
data.put("updateTime", provider.getUpdateTime());
data.put("rejectReason", provider.getRejectReason());
return Result.success(data);
}
```
## 注意事项
1. **@CurrentUser注解**: 需要从JWT token中获取当前用户ID
2. **audit_status字段**: 确保user表有这个字段,如果没有需要添加
3. **错误处理**: 如果找不到申请信息,返回明确的错误提示
4. **权限控制**: 只能查询自己的申请状态
## 数据库修改
如果 `user` 表没有 `audit_status` 字段,需要添加:
```sql
ALTER TABLE `user`
ADD COLUMN `audit_status` INT DEFAULT 0 COMMENT '审核状态0=待审核,1=已通过,2=未通过'
AFTER `status`;
```
## 创建时间
2026-01-28