txw/docs/企业认证模块详解.md

20 KiB
Raw Blame History

碳信网企业认证模块详解

本文档基于代码分析,详细说明企业认证/入驻功能的表结构、流程、API接口及模块关系。


一、模块定位

企业认证模块分为两套流程

  1. 企业认证qyRz/qysp- mhzc-web 使用通过DID扫码认证
  2. 企业入驻qyrz- gxzx-web/yygl-web 使用,通过表单申请+审核

这两个流程最终都会在 txw_mhzc_qyxxb 表中创建企业信息记录。


二、核心表结构

2.1 企业申请记录表

txw_mhzc_qyrzsqjlb企业认证申请记录表

CREATE TABLE txw_mhzc_qyrzsqjlb (
  uuid VARCHAR(64) PRIMARY KEY,       -- 申请记录UUID
  qymc VARCHAR(256),                  -- 企业名称
  nsrsbh VARCHAR(64),                -- 统一社会信用代码
  sqsm TEXT,                         -- 申请说明
  lrruuid VARCHAR(64),               -- 录入人UUID
  lrrq DATETIME,                     -- 录入日期
  shrsfid VARCHAR(64),               -- 审核人UUID
  shjg1 VARCHAR(10),                 -- 审核结果 (2待审核/3通过/4不通过/5已撤销)
  shyj1 TEXT,                        -- 审核意见
  shsj DATETIME,                     -- 审核时间
  sjhm1 VARCHAR(32),                -- 手机号码
  dlzh VARCHAR(64),                 -- 登录账号
  zsxm1 VARCHAR(64),                 -- 真实姓名
  yh_uuid VARCHAR(64)                 -- 用户UUID
);

txw_gxzx_rzsqjlb入驻申请记录表

-- 表结构与 txw_mhzc_qyrzsqjlb 基本相同
CREATE TABLE txw_gxzx_rzsqjlb (
  uuid VARCHAR(64) PRIMARY KEY,
  qymc VARCHAR(256),
  nsrsbh VARCHAR(64),
  sqsm TEXT,
  ywlx_dm VARCHAR(10),              -- 业务类型代码 (01)
  sqly TEXT,                         -- 申请来源
  lrruuid VARCHAR(64),
  lrrq DATETIME,
  shrsfid VARCHAR(64),
  shjg1 VARCHAR(10),
  shyj1 TEXT,
  shsj DATETIME,
  sjhm1 VARCHAR(32),
  dlzh VARCHAR(64),
  zsxm1 VARCHAR(64),
  yh_uuid VARCHAR(64)
);

2.2 企业信息表

txw_mhzc_qyxxb企业信息表

CREATE TABLE txw_mhzc_qyxxb (
  qyuuid VARCHAR(64) PRIMARY KEY,     -- 企业UUID
  qymc VARCHAR(256),                  -- 企业名称
  nsrsbh VARCHAR(64),                -- 统一社会信用代码
  gxdtrzbz VARCHAR(10),              -- 供需大厅入驻标志 (Y/N)
  yxbz VARCHAR(10),                  -- 有效标志 (Y/N)
  ywqd_dm VARCHAR(32),              -- 业务渠道代码
  lrrq DATETIME,                     -- 录入日期
  xgrq DATETIME,                     -- 修改日期
  sjcsdq VARCHAR(32),               -- 数据产生地区
  sjgsdq VARCHAR(32),               -- 数据归属地区
  xgrsfid VARCHAR(64),              -- 修改人身份ID
  lrrsfid VARCHAR(64)               -- 录入人身份ID
);

2.3 用户企业关联表

txw_mhzc_yhqygxb用户企业关联表

CREATE TABLE txw_mhzc_yhqygxb (
  uuid VARCHAR(64) PRIMARY KEY,
  qyuuid VARCHAR(64),                -- 企业UUID
  yh_uuid VARCHAR(64),               -- 用户UUID
  -- 其他字段...
);

三、认证流程详解

3.1 企业认证DID扫码方式- mhzc-web

用户视角流程:

