20 KiB
20 KiB
碳信网企业认证模块详解
本文档基于代码分析,详细说明企业认证/入驻功能的表结构、流程、API接口及模块关系。
一、模块定位
企业认证模块分为两套流程:
- 企业认证(qyRz/qysp)- mhzc-web 使用,通过DID扫码认证
- 企业入驻(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 基于企业认证模块代码分析