【场景方案】可配置逻辑校验

思维决定高度,格局决定境界

一、场景

  1. 操作前需要进行复杂的逻辑校验
  2. 用户可配置逻辑校验项

示例

  • 登机前需要对机票进行一次核查
  • 申请护照需要对个人身份的审查
  • 孩子的入学申请需要进行一次审核

二、思路

  1. 可按字段维度配置校验规则
  2. 使用反射解决对象取值问题
  3. 考虑灵活性,尽量少使用硬编码,可使用表达式增加配置灵活性
  4. 个性化的校验需要硬编码,通过反射执行方法
  5. 支持不同的业务,使用泛型接收对象

三、方案

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.流程图

逻辑校验.png

  1. 核心代码
  • 略,主要技术涉及泛型、反射、缓存
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享