未认证状态
    │
    ▼
┌─────────────────────────────────────────────────┐
│  显示"您未认证任何企业信息"提示                  │
│  点击"去认证" → 进入认证流程                    │
└─────────────────────┬───────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────┐
│  显示 DID 二维码                                │
│  用户使用 DID APP 扫描二维码                    │
└─────────────────────┬───────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────┐
│  轮询查询认证结果                                │
│  GET /did/pub/backresult/login?reqId=xxx        │
│  status=6 → 认证成功,显示企业信息卡片          │
│  status=5 → 认证失败,显示错误信息             │
└─────────────────────────────────────────────────┘

后端处理流程:

DID服务器回调 POST /did/pub/callback/busi
         │
         ▼
┌─────────────────────────────────────────────────┐
│  验证 VerifiablePresentation                   │
└─────────────────────┬───────────────────────────┘
                      ▼
┌─────────────────────────────────────────────────┐
│  检查企业是否已认证                              │
│  yhxxService.getYhxxByDid(holderDid)            │
│  已认证 → 返回"不能重复认证"错误                │
└─────────────────────┬───────────────────────────┘
                      │ 未认证
                      ▼
┌─────────────────────────────────────────────────┐
│  验证企业名称一致性                              │
│  DID中的entname 与 用户真实姓名匹配             │
│  不匹配 → 返回"名称不一致"错误                 │
└─────────────────────┬───────────────────────────┘
                      ▼
┌─────────────────────────────────────────────────┐
│  创建/更新企业信息                               │
│  TxwMhzcQyxxbServiceImpl.intQyxxByDid()        │
│  1. 检查企业是否已存在按nsrsbh              │
│  2. 不存在 → 新建企业记录                       │
│  3. 绑定用户与企业关系yhqygxb              │
│  4. 切换Session绑定企业到用户                 │
└─────────────────────────────────────────────────┘

3.2 企业入驻(表单申请方式)- gxzx-web

用户视角流程:

未认证状态
    │
    ▼
┌─────────────────────────────────────────────────┐
│  点击"发布"按钮                                 │
│  检查企业认证状态                               │
│  未认证 → 提示"请先完成企业认证"                │
└─────────────────────┬───────────────────────────┘
                      │
                      ▼
┌─────────────────────────────────────────────────┐
│  填写入驻表单                                   │
│  - 企业名称                                     │
│  - 统一社会信用代码                             │
│  - 申请说明                                     │
└─────────────────────┬───────────────────────────┘
                      ▼
┌─────────────────────────────────────────────────┐
│  提交申请                                       │
│  POST /gxzx/qyrz/qyrzsq                        │
└─────────────────────┬───────────────────────────┘
                      ▼
┌─────────────────────────────────────────────────┐
│  等待审核                                       │
│  显示"待审核"状态                              │
│  可撤回申请                                     │
└─────────────────────────────────────────────────┘

后端处理流程:

POST /gxzx/qyrz/qyrzsq
         │
         ▼
┌─────────────────────────────────────────────────┐
│  创建入驻申请记录                               │
│  TxwGxzxRzsqjlbServiceImpl.qyrzsq()             │
│  - 插入 txw_gxzx_rzsqjlb 表                    │
│  - ywlx_dm = "01"                             │
│  - shjg1 = "2" (待审核)                       │
│  - 关联当前用户信息                             │
└─────────────────────────────────────────────────┘

3.3 企业认证审核 - yygl-web运营后台

审核流程:

运营人员登录 yygl-web
         │
         ▼
┌─────────────────────────────────────────────────┐
│  进入"企业认证审核"菜单                         │
│  显示待审核列表                                 │
└─────────────────────┬───────────────────────────┘
                      ▼
┌─────────────────────────────────────────────────┐
│  查看企业详情                                   │
│  企业名称、信用代码、手机号、申请时间、申请理由 │
└─────────────────────┬───────────────────────────┘
                      ▼
