fix-company-certification-issue.md 2.2 KB

公司认证状态更新问题修复方案

问题描述

在后端管理界面点击"公司认证管理"的"认证"按钮无法进行认证状态编辑和调整,表现为认证操作失败。

问题分析

经过分析,发现问题的根本原因是:

  1. UpdateCompanyDto定义不完整:当前的UpdateCompanyDto是通过CreateCompanyDto.partial()生成的,这意味着它只包含创建时的字段,而缺少认证相关的字段如isCertified

  2. 认证状态字段缺失:在更新DTO中没有明确定义isCertified字段,导致前端无法只更新认证状态。

修复方案

1. 修改公司实体文件

文件:src/server/modules/silver-jobs/company.entity.ts

修改前:

export const UpdateCompanyDto = CreateCompanyDto.partial();

修改后:

export const UpdateCompanyDto = CreateCompanyDto.partial().extend({
  isCertified: z.coerce.number().int().min(0).max(1).optional().openapi({
    description: '是否认证 0:未认证 1:已认证',
    example: 1
  })
});

2. 验证前端调用方式

前端调用方式看起来是正确的,使用PUT请求更新认证状态:

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字段
  • 验证用户权限控制是否正常
  • 检查是否有其他字段限制导致更新失败