146 lines
4.3 KiB
Markdown
146 lines
4.3 KiB
Markdown
|
|
# 审核状态接口实现方案
|
|||
|
|
|
|||
|
|
## 问题分析
|
|||
|
|
|
|||
|
|
前端调用以下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
|