┌─────────────────────────────────────────────────┐
│  选择审核结果                                   │
│  - 通过shjg1 = 3                          │
│  - 不通过shjg1 = 4                         │
│  + 填写审核意见                                │
└─────────────────────┬───────────────────────────┘
                      ▼
┌─────────────────────────────────────────────────┐
│  提交审核                                       │
│  POST /mhzc/company/qyRzSp                     │
└─────────────────────────────────────────────────┘

后端处理:

POST /mhzc/company/qyRzSp
         │
         ▼
┌─────────────────────────────────────────────────┐
│  TxwMhzcQyxxbServiceImpl.qyRzSp()              │
│  1. 更新申请记录状态shjg1, shyj1, shsj     │
│  2. if 通过:                                   │
│     - 创建企业信息txw_mhzc_qyxxb           │
│     - 创建用户企业关联txw_mhzc_yhqygxb     │
│     - 切换Session绑定企业                      │
│     - 发送站内消息(审核通过模板)              │
│  3. if 不通过:                                 │
│     - 发送站内消息(审核不通过模板)            │
└─────────────────────────────────────────────────┘

四、模块分布

4.1 前端模块

项目 页面 功能
txw-mhzc-web views/qyrz/index.vue 企业认证DID方式
txw-mhzc-web views/qy-rz/index.vue 企业入驻(预留)
txw-gxzx-web views/gxzx/index.vue 供需大厅发布时触发认证检查
txw-yygl-web views/qysp/index.vue 企业认证审核(运营)
txw-yygl-web views/qyrz/index.vue 企业入驻审核(运营)
txw-mhzc-web views/gzt/components/EnterpriseCert.vue 工作台企业认证卡片

4.2 后端模块

服务 Controller Service 说明
txw-mhzc QyRzController TxwGxzxRzsqjlbService 入驻申请
txw-mhzc CompanyController TxwMhzcQyxxbService 企业认证审核
txw-gxzx QyRzController TxwGxzxRzsqjlbService 入驻申请gxzx独立
txw-sso DidController YhxxService DID认证

五、API接口

5.1 用户端API

接口 服务 方法 参数 说明
/mhzc/qyrz/qyrzsq mhzc POST QyRzSqReqVO 提交入驻申请
/gxzx/qyrz/qyrzsq gxzx POST QyRzSqReqVO 提交入驻申请
/mhzc/qyrz/currentQyrzList mhzc POST - 查询当前用户入驻列表
/gxzx/qyrz/qyrzList gxzx POST QyrzListReqVO 查询入驻申请列表
/mhzc/company/getCurrentRegisterList mhzc POST - 查询当前认证记录
/mhzc/company/revokeSq mhzc GET uuid 撤回申请

5.2 运营管理API

接口 服务 方法 参数 说明
/mhzc/company/qyRzSp mhzc POST CompanySpReqVO 认证审核
/mhzc/company/getRegisterList mhzc POST CompanySpReqVO 认证列表
/gxzx/qyrz/qyrzsp gxzx POST QyRzSpReqVO 入驻审核
/gxzx/qyrz/qyrzList gxzx POST QyrzListReqVO 入驻列表
/gxzx/company/getQyxxListByYwlx gxzx GET ywlx 查询已入驻企业

5.3 DID认证API

接口 方法 说明
/did/busilice/qrcode POST 获取企业实名认证二维码
/did/pub/getvp/busi GET 获取企业实名凭证
/did/pub/callback/busi POST 企业实名回调
/did/pub/backresult/busi GET 查询认证结果

六、审核状态流转

6.1 状态码定义

状态码 含义 说明
2 待审核 初始状态
3 通过 审核通过
4 不通过 审核拒绝
5 已撤销 用户撤回

6.2 状态流转图

     ┌─────────┐
     │ (新建)   │
     └────┬────┘
          │ 提交申请
          ▼
     ┌─────────┐
     │ 待审核   │  shjg1=2
     │ (2)      │
     └────┬────┘
          │
    ┌────┴────┐
    │         │
通过│         │不通过
    │         │
    ▼         ▼
┌────────┐  ┌────────┐
│ 通过   │  │ 不通过 │
│ (3)    │  │ (4)    │
└────────┘  └────────┘
          │
          │ 用户撤回
          ▼
     ┌────────┐
     │ 已撤销 │
     │ (5)    │
     └────────┘

七、模块间关系

7.1 企业认证/入驻与用户的关系

用户登录txw-sso
    │
    ▼
用户发起企业认证/入驻申请
    │
    ├── mhzc-web: DID扫码认证
    │     └─→ 创建 txw_mhzc_qyxxb通过
    │
    └── gxzx-web: 填表申请入驻
          └─→ 创建 txw_gxzx_rzsqjlb待审核
                │
                ▼
          运营后台审核yygl-web
                │
                ├── 通过 → 创建 txw_mhzc_qyxxb + txw_mhzc_yhqygxb
                └── 不通过 → 更新状态为4

企业认证完成后:
    │
    ▼
用户可以使用以下功能:
- 发布供需信息需gxdtrzbz=Y
- 申请金融产品
- 发布碳资产交易

7.2 关键字段说明

字段 说明
gxdtrzbz txw_mhzc_qyxxb 供需大厅入驻标志,决定用户能否发布供需
yxbz txw_mhzc_qyxxb 企业信息有效性
ywlxDm txw_gxzx_rzsqjlb 业务类型01=入驻
shjg1 txw_mhzc_qyrzsqjlb 审核结果

八、前端交互详解

8.1 mhzc-web 企业认证页面qyrz/index.vue

页面状态机:

状态 条件 显示内容
Tab1 有待审核/已通过记录 申请记录列表 + "去认证"按钮
Tab2 未认证 DID扫码界面 + 用户信息
Tab3 已认证yhxx.qymc存在 企业认证信息卡片

核心代码逻辑:

// 初始化时检查企业认证状态
async yhinit() {
  const { data } = await api.init();
  this.yhxx = data;
  if (this.yhxx?.qymc) {
    this.pagetab = 3;  // 已认证,显示认证卡片
  } else {
    this.Getrzqrcode();  // 未认证,显示二维码
  }
}

// 轮询查询认证结果
async pollLoginResult() {
  const { data } = await rzbackresultlogin(this.reqId);
  if (data.status == 6) {
    // 认证成功
    this.stopPolling();
    this.yhinit();
  } else if (data.status == 5) {
    // 认证失败
    this.stopPolling();
    MessagePlugin.info({ content: data.msg });
  }
}

8.2 yygl-web 审核页面

qysp/index.vue - 企业认证审核

  • 查询条件:企业名称、信用代码、审核状态、申请时间
  • 审核操作:弹出对话框选择"通过/不通过" + 填写意见
  • API调用qyRzSp()/mhzc/company/qyRzSp

qyrz/index.vue - 企业入驻审核

  • 查询条件同上
  • 审核操作同上
  • API调用qyRzSp()/gxzx/qyrz/qyrzsp

九、错误处理

9.1 用户端错误

场景 提示信息
企业已认证 "企业已认证"
申请理由为空 校验提示"申请说明必填"
统一社会信用代码格式错误 前端校验提示
审核不通过后重申请 允许重新提交

9.2 审核端错误

场景 逻辑
重复认证 DidController 返回"不能重复认证"
名称不一致 返回"名称不一致"错误
企业不存在 查询返回null跳过创建

十、外部依赖

依赖服务 用途
xxzxApi消息中心 发送审核结果站内消息
IMhzcApi 获取用户信息、切换Session
SwitchSessionApi 绑定用户与企业关系
DID服务 企业实名认证org.chainweaver.did.sdk

10.1 消息模板

模板ID 用途
gxdt_rzsp_sptg 入驻审核通过gxzx
gxdt_rzsp_spsb 入驻审核不通过gxzx
mhzc_qyrz_sptg 认证审核通过mhzc
mhzc_qyrz_spsb 认证审核不通过mhzc

文档生成时间: 2026-05-03 基于企业认证模块代码分析