### 1. 用户认证,相关控制器`MemberAuthController` * 获取所有的认证信息 `getAuthInfo` * 个人运营商三要素认证 `threeElementAuth` * OCR身份证识别 `uploadOcr` * 请求个人人脸活体认证 `personFace` * 个人银行卡四要素比对 `fourElementAuth` * 保存资质证书 `checkCertificate` * 上传文件 `upload` #### 数据表 * 用户表 `ums_member` ```sql CREATE TABLE `ums_member` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID(即member_id)', `phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'phone', `is_three_auth` tinyint DEFAULT '0' COMMENT '三要素认证 0-未认证 1-已认证', `is_four_auth` tinyint DEFAULT '0' COMMENT '四要素认证 0-未认证 1-已认证', `is_ocr_auth` tinyint DEFAULT '0' COMMENT 'OCR认证 0-未认证 1-已认证', `is_liveness_auth` tinyint DEFAULT '0' COMMENT '活体认证 0-未认证 1-已认证', `is_esign_auth` tinyint DEFAULT '0' COMMENT '电子签认证 0-未认证 1-已认证', `three_auth_info` json DEFAULT NULL COMMENT '三要素认证数据(姓名/身份证/手机号)', `four_auth_info` json DEFAULT NULL COMMENT '四要素认证数据(+银行卡号)', `ocr_info` json DEFAULT NULL COMMENT 'OCR识别数据(身份证正反面/有效期)', `liveness_info` json DEFAULT NULL COMMENT '活体检测数据(视频/分数)', `user_seal_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '生成默认印章编号', `certificate_info` json DEFAULT NULL COMMENT '证书', `esign_info` json DEFAULT NULL COMMENT '电子签数据(合同/签章位置)', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '更新人', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` tinyint DEFAULT '0' COMMENT '删除标记 0-正常 1-已删除', `lock_flag` tinyint DEFAULT '0' COMMENT '锁定标记 0-可编辑 1-只读', PRIMARY KEY (`id`) USING BTREE, KEY `idx_auth_status` (`is_three_auth`,`is_four_auth`,`is_esign_auth`) USING BTREE, KEY `idx_update` (`update_time`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='统一用户认证信息表' ``` ### 2. 报告/协议相关控制器 * 获取签约列表 `getList` * 签约 `signContract` * 查看合同信息(同步合同信息和状态) `signCheck` * 获取报告列表 `getReportList` * 下载报告 `getReportDown` #### 数据表 * 报告、协议配置表 ```sql CREATE TABLE `gig_config` ( `config_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', `ent_code` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '企业三合一码', `protocol` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '协议', `gateway_host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '网关域名', `subject_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '结算主体名称', `subject_type` int NOT NULL COMMENT '结算主体', `subject_location` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '结算税源地', `subject_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `app_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主体id', `merchant_private_key` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '私钥', `public_key` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '公钥', `location_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '所属地id', `sign_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '签名算法类型', `opt_flag` int NOT NULL DEFAULT '1' COMMENT '启用标记', `def_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '默认标记', `end_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '端类型', `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modified_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `is_sign` tinyint DEFAULT '0' COMMENT '需要签约', `agreement_url` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '需要签约的协议', `agreement_template` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '协议对应的模板编号', `enterprise_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业在爱签的account', `platform_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '平台在爱签的account', `is_file_type` tinyint DEFAULT '0' COMMENT '文件类型 0 是协议 1是报告', `reception_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '接包方企业在爱签的account (报告才有)', PRIMARY KEY (`config_id`) USING BTREE, KEY `gig_config_ent_code` (`ent_code`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='结算主体配置信息表'; ``` * 用户已签约表 ```sql CREATE TABLE `smart_contract` ( `contract_id` bigint NOT NULL AUTO_INCREMENT COMMENT '协议唯一标识,自增主键', `config_id` bigint NOT NULL, `contract_no` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '唯一协议编号(如:SC_年月日+流水号)', `contract_title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '协议标题(前端展示用)', `preview_url` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '签约协议预览地址', `contract_content` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '协议的文件地址', `contract_status` tinyint NOT NULL DEFAULT '1' COMMENT '协议状态:1-待签署 2-签署中 3-已完成 4-已终止', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '协议创建时间', `expire_time` datetime NOT NULL COMMENT '签署截止时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', `user_id` bigint NOT NULL COMMENT '发起用户', `user_account` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '用户在爱签ID', `enterprise_account` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '企业在爱签ID', `platform_account` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '平台在爱签的ID', `complete_time` datetime DEFAULT NULL COMMENT '完成时间', `sign_info` json DEFAULT NULL, PRIMARY KEY (`contract_id`) USING BTREE, UNIQUE KEY `contract_no` (`contract_no`) USING BTREE, KEY `idx_status` (`contract_status`) USING BTREE, KEY `idx_expire` (`expire_time`) USING BTREE ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='智能合约主表,集成签约方预置与状态跟踪'; ``` ### 3. 其他数据表 * 爱签配置表 ``` CREATE TABLE `gig_config` ( `config_id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', `ent_code` varchar(18) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '企业三合一码', `protocol` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '协议', `gateway_host` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '网关域名', `subject_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '结算主体名称', `subject_type` int NOT NULL COMMENT '结算主体', `subject_location` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '结算税源地', `subject_channel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `app_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主体id', `merchant_private_key` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '私钥', `public_key` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '公钥', `location_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '所属地id', `sign_type` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '签名算法类型', `opt_flag` int NOT NULL DEFAULT '1' COMMENT '启用标记', `def_flag` tinyint(1) NOT NULL DEFAULT '0' COMMENT '默认标记', `end_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '端类型', `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modified_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `is_sign` tinyint DEFAULT '0' COMMENT '需要签约', `agreement_url` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '需要签约的协议', `agreement_template` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '协议对应的模板编号', `enterprise_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业在爱签的account', `platform_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '平台在爱签的account', `is_file_type` tinyint DEFAULT '0' COMMENT '文件类型 0 是协议 1是报告', `reception_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '接包方企业在爱签的account (报告才有)', PRIMARY KEY (`config_id`) USING BTREE, KEY `gig_config_ent_code` (`ent_code`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='结算主体配置信息表'; ``` * 爱签api调用历史表 ``` CREATE TABLE `ums_ext_api_his` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `ext_id` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '第三方接口ID', `user_id` bigint NOT NULL COMMENT '用户ID', `api_name` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL COMMENT '接口名称', `request_data` json DEFAULT NULL COMMENT '请求数据', `response_data` json DEFAULT NULL COMMENT '响应数据', `status` tinyint DEFAULT '1' COMMENT '状态:0-失败,1-成功', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE=MyISAM AUTO_INCREMENT=94 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='接口调用历史表'; ``` ​ 数据表参考原有代码里的数据表,并增加了一些字段上去 ### 4. 需要注意的地方 * 4.1 没有登录功能,因此在控制器里固定了用户ID,并传递用户ID到服务层、数据层 * 4.2 活体认证通过后爱签是直接在小程序的webview组件中返回成功/失败结果,根据此结果再调用后台其他逻辑(保存认证结果、添加实名人到爱签) * 4.3 报告、协议配置表`gig_config`新增字段说明: * agreement_url 协议或报告URL * is_sign 为是否需要签约 若不需要,用户则调用税地(调用代码在签约功能中,已注释) * 企业在爱签的account (报告和协议需要) * 平台在爱签的account (报告需要) * 接包方企业在爱签的account (报告需要) * is_file_type 文件类型 0 是协议 1是报告 * 4.4 报告的骑缝章需要指定加盖的页码,因此每个报告可能不一致,需要在配置表中配置 ### 现在的demo六里,各个配置是手动添加到数据库的 ​