# 公司认证状态更新问题修复方案 ## 问题描述 在后端管理界面点击"公司认证管理"的"认证"按钮无法进行认证状态编辑和调整,表现为认证操作失败。 ## 问题分析 经过分析,发现问题的根本原因是: 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`字段 - 验证用户权限控制是否正常 - 检查是否有其他字段限制导致更新失败