diff --git a/CHANGELOG.md b/CHANGELOG.md index 40c936e5..16aee1e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,66 @@ ## [Unreleased] -- Lov 支持 - 全局数据校验支持 + - OSS starter 修改使用 AWS S3 + +## [0.0.5] + +### Added + +- Lov 模块 +- 字典相关 + - feat: DictItemVO 新增 id 属性 + - feat: 字典项新增 attributes 属性,用于定制额外的非必须属性,如颜色等供前端使用 + +### Changed + +- refactor: ApplicationContextUtil 更名为 SpringUtil + +- refactor: LogUtil#isMultipart 去除只判断 POST 请求的限制 + +- 全局异常&异常通知 + + - fix: 修复异常通知 message 为 null 时导致的异常 + + - fix: 修复类校验失败时,无法正常返回错误信息的 + - feat: 异常通知添加 hostname 和 ip 信息 + - fix: 捕获空指针异常时,会导致异常通知空指针的问题 + - fix: 异常通知 cpu 占用过高问题 + - feat: 添加忽略指定异常类的配置 + - refactor: 优化钉钉通知的http请求方式 + - style: 通知信息中的英文冒号转为中文冒号 + - refactor: 除未知异常外,取消全局异常捕获时的异常打印,如需详细堆栈可以在异常处理类中进行处理 + +- feat: AbstractQueueThread#preProcessor 修改为 public,便于子类重写 + +- fix: 修复包装 RequestBody 导致,表单数据无法正常读取的bug + +- fix: 修复在前台页面新建权限时无法指定主键 Id 的异常 + +- feat: extend-mybatis-plus 中批量插入方法,将生产的主键回填到实体中 + +- refactor: 登陆日志和操作日志分离 + +- fix: 修复用户登陆后将密文密码返回前台的安全隐患问题 + +- style: 代码生成器样式微调 + +### Dependency + +- Bump spring-boot from 2.3.1 to 2.3.4 +- Bump mybatis-plus from 3.3.2 to 3.4.0 +- Bump hutool from 5.3.10 to 5.4.1 +- Bump spring-java-format from 0.0.22 to 0.0.25 + + + ## [0.0.4] ### Added + - 新增 kafka stater 模块 - 新增 mybatis-extends 扩展,添加批量插入方法 - accesslog 提供 responseWrapper,方便记录响应数据 @@ -19,6 +72,7 @@ - 新增 Security 是否开启禁止 iframe 嵌入的配置控制 ### Changed + - AbstractQueueThread 提高默认的批处理大小 - 代码生成器移除加载动态数据源时指定的 driverClassName - 移除 admin-core 默认引入的 swagger 依赖,现在用户可以在自己的项目中选择引入 @@ -31,17 +85,20 @@ - 字典添加值类型字段,便于前端回显,以及后续校验控制 ### Dependency + - swagger up to 1.5.21 - dynamic-datasource up to 3.2.0 - spring-boot-admin up to 2.2.4 - easyexcel up to 2.2.6 + ## [0.0.3] - 2020-07-06 ### Added - 重构代码生成器 + - 前端使用 ant-design-vue 重构,支持单体应用以及前后端分离两种部署方式 - 多数据源支持,动态添加删除,生成时选择对应数据源进行代码生成 - 代码生成结构调整,支持自定义代码生成结构 @@ -91,31 +148,9 @@ - spring-boot 版本升级至 2.3.1.RELEASE - spring-security-oauth2 升级至 2.3.8.RELEASE -### SQL - -```sql -# 逻辑删除字段修改为bigint -ALTER TABLE `ballcat`.`sys_user` -MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `type`; -ALTER TABLE `ballcat`.`sys_role` -MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `note`; -ALTER TABLE `ballcat`.`sys_permission` -MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `type`; -ALTER TABLE `ballcat`.`sys_dict` -MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `hash_code`; -ALTER TABLE `ballcat`.`sys_dict_item` -MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `remarks`; -ALTER TABLE `ballcat`.`sys_config` -ADD COLUMN `deleted` bigint(20) NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `description`; - -# 系统角色新增类型字段 -ALTER TABLE `ballcat`.`sys_role` -ADD COLUMN `type` tinyint(1) NULL DEFAULT 2 COMMENT '角色类型,1:系统角色 2:业务角色' AFTER `code`; -``` - ## [0.0.2] @@ -143,15 +178,3 @@ ADD COLUMN `type` tinyint(1) NULL DEFAULT 2 COMMENT '角色类型,1:系统 `@MapperScan("com.hccake.ballcat.**.mapper")` `@ComponentScan("com.hccake.ballcat.admin")` 注解上的这两个包扫描也可去掉。 - -### SQL - -```sql -ALTER TABLE `admin_operation_log` -ADD COLUMN `trace_id` char(24) NULL COMMENT '追踪ID' AFTER `id`, -MODIFY COLUMN `method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式' AFTER `uri`, -ADD COLUMN `type` tinyint(1) NULL COMMENT '操作类型' AFTER `status`; - -ALTER TABLE `admin_access_log` -ADD COLUMN `trace_id` char(24) NULL COMMENT '追踪ID' AFTER `id` -``` \ No newline at end of file diff --git a/doc/2ballcat.sql b/doc/2ballcat.sql index 61bc8d1a..8beb312e 100644 --- a/doc/2ballcat.sql +++ b/doc/2ballcat.sql @@ -18,6 +18,7 @@ CREATE TABLE `admin_access_log` ( `req_params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '请求参数', `req_body` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '请求body', `http_status` int(5) NULL DEFAULT NULL COMMENT '响应状态码', + `result` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '响应信息', `error_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '错误消息', `time` bigint(64) NULL DEFAULT NULL COMMENT '执行时长', `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', @@ -29,6 +30,29 @@ CREATE TABLE `admin_access_log` ( INDEX `create_time`(`create_time`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '访问日志' ROW_FORMAT = Dynamic; +-- ---------------------------- +-- Table structure for admin_login_log +-- ---------------------------- +DROP TABLE IF EXISTS `admin_login_log`; +CREATE TABLE `admin_login_log` ( + `id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '编号', + `trace_id` char(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '追踪ID', + `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名', + `ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登陆IP', + `os` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统', + `status` tinyint(1) NOT NULL COMMENT '状态', + `event_type` tinyint(1) NULL DEFAULT NULL COMMENT '事件类型,1:登录 2:登出', + `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作信息', + `location` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登陆地点', + `browser` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器', + `login_time` datetime(0) NULL DEFAULT NULL COMMENT '登录/登出时间', + `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP(0) COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `status`(`status`) USING BTREE, + INDEX `create_time`(`create_time`) USING BTREE, + INDEX `username`(`username`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '登陆日志' ROW_FORMAT = Dynamic; + -- ---------------------------- -- Table structure for admin_operation_log -- ---------------------------- @@ -71,7 +95,7 @@ CREATE TABLE `oauth_client_details` ( `additional_information` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `autoapprove` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`client_id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'OAuth客户端配置' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of oauth_client_details @@ -103,60 +127,6 @@ CREATE TABLE `sys_config` ( -- ---------------------------- INSERT INTO `sys_config` VALUES (1, '网站弹窗开关', 'site_popup', '0', 'group', '宣传网站是否弹出框的控制开关。\n1:开启 0:关闭', 0, '2020-07-03 15:24:44', '2019-10-15 16:45:55'); -DROP TABLE IF EXISTS `sys_lov`; -CREATE TABLE `sys_lov` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `keyword` varchar(50) DEFAULT NULL COMMENT '关键字,唯一,加载lov数据时通过关键字加载', - `url` varchar(255) DEFAULT NULL COMMENT '获取数据时请求路径', - `method` varchar(10) DEFAULT NULL COMMENT 'http请求方式', - `position` varchar(10) DEFAULT NULL COMMENT 'http请求参数设置位置', - `key` varchar(20) DEFAULT NULL COMMENT '数据的key', - `fixed_params` varchar(255) DEFAULT '{}' COMMENT '固定请求参数,请设置 jsonString, 默认值 {}', - `multiple` bit(1) DEFAULT NULL COMMENT '是否需要多选', - `search` bit(1) DEFAULT NULL COMMENT '是否需要搜索框', - `ret` bit(1) DEFAULT NULL COMMENT '是否需要返回数据, false则不会有确定按钮', - `ret_field` varchar(50) DEFAULT NULL COMMENT '返回数据的字段', - `ret_field_data_type` tinyint(1) DEFAULT NULL COMMENT '返回字段数据类型 1 String 2 Number', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - `update_time` datetime DEFAULT NULL COMMENT '更新时间', - PRIMARY KEY (`id`), - UNIQUE KEY `keyword` (`keyword`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='lov'; - -DROP TABLE IF EXISTS `sys_lov_body`; -CREATE TABLE `sys_lov_body` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `lov_id` int(11) DEFAULT NULL, - `title` varchar(100) DEFAULT NULL COMMENT '标题', - `field` varchar(50) DEFAULT NULL COMMENT '字段, 同一lov下,field不可重复`', - `index` int(255) DEFAULT NULL COMMENT '索引,字段排序', - `property` varchar(255) DEFAULT '{}' COMMENT '自定义属性,请设置 jsonString, 默认值 {}', - `custom` bit(1) DEFAULT NULL COMMENT '是否自定义html', - `html` text COMMENT '如果 custom=true 则当前值不能为空', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `lov_id` (`lov_id`,`field`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='lov body'; - -DROP TABLE IF EXISTS `sys_lov_search`; -CREATE TABLE `sys_lov_search` ( - `id` int(11) NOT NULL AUTO_INCREMENT, - `lov_id` int(11) DEFAULT NULL, - `label` varchar(100) DEFAULT NULL COMMENT '标签文字', - `field` varchar(50) DEFAULT NULL COMMENT '字段', - `placeholder` varchar(255) DEFAULT NULL COMMENT 'placeholder', - `tag` varchar(50) DEFAULT NULL COMMENT 'html 标签', - `options` text COMMENT 'tag=SELECT时的选项', - `min` int(1) DEFAULT NULL COMMENT 'tag=INPUT_NUMBER时的选项,设置数字最小值', - `max` int(1) DEFAULT NULL COMMENT 'tag=INPUT_NUMBER时的选项,设置数字最大值', - `dict_code` varchar(50) DEFAULT NULL COMMENT 'tag=DICT_SELECT时的选项,设置dict-code', - `custom` bit(1) DEFAULT NULL COMMENT '是否自定义html', - `html` text COMMENT '如果 custom=true 则当前值不能为空', - `create_time` datetime DEFAULT NULL COMMENT '创建时间', - PRIMARY KEY (`id`), - UNIQUE KEY `lov_id` (`lov_id`,`field`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='lov search'; - -- ---------------------------- -- Table structure for sys_dict -- ---------------------------- @@ -167,23 +137,26 @@ CREATE TABLE `sys_dict` ( `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `editable` tinyint(1) NULL DEFAULT 0 COMMENT '可编辑 1:是 0:否', - `value_type` tinyint(1) NULL DEFAULT 1 COMMENT '值类型,1:Number 2:String 3:Boolean', + `value_type` tinyint(1) NULL DEFAULT 0 COMMENT '值类型,1:Number 2:String 3:Boolean', `hash_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'hash值,当字典项被修改时变更', `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间', `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uk_code_deleted`(`code`, `deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典表' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sys_dict -- ---------------------------- -INSERT INTO `sys_dict` VALUES (1, 'dict_property', '字典属性', '只读、可写', 1, 1, 'd243f9f46a9f4a5498b013242c8828b3', 0, '2020-03-27 01:05:29', '2020-07-03 14:30:03'); -INSERT INTO `sys_dict` VALUES (2, 'log_type', '日志类型', '异常、正常', 1, 1, 'f8af5ef4568735abf7e6cc00afe938b', 0, '2020-03-27 01:05:29', '2020-03-27 11:06:44'); +INSERT INTO `sys_dict` VALUES (1, 'dict_property', '字典属性', '只读、可写', 1, 1, '0226999fa7a64f8c9c36309ab68889bd', 0, '2020-03-27 01:05:29', '2020-07-03 14:30:03'); +INSERT INTO `sys_dict` VALUES (2, 'log_status', '日志状态', '正常、异常', 1, 1, 'd63783be5ae845a9905fc5c69e796837', 0, '2020-03-27 01:05:29', '2020-03-27 11:06:44'); INSERT INTO `sys_dict` VALUES (3, 'gender', '性别', '用户性别', 1, 1, 'aca1caf123123e4872be29c8cc448', 0, '2020-03-27 01:05:29', '2020-03-27 00:55:28'); INSERT INTO `sys_dict` VALUES (4, 'grant_types', '授权类型', 'OAuth授权类型', 1, 1, 'e5316daadb490e9ca7e1ac5c5607a4', 0, '2020-03-27 01:05:29', '2020-03-27 00:30:16'); -INSERT INTO `sys_dict`(`code`, `title`, `remarks`, `editable`, `hash_code`, `deleted`, `create_time`, `update_time`, `value_type`) VALUES ('dict_value_type', '字典数据类型', NULL, 1, '582ed0dc179d4c99929b6dc5b63847fb', 0, now(), NULL, 1); +INSERT INTO `sys_dict` VALUES (5, 'operation_type', '操作类型', '操作日志的操作类型', 0, 1, '360bb77640dd4b109d58c094163c60b8', 0, '2020-07-14 20:28:54', NULL); +INSERT INTO `sys_dict` VALUES (6, 'role_type', '角色类型', '系统角色、业务角色', 0, 1, '53f3fb8c715149fe8793be4c25127ce9', 0, '2020-07-14 21:16:45', NULL); +INSERT INTO `sys_dict` VALUES (7, 'dict_value_type', '字典数据类型', 'Number、String、Boolean', 1, 1, '9f7e7a3904aa4270a8d8d94005827d82', 0, '2020-08-14 17:16:47', NULL); +INSERT INTO `sys_dict` VALUES (8, 'login_event_type', '登陆事件类型', '1:登陆 2:登出', 0, 1, '6fe465274208421eb0619a516875e270', 0, '2020-09-17 14:44:00', NULL); -- ---------------------------- -- Table structure for sys_dict_item @@ -194,6 +167,7 @@ CREATE TABLE `sys_dict_item` ( `dict_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '字典Code', `value` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据值', `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签', + `attributes` json NULL COMMENT '附加属性', `sort` int(10) NOT NULL DEFAULT 0 COMMENT '排序(升序)', `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间', @@ -201,26 +175,101 @@ CREATE TABLE `sys_dict_item` ( `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_dict_code`(`dict_code`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典项' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典项' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sys_dict_item -- ---------------------------- -INSERT INTO `sys_dict_item` VALUES (1, 'dict_property', '0', '只读', 0, '只读字典,不可编辑', 0, '2020-03-27 01:05:52', '2020-04-11 22:34:21'); -INSERT INTO `sys_dict_item` VALUES (2, 'dict_property', '1', '可写', 1, '该字典可以编辑', 0, '2020-03-27 01:05:52', '2020-04-11 22:34:14'); -INSERT INTO `sys_dict_item` VALUES (3, 'log_type', '1', '正常', 0, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:18'); -INSERT INTO `sys_dict_item` VALUES (4, 'log_type', '0', '异常', 1, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); -INSERT INTO `sys_dict_item` VALUES (5, 'gender', '1', '男', 0, '', 0, '2020-03-27 01:05:52', '2019-03-27 13:45:13'); -INSERT INTO `sys_dict_item` VALUES (6, 'gender', '2', '女', 1, '', 0, '2020-03-27 01:05:52', '2019-03-27 13:45:34'); -INSERT INTO `sys_dict_item` VALUES (7, 'gender', '3', '未知', 2, '', 0, '2020-03-27 01:05:52', '2019-03-27 13:45:57'); -INSERT INTO `sys_dict_item` VALUES (8, 'grant_types', 'password', '密码模式', 0, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:35:28'); -INSERT INTO `sys_dict_item` VALUES (9, 'grant_types', 'authorization_code', '授权码模式', 1, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:36:07'); -INSERT INTO `sys_dict_item` VALUES (10, 'grant_types', 'client_credentials', '客户端模式', 2, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:36:30'); -INSERT INTO `sys_dict_item` VALUES (11, 'grant_types', 'refresh_token', '刷新模式', 3, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:36:54'); -INSERT INTO `sys_dict_item` VALUES (12, 'grant_types', 'implicit', '简化模式', 4, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:39:32'); -INSERT INTO `sys_dict_item`(`dict_code`, `value`, `name`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('dict_value_type', '1', 'Number', 1, NULL, 0, now(), NULL); -INSERT INTO `sys_dict_item`(`dict_code`, `value`, `name`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('dict_value_type', '2', 'String', 1, NULL, 0, now(), NULL); -INSERT INTO `sys_dict_item`(`dict_code`, `value`, `name`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('dict_value_type', '3', 'Boolean', 1, NULL, 0, now(), NULL); +INSERT INTO `sys_dict_item` VALUES (1, 'dict_property', '0', '只读', '{\"tagColor\": \"orange\"}', 0, '只读字典,不可编辑', 0, '2020-03-27 01:05:52', '2020-09-16 15:31:24'); +INSERT INTO `sys_dict_item` VALUES (2, 'dict_property', '1', '可写', '{\"tagColor\": \"green\"}', 1, '该字典可以编辑', 0, '2020-03-27 01:05:52', '2020-09-16 15:31:51'); +INSERT INTO `sys_dict_item` VALUES (3, 'log_status', '1', '正常', '{\"textColor\": \"#34890A\"}', 0, '', 0, '2020-03-27 01:05:52', '2020-09-17 14:41:13'); +INSERT INTO `sys_dict_item` VALUES (4, 'log_status', '0', '异常', '{\"textColor\": \"red\"}', 1, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); +INSERT INTO `sys_dict_item` VALUES (5, 'gender', '1', '男', '{}', 0, '', 0, '2020-03-27 01:05:52', '2019-03-27 13:45:13'); +INSERT INTO `sys_dict_item` VALUES (6, 'gender', '2', '女', '{}', 1, '', 0, '2020-03-27 01:05:52', '2019-03-27 13:45:34'); +INSERT INTO `sys_dict_item` VALUES (7, 'gender', '3', '未知', NULL, 2, '', 0, '2020-03-27 01:05:52', '2019-03-27 13:45:57'); +INSERT INTO `sys_dict_item` VALUES (8, 'grant_types', 'password', '密码模式', NULL, 0, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:35:28'); +INSERT INTO `sys_dict_item` VALUES (9, 'grant_types', 'authorization_code', '授权码模式', NULL, 1, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:36:07'); +INSERT INTO `sys_dict_item` VALUES (10, 'grant_types', 'client_credentials', '客户端模式', NULL, 2, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:36:30'); +INSERT INTO `sys_dict_item` VALUES (11, 'grant_types', 'refresh_token', '刷新模式', NULL, 3, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:36:54'); +INSERT INTO `sys_dict_item` VALUES (12, 'grant_types', 'implicit', '简化模式', NULL, 4, NULL, 0, '2020-03-27 01:05:52', '2019-08-13 07:39:32'); +INSERT INTO `sys_dict_item` VALUES (13, 'login_event_type', '1', '登陆', '{\"tagColor\": \"cyan\"}', 0, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:18'); +INSERT INTO `sys_dict_item` VALUES (14, 'login_event_type', '2', '登出', '{\"tagColor\": \"pink\"}', 1, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); +INSERT INTO `sys_dict_item` VALUES (15, 'operation_type', '3', '查看', '{\"tagColor\": \"purple\"}', 2, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); +INSERT INTO `sys_dict_item` VALUES (16, 'operation_type', '4', '新建', '{\"tagColor\": \"cyan\"}', 3, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); +INSERT INTO `sys_dict_item` VALUES (17, 'operation_type', '5', '修改', '{\"tagColor\": \"orange\"}', 4, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); +INSERT INTO `sys_dict_item` VALUES (18, 'operation_type', '6', '删除', '{\"tagColor\": \"pink\"}', 5, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); +INSERT INTO `sys_dict_item` VALUES (19, 'role_type', '1', '系统', '{\"tagColor\": \"orange\"}', 1, '系统角色不能删除', 0, '2020-07-14 21:17:07', NULL); +INSERT INTO `sys_dict_item` VALUES (20, 'role_type', '2', '业务', '{\"tagColor\": \"green\"}', 2, '业务角色可读可写', 0, '2020-07-14 21:17:24', NULL); +INSERT INTO `sys_dict_item` VALUES (21, 'dict_type', '1', 'Number', NULL, 1, NULL, 0, '2020-08-12 16:10:22', '2020-08-12 16:12:33'); +INSERT INTO `sys_dict_item` VALUES (22, 'dict_type', '2', 'String', NULL, 1, NULL, 0, '2020-08-12 16:10:31', '2020-08-12 16:12:27'); +INSERT INTO `sys_dict_item` VALUES (23, 'dict_type', '3', 'Boolean', NULL, 1, NULL, 0, '2020-08-12 16:10:38', '2020-08-12 16:12:23'); +INSERT INTO `sys_dict_item` VALUES (24, 'dict_value_type', '1', 'Number', NULL, 1, NULL, 0, '2020-08-12 16:10:22', '2020-08-12 16:12:33'); +INSERT INTO `sys_dict_item` VALUES (25, 'dict_value_type', '2', 'String', NULL, 1, NULL, 0, '2020-08-12 16:10:31', '2020-08-12 16:12:27'); +INSERT INTO `sys_dict_item` VALUES (26, 'dict_value_type', '3', 'Boolean', '{}', 1, NULL, 0, '2020-08-12 16:10:38', '2020-09-16 15:07:07'); + +-- ---------------------------- +-- Table structure for sys_lov +-- ---------------------------- +DROP TABLE IF EXISTS `sys_lov`; +CREATE TABLE `sys_lov` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `keyword` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关键字,唯一,加载lov数据时通过关键字加载', + `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '获取数据时请求路径', + `method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'http请求方式', + `position` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'http请求参数设置位置', + `key` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '数据的key', + `fixed_params` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '{}' COMMENT '固定请求参数,请设置 jsonString, 默认值 {}', + `multiple` bit(1) NULL DEFAULT NULL COMMENT '是否需要多选', + `search` bit(1) NULL DEFAULT NULL COMMENT '是否需要搜索框', + `ret` bit(1) NULL DEFAULT NULL COMMENT '是否需要返回数据, false则不会有确定按钮', + `ret_field` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '返回数据的字段', + `ret_field_data_type` tinyint(1) NULL DEFAULT NULL COMMENT '返回字段数据类型 1 String 2 Number', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `keyword`(`keyword`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'lov' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_lov_body +-- ---------------------------- +DROP TABLE IF EXISTS `sys_lov_body`; +CREATE TABLE `sys_lov_body` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `lov_id` int(11) NULL DEFAULT NULL, + `title` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标题', + `field` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字段, 同一lov下,field不可重复`', + `index` int(255) NULL DEFAULT NULL COMMENT '索引,字段排序', + `property` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '{}' COMMENT '自定义属性,请设置 jsonString, 默认值 {}', + `custom` bit(1) NULL DEFAULT NULL COMMENT '是否自定义html', + `html` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '如果 custom=true 则当前值不能为空', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `lov_id`(`lov_id`, `field`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'lov body' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for sys_lov_search +-- ---------------------------- +DROP TABLE IF EXISTS `sys_lov_search`; +CREATE TABLE `sys_lov_search` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `lov_id` int(11) NULL DEFAULT NULL, + `label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签文字', + `field` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字段', + `placeholder` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'placeholder', + `tag` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'html 标签', + `options` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'tag=SELECT时的选项', + `min` int(1) NULL DEFAULT NULL COMMENT 'tag=INPUT_NUMBER时的选项,设置数字最小值', + `max` int(1) NULL DEFAULT NULL COMMENT 'tag=INPUT_NUMBER时的选项,设置数字最大值', + `dict_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'tag=DICT_SELECT时的选项,设置dict-code', + `custom` bit(1) NULL DEFAULT NULL COMMENT '是否自定义html', + `html` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '如果 custom=true 则当前值不能为空', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `lov_id`(`lov_id`, `field`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'lov search' ROW_FORMAT = Dynamic; + -- ---------------------------- -- Table structure for sys_permission -- ---------------------------- @@ -244,7 +293,7 @@ CREATE TABLE `sys_permission` ( `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 990510 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单权限' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单权限' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sys_permission @@ -286,18 +335,24 @@ INSERT INTO `sys_permission` VALUES (100501, '字典查询', 'sys:dict:read', NU INSERT INTO `sys_permission` VALUES (100502, '字典新增', 'sys:dict:add', NULL, NULL, NULL, NULL, NULL, 100500, NULL, 1, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); INSERT INTO `sys_permission` VALUES (100503, '字典修改', 'sys:dict:edit', NULL, NULL, NULL, NULL, NULL, 100500, NULL, 2, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); INSERT INTO `sys_permission` VALUES (100504, '字典删除', 'sys:dict:del', NULL, NULL, NULL, NULL, NULL, 100500, NULL, 3, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (100600, 'lov', NULL, '/sys/lov', 'Lov', 'sys/lov/Lov', NULL, NULL, 100000, NULL, 6, 0, 0, 1, 0, NULL, '2020-08-27 21:36:18'); +INSERT INTO `sys_permission` VALUES (100601, 'lov查询', 'sys:lov:read', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 0, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (100602, 'lov新增', 'sys:lov:add', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 1, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (100603, 'lov修改', 'sys:lov:edit', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 2, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (100604, 'lov删除', 'sys:lov:del', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 3, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); INSERT INTO `sys_permission` VALUES (110000, '日志管理', NULL, '', 'log', 'layouts/RouteView', '/log/adminoperationlog', NULL, 0, 'file-search', 9, 0, 0, 0, 0, NULL, '2019-10-16 18:30:07'); -INSERT INTO `sys_permission` VALUES (110100, '操作日志', NULL, '/log/adminoperationlog', 'adminOperationLog', 'log/adminoperationlog/AdminOperationLogPage', NULL, NULL, 110000, NULL, 1, 0, 0, 1, 0, NULL, '2019-10-13 22:00:24'); +INSERT INTO `sys_permission` VALUES (110100, '操作日志', NULL, '/log/adminoperationlog', 'adminOperationLog', 'log/adminoperationlog/AdminOperationLogPage', NULL, NULL, 110000, NULL, 2, 0, 0, 1, 0, NULL, '2020-09-17 01:50:47'); INSERT INTO `sys_permission` VALUES (110101, '操作日志查询', 'log:adminoperationlog:read', NULL, NULL, NULL, NULL, NULL, 110100, NULL, 0, 0, 0, 2, 0, '2019-10-13 22:00:24', '2019-10-15 14:14:03'); -INSERT INTO `sys_permission` VALUES (110300, '访问日志(后台)', NULL, '/log/adminaccesslog', 'adminAccessLog', 'log/adminaccesslog/AdminAccessLogPage', NULL, NULL, 110000, NULL, 1, 0, 0, 1, 0, NULL, '2019-10-13 22:00:24'); -INSERT INTO `sys_permission` VALUES (110301, '访问日志(后台)查询', 'log:adminaccesslog:read', NULL, NULL, NULL, NULL, NULL, 110300, NULL, 0, 0, 0, 2, 0, '2019-10-13 22:00:24', '2019-10-15 14:14:03'); +INSERT INTO `sys_permission` VALUES (110200, '登陆日志', NULL, '/log/adminloginlog', 'adminLoginLog', 'log/adminloginlog/AdminLoginLogPage', NULL, NULL, 110000, NULL, 1, 0, 0, 1, 0, NULL, '2019-10-13 22:00:24'); +INSERT INTO `sys_permission` VALUES (110201, '登陆日志查询', 'log:adminloginlog:read', NULL, NULL, NULL, NULL, NULL, 110200, NULL, 0, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (110300, '访问日志(后台)', NULL, '/log/adminaccesslog', 'adminAccessLog', 'log/adminaccesslog/AdminAccessLogPage', NULL, NULL, 110000, NULL, 3, 0, 0, 1, 0, NULL, '2020-09-17 01:50:38'); +INSERT INTO `sys_permission` VALUES (110301, '访问日志(后台)查询', 'log:adminaccesslog:read', NULL, '', NULL, NULL, NULL, 110300, NULL, 0, 0, 0, 2, 0, '2019-10-13 22:00:24', '2019-10-15 14:14:03'); INSERT INTO `sys_permission` VALUES (990000, '开发平台', '', '', 'develop', 'layouts/RouteView', '', NULL, 0, 'desktop', 99, 0, 0, 0, 0, NULL, '2019-11-22 16:49:56'); -INSERT INTO `sys_permission` VALUES (990100, '接口文档', '', 'http://ballcat-admin:8080/swagger-ui.html', 'swagger', '', '', '_blank', 990000, 'file', 1, 0, 0, 1, 0, NULL, '2019-11-22 16:48:42'); -INSERT INTO `sys_permission` VALUES (990200, '文档增强', '', 'http://ballcat-admin:8080/doc.html', 'doc', '', '', '_blank', 990000, 'file-text', 2, 0, 0, 1, 0, NULL, '2019-11-22 16:48:50'); +INSERT INTO `sys_permission` VALUES (990100, '接口文档', '', '/develop/swagger', 'swagger', 'layouts/IframeView', '', '', 990000, 'file', 1, 0, 0, 1, 0, NULL, '2019-11-22 16:48:42'); +INSERT INTO `sys_permission` VALUES (990200, '文档增强', '', '/develop/doc', 'doc', 'layouts/IframeView', '', '', 990000, 'file-text', 2, 0, 0, 1, 0, NULL, '2019-11-22 16:48:50'); INSERT INTO `sys_permission` VALUES (990300, '调度中心', '', 'http://ballcat-job:8888/xxl-job-admin', 'job', '', '', '_blank', 990000, 'rocket', 3, 0, 0, 1, 0, NULL, '2019-11-22 16:49:14'); INSERT INTO `sys_permission` VALUES (990400, '服务监控', '', 'http://ballcat-monitor:9999', 'monitor', '', '', '_blank', 990000, 'alert', 4, 0, 0, 1, 0, NULL, '2019-11-22 16:49:22'); -INSERT INTO `sys_permission` VALUES (990500, '代码生成', '', 'http://ballcat-codegen:7777', 'codegen', '', '', '_blank', 990000, 'printer', 5, 0, 0, 1, 0, NULL, '2019-11-22 16:49:35'); - +INSERT INTO `sys_permission` VALUES (990500, '代码生成', '', 'http://localhost:7777', 'codegen', '', '', '_blank', 990000, 'printer', 5, 0, 0, 1, 0, NULL, '2019-11-22 16:49:35'); -- ---------------------------- -- Table structure for sys_role @@ -314,12 +369,12 @@ CREATE TABLE `sys_role` ( `update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0), PRIMARY KEY (`id`) USING BTREE, INDEX `uk_code_deleted`(`code`, `deleted`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统角色' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统角色' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sys_role -- ---------------------------- -INSERT INTO `sys_role` VALUES (1, '管理员', 'ROLE_ADMIN', 1, '管理员', 0, '2017-10-29 15:45:51', '2020-07-06 15:50:07'); +INSERT INTO `sys_role` VALUES (1, '管理员', 'ROLE_ADMIN', 1, '管理员', 0, '2017-10-29 15:45:51', '2020-07-14 21:23:06'); INSERT INTO `sys_role` VALUES (2, '测试工程师', 'ROLE_TEST', 2, '测试工程师', 0, '2019-09-02 11:34:36', '2020-07-06 12:47:15'); INSERT INTO `sys_role` VALUES (14, '销售主管', 'ROLE_SALES_EXECUTIVE', 2, '销售主管', 0, '2020-02-27 15:10:36', '2020-07-06 12:47:14'); INSERT INTO `sys_role` VALUES (15, '销售专员', 'ROLE_SALESMAN', 2, '销售专员', 0, '2020-02-27 15:12:18', '2020-07-06 12:47:13'); @@ -436,10 +491,10 @@ CREATE TABLE `sys_user` ( -- ---------------------------- -- Records of sys_user -- ---------------------------- -INSERT INTO `sys_user` VALUES (1, 'admin', '超管牛逼', '$2a$10$YJDXeAsk7FjQQVTdutIat.rPR3p3uUPWmZyhtnRDOrIjPujOAUrla', NULL, 'sysuser/1/avatar/20200226/ab6bd5221afe4238ae4987f278758113.jpg', 1, 'chengbohua@foxmail.com', '15800000000', 1, 1, 0, '2999-09-20 17:13:24', '2020-06-08 22:49:43'); -INSERT INTO `sys_user` VALUES (10, 'test4', '测试用户213', '$2a$10$YJDXeAsk7FjQQVTdutIat.rPR3p3uUPWmZyhtnRDOrIjPujOAUrla', NULL, '', 0, '1234567@qq.com', '12345678520', 1, 1, 0, NULL, '2020-07-06 11:00:56'); +INSERT INTO `sys_user` VALUES (1, 'admin', '超管牛逼', '$2a$10$YJDXeAsk7FjQQVTdutIat.rPR3p3uUPWmZyhtnRDOrIjPujOAUrla', NULL, 'sysuser/1/avatar/20200226/ab6bd5221afe4238ae4987f278758113.jpg', 1, 'chengbohua@foxmail.com', '15800000000', 1, 1, 0, '2999-09-20 17:13:24', '2020-07-16 18:23:39'); +INSERT INTO `sys_user` VALUES (10, 'test4', '测试用户213', '$2a$10$RpZQ8i7ke9ikT1AE8cQwfe3t0NoRmkL5pr1U9YNXn2O9YiToZjMTG', NULL, '', 2, '1234567@qq.com', '12345678520', 1, 1, 0, NULL, '2020-07-14 20:15:44'); INSERT INTO `sys_user` VALUES (12, 'test1', 'test1', '$2a$10$EotCw/oHyg1MgJMDFgEeeOO0/jVHZgIFn0jX9kq9SP9sIAXF2m0Yi', NULL, 'sysuser/12/avatar/20200109/05e189b252b44598b6d150ce3597d293.jpg', 1, 'test1@qq.com', '12356322365', 1, 1, 20200609182117, '2019-10-18 20:40:57', NULL); -INSERT INTO `sys_user` VALUES (17, 'test2', 'test2', 'encode123456', NULL, NULL, 1, 'test2@qq.com', '123456789', 1, 1, 0, NULL, '2020-07-06 12:09:08'); +INSERT INTO `sys_user` VALUES (17, 'test2', 'test2', '$2a$10$YJDXeAsk7FjQQVTdutIat.rPR3p3uUPWmZyhtnRDOrIjPujOAUrla', NULL, NULL, 1, 'test2@qq.com', '123456789', 1, 1, 0, NULL, '2020-07-06 12:09:08'); -- ---------------------------- -- Table structure for sys_user_role diff --git a/doc/3ballcat_codegen.sql b/doc/3ballcat_codegen.sql index b793c411..ffe3cc56 100644 --- a/doc/3ballcat_codegen.sql +++ b/doc/3ballcat_codegen.sql @@ -36,37 +36,38 @@ CREATE TABLE `gen_template_directory_entry` ( -- ---------------------------- -- Records of gen_template_directory_entry -- ---------------------------- -INSERT INTO `gen_template_directory_entry` VALUES (1, 1, 'ballcat.src.main', 1, 0, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (2, 1, 'java', 1, 1, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (3, 1, '{packageName}.{moduleName}', 1, 2, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (4, 1, 'controller', 1, 3, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (5, 1, 'service', 1, 3, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (6, 1, 'impl', 1, 5, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (7, 1, 'mapper', 1, 3, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (8, 1, 'model', 1, 3, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (9, 1, 'entity', 1, 8, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (10, 1, 'qo', 1, 8, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (11, 1, 'vo', 1, 8, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (12, 1, 'resources', 1, 1, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (13, 1, 'mapper', 1, 12, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (14, 1, '{moduleName}', 1, 13, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (15, 1, 'ballcat-ui-vue.src', 1, 0, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (16, 1, 'api', 1, 15, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (17, 1, 'views', 1, 15, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (18, 1, '{moduleName}', 1, 16, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (19, 1, '{moduleName}.{classname}', 1, 17, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (20, 1, '{className}Controller.java', 2, 4, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (21, 1, '{className}Service.java', 2, 5, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (22, 1, '{className}ServiceImpl.java', 2, 6, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (23, 1, '{className}Mapper.java', 2, 7, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (24, 1, '{className}.java', 2, 9, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (25, 1, '{className}QO.java', 2, 10, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (26, 1, '{className}VO.java', 2, 11, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (27, 1, '{className}Mapper.xml', 2, 14, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (28, 1, '{classname}.js', 2, 18, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (29, 1, '{className}Page.vue', 2, 19, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (30, 1, '{className}Form.vue', 2, 19, 0, '2020-07-03 16:39:07', NULL); -INSERT INTO `gen_template_directory_entry` VALUES (31, 1, '{className}.sql', 2, 0, 0, '2020-07-03 16:39:07', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (63, 3, 'ballcat.src.main', 1, 0, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (64, 3, 'java', 1, 63, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (65, 3, '{packageName}.{moduleName}', 1, 64, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (66, 3, 'controller', 1, 65, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (67, 3, 'service', 1, 65, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (68, 3, 'impl', 1, 67, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (69, 3, 'mapper', 1, 65, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (70, 3, 'model', 1, 65, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (71, 3, 'entity', 1, 70, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (72, 3, 'qo', 1, 70, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (73, 3, 'vo', 1, 70, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (74, 3, 'resources', 1, 63, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (75, 3, 'mapper', 1, 74, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (76, 3, '{moduleName}', 1, 75, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (77, 3, 'ballcat-ui-vue.src', 1, 0, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (78, 3, 'api', 1, 77, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (79, 3, 'views', 1, 77, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (80, 3, '{moduleName}', 1, 78, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (81, 3, '{moduleName}.{classname}', 1, 79, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (82, 3, '{className}Controller.java', 2, 66, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (83, 3, '{className}Service.java', 2, 67, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (84, 3, '{className}ServiceImpl.java', 2, 68, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (85, 3, '{className}Mapper.java', 2, 69, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (86, 3, '{className}.java', 2, 71, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (87, 3, '{className}QO.java', 2, 72, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (88, 3, '{className}VO.java', 2, 73, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (89, 3, '{className}Mapper.xml', 2, 76, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (90, 3, '{classname}.js', 2, 80, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (91, 3, '{className}Page.vue', 2, 81, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (92, 3, '{className}Form.vue', 2, 81, 0, '2020-07-06 18:38:37', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_directory_entry`(`id`, `group_id`, `file_name`, `type`, `parent_id`, `deleted`, `create_time`, `update_time`) VALUES (93, 3, '{className}.sql', 2, 0, 0, '2020-07-06 18:38:37', NULL); + -- ---------------------------- -- Table structure for gen_template_group @@ -106,18 +107,20 @@ CREATE TABLE `gen_template_info` ( -- ---------------------------- -- Records of gen_template_info -- ---------------------------- -INSERT INTO `gen_template_info` VALUES (20, 1, 'Controller', 'package ${packageName}.${moduleName}.controller;\n\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.hccake.ballcat.common.core.result.R;\nimport com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging;\nimport com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging;\nimport com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.qo.${className}QO;\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport ${packageName}.${moduleName}.service.${className}Service;\nimport com.hccake.ballcat.common.core.result.BaseResultCode;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiOperation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.web.bind.annotation.*;\n\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@RestController\n@RequiredArgsConstructor\n@RequestMapping(\"/${moduleName}/${pathName}\" )\n@Api(value = \"${pathName}\", tags = \"${comments}管理\")\npublic class ${className}Controller {\n\n private final ${className}Service ${classname}Service;\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param ${classname}QO ${comments}查询对象\n * @return R 通用返回体\n */\n @ApiOperation(value = \"分页查询\", notes = \"分页查询\")\n @GetMapping(\"/page\" )\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:read\')\" )\n public R> get${className}Page(\n Page page, ${className}QO ${classname}QO) {\n return R.ok(${classname}Service.selectPageVo(page, ${classname}QO));\n }\n\n /**\n * 新增${comments}\n * @param ${classname} ${comments}\n * @return R 通用返回体\n */\n @ApiOperation(value = \"新增${comments}\", notes = \"新增${comments}\")\n @CreateOperationLogging(msg = \"新增${comments}\" )\n @PostMapping\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:add\')\" )\n public Re save(@RequestBody ${className} ${classname}) {\n return ${classname}Service.save(${classname}) ?\n R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, \"新增${comments}失败\");\n }\n\n /**\n * 修改${comments}\n * @param ${classname} ${comments}\n * @return R 通用返回体\n */\n @ApiOperation(value = \"修改${comments}\", notes = \"修改${comments}\")\n @UpdateOperationLogging(msg = \"修改${comments}\" )\n @PutMapping\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:edit\')\" )\n public Re updateById(@RequestBody ${className} ${classname}) {\n return ${classname}Service.updateById(${classname}) ?\n R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, \"修改${comments}失败\");\n }\n\n /**\n * 通过id删除${comments}\n * @param ${pk.attrName} id\n * @return R 通用返回体\n */\n @ApiOperation(value = \"通过id删除${comments}\", notes = \"通过id删除${comments}\")\n @DeleteOperationLogging(msg = \"通过id删除${comments}\" )\n @DeleteMapping(\"/{${pk.attrName}}\" )\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:del\')\" )\n public Re removeById(@PathVariable ${pk.attrType} ${pk.attrName}) {\n return ${classname}Service.removeById(${pk.attrName}) ?\n R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, \"通过id删除${comments}失败\");\n }\n\n}', 1, '控制层', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (21, 1, 'Service', 'package ${packageName}.${moduleName}.service;\n\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport ${packageName}.${moduleName}.model.qo.${className}QO;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\npublic interface ${className}Service extends IService<${className}> {\n\n /**\n * 根据QueryObeject查询分页数据\n * @param page 分页参数\n * @param qo 查询参数对象\n * @return IPage<${className}VO> 分页数据\n */\n IPage<${className}VO> selectPageVo(IPage page, ${className}QO qo);\n\n}', 1, '业务逻辑层', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (22, 1, 'ServiceImpl', 'package ${packageName}.${moduleName}.service.impl;\n\nimport cn.hutool.core.util.ObjectUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport ${packageName}.${moduleName}.model.qo.${className}QO;\nimport ${packageName}.${moduleName}.mapper.${className}Mapper;\nimport ${packageName}.${moduleName}.service.${className}Service;\nimport org.springframework.stereotype.Service;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@Service\npublic class ${className}ServiceImpl extends ServiceImpl<${className}Mapper, ${className}> implements ${className}Service {\n private final static String TABLE_ALIAS_PREFIX = \"${tableAlias}.\";\n\n /**\n * 根据QueryObeject查询分页数据\n * @param page 分页参数\n * @param qo 查询参数对象\n * @return IPage<${className}VO> 分页数据\n */\n @Override\n public IPage<${className}VO> selectPageVo(IPage page, ${className}QO qo) {\n QueryWrapper<${className}> wrapper = Wrappers.<${className}>query()\n .eq(ObjectUtil.isNotNull(qo.get${pk.caseAttrName}()), TABLE_ALIAS_PREFIX + \"${pk.caseAttrName}\", qo.get${pk.caseAttrName}());\n return baseMapper.selectPageVo(page, wrapper);\n }\n\n}\n', 1, '业务逻辑层实现类', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (23, 1, 'Mapper', 'package ${packageName}.${moduleName}.mapper;\n\nimport com.baomidou.mybatisplus.core.conditions.Wrapper;\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.core.toolkit.Constants;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport org.apache.ibatis.annotations.Param;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\npublic interface ${className}Mapper extends BaseMapper<${className}> {\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param wrapper 查询wrapper\n * @return IPage<${className}VO> VO分页数据\n */\n IPage<${className}VO> selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper<${className}> wrapper);\n}', 1, '数据访问层', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (24, 1, 'Entity', 'package ${packageName}.${moduleName}.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.FieldFill;\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou.mybatisplus.annotation.TableId;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@Data\n@TableName(\"${tableName}\")\n@EqualsAndHashCode(callSuper = true)\n@ApiModel(value = \"${comments}\")\npublic class ${className} extends Model<${className}> {\nprivate static final long serialVersionUID = 1L;\n\n#foreach ($column in $columns)\n /**\n * $column.comments\n */\n #if($column.columnName == $pk.columnName)\n @TableId\n #elseif($column.columnName == \'create_time\')\n @TableField(fill = FieldFill.INSERT)\n #elseif($column.columnName == \'update_time\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n #end\n @ApiModelProperty(value=\"$column.comments\")\n private $column.attrType $column.attrName;\n#end\n}\n', 1, '数据实体', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (25, 1, 'QO', 'package ${packageName}.${moduleName}.model.qo;\n\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n/**\n * ${comments} 查询对象\n *\n * @author ${author} ${currentTime}\n */\n@Data\n@ApiModel(value = \"${comments}查询对象\")\npublic class ${className}QO {\n private static final long serialVersionUID = 1L;\n\n #foreach ($column in $columns)\n /**\n * $column.comments\n */\n #if($column.columnName == $pk.columnName)\n @ApiModelProperty(value=\"$column.comments\")\n private $column.attrType $column.attrName;\n #break\n #end\n #end\n}', 1, '默认数据查询对象', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (26, 1, 'VO', 'package ${packageName}.${moduleName}.model.entity;\n\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n #if(${hasBigDecimal})\n import java.math.BigDecimal;\n #end\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@Data\n@ApiModel(value = \"${comments}\")\npublic class ${className}VO {\n private static final long serialVersionUID = 1L;\n\n #foreach ($column in $columns)\n /**\n * $column.comments\n */\n @ApiModelProperty(value=\"$column.comments\")\n private $column.attrType $column.attrName;\n #end\n}', 1, '默认数据视图对象', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (27, 1, 'Mapper.xml', '\n\n\n\n \n #foreach($column in $columns)\n #if($column.attrName==$pk.attrName)\n \n #else\n \n #end\n #end\n \n\n \n #foreach($column in $columns)${column.columnName}#if($foreach.hasNext), #end#end\n \n\n \n #foreach($column in $columns)${tableAlias}.${column.columnName}#if( $foreach.hasNext ), #end#end\n \n\n \n', 1, 'Mybatis Mapper Xml', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (28, 1, 'api.js', 'import { axios } from \'@/utils/request\'\n\nexport function getPage(query) {\n return axios({\n url: \'/${moduleName}/${pathName}/page\',\n method: \'get\',\n params: query\n })\n}\n\nexport function addObj(obj) {\n return axios({\n url: \'/${moduleName}/${pathName}\',\n method: \'post\',\n data: obj\n })\n}\n\nexport function delObj(id) {\n return axios({\n url: \'/${moduleName}/${pathName}/\' + id,\n method: \'delete\'\n })\n}\n\nexport function putObj(obj) {\n return axios({\n url: \'/${moduleName}/${pathName}\',\n method: \'put\',\n data: obj\n })\n}', 1, 'Axios 访问方法', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (29, 1, 'Page.vue', '\r\n\r\n', 1, '查询页面', 0, '2020-07-03 16:39:08', NULL); -INSERT INTO `gen_template_info` VALUES (30, 1, 'Form.vue', '\n\n', 1, '新建和修改使用的表单页面', 0, '2020-07-03 16:39:08', '2020-07-03 16:40:04'); -INSERT INTO `gen_template_info` VALUES (31, 1, 'permissionSql', '## 备注: 变量的使用方法,是mysql语法,基础生成部分是全数据库通用,若数据源非mysql,请只执行基础生成sql\nSTART TRANSACTION;\n\n-- 目录ID\nset @pId = 目录ID;\n-- 菜单ID\nset @menuId = 菜单ID;\n\n## -----------------基础生成部分start-------------\n-- 插入菜单\nINSERT INTO `sys_permission`\n (`id`, `parent_id`, `title`, `code`, `path`, `router_name`, `component`, `redirect`, `icon`, `sort`, `keep_alive`, `hidden`, `type`, `deleted`, `create_time`, `update_time`)\nVALUES\n (@menuId, @pId, \'${comments}\', NULL, \'/${moduleName}/${pathName}\', \'${classname}\', \'${moduleName}/${pathName}/${className}Page\', NULL, NULL, 1, 0, 0, 1, 0, NULL, \'2019-10-13 22:00:24\');\n\n\n-- 菜单对应按钮SQL\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 1, @menuId, \'${comments}查询\', \'${moduleName}:${pathName}:read\', 0, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\n\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 2, @menuId, \'${comments}新增\', \'${moduleName}:${pathName}:add\', 1, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 3, @menuId, \'${comments}修改\', \'${moduleName}:${pathName}:edit\', 2, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 4, @menuId, \'${comments}删除\', \'${moduleName}:${pathName}:del\', 3, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\n## -----------------基础生成部分end-------------\n\n-- 清空变量\nset @menuId = null;\nset @pId = null;\n\nCOMMIT;', 1, '权限sql', 0, '2020-07-03 16:39:08', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (58, 3, 'Controller', 'package ${packageName}.${moduleName}.controller;\n\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.hccake.ballcat.common.core.result.R;\nimport com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging;\nimport com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging;\nimport com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.qo.${className}QO;\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport ${packageName}.${moduleName}.service.${className}Service;\nimport com.hccake.ballcat.common.core.result.BaseResultCode;\nimport org.springframework.security.access.prepost.PreAuthorize;\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiOperation;\nimport lombok.RequiredArgsConstructor;\nimport org.springframework.web.bind.annotation.*;\n\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@RestController\n@RequiredArgsConstructor\n@RequestMapping(\"/${moduleName}/${pathName}\" )\n@Api(value = \"${pathName}\", tags = \"${comments}管理\")\npublic class ${className}Controller {\n\n private final ${className}Service ${classname}Service;\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param ${classname}QO ${comments}查询对象\n * @return R 通用返回体\n */\n @ApiOperation(value = \"分页查询\", notes = \"分页查询\")\n @GetMapping(\"/page\" )\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:read\')\" )\n public R> get${className}Page(\n Page page, ${className}QO ${classname}QO) {\n return R.ok(${classname}Service.selectPageVo(page, ${classname}QO));\n }\n\n /**\n * 新增${comments}\n * @param ${classname} ${comments}\n * @return R 通用返回体\n */\n @ApiOperation(value = \"新增${comments}\", notes = \"新增${comments}\")\n @CreateOperationLogging(msg = \"新增${comments}\" )\n @PostMapping\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:add\')\" )\n public R save(@RequestBody ${className} ${classname}) {\n return ${classname}Service.save(${classname}) ?\n R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, \"新增${comments}失败\");\n }\n\n /**\n * 修改${comments}\n * @param ${classname} ${comments}\n * @return R 通用返回体\n */\n @ApiOperation(value = \"修改${comments}\", notes = \"修改${comments}\")\n @UpdateOperationLogging(msg = \"修改${comments}\" )\n @PutMapping\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:edit\')\" )\n public R updateById(@RequestBody ${className} ${classname}) {\n return ${classname}Service.updateById(${classname}) ?\n R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, \"修改${comments}失败\");\n }\n\n /**\n * 通过id删除${comments}\n * @param ${pk.attrName} id\n * @return R 通用返回体\n */\n @ApiOperation(value = \"通过id删除${comments}\", notes = \"通过id删除${comments}\")\n @DeleteOperationLogging(msg = \"通过id删除${comments}\" )\n @DeleteMapping(\"/{${pk.attrName}}\" )\n @PreAuthorize(\"@per.hasPermission(\'${moduleName}:${pathName}:del\')\" )\n public R removeById(@PathVariable ${pk.attrType} ${pk.attrName}) {\n return ${classname}Service.removeById(${pk.attrName}) ?\n R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, \"通过id删除${comments}失败\");\n }\n\n}', 1, '控制层', 0, '2020-07-03 16:39:08', '2020-09-16 23:01:22'); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (59, 3, 'Service', 'package ${packageName}.${moduleName}.service;\n\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.extension.service.IService;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport ${packageName}.${moduleName}.model.qo.${className}QO;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\npublic interface ${className}Service extends IService<${className}> {\n\n /**\n * 根据QueryObeject查询分页数据\n * @param page 分页参数\n * @param qo 查询参数对象\n * @return IPage<${className}VO> 分页数据\n */\n IPage<${className}VO> selectPageVo(IPage page, ${className}QO qo);\n\n}', 1, '业务逻辑层', 0, '2020-07-03 16:39:08', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (60, 3, 'ServiceImpl', 'package ${packageName}.${moduleName}.service.impl;\n\nimport cn.hutool.core.util.ObjectUtil;\nimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.core.toolkit.Wrappers;\nimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport ${packageName}.${moduleName}.model.qo.${className}QO;\nimport ${packageName}.${moduleName}.mapper.${className}Mapper;\nimport ${packageName}.${moduleName}.service.${className}Service;\nimport org.springframework.stereotype.Service;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@Service\npublic class ${className}ServiceImpl extends ServiceImpl<${className}Mapper, ${className}> implements ${className}Service {\n private final static String TABLE_ALIAS_PREFIX = \"${tableAlias}.\";\n\n /**\n * 根据QueryObeject查询分页数据\n * @param page 分页参数\n * @param qo 查询参数对象\n * @return IPage<${className}VO> 分页数据\n */\n @Override\n public IPage<${className}VO> selectPageVo(IPage page, ${className}QO qo) {\n QueryWrapper<${className}> wrapper = Wrappers.<${className}>query()\n .eq(ObjectUtil.isNotNull(qo.get${pk.capitalizedAttrName}()), TABLE_ALIAS_PREFIX + \"${pk.columnName}\", qo.get${pk.capitalizedAttrName}());\n return baseMapper.selectPageVo(page, wrapper);\n }\n\n}\n', 1, '业务逻辑层实现类', 0, '2020-07-03 16:39:08', '2020-09-17 16:47:55'); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (61, 3, 'Mapper', 'package ${packageName}.${moduleName}.mapper;\n\nimport com.baomidou.mybatisplus.core.conditions.Wrapper;\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.core.toolkit.Constants;\nimport ${packageName}.${moduleName}.model.entity.${className};\nimport ${packageName}.${moduleName}.model.vo.${className}VO;\nimport org.apache.ibatis.annotations.Param;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\npublic interface ${className}Mapper extends BaseMapper<${className}> {\n\n /**\n * 分页查询\n * @param page 分页对象\n * @param wrapper 查询wrapper\n * @return IPage<${className}VO> VO分页数据\n */\n IPage<${className}VO> selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper<${className}> wrapper);\n}', 1, '数据访问层', 0, '2020-07-03 16:39:08', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (62, 3, 'Entity', 'package ${packageName}.${moduleName}.model.entity;\n\nimport com.baomidou.mybatisplus.annotation.FieldFill;\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou.mybatisplus.annotation.TableId;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@Data\n@TableName(\"${tableName}\")\n@EqualsAndHashCode(callSuper = true)\n@ApiModel(value = \"${comments}\")\npublic class ${className} extends Model<${className}> {\nprivate static final long serialVersionUID = 1L;\n\n#foreach ($column in $columns)\n /**\n * $column.comments\n */\n #if($column.columnName == $pk.columnName)\n @TableId\n #elseif($column.columnName == \'create_time\')\n @TableField(fill = FieldFill.INSERT)\n #elseif($column.columnName == \'update_time\')\n @TableField(fill = FieldFill.INSERT_UPDATE)\n #end\n @ApiModelProperty(value=\"$column.comments\")\n private $column.attrType $column.attrName;\n#end\n}\n', 1, '数据实体', 0, '2020-07-03 16:39:08', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (63, 3, 'QO', 'package ${packageName}.${moduleName}.model.qo;\n\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\n\n/**\n * ${comments} 查询对象\n *\n * @author ${author} ${currentTime}\n */\n@Data\n@ApiModel(value = \"${comments}查询对象\")\npublic class ${className}QO {\n private static final long serialVersionUID = 1L;\n\n #foreach ($column in $columns)\n /**\n * $column.comments\n */\n #if($column.columnName == $pk.columnName)\n @ApiModelProperty(value=\"$column.comments\")\n private $column.attrType $column.attrName;\n #break\n #end\n #end\n}', 1, '默认数据查询对象', 0, '2020-07-03 16:39:08', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (64, 3, 'VO', 'package ${packageName}.${moduleName}.model.vo;\n\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\n #if(${hasBigDecimal})\n import java.math.BigDecimal;\n #end\nimport java.io.Serializable;\nimport java.time.LocalDateTime;\n\n/**\n * ${comments}\n *\n * @author ${author} ${currentTime}\n */\n@Data\n@ApiModel(value = \"${comments}\")\npublic class ${className}VO {\n private static final long serialVersionUID = 1L;\n\n #foreach ($column in $columns)\n /**\n * $column.comments\n */\n @ApiModelProperty(value=\"$column.comments\")\n private $column.attrType $column.attrName;\n #end\n}', 1, '默认数据视图对象', 0, '2020-07-03 16:39:08', '2020-09-16 22:56:23'); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (65, 3, 'Mapper.xml', '\n\n\n\n \n #foreach($column in $columns)\n #if($column.attrName==$pk.attrName)\n \n #else\n \n #end\n #end\n \n\n \n #foreach($column in $columns)${column.columnName}#if($foreach.hasNext), #end#end\n \n\n \n #foreach($column in $columns)${tableAlias}.${column.columnName}#if( $foreach.hasNext ), #end#end\n \n\n \n', 1, 'Mybatis Mapper Xml', 0, '2020-07-03 16:39:08', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (66, 3, 'api.js', 'import { axios } from \'@/utils/request\'\n\nexport function getPage(query) {\n return axios({\n url: \'/${moduleName}/${pathName}/page\',\n method: \'get\',\n params: query\n })\n}\n\nexport function addObj(obj) {\n return axios({\n url: \'/${moduleName}/${pathName}\',\n method: \'post\',\n data: obj\n })\n}\n\nexport function delObj(id) {\n return axios({\n url: \'/${moduleName}/${pathName}/\' + id,\n method: \'delete\'\n })\n}\n\nexport function putObj(obj) {\n return axios({\n url: \'/${moduleName}/${pathName}\',\n method: \'put\',\n data: obj\n })\n}', 1, 'Axios 访问方法', 0, '2020-07-03 16:39:08', NULL); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (67, 3, 'Page.vue', '\n\n', 1, '查询页面', 0, '2020-07-03 16:39:08', '2020-09-16 23:10:19'); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (68, 3, 'Form.vue', '\n\n', 1, '新建和修改使用的表单页面', 0, '2020-07-03 16:39:08', '2020-09-16 23:09:16'); +INSERT INTO `ballcat_codegen`.`gen_template_info`(`directory_entry_id`, `group_id`, `title`, `content`, `engine_type`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES (69, 3, 'permissionSql', '## 备注: 变量的使用方法,是mysql语法,基础生成部分是全数据库通用,若数据源非mysql,请只执行基础生成sql\nSTART TRANSACTION;\n\n-- 目录ID\nset @pId = 目录ID;\n-- 菜单ID\nset @menuId = 菜单ID;\n\n## -----------------基础生成部分start-------------\n-- 插入菜单\nINSERT INTO `sys_permission`\n (`id`, `parent_id`, `title`, `code`, `path`, `router_name`, `component`, `redirect`, `icon`, `sort`, `keep_alive`, `hidden`, `type`, `deleted`, `create_time`, `update_time`)\nVALUES\n (@menuId, @pId, \'${comments}\', NULL, \'/${moduleName}/${pathName}\', \'${classname}\', \'${moduleName}/${pathName}/${className}Page\', NULL, NULL, 1, 0, 0, 1, 0, NULL, \'2019-10-13 22:00:24\');\n\n\n-- 菜单对应按钮SQL\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 1, @menuId, \'${comments}查询\', \'${moduleName}:${pathName}:read\', 0, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\n\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 2, @menuId, \'${comments}新增\', \'${moduleName}:${pathName}:add\', 1, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 3, @menuId, \'${comments}修改\', \'${moduleName}:${pathName}:edit\', 2, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\nINSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`, `deleted`, `create_time`, `update_time` )\nVALUES\n( @menuId + 4, @menuId, \'${comments}删除\', \'${moduleName}:${pathName}:del\', 3, 2, 0, \'2019-10-13 22:00:24\', NULL );\n\n## -----------------基础生成部分end-------------\n\n-- 清空变量\nset @menuId = null;\nset @pId = null;\n\nCOMMIT;', 1, '权限sql', 0, '2020-07-03 16:39:08', NULL); + + -- ---------------------------- -- Table structure for gen_template_property diff --git a/doc/update_sql/0.0.2.sql b/doc/update_sql/0.0.2.sql new file mode 100644 index 00000000..43d93c3d --- /dev/null +++ b/doc/update_sql/0.0.2.sql @@ -0,0 +1,7 @@ +ALTER TABLE `admin_operation_log` +ADD COLUMN `trace_id` char(24) NULL COMMENT '追踪ID' AFTER `id`, +MODIFY COLUMN `method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '请求方式' AFTER `uri`, +ADD COLUMN `type` tinyint(1) NULL COMMENT '操作类型' AFTER `status`; + +ALTER TABLE `admin_access_log` +ADD COLUMN `trace_id` char(24) NULL COMMENT '追踪ID' AFTER `id` \ No newline at end of file diff --git a/doc/update_sql/0.0.3.sql b/doc/update_sql/0.0.3.sql new file mode 100644 index 00000000..8858ebc4 --- /dev/null +++ b/doc/update_sql/0.0.3.sql @@ -0,0 +1,17 @@ +-- 逻辑删除字段修改为bigint +ALTER TABLE `ballcat`.`sys_user` +MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `type`; +ALTER TABLE `ballcat`.`sys_role` +MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `note`; +ALTER TABLE `ballcat`.`sys_permission` +MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `type`; +ALTER TABLE `ballcat`.`sys_dict` +MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `hash_code`; +ALTER TABLE `ballcat`.`sys_dict_item` +MODIFY COLUMN `deleted` bigint(20) NULL DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `remarks`; +ALTER TABLE `ballcat`.`sys_config` +ADD COLUMN `deleted` bigint(20) NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间' AFTER `description`; + +-- 系统角色新增类型字段 +ALTER TABLE `ballcat`.`sys_role` +ADD COLUMN `type` tinyint(1) NULL DEFAULT 2 COMMENT '角色类型,1:系统角色 2:业务角色' AFTER `code`; \ No newline at end of file diff --git a/doc/update_sql/0.0.4.sql b/doc/update_sql/0.0.4.sql new file mode 100644 index 00000000..b4177e52 --- /dev/null +++ b/doc/update_sql/0.0.4.sql @@ -0,0 +1,12 @@ +update sys_dict set `code` = 'log_status' where `code` = 'log_type'; +update sys_dict_item set `dict_codecode` = 'log_status' where `dict_code` = 'log_type'; + +ALTER TABLE `ballcat`.`admin_access_log` +ADD COLUMN `result` text NULL COMMENT '响应信息' AFTER `http_status`; + +ALTER TABLE sys_dict ADD `value_type` TINYINT ( 1 ) NULL DEFAULT 1 COMMENT '值类型,1:Number 2:String 3:Boolean' AFTER `editable`; +INSERT INTO `sys_dict`(`code`, `title`, `remarks`, `editable`, `hash_code`, `deleted`, `create_time`, `update_time`, `value_type`) VALUES ('dict_value_type', '字典数据类型', NULL, 1, '582ed0dc179d4c99929b6dc5b63847fb', 0, now(), NULL, 1); + +INSERT INTO `sys_dict_item`(`dict_code`, `value`, `name`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('dict_value_type', '1', 'Number', 1, NULL, 0, '2020-08-12 16:10:22', '2020-08-12 16:12:33'); +INSERT INTO `sys_dict_item`(`dict_code`, `value`, `name`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('dict_value_type', '2', 'String', 1, NULL, 0, '2020-08-12 16:10:31', '2020-08-12 16:12:27'); +INSERT INTO `sys_dict_item`(`dict_code`, `value`, `name`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('dict_value_type', '3', 'Boolean', 1, NULL, 0, '2020-08-12 16:10:38', '2020-08-12 16:12:23'); \ No newline at end of file diff --git a/doc/update_sql/0.0.5.sql b/doc/update_sql/0.0.5.sql new file mode 100644 index 00000000..da9a338a --- /dev/null +++ b/doc/update_sql/0.0.5.sql @@ -0,0 +1,113 @@ +-- 添加字典属性字段 +ALTER TABLE `ballcat`.`sys_dict_item` +ADD COLUMN `attributes` json NULL COMMENT '附加属性' AFTER `name`; + +INSERT INTO `ballcat`.`sys_dict`(`code`, `title`, `remarks`, `editable`, `value_type`, `hash_code`, `deleted`, `create_time`, `update_time`) VALUES ('login_event_type', '登陆事件类型', '1:登陆 2:登出', 0, 1, '6fe465274208421eb0619a516875e270', 0, '2020-09-17 14:44:00', NULL); +INSERT INTO `ballcat`.`sys_dict_item`(`dict_code`, `value`, `name`, `attributes`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('login_event_type', '1', '登陆', '{\"tagColor\": \"cyan\"}', 0, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:18'); +INSERT INTO `ballcat`.`sys_dict_item`(`dict_code`, `value`, `name`, `attributes`, `sort`, `remarks`, `deleted`, `create_time`, `update_time`) VALUES ('login_event_type', '2', '登出', '{\"tagColor\": \"pink\"}', 1, '', 0, '2020-03-27 01:05:52', '2019-03-25 12:49:13'); + +-- 更新已有字典项的属性 +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "orange"}' WHERE `dict_code` = "dict_property" and `value` = 0; +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "green"}' WHERE `dict_code` = "dict_property" and `value` = 1; + +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"textColor": "#34890A"}' WHERE `dict_code` = "log_status" and `value` = 1; +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"textColor": "red"}' WHERE `dict_code` = "log_status" and `value` = 0; + +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "cyan"}' WHERE `dict_code` = "login_event_type" and `value` = 1; +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "pink"}' WHERE `dict_code` = "login_event_type" and `value` = 2; + +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "purple"}' WHERE `dict_code` = "operation_type" and `value` = 3; +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "cyan"}' WHERE `dict_code` = "operation_type" and `value` = 4; +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "orange"}' WHERE `dict_code` = "operation_type" and `value` = 5; +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "pink"}' WHERE `dict_code` = "operation_type" and `value` = 6; + +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "orange"}' WHERE `dict_code` = "role_type" and `value` = 1; +UPDATE `ballcat`.`sys_dict_item` SET `attributes` = '{"tagColor": "green"}' WHERE `dict_code` = "role_type" and `value` = 2; + +-- 删除弃用的字典项 +delete from `ballcat`.`sys_dict_item` WHERE `dict_code` = "operation_type" and ( `value` = 1 or `value` = 2 ); + +-- 登陆日志表 +CREATE TABLE `admin_login_log` ( + `id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '编号', + `trace_id` char(24) DEFAULT NULL COMMENT '追踪ID', + `username` varchar(64) DEFAULT NULL COMMENT '用户名', + `ip` varchar(64) DEFAULT NULL COMMENT '登陆IP', + `os` varchar(50) DEFAULT NULL COMMENT '操作系统', + `status` tinyint(1) NOT NULL COMMENT '状态', + `event_type` tinyint(1) DEFAULT NULL COMMENT '事件类型,1:登录 2:登出', + `msg` varchar(255) DEFAULT NULL COMMENT '操作信息', + `location` varchar(50) DEFAULT NULL COMMENT '登陆地点', + `browser` varchar(50) DEFAULT NULL COMMENT '浏览器', + `login_time` datetime DEFAULT NULL COMMENT '登录/登出时间', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE, + KEY `username` (`username`) USING BTREE, + KEY `status` (`status`) USING BTREE, + KEY `create_time` (`create_time`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='登陆日志'; + +-- 登录日志权限数据 +INSERT INTO `ballcat`.`sys_permission`(`id`, `title`, `code`, `path`, `router_name`, `component`, `redirect`, `target`, `parent_id`, `icon`, `sort`, `keep_alive`, `hidden`, `type`, `deleted`, `create_time`, `update_time`) VALUES (110200, '登陆日志', NULL, '/log/adminloginlog', 'adminLoginLog', 'log/adminloginlog/AdminLoginLogPage', NULL, NULL, 110000, NULL, 1, 0, 0, 1, 0, NULL, '2019-10-13 22:00:24'); +INSERT INTO `ballcat`.`sys_permission`(`id`, `title`, `code`, `path`, `router_name`, `component`, `redirect`, `target`, `parent_id`, `icon`, `sort`, `keep_alive`, `hidden`, `type`, `deleted`, `create_time`, `update_time`) VALUES (110201, '登陆日志查询', 'log:adminloginlog:read', NULL, NULL, NULL, NULL, NULL, 110200, NULL, 0, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); + +-- lov 模块 +DROP TABLE IF EXISTS `sys_lov`; +CREATE TABLE `sys_lov` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `keyword` varchar(50) DEFAULT NULL COMMENT '关键字,唯一,加载lov数据时通过关键字加载', + `url` varchar(255) DEFAULT NULL COMMENT '获取数据时请求路径', + `method` varchar(10) DEFAULT NULL COMMENT 'http请求方式', + `position` varchar(10) DEFAULT NULL COMMENT 'http请求参数设置位置', + `key` varchar(20) DEFAULT NULL COMMENT '数据的key', + `fixed_params` varchar(255) DEFAULT '{}' COMMENT '固定请求参数,请设置 jsonString, 默认值 {}', + `multiple` bit(1) DEFAULT NULL COMMENT '是否需要多选', + `search` bit(1) DEFAULT NULL COMMENT '是否需要搜索框', + `ret` bit(1) DEFAULT NULL COMMENT '是否需要返回数据, false则不会有确定按钮', + `ret_field` varchar(50) DEFAULT NULL COMMENT '返回数据的字段', + `ret_field_data_type` tinyint(1) DEFAULT NULL COMMENT '返回字段数据类型 1 String 2 Number', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE KEY `keyword` (`keyword`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='lov'; + +DROP TABLE IF EXISTS `sys_lov_body`; +CREATE TABLE `sys_lov_body` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `lov_id` int(11) DEFAULT NULL, + `title` varchar(100) DEFAULT NULL COMMENT '标题', + `field` varchar(50) DEFAULT NULL COMMENT '字段, 同一lov下,field不可重复`', + `index` int(255) DEFAULT NULL COMMENT '索引,字段排序', + `property` varchar(255) DEFAULT '{}' COMMENT '自定义属性,请设置 jsonString, 默认值 {}', + `custom` bit(1) DEFAULT NULL COMMENT '是否自定义html', + `html` text COMMENT '如果 custom=true 则当前值不能为空', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `lov_id` (`lov_id`,`field`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='lov body'; + +DROP TABLE IF EXISTS `sys_lov_search`; +CREATE TABLE `sys_lov_search` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `lov_id` int(11) DEFAULT NULL, + `label` varchar(100) DEFAULT NULL COMMENT '标签文字', + `field` varchar(50) DEFAULT NULL COMMENT '字段', + `placeholder` varchar(255) DEFAULT NULL COMMENT 'placeholder', + `tag` varchar(50) DEFAULT NULL COMMENT 'html 标签', + `options` text COMMENT 'tag=SELECT时的选项', + `min` int(1) DEFAULT NULL COMMENT 'tag=INPUT_NUMBER时的选项,设置数字最小值', + `max` int(1) DEFAULT NULL COMMENT 'tag=INPUT_NUMBER时的选项,设置数字最大值', + `dict_code` varchar(50) DEFAULT NULL COMMENT 'tag=DICT_SELECT时的选项,设置dict-code', + `custom` bit(1) DEFAULT NULL COMMENT '是否自定义html', + `html` text COMMENT '如果 custom=true 则当前值不能为空', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `lov_id` (`lov_id`,`field`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='lov search'; + +INSERT INTO `sys_permission` VALUES (100600, 'lov', NULL, '/sys/lov', 'Lov', 'sys/lov/Lov', NULL, NULL, 100000, NULL, 6, 0, 0, 1, 0, NULL, '2020-08-27 21:36:18'); +INSERT INTO `sys_permission` VALUES (100601, 'lov查询', 'sys:lov:read', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 0, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (100602, 'lov新增', 'sys:lov:add', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 1, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (100603, 'lov修改', 'sys:lov:edit', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 2, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); +INSERT INTO `sys_permission` VALUES (100604, 'lov删除', 'sys:lov:del', NULL, NULL, NULL, NULL, NULL, 100600, NULL, 3, 0, 0, 2, 0, '2019-10-13 22:00:24', NULL); \ No newline at end of file