505 lines
20 KiB
Markdown
505 lines
20 KiB
Markdown
# 碳信网企业认证模块详解
|
||
|
||
> 本文档基于代码分析,详细说明企业认证/入驻功能的表结构、流程、API接口及模块关系。
|
||
|
||
---
|
||
|
||
## 一、模块定位
|
||
|
||
企业认证模块分为**两套流程**:
|
||
1. **企业认证**(qyRz/qysp)- mhzc-web 使用,通过DID扫码认证
|
||
2. **企业入驻**(qyrz)- gxzx-web/yygl-web 使用,通过表单申请+审核
|
||
|
||
这两个流程最终都会在 `txw_mhzc_qyxxb` 表中创建企业信息记录。
|
||
|
||
---
|
||
|
||
## 二、核心表结构
|
||
|
||
### 2.1 企业申请记录表
|
||
|
||
#### txw_mhzc_qyrzsqjlb(企业认证申请记录表)
|
||
```sql
|
||
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(入驻申请记录表)
|
||
```sql
|
||
-- 表结构与 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(企业信息表)
|
||
```sql
|
||
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(用户企业关联表)
|
||
```sql
|
||
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存在) | 企业认证信息卡片 |
|
||
|
||
**核心代码逻辑:**
|
||
|
||
```javascript
|
||
// 初始化时检查企业认证状态
|
||
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*
|
||
*基于企业认证模块代码分析*
|