思维决定高度,格局决定境界
一、场景
- 操作前需要进行复杂的逻辑校验
- 用户可配置逻辑校验项
示例
- 登机前需要对机票进行一次核查
- 申请护照需要对个人身份的审查
- 孩子的入学申请需要进行一次审核
二、思路
- 可按字段维度配置校验规则
- 使用反射解决对象取值问题
- 考虑灵活性,尽量少使用硬编码,可使用表达式增加配置灵活性
- 个性化的校验需要硬编码,通过反射执行方法
- 支持不同的业务,使用泛型接收对象
三、方案
1.表设计
CREATE TABLE `sys_check_item` (
`id` char(36) COLLATE utf8mb4_bin NOT NULL COMMENT '主键',
`check_item` varchar(20) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '检查项代码',
`check_item_desc` varchar(500) COLLATE utf8mb4_bin DEFAULT '' COMMENT '检查项描述',
`field_name` varchar(200) COLLATE utf8mb4_bin DEFAULT '' COMMENT '检查项对应字段',
`field_desc` varchar(200) COLLATE utf8mb4_bin DEFAULT '' COMMENT '检查项对应字段名称',
`class_name` varchar(50) COLLATE utf8mb4_bin DEFAULT '' COMMENT '检查项对应类名',
`busi_type` varchar(10) COLLATE utf8mb4_bin DEFAULT '' COMMENT '业务类型',
`check_level` tinyint(1) DEFAULT '0' COMMENT '校验级别 0-不检查;1-错误(不通过);2-警告(提示)',
`check_msg` varchar(500) COLLATE utf8mb4_bin DEFAULT '' COMMENT '提示内容',
`check_script` varchar(500) COLLATE utf8mb4_bin DEFAULT '' COMMENT '检查脚本/表达式/公共代码',
`check_type` int(11) DEFAULT NULL COMMENT '校验方式 1-程序代码校验;2-必填性校验;3-代码合法性校验;4-必填&代码合法校验;5-正则表达式校验;6-必填&正则表达校验;',
`creater_id` char(36) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人主键',
`creater_name` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人名称',
`creater_firm_id` char(36) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '创建人公司主键 0000表示默认值',
`creater_firm_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '企业名称',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_creater_firm_id_busi_type` (`creater_firm_id`,`busi_type`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='逻辑检查项设置';
复制代码
2.流程图
- 核心代码
- 略,主要技术涉及泛型、反射、缓存
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END