|
|
@@ -0,0 +1,68 @@
|
|
|
+# 公司认证状态更新问题修复方案
|
|
|
+
|
|
|
+## 问题描述
|
|
|
+在后端管理界面点击"公司认证管理"的"认证"按钮无法进行认证状态编辑和调整,表现为认证操作失败。
|
|
|
+
|
|
|
+## 问题分析
|
|
|
+经过分析,发现问题的根本原因是:
|
|
|
+
|
|
|
+1. **UpdateCompanyDto定义不完整**:当前的`UpdateCompanyDto`是通过`CreateCompanyDto.partial()`生成的,这意味着它只包含创建时的字段,而缺少认证相关的字段如`isCertified`。
|
|
|
+
|
|
|
+2. **认证状态字段缺失**:在更新DTO中没有明确定义`isCertified`字段,导致前端无法只更新认证状态。
|
|
|
+
|
|
|
+## 修复方案
|
|
|
+
|
|
|
+### 1. 修改公司实体文件
|
|
|
+文件:`src/server/modules/silver-jobs/company.entity.ts`
|
|
|
+
|
|
|
+**修改前:**
|
|
|
+```typescript
|
|
|
+export const UpdateCompanyDto = CreateCompanyDto.partial();
|
|
|
+```
|
|
|
+
|
|
|
+**修改后:**
|
|
|
+```typescript
|
|
|
+export const UpdateCompanyDto = CreateCompanyDto.partial().extend({
|
|
|
+ isCertified: z.coerce.number().int().min(0).max(1).optional().openapi({
|
|
|
+ description: '是否认证 0:未认证 1:已认证',
|
|
|
+ example: 1
|
|
|
+ })
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 验证前端调用方式
|
|
|
+前端调用方式看起来是正确的,使用PUT请求更新认证状态:
|
|
|
+
|
|
|
+```typescript
|
|
|
+const response = await companyCertificationClient[':id'].$put({
|
|
|
+ param: { id: id.toString() },
|
|
|
+ json: {
|
|
|
+ isCertified: certify ? 1 : 0,
|
|
|
+ },
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+### 3. 测试验证
|
|
|
+修复后需要进行以下测试:
|
|
|
+
|
|
|
+1. **认证测试**:点击未认证公司的"认证"按钮
|
|
|
+2. **取消认证测试**:点击已认证公司的"取消"按钮
|
|
|
+3. **权限验证**:确保只有管理员能修改认证状态
|
|
|
+
|
|
|
+## 实施步骤
|
|
|
+
|
|
|
+1. **第一步**:修改`company.entity.ts`文件中的`UpdateCompanyDto`定义
|
|
|
+2. **第二步**:重启后端服务
|
|
|
+3. **第三步**:在前端管理界面测试认证功能
|
|
|
+
|
|
|
+## 验证标准
|
|
|
+
|
|
|
+- [ ] 点击"认证"按钮能够将未认证公司的状态改为已认证
|
|
|
+- [ ] 点击"取消"按钮能够将已认证公司的状态改为未认证
|
|
|
+- [ ] 操作后页面数据能够实时更新
|
|
|
+- [ ] 操作成功后显示成功消息
|
|
|
+
|
|
|
+## 注意事项
|
|
|
+- 确保数据库中的公司表有`is_certified`字段
|
|
|
+- 验证用户权限控制是否正常
|
|
|
+- 检查是否有其他字段限制导致更新失败
|