Commit fbbcd2717a8c8c0428d1655cad22bbc7ef79d702

Authored by YunaiV
1 parent 58d368cf

短信模板的创建 Test 单元测试

sql/ruoyi-vue-pro.sql
1 1 /*
2 2 Navicat Premium Data Transfer
3 3  
4   - Source Server : 127.0.0.1
  4 + Source Server : local-mysql001
5 5 Source Server Type : MySQL
6 6 Source Server Version : 50718
7 7 Source Host : localhost:3306
... ... @@ -11,7 +11,7 @@
11 11 Target Server Version : 50718
12 12 File Encoding : 65001
13 13  
14   - Date: 21/03/2021 18:53:24
  14 + Date: 05/04/2021 23:51:38
15 15 */
16 16  
17 17 SET NAMES utf8mb4;
... ... @@ -43,7 +43,7 @@ CREATE TABLE `inf_api_access_log` (
43 43 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
44 44 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
45 45 PRIMARY KEY (`id`) USING BTREE
46   -) ENGINE=InnoDB AUTO_INCREMENT=1318 DEFAULT CHARSET=utf8mb4 COMMENT='API 访问日志表';
  46 +) ENGINE=InnoDB AUTO_INCREMENT=1909 DEFAULT CHARSET=utf8mb4 COMMENT='API 访问日志表';
47 47  
48 48 -- ----------------------------
49 49 -- Records of inf_api_access_log
... ... @@ -84,7 +84,7 @@ CREATE TABLE `inf_api_error_log` (
84 84 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
85 85 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
86 86 PRIMARY KEY (`id`) USING BTREE
87   -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='系统异常日志';
  87 +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COMMENT='系统异常日志';
88 88  
89 89 -- ----------------------------
90 90 -- Records of inf_api_error_log
... ... @@ -201,7 +201,7 @@ CREATE TABLE `inf_job_log` (
201 201 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
202 202 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
203 203 PRIMARY KEY (`id`) USING BTREE
204   -) ENGINE=InnoDB AUTO_INCREMENT=627 DEFAULT CHARSET=utf8mb4 COMMENT='定时任务日志表';
  204 +) ENGINE=InnoDB AUTO_INCREMENT=1035 DEFAULT CHARSET=utf8mb4 COMMENT='定时任务日志表';
205 205  
206 206 -- ----------------------------
207 207 -- Records of inf_job_log
... ... @@ -264,7 +264,7 @@ CREATE TABLE `sys_dict_data` (
264 264 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
265 265 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
266 266 PRIMARY KEY (`id`) USING BTREE
267   -) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4 COMMENT='字典数æ®è¡¨';
  267 +) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4 COMMENT='字典数æ®è¡¨';
268 268  
269 269 -- ----------------------------
270 270 -- Records of sys_dict_data
... ... @@ -324,6 +324,11 @@ INSERT INTO `sys_dict_data` VALUES (61, 2, '管ç†å‘˜', '2', 'user_type', 0, NUL
324 324 INSERT INTO `sys_dict_data` VALUES (62, 0, '未处ç†', '0', 'inf_api_error_log_process_status', 0, NULL, '', '2021-02-26 07:07:19', '', '2021-02-26 08:11:23', b'0');
325 325 INSERT INTO `sys_dict_data` VALUES (63, 1, '已处ç†', '1', 'inf_api_error_log_process_status', 0, NULL, '', '2021-02-26 07:07:26', '', '2021-02-26 08:11:29', b'0');
326 326 INSERT INTO `sys_dict_data` VALUES (64, 2, '已忽略', '2', 'inf_api_error_log_process_status', 0, NULL, '', '2021-02-26 07:07:34', '', '2021-02-26 08:11:34', b'0');
  327 +INSERT INTO `sys_dict_data` VALUES (65, 0, '云片', 'YUN_PIAN', 'sys_sms_channel_code', 0, NULL, '1', '2021-04-05 01:05:14', '1', '2021-04-05 01:05:14', b'0');
  328 +INSERT INTO `sys_dict_data` VALUES (66, 0, '阿里云', 'ALIYUN', 'sys_sms_channel_code', 0, NULL, '1', '2021-04-05 01:05:26', '1', '2021-04-05 01:05:26', b'0');
  329 +INSERT INTO `sys_dict_data` VALUES (67, 1, '验è¯ç ', '1', 'sys_sms_template_type', 0, NULL, '1', '2021-04-05 21:50:57', '1', '2021-04-05 21:50:57', b'0');
  330 +INSERT INTO `sys_dict_data` VALUES (68, 2, '通知', '2', 'sys_sms_template_type', 0, NULL, '1', '2021-04-05 21:51:08', '1', '2021-04-05 21:51:08', b'0');
  331 +INSERT INTO `sys_dict_data` VALUES (69, 0, 'è¥é”€', '3', 'sys_sms_template_type', 0, NULL, '1', '2021-04-05 21:51:15', '1', '2021-04-05 21:51:15', b'0');
327 332 COMMIT;
328 333  
329 334 -- ----------------------------
... ... @@ -343,7 +348,7 @@ CREATE TABLE `sys_dict_type` (
343 348 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
344 349 PRIMARY KEY (`id`) USING BTREE,
345 350 UNIQUE KEY `dict_type` (`type`)
346   -) ENGINE=InnoDB AUTO_INCREMENT=111 DEFAULT CHARSET=utf8mb4 COMMENT='字典类型表';
  351 +) ENGINE=InnoDB AUTO_INCREMENT=113 DEFAULT CHARSET=utf8mb4 COMMENT='字典类型表';
347 352  
348 353 -- ----------------------------
349 354 -- Records of sys_dict_type
... ... @@ -366,6 +371,8 @@ INSERT INTO `sys_dict_type` VALUES (107, '定时任务状æ€', 'inf_job_status',
366 371 INSERT INTO `sys_dict_type` VALUES (108, '定时任务日志状æ€', 'inf_job_log_status', 0, NULL, '', '2021-02-08 10:03:51', '', '2021-02-08 10:03:51', b'0');
367 372 INSERT INTO `sys_dict_type` VALUES (109, '用户类型', 'user_type', 0, NULL, '', '2021-02-26 00:15:51', '', '2021-02-26 00:15:51', b'0');
368 373 INSERT INTO `sys_dict_type` VALUES (110, 'API 异常数æ®çš„处ç†çжæ€', 'inf_api_error_log_process_status', 0, NULL, '', '2021-02-26 07:07:01', '', '2021-02-26 07:07:01', b'0');
  374 +INSERT INTO `sys_dict_type` VALUES (111, '短信渠é“ç¼–ç ', 'sys_sms_channel_code', 0, NULL, '1', '2021-04-05 01:04:50', '1', '2021-04-05 01:04:50', b'0');
  375 +INSERT INTO `sys_dict_type` VALUES (112, '短信模æ¿çš„类型', 'sys_sms_template_type', 0, NULL, '1', '2021-04-05 21:50:43', '1', '2021-04-05 21:50:43', b'0');
369 376 COMMIT;
370 377  
371 378 -- ----------------------------
... ... @@ -386,7 +393,7 @@ CREATE TABLE `sys_login_log` (
386 393 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
387 394 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
388 395 PRIMARY KEY (`id`) USING BTREE
389   -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COMMENT='系统访问记录';
  396 +) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COMMENT='系统访问记录';
390 397  
391 398 -- ----------------------------
392 399 -- Records of sys_login_log
... ... @@ -415,7 +422,7 @@ CREATE TABLE `sys_menu` (
415 422 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
416 423 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
417 424 PRIMARY KEY (`id`) USING BTREE
418   -) ENGINE=InnoDB AUTO_INCREMENT=1093 DEFAULT CHARSET=utf8mb4 COMMENT='èœå•æƒé™è¡¨';
  425 +) ENGINE=InnoDB AUTO_INCREMENT=1100 DEFAULT CHARSET=utf8mb4 COMMENT='èœå•æƒé™è¡¨';
419 426  
420 427 -- ----------------------------
421 428 -- Records of sys_menu
... ... @@ -530,6 +537,12 @@ INSERT INTO `sys_menu` VALUES (1089, '日志查询', 'infra:api-error-log:query'
530 537 INSERT INTO `sys_menu` VALUES (1090, '文件管ç†', '', 2, 0, 2, 'file', 'upload', 'infra/file/index', 0, '', '2021-03-12 20:16:20', '1', '2021-03-13 11:07:05', b'0');
531 538 INSERT INTO `sys_menu` VALUES (1091, '文件查询', 'infra:file:query', 3, 1, 1090, '', '', '', 0, '', '2021-03-12 20:16:20', '', '2021-03-12 20:16:20', b'0');
532 539 INSERT INTO `sys_menu` VALUES (1092, '文件删除', 'infra:file:delete', 3, 4, 1090, '', '', '', 0, '', '2021-03-12 20:16:20', '', '2021-03-12 20:16:20', b'0');
  540 +INSERT INTO `sys_menu` VALUES (1093, '短信管ç†', '', 1, 11, 1, 'sms', 'validCode', NULL, 0, '1', '2021-04-05 01:10:16', '1', '2021-04-05 01:11:38', b'0');
  541 +INSERT INTO `sys_menu` VALUES (1094, '短信渠é“', '', 2, 0, 1093, 'sms-channel', '', 'system/sms/smsChannel', 0, '', '2021-04-01 11:07:15', '1', '2021-04-05 20:32:53', b'0');
  542 +INSERT INTO `sys_menu` VALUES (1095, 'çŸ­ä¿¡æ¸ é“æŸ¥è¯¢', 'system:sms-channel:query', 3, 1, 1094, '', '', '', 0, '', '2021-04-01 11:07:15', '', '2021-04-01 11:07:15', b'0');
  543 +INSERT INTO `sys_menu` VALUES (1096, '短信渠é“创建', 'system:sms-channel:create', 3, 2, 1094, '', '', '', 0, '', '2021-04-01 11:07:15', '', '2021-04-01 11:07:15', b'0');
  544 +INSERT INTO `sys_menu` VALUES (1097, 'çŸ­ä¿¡æ¸ é“æ›´æ–°', 'system:sms-channel:update', 3, 3, 1094, '', '', '', 0, '', '2021-04-01 11:07:15', '', '2021-04-01 11:07:15', b'0');
  545 +INSERT INTO `sys_menu` VALUES (1098, '短信渠é“删除', 'system:sms-channel:delete', 3, 4, 1094, '', '', '', 0, '', '2021-04-01 11:07:15', '', '2021-04-01 11:07:15', b'0');
533 546 COMMIT;
534 547  
535 548 -- ----------------------------
... ... @@ -589,7 +602,7 @@ CREATE TABLE `sys_operate_log` (
589 602 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
590 603 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
591 604 PRIMARY KEY (`id`) USING BTREE
592   -) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8mb4 COMMENT='æ“作日志记录';
  605 +) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4 COMMENT='æ“作日志记录';
593 606  
594 607 -- ----------------------------
595 608 -- Records of sys_operate_log
... ... @@ -835,6 +848,118 @@ INSERT INTO `sys_role_menu` VALUES (238, 101, 1065, '', '2021-01-21 03:23:27', '
835 848 COMMIT;
836 849  
837 850 -- ----------------------------
  851 +-- Table structure for sys_sms_channel
  852 +-- ----------------------------
  853 +DROP TABLE IF EXISTS `sys_sms_channel`;
  854 +CREATE TABLE `sys_sms_channel` (
  855 + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ç¼–å·',
  856 + `signature` varchar(10) NOT NULL COMMENT '短信签å',
  857 + `code` varchar(63) NOT NULL COMMENT '渠é“ç¼–ç ',
  858 + `status` tinyint(4) NOT NULL COMMENT 'å¼€å¯çжæ€',
  859 + `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  860 + `api_key` varchar(63) NOT NULL COMMENT '短信 API 的账å·',
  861 + `api_secret` varchar(63) DEFAULT NULL COMMENT '短信 API 的秘钥',
  862 + `callback_url` varchar(255) DEFAULT NULL COMMENT '短信å‘é€å›žè°ƒ URL',
  863 + `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  864 + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  865 + `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  866 + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
  867 + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
  868 + PRIMARY KEY (`id`) USING BTREE
  869 +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='短信渠é“';
  870 +
  871 +-- ----------------------------
  872 +-- Records of sys_sms_channel
  873 +-- ----------------------------
  874 +BEGIN;
  875 +INSERT INTO `sys_sms_channel` VALUES (1, '芋é“', 'YUN_PIAN', 0, '呵呵呵哒', '1555a14277cb8a608cf45a9e6a80d510', NULL, 'http://java.nat300.top/api/system/sms/callback/sms/yunpian', '', '2021-03-31 06:12:20', '1', '2021-04-05 21:02:38', b'0');
  876 +INSERT INTO `sys_sms_channel` VALUES (2, 'Ballcat', 'ALIYUN', 0, '啦啦啦', 'LTAI5tCnKso2uG3kJ5gRav88', 'fGJ5SNXL7P1NHNRmJ7DJaMJGPyE55C', NULL, '', '2021-03-31 11:53:10', '1', '2021-04-05 21:02:44', b'0');
  877 +INSERT INTO `sys_sms_channel` VALUES (3, '测试', 'YUN_PIAN', 0, '哈哈哈', '23132', NULL, 'http://www.baidu.com', '1', '2021-04-05 21:10:34', '1', '2021-04-05 21:10:34', b'0');
  878 +COMMIT;
  879 +
  880 +-- ----------------------------
  881 +-- Table structure for sys_sms_log
  882 +-- ----------------------------
  883 +DROP TABLE IF EXISTS `sys_sms_log`;
  884 +CREATE TABLE `sys_sms_log` (
  885 + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ç¼–å·',
  886 + `channel_id` bigint(20) NOT NULL COMMENT '短信渠é“ç¼–å·',
  887 + `channel_code` varchar(63) NOT NULL COMMENT '短信渠é“ç¼–ç ',
  888 + `template_id` bigint(20) NOT NULL COMMENT '模æ¿ç¼–å·',
  889 + `template_code` varchar(63) NOT NULL COMMENT '模æ¿ç¼–ç ',
  890 + `template_type` tinyint(4) NOT NULL COMMENT '短信类型',
  891 + `template_content` varchar(255) NOT NULL COMMENT '短信内容',
  892 + `template_params` varchar(255) NOT NULL COMMENT 'çŸ­ä¿¡å‚æ•°',
  893 + `api_template_id` varchar(63) NOT NULL COMMENT '短信 API 的模æ¿ç¼–å·',
  894 + `mobile` varchar(11) NOT NULL COMMENT '手机å·',
  895 + `user_id` bigint(20) DEFAULT '0' COMMENT '用户编å·',
  896 + `user_type` tinyint(4) DEFAULT '0' COMMENT '用户类型',
  897 + `send_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'å‘é€çжæ€',
  898 + `send_time` datetime DEFAULT NULL COMMENT 'å‘逿—¶é—´',
  899 + `send_code` int(11) DEFAULT NULL COMMENT 'å‘é€ç»“果的编ç ',
  900 + `send_msg` varchar(255) DEFAULT NULL COMMENT 'å‘é€ç»“果的æç¤º',
  901 + `api_send_code` varchar(63) DEFAULT NULL COMMENT '短信 API å‘é€ç»“果的编ç ',
  902 + `api_send_msg` varchar(255) DEFAULT NULL COMMENT '短信 API å‘é€å¤±è´¥çš„æç¤º',
  903 + `api_request_id` varchar(255) DEFAULT NULL COMMENT '短信 API å‘é€è¿”回的唯一请求 ID',
  904 + `api_serial_no` varchar(255) DEFAULT NULL COMMENT '短信 API å‘é€è¿”回的åºå·',
  905 + `receive_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '接收状æ€',
  906 + `receive_time` datetime DEFAULT NULL COMMENT '接收时间',
  907 + `api_receive_code` varchar(63) DEFAULT NULL COMMENT 'API 接收结果的编ç ',
  908 + `api_receive_msg` varchar(255) DEFAULT NULL COMMENT 'API 接收结果的说明',
  909 + `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  910 + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  911 + `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  912 + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
  913 + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
  914 + PRIMARY KEY (`id`) USING BTREE
  915 +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COMMENT='短信moan';
  916 +
  917 +-- ----------------------------
  918 +-- Records of sys_sms_log
  919 +-- ----------------------------
  920 +BEGIN;
  921 +INSERT INTO `sys_sms_log` VALUES (15, 1, 'YUN_PIAN', 2, 'test_01', 1, '正在进行登录æ“作登陆,您的验è¯ç æ˜¯1234', '{\"code\":\"1234\",\"operation\":\"登陆\"}', '4383920', '15601691399', 1, 2, 10, '2021-04-04 23:24:13', 0, 'æˆåŠŸ', '0', 'å‘逿ˆåŠŸ', NULL, '62922707786', 10, '2021-04-04 23:24:26', 'DELIVRD', 'DELIVRD', NULL, '2021-04-04 23:23:29', NULL, '2021-04-04 23:25:17', b'0');
  922 +INSERT INTO `sys_sms_log` VALUES (16, 2, 'ALIYUN', 3, 'test_02', 1, '您的验è¯ç 1234,该验è¯ç 5分钟内有效,请勿泄æ¼äºŽä»–人ï¼', '{\"code\":\"1234\"}', 'SMS_207945135', '15601691399', 1, 2, 20, '2021-04-05 00:08:39', 999, '未知错误,需è¦è§£æž', 'SDK.InvalidAccessKeySecret', 'SDK.InvalidAccessKeySecret : Specified Access Key Secret is not valid.\r\nRequestId : 2EA9C6A5-579F-4D21-B7D3-0AD3BA4F7741', '2EA9C6A5-579F-4D21-B7D3-0AD3BA4F7741', NULL, 0, NULL, NULL, NULL, NULL, '2021-04-05 00:08:39', NULL, '2021-04-05 00:08:39', b'0');
  923 +INSERT INTO `sys_sms_log` VALUES (17, 2, 'ALIYUN', 3, 'test_02', 1, '您的验è¯ç 1234,该验è¯ç 5分钟内有效,请勿泄æ¼äºŽä»–人ï¼', '{\"code\":\"1234\"}', 'SMS_207945135', '15601691399', 1, 2, 20, '2021-04-05 00:09:43', 999, '未知错误,需è¦è§£æž', 'SDK.InvalidAccessKeySecret', 'SDK.InvalidAccessKeySecret : Specified Access Key Secret is not valid.\r\nRequestId : BF766164-9C03-44FD-B6D3-ADA74118E432', 'BF766164-9C03-44FD-B6D3-ADA74118E432', NULL, 0, NULL, NULL, NULL, NULL, '2021-04-05 00:09:43', NULL, '2021-04-05 00:09:43', b'0');
  924 +INSERT INTO `sys_sms_log` VALUES (18, 2, 'ALIYUN', 3, 'test_02', 1, '您的验è¯ç 1234,该验è¯ç 5分钟内有效,请勿泄æ¼äºŽä»–人ï¼', '{\"code\":\"1234\"}', 'SMS_207945135', '15601691399', 1, 2, 20, '2021-04-05 00:11:13', 999, '未知错误,需è¦è§£æž', 'SDK.InvalidAccessKeySecret', 'SDK.InvalidAccessKeySecret : Specified Access Key Secret is not valid.\r\nRequestId : 2D7C0ABC-7538-45B4-BFEF-B610D591CE3D', '2D7C0ABC-7538-45B4-BFEF-B610D591CE3D', NULL, 0, NULL, NULL, NULL, NULL, '2021-04-05 00:11:12', NULL, '2021-04-05 00:11:13', b'0');
  925 +INSERT INTO `sys_sms_log` VALUES (19, 2, 'ALIYUN', 3, 'test_02', 1, '您的验è¯ç 1234,该验è¯ç 5分钟内有效,请勿泄æ¼äºŽä»–人ï¼', '{\"code\":\"1234\"}', 'SMS_207945135', '15601691399', 1, 2, 20, '2021-04-05 00:12:21', 999, '未知错误,需è¦è§£æž', 'SDK.InvalidAccessKeySecret', 'SDK.InvalidAccessKeySecret : Specified Access Key Secret is not valid.\r\nRequestId : 0A86DC5C-2985-474F-B076-748C9F2C5D3F', '0A86DC5C-2985-474F-B076-748C9F2C5D3F', NULL, 0, NULL, NULL, NULL, NULL, '2021-04-05 00:12:01', NULL, '2021-04-05 00:12:21', b'0');
  926 +INSERT INTO `sys_sms_log` VALUES (20, 1, 'YUN_PIAN', 2, 'test_01', 1, '正在进行登录æ“作登陆,您的验è¯ç æ˜¯1234', '{\"code\":\"1234\",\"operation\":\"登陆\"}', '4383920', '15601691399', 1, 2, 10, '2021-04-05 00:14:36', 0, 'æˆåŠŸ', '0', 'å‘逿ˆåŠŸ', NULL, '62923244790', 0, NULL, NULL, NULL, NULL, '2021-04-05 00:13:42', NULL, '2021-04-05 00:14:36', b'0');
  927 +INSERT INTO `sys_sms_log` VALUES (21, 2, 'ALIYUN', 3, 'test_02', 1, '您的验è¯ç 1234,该验è¯ç 5分钟内有效,请勿泄æ¼äºŽä»–人ï¼', '{\"code\":\"1234\"}', 'SMS_207945135', '15601691399', 1, 2, 20, '2021-04-05 00:19:43', 999, '未知错误,需è¦è§£æž', 'SDK.InvalidAccessKeySecret', 'SDK.InvalidAccessKeySecret : Specified Access Key Secret is not valid.\r\nRequestId : 3837C6D3-B96F-428C-BBB2-86135D4B5B99', '3837C6D3-B96F-428C-BBB2-86135D4B5B99', NULL, 0, NULL, NULL, NULL, NULL, '2021-04-05 00:15:06', NULL, '2021-04-05 00:19:44', b'0');
  928 +COMMIT;
  929 +
  930 +-- ----------------------------
  931 +-- Table structure for sys_sms_template
  932 +-- ----------------------------
  933 +DROP TABLE IF EXISTS `sys_sms_template`;
  934 +CREATE TABLE `sys_sms_template` (
  935 + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ç¼–å·',
  936 + `type` tinyint(4) NOT NULL COMMENT '短信签å',
  937 + `status` tinyint(4) NOT NULL COMMENT 'å¼€å¯çжæ€',
  938 + `code` varchar(63) NOT NULL COMMENT '模æ¿ç¼–ç ',
  939 + `name` varchar(63) NOT NULL COMMENT '模æ¿åç§°',
  940 + `content` varchar(255) NOT NULL COMMENT '模æ¿å†…容',
  941 + `params` varchar(255) NOT NULL COMMENT '傿•°æ•°ç»„',
  942 + `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  943 + `api_template_id` varchar(63) NOT NULL COMMENT '短信 API 的模æ¿ç¼–å·',
  944 + `channel_id` bigint(20) NOT NULL COMMENT '短信渠é“ç¼–å·',
  945 + `channel_code` varchar(63) NOT NULL COMMENT '短信渠é“ç¼–ç ',
  946 + `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  947 + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  948 + `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  949 + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
  950 + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
  951 + PRIMARY KEY (`id`) USING BTREE
  952 +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='短信模æ¿';
  953 +
  954 +-- ----------------------------
  955 +-- Records of sys_sms_template
  956 +-- ----------------------------
  957 +BEGIN;
  958 +INSERT INTO `sys_sms_template` VALUES (2, 1, 0, 'test_01', '测试验è¯ç çŸ­ä¿¡', '正在进行登录æ“作{operation},您的验è¯ç æ˜¯{code}', '[\"operation\",\"code\"]', NULL, '4383920', 1, 'YUN_PIAN', '', '2021-03-31 10:49:38', '', '2021-03-31 12:01:38', b'0');
  959 +INSERT INTO `sys_sms_template` VALUES (3, 1, 0, 'test_02', '公告通知', '您的验è¯ç {code},该验è¯ç 5分钟内有效,请勿泄æ¼äºŽä»–人ï¼', '[\"code\"]', NULL, 'SMS_207945135', 2, 'ALIYUN', '', '2021-03-31 11:56:30', '', '2021-03-31 11:56:30', b'0');
  960 +COMMIT;
  961 +
  962 +-- ----------------------------
838 963 -- Table structure for sys_user
839 964 -- ----------------------------
840 965 DROP TABLE IF EXISTS `sys_user`;
... ... @@ -865,8 +990,8 @@ CREATE TABLE `sys_user` (
865 990 -- Records of sys_user
866 991 -- ----------------------------
867 992 BEGIN;
868   -INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋é“', '管ç†å‘˜', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://127.0.0.1:8080/api/system/file/get/add5ec1891a7d97d2cc1d60847e16294.jpg', 0, '127.0.0.1', '2021-01-05 17:03:47', 'admin', '2021-01-05 17:03:47', '1', '2021-03-21 18:16:16', b'0');
869   -INSERT INTO `sys_user` VALUES (2, 'ry', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', 'è‹¥ä¾', '测试员', 105, '[2]', 'ry@qq.com', '15666666666', 1, '', 0, '127.0.0.1', '2021-01-05 17:03:47', 'admin', '2021-01-05 17:03:47', '', '2021-01-05 17:03:47', b'0');
  993 +INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', 'èŠ‹é“æºç ', '管ç†å‘˜', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://api-dashboard.yudao.iocoder.cn/api/infra/file/get/5e8609290e915c4fa8b08e67.jpg', 0, '127.0.0.1', '2021-01-05 17:03:47', 'admin', '2021-01-05 17:03:47', '1', '2021-04-05 02:16:10', b'0');
  994 +INSERT INTO `sys_user` VALUES (2, 'ry', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', 'è‹¥ä¾', '测试员', 105, '[2]', 'ry@qq.com', '15666666666', 1, '', 0, '127.0.0.1', '2021-01-05 17:03:47', 'admin', '2021-01-05 17:03:47', '', '2021-04-01 04:50:36', b'1');
870 995 INSERT INTO `sys_user` VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋é“', 'ä¸è¦å“我', 100, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '1', '2021-03-14 22:35:17', b'0');
871 996 INSERT INTO `sys_user` VALUES (103, 'yuanma', '', 'æºç ', NULL, 100, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '', NULL, '', '2021-01-13 23:50:35', '', '2021-01-13 23:50:35', b'0');
872 997 INSERT INTO `sys_user` VALUES (104, 'test', '$2a$10$.TOFpaIiI3PzEwkGrNq0Eu6Cc3rOqJMxTb1DqeSEM8StxaGPBRKoi', '测试å·', NULL, 100, '[]', '', '15601691200', 1, '', 0, '', NULL, '', '2021-01-21 02:13:53', '1', '2021-03-14 22:36:38', b'0');
... ... @@ -924,11 +1049,17 @@ CREATE TABLE `sys_user_session` (
924 1049 -- Records of sys_user_session
925 1050 -- ----------------------------
926 1051 BEGIN;
  1052 +INSERT INTO `sys_user_session` VALUES ('04c6624c7bf14b1ba1a01cb976a9d876', 1, '2021-04-05 21:40:12', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-04-05 20:21:09', NULL, '2021-04-01 12:25:35', b'1');
  1053 +INSERT INTO `sys_user_session` VALUES ('0e235ce5ae7342a09b372a00bd7d1b41', 1, '2021-04-05 01:43:22', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-04-05 00:51:03', NULL, '2021-04-01 04:18:06', b'1');
  1054 +INSERT INTO `sys_user_session` VALUES ('0e6943f8ca9b4215a014843eb489ccc7', 1, '2021-04-05 22:53:22', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-04-05 21:43:59', NULL, '2021-04-05 22:23:22', b'0');
  1055 +INSERT INTO `sys_user_session` VALUES ('40d532d8900c43b791266429a7911751', 1, '2021-04-05 22:11:34', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-04-05 21:41:34', NULL, '2021-04-01 12:28:20', b'1');
927 1056 INSERT INTO `sys_user_session` VALUES ('505b4e7d8b0d4b40aa23bf540da81234', 1, '2021-03-14 01:25:13', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', NULL, '2021-03-14 00:31:43', NULL, '2021-03-13 07:35:26', b'1');
928 1057 INSERT INTO `sys_user_session` VALUES ('5a7248bf87d14e7e9f0578b05969986c', 1, '2021-03-13 10:42:50', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', NULL, '2021-03-13 09:37:36', NULL, '2021-03-12 19:53:07', b'1');
  1058 +INSERT INTO `sys_user_session` VALUES ('8b3eac5e4a104a4191c8070e03d553ea', 1, '2021-04-05 02:45:12', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-04-05 02:15:12', NULL, '2021-04-01 11:05:25', b'1');
929 1059 INSERT INTO `sys_user_session` VALUES ('9ae27346d8b7491aad1385f51e8aa196', 1, '2021-03-13 14:02:12', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', NULL, '2021-03-13 10:43:06', NULL, '2021-03-13 06:40:35', b'1');
930 1060 INSERT INTO `sys_user_session` VALUES ('ae9ee7452ee54e4b983d658188c15c4d', 1, '2021-03-14 21:32:57', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', NULL, '2021-03-14 20:25:00', NULL, '2021-03-13 15:19:10', b'1');
931   -INSERT INTO `sys_user_session` VALUES ('d0adf48f82914212b947e5ab04d9fb65', 1, '2021-03-21 19:16:28', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-03-21 18:13:37', NULL, '2021-03-21 18:46:28', b'0');
  1061 +INSERT INTO `sys_user_session` VALUES ('d0adf48f82914212b947e5ab04d9fb65', 1, '2021-03-21 19:16:28', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-03-21 18:13:37', NULL, '2021-03-15 05:53:20', b'1');
  1062 +INSERT INTO `sys_user_session` VALUES ('e80c2400724042a2ab73732166cde8fc', 1, '2021-03-21 21:17:12', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-03-21 20:47:12', NULL, '2021-03-15 08:18:56', b'1');
932 1063 INSERT INTO `sys_user_session` VALUES ('e8872f5192584440a548641b83c877ef', 1, '2021-03-21 18:36:01', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', NULL, '2021-03-21 17:51:48', NULL, '2021-03-15 03:54:20', b'1');
933 1064 INSERT INTO `sys_user_session` VALUES ('f1ab99b09b5a475795579ff99d60ac78', 1, '2021-03-14 23:04:31', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', NULL, '2021-03-14 21:12:44', NULL, '2021-03-15 03:32:38', b'1');
934 1065 INSERT INTO `sys_user_session` VALUES ('f853b50d064340a581e9a49bba9411fc', 1, '2021-03-10 01:55:41', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', NULL, '2021-03-10 01:11:53', NULL, '2021-03-12 18:37:05', b'1');
... ... @@ -964,7 +1095,7 @@ CREATE TABLE `tool_codegen_column` (
964 1095 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
965 1096 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
966 1097 PRIMARY KEY (`id`) USING BTREE
967   -) ENGINE=InnoDB AUTO_INCREMENT=389 DEFAULT CHARSET=utf8mb4 COMMENT='代ç ç”Ÿæˆè¡¨å­—段定义';
  1098 +) ENGINE=InnoDB AUTO_INCREMENT=418 DEFAULT CHARSET=utf8mb4 COMMENT='代ç ç”Ÿæˆè¡¨å­—段定义';
968 1099  
969 1100 -- ----------------------------
970 1101 -- Records of tool_codegen_column
... ... @@ -1126,6 +1257,35 @@ INSERT INTO `tool_codegen_column` VALUES (385, 33, 'create_time', 'datetime', 'å
1126 1257 INSERT INTO `tool_codegen_column` VALUES (386, 33, 'updater', 'varchar(64)', '更新者', b'1', b'0', '0', 6, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2021-03-13 09:43:20', '1', '2021-03-13 11:27:12', b'0');
1127 1258 INSERT INTO `tool_codegen_column` VALUES (387, 33, 'update_time', 'datetime', 'æ›´æ–°æ—¶é—´', b'0', b'0', '0', 7, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2021-03-13 09:43:20', '1', '2021-03-13 11:27:12', b'0');
1128 1259 INSERT INTO `tool_codegen_column` VALUES (388, 33, 'deleted', 'bit(1)', '是å¦åˆ é™¤', b'0', b'0', '0', 8, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2021-03-13 09:43:20', '1', '2021-03-13 11:27:12', b'0');
  1260 +INSERT INTO `tool_codegen_column` VALUES (389, 34, 'id', 'bigint(20)', 'ç¼–å·', b'0', b'1', '1', 1, 'Long', 'id', '', '1024', b'0', b'1', b'0', '=', b'1', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1261 +INSERT INTO `tool_codegen_column` VALUES (390, 34, 'signature', 'varchar(8)', '短信签å', b'0', b'0', '0', 2, 'String', 'signature', '', 'èŠ‹é“æºç ', b'1', b'1', b'1', '=', b'1', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1262 +INSERT INTO `tool_codegen_column` VALUES (391, 34, 'code', 'varchar(63)', '渠é“ç¼–ç ', b'0', b'0', '0', 3, 'String', 'code', 'sys_sms_channel_code', 'YUN_PIAN', b'1', b'0', b'0', '=', b'1', 'select', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1263 +INSERT INTO `tool_codegen_column` VALUES (392, 34, 'status', 'tinyint(4)', 'å¯ç”¨çжæ€', b'0', b'0', '0', 4, 'Integer', 'status', 'sys_common_status', '1', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1264 +INSERT INTO `tool_codegen_column` VALUES (393, 34, 'remark', 'varchar(255)', '备注', b'1', b'0', '0', 5, 'String', 'remark', '', '好åƒï¼', b'1', b'1', b'0', '=', b'1', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1265 +INSERT INTO `tool_codegen_column` VALUES (394, 34, 'api_key', 'varchar(63)', '短信 API 的账å·', b'0', b'0', '0', 6, 'String', 'apiKey', '', 'yudao', b'1', b'1', b'0', '=', b'1', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1266 +INSERT INTO `tool_codegen_column` VALUES (395, 34, 'api_secret', 'varchar(63)', '短信 API 的秘钥', b'1', b'0', '0', 7, 'String', 'apiSecret', '', 'yuanma', b'1', b'1', b'0', '=', b'1', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1267 +INSERT INTO `tool_codegen_column` VALUES (396, 34, 'callback_url', 'varchar(255)', '短信å‘é€å›žè°ƒ URL', b'1', b'0', '0', 8, 'String', 'callbackUrl', '', 'http://www.iocoder.cn', b'1', b'1', b'0', '=', b'1', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1268 +INSERT INTO `tool_codegen_column` VALUES (397, 34, 'creator', 'varchar(64)', '创建者', b'1', b'0', '0', 9, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1269 +INSERT INTO `tool_codegen_column` VALUES (398, 34, 'create_time', 'datetime', '创建时间', b'0', b'0', '0', 10, 'Date', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1270 +INSERT INTO `tool_codegen_column` VALUES (399, 34, 'updater', 'varchar(64)', '更新者', b'1', b'0', '0', 11, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1271 +INSERT INTO `tool_codegen_column` VALUES (400, 34, 'update_time', 'datetime', 'æ›´æ–°æ—¶é—´', b'0', b'0', '0', 12, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1272 +INSERT INTO `tool_codegen_column` VALUES (401, 34, 'deleted', 'bit(1)', '是å¦åˆ é™¤', b'0', b'0', '0', 13, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2021-04-05 00:51:34', '1', '2021-04-05 20:52:09', b'0');
  1273 +INSERT INTO `tool_codegen_column` VALUES (402, 35, 'id', 'bigint(20)', 'ç¼–å·', b'0', b'1', '1', 1, 'Long', 'id', '', '1024', b'0', b'1', b'0', '=', b'1', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1274 +INSERT INTO `tool_codegen_column` VALUES (403, 35, 'type', 'tinyint(4)', '短信签å', b'0', b'0', '0', 2, 'Integer', 'type', 'sys_sms_template_type', '1', b'1', b'1', b'1', '=', b'1', 'select', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1275 +INSERT INTO `tool_codegen_column` VALUES (404, 35, 'status', 'tinyint(4)', 'å¼€å¯çжæ€', b'0', b'0', '0', 3, 'Integer', 'status', 'sys_common_status', '1', b'1', b'1', b'1', '=', b'1', 'radio', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1276 +INSERT INTO `tool_codegen_column` VALUES (405, 35, 'code', 'varchar(63)', '模æ¿ç¼–ç ', b'0', b'0', '0', 4, 'String', 'code', '', 'test_01', b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1277 +INSERT INTO `tool_codegen_column` VALUES (406, 35, 'name', 'varchar(63)', '模æ¿åç§°', b'0', b'0', '0', 5, 'String', 'name', '', 'yudao', b'1', b'1', b'0', 'LIKE', b'1', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1278 +INSERT INTO `tool_codegen_column` VALUES (407, 35, 'content', 'varchar(255)', '模æ¿å†…容', b'0', b'0', '0', 6, 'String', 'content', '', '你好,{name}。你长的太{like}啦ï¼', b'1', b'1', b'1', 'LIKE', b'1', 'editor', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1279 +INSERT INTO `tool_codegen_column` VALUES (408, 35, 'params', 'varchar(255)', '傿•°æ•°ç»„', b'0', b'0', '0', 7, 'String', 'params', '', 'name,code', b'0', b'0', b'0', '=', b'0', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1280 +INSERT INTO `tool_codegen_column` VALUES (409, 35, 'remark', 'varchar(255)', '备注', b'1', b'0', '0', 8, 'String', 'remark', '', '哈哈哈', b'1', b'1', b'0', '=', b'1', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1281 +INSERT INTO `tool_codegen_column` VALUES (410, 35, 'api_template_id', 'varchar(63)', '短信 API 的模æ¿ç¼–å·', b'0', b'0', '0', 9, 'String', 'apiTemplateId', '', '4383920', b'1', b'1', b'1', 'LIKE', b'1', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1282 +INSERT INTO `tool_codegen_column` VALUES (411, 35, 'channel_id', 'bigint(20)', '短信渠é“ç¼–å·', b'0', b'0', '0', 10, 'Long', 'channelId', '', '10', b'1', b'1', b'1', '=', b'1', 'select', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1283 +INSERT INTO `tool_codegen_column` VALUES (412, 35, 'channel_code', 'varchar(63)', '短信渠é“ç¼–ç ', b'0', b'0', '0', 11, 'String', 'channelCode', 'sys_sms_channel_code', 'ALIYUN', b'0', b'0', b'0', '=', b'1', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1284 +INSERT INTO `tool_codegen_column` VALUES (413, 35, 'creator', 'varchar(64)', '创建者', b'1', b'0', '0', 12, 'String', 'creator', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1285 +INSERT INTO `tool_codegen_column` VALUES (414, 35, 'create_time', 'datetime', '创建时间', b'0', b'0', '0', 13, 'Date', 'createTime', '', NULL, b'0', b'0', b'1', 'BETWEEN', b'1', 'datetime', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1286 +INSERT INTO `tool_codegen_column` VALUES (415, 35, 'updater', 'varchar(64)', '更新者', b'1', b'0', '0', 14, 'String', 'updater', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1287 +INSERT INTO `tool_codegen_column` VALUES (416, 35, 'update_time', 'datetime', 'æ›´æ–°æ—¶é—´', b'0', b'0', '0', 15, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
  1288 +INSERT INTO `tool_codegen_column` VALUES (417, 35, 'deleted', 'bit(1)', '是å¦åˆ é™¤', b'0', b'0', '0', 16, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '1', '2021-04-05 21:42:22', '1', '2021-04-05 22:23:38', b'0');
1129 1289 COMMIT;
1130 1290  
1131 1291 -- ----------------------------
... ... @@ -1151,7 +1311,7 @@ CREATE TABLE `tool_codegen_table` (
1151 1311 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ›´æ–°æ—¶é—´',
1152 1312 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是å¦åˆ é™¤',
1153 1313 PRIMARY KEY (`id`) USING BTREE
1154   -) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COMMENT='代ç ç”Ÿæˆè¡¨å®šä¹‰';
  1314 +) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COMMENT='代ç ç”Ÿæˆè¡¨å®šä¹‰';
1155 1315  
1156 1316 -- ----------------------------
1157 1317 -- Records of tool_codegen_table
... ... @@ -1169,6 +1329,8 @@ INSERT INTO `tool_codegen_table` VALUES (28, 1, 'sys_dict_type', '字典类型è¡
1169 1329 INSERT INTO `tool_codegen_table` VALUES (29, 1, 'sys_dict_type', '字典类型表', NULL, 'system', 'dict', 'SysDictType', '字典类型', '芋艿', 1, NULL, '', '2021-03-06 03:52:57', '', '2021-03-06 04:03:52', b'0');
1170 1330 INSERT INTO `tool_codegen_table` VALUES (30, 1, 'sys_dict_data', '字典数æ®è¡¨', NULL, 'system', 'type', 'SysDictData', '字典数æ®', 'èŠ‹é“æºç ', 1, NULL, '', '2021-03-06 06:48:28', '', '2021-03-06 06:50:47', b'0');
1171 1331 INSERT INTO `tool_codegen_table` VALUES (33, 1, 'inf_file', '文件表', NULL, 'infra', 'file', 'InfFile', '文件', '芋艿', 1, 2, '1', '2021-03-13 09:43:20', '1', '2021-03-13 11:27:12', b'0');
  1332 +INSERT INTO `tool_codegen_table` VALUES (34, 1, 'sys_sms_channel', '短信渠é“', NULL, 'system', 'sms', 'SysSmsChannel', '短信渠é“', 'èŠ‹é“æºç ', 1, 1093, '1', '2021-04-03 13:39:06', '1', '2021-04-05 20:52:09', b'0');
  1333 +INSERT INTO `tool_codegen_table` VALUES (35, 1, 'sys_sms_template', '短信模æ¿', NULL, 'system', 'sms', 'SysSmsTemplate', '短信模æ¿', 'èŠ‹é“æºç ', 1, 1093, '1', '2021-04-03 13:58:55', '1', '2021-04-05 22:23:38', b'0');
1172 1334 COMMIT;
1173 1335  
1174 1336 -- ----------------------------
... ...
sql/sms.sql deleted
1   -/*
2   - --2021.02.01 by fight, sms about table info
3   -*/
4   -
5   --- ----------------------------
6   --- Table structure for sms_channel
7   --- ----------------------------
8   -DROP TABLE IF EXISTS `sms_channel`;
9   -CREATE TABLE `sms_channel`
10   -(
11   - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增编号',
12   - `code` varchar(50) NOT NULL COMMENT '编码(来自枚举类 阿里、华为、七牛等)',
13   - `api_key` varchar(100) NOT NULL COMMENT '账号id',
14   - `api_secret` varchar(100) NOT NULL COMMENT '账号秘钥',
15   - `callback_url` varchar(100) NOT NULL default '' COMMENT '回调请求路径',
16   - `api_signature_id` varchar(100) NOT NULL COMMENT '实际渠道签名唯一标识',
17   - `name` varchar(50) NOT NULL COMMENT '名称',
18   - `signature` varchar(50) NOT NULL COMMENT '签名值',
19   - `remark` varchar(200) NOT NULL COMMENT '备注',
20   -
21   - `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '启用状态(0正常 1停用)',
22   - `create_by` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
23   - `create_time` datetime DEFAULT NULL COMMENT '创建时间',
24   - `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
25   - `update_time` datetime DEFAULT NULL COMMENT '更新时间',
26   - `deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
27   - PRIMARY KEY (`id`) USING BTREE
28   -) ENGINE = InnoDB
29   - AUTO_INCREMENT = 1
30   - DEFAULT CHARSET = utf8mb4 COMMENT ='短信渠道';
31   -/*
32   - 优先级值一样时,按照id顺序取值
33   -*/
34   -
35   --- ----------------------------
36   --- Table structure for sms_template
37   --- ----------------------------
38   -DROP TABLE IF EXISTS `sms_template`;
39   -CREATE TABLE `sms_template`
40   -(
41   - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增编号',
42   - `channel_code` varchar(50) NOT NULL COMMENT '短信渠道编码(来自枚举类)',
43   - `channel_id` bigint(20) NOT NULL COMMENT '短信渠道id (对于前端来说就是绑定一个签名)',
44   - `type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '消息类型 [0验证码 1短信通知 2推广短信 3国际/港澳台消息]',
45   - `biz_code` varchar(50) NOT NULL COMMENT '业务编码(来自数据字典, 用户自定义业务场景 一个场景可以有多个模板)',
46   - `code` varchar(50) NOT NULL COMMENT '编码',
47   - `name` varchar(50) NOT NULL COMMENT '名称',
48   - `api_template_id` varchar(100) NOT NULL COMMENT '实际渠道模板唯一标识',
49   - `content` varchar(1000) NOT NULL DEFAULT '' COMMENT '内容',
50   - `params` varchar(200) NOT NULL DEFAULT '' COMMENT '参数数组(自动根据内容生成)',
51   - `remark` varchar(200) NOT NULL COMMENT '备注',
52   -
53   - `status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '启用状态(0正常 1停用)',
54   - `create_by` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
55   - `create_time` datetime DEFAULT NULL COMMENT '创建时间',
56   - `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
57   - `update_time` datetime DEFAULT NULL COMMENT '更新时间',
58   - `deleted` bit(1) DEFAULT b'0' COMMENT '是否删除',
59   - PRIMARY KEY (`id`) USING BTREE
60   -) ENGINE = InnoDB
61   - AUTO_INCREMENT = 1
62   - DEFAULT CHARSET = utf8mb4 COMMENT ='短信模板';
63   -/*
64   --- ----------------------------
65   --- Table structure for sms_query_log
66   --- ----------------------------
67   -DROP TABLE IF EXISTS `sms_query_log`;
68   -CREATE TABLE `sms_query_log`
69   -(
70   - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增编号',
71   - `api_id` varchar(100) NOT NULL COMMENT '第三方唯一标识',
72   - `channel_code` varchar(50) NOT NULL COMMENT '短信渠道编码(来自枚举类)',
73   - `channel_id` bigint(20) NOT NULL COMMENT '短信渠道id',
74   - `template_code` varchar(50) NOT NULL COMMENT '渠道编码',
75   - `phone` char(11) NOT NULL COMMENT '手机号',
76   - `content` varchar(1000) NOT NULL DEFAULT '' COMMENT '内容',
77   - `send_result_param` varchar(200) NOT NULL DEFAULT '' COMMENT '查询短信发送结果的参数',
78   - `send_status` tinyint(1) NOT NULL DEFAULT 2 COMMENT '发送状态(0本地异步中 1发送请求失败 2发送请求成功)',
79   - `got_result` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否获取发送结果',
80   - `had_callback` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否拥有回调函数',
81   - `create_by` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
82   - `create_time` datetime DEFAULT NULL COMMENT '创建时间',
83   - PRIMARY KEY (`id`) USING BTREE
84   -) ENGINE = InnoDB
85   - AUTO_INCREMENT = 1
86   - DEFAULT CHARSET = utf8mb4 COMMENT ='短信请求日志';*/
87   -
88   --- ----------------------------
89   --- Table structure for sms_log
90   --- ----------------------------
91   -DROP TABLE IF EXISTS `sms_query_log`;
92   -CREATE TABLE `sms_query_log`
93   -(
94   - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增编号',
95   - `api_id` varchar(100) NOT NULL COMMENT '第三方唯一标识',
96   - `channel_code` varchar(50) NOT NULL COMMENT '短信渠道编码(来自枚举类)',
97   - `channel_id` bigint(20) NOT NULL COMMENT '短信渠道id',
98   - `template_code` varchar(50) NOT NULL COMMENT '渠道编码',
99   - `phone` char(11) NOT NULL COMMENT '手机号',
100   - `content` varchar(1000) NOT NULL DEFAULT '' COMMENT '内容',
101   - `send_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '发送状态 详情见:SmsSendStatusEnum',
102   - `remark` varchar(200) DEFAULT NULL COMMENT '备注',
103   - `create_by` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
104   - `create_time` datetime DEFAULT NULL COMMENT '创建时间',
105   - `send_time` datetime DEFAULT NULL COMMENT '发送时间',
106   - PRIMARY KEY (`id`) USING BTREE
107   -) ENGINE = InnoDB
108   - AUTO_INCREMENT = 1
109   - DEFAULT CHARSET = utf8mb4 COMMENT ='短信发送日志';
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/sms/SysSmsTemplateMapper.java
... ... @@ -13,7 +13,7 @@ import java.util.List;
13 13 @Mapper
14 14 public interface SysSmsTemplateMapper extends BaseMapperX<SysSmsTemplateDO> {
15 15  
16   - default SysSmsTemplateDO selectOneByCode(String code) {
  16 + default SysSmsTemplateDO selectByCode(String code) {
17 17 return selectOne("code", code);
18 18 }
19 19  
... ...
src/main/java/cn/iocoder/dashboard/modules/system/enums/SysErrorCodeConstants.java
... ... @@ -80,9 +80,11 @@ public interface SysErrorCodeConstants {
80 80  
81 81 // ========== 短信渠道 1002011000 ==========
82 82 ErrorCode SMS_CHANNEL_NOT_EXISTS = new ErrorCode(1002011000, "短信渠道不存在");
  83 + ErrorCode SMS_CHANNEL_DISABLE = new ErrorCode(1002011001, "短信渠道不处于开启状态,不允许选择");
83 84  
84 85 // ========== 短信模板 1002011000 ==========
85 86 ErrorCode SMS_TEMPLATE_NOT_EXISTS = new ErrorCode(1002011000, "短信模板不存在");
  87 + ErrorCode SMS_TEMPLATE_CODE_DUPLICATE = new ErrorCode(1002011001, "已经存在编码为【{}}】的短信模板");
86 88  
87 89 // ========== 短信发送 1002012000 ==========
88 90 ErrorCode SMS_SEND_MOBILE_NOT_EXISTS = new ErrorCode(1002012000, "手机号不存在");
... ...
src/main/java/cn/iocoder/dashboard/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java
1 1 package cn.iocoder.dashboard.modules.system.service.sms.impl;
2 2  
  3 +import cn.hutool.core.util.ReUtil;
3 4 import cn.hutool.core.util.StrUtil;
  5 +import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
4 6 import cn.iocoder.dashboard.common.pojo.PageResult;
5 7 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
6 8 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
7 9 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
8 10 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
9 11 import cn.iocoder.dashboard.modules.system.convert.sms.SysSmsTemplateConvert;
  12 +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO;
10 13 import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
11 14 import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsTemplateMapper;
  15 +import cn.iocoder.dashboard.modules.system.service.sms.SysSmsChannelService;
12 16 import cn.iocoder.dashboard.modules.system.service.sms.SysSmsTemplateService;
  17 +import com.google.common.annotations.VisibleForTesting;
13 18 import org.springframework.stereotype.Service;
14 19  
15 20 import javax.annotation.Resource;
16 21 import java.util.Collection;
17 22 import java.util.List;
18 23 import java.util.Map;
  24 +import java.util.Objects;
  25 +import java.util.regex.Pattern;
19 26  
20 27 import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception;
21   -import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SMS_TEMPLATE_NOT_EXISTS;
  28 +import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.*;
22 29  
23 30 /**
24 31 * 短信模板Service实现类
... ... @@ -29,12 +36,20 @@ import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SM
29 36 @Service
30 37 public class SysSmsTemplateServiceImpl implements SysSmsTemplateService {
31 38  
  39 + /**
  40 + * 正则表达式,匹配 {} 中的变量
  41 + */
  42 + private static final Pattern PATTERN_PARAMS = Pattern.compile("\\{(.*?)}");
  43 +
32 44 @Resource
33 45 private SysSmsTemplateMapper smsTemplateMapper;
34 46  
  47 + @Resource
  48 + private SysSmsChannelService smsChannelService;
  49 +
35 50 @Override
36 51 public SysSmsTemplateDO getSmsTemplateByCode(String code) {
37   - return smsTemplateMapper.selectOneByCode(code);
  52 + return smsTemplateMapper.selectByCode(code);
38 53 }
39 54  
40 55 @Override
... ... @@ -42,13 +57,25 @@ public class SysSmsTemplateServiceImpl implements SysSmsTemplateService {
42 57 return StrUtil.format(content, params);
43 58 }
44 59  
  60 + @VisibleForTesting
  61 + public List<String> parseTemplateContentParams(String content) {
  62 + return ReUtil.findAllGroup1(PATTERN_PARAMS, content);
  63 + }
  64 +
45 65 @Override
46 66 public Long createSmsTemplate(SysSmsTemplateCreateReqVO createReqVO) {
  67 + // 校验短信渠道
  68 + SysSmsChannelDO channelDO = checkSmsChannel(createReqVO.getChannelId());
  69 + // 校验短信编码是否重复
  70 + checkSmsTemplateCodeDuplicate(null, createReqVO.getCode());
  71 +
47 72 // 插入
48   - SysSmsTemplateDO smsTemplate = SysSmsTemplateConvert.INSTANCE.convert(createReqVO);
49   - smsTemplateMapper.insert(smsTemplate);
  73 + SysSmsTemplateDO template = SysSmsTemplateConvert.INSTANCE.convert(createReqVO);
  74 + template.setParams(parseTemplateContentParams(template.getContent()));
  75 + template.setChannelCode(channelDO.getCode());
  76 + smsTemplateMapper.insert(template);
50 77 // 返回
51   - return smsTemplate.getId();
  78 + return template.getId();
52 79 }
53 80  
54 81 @Override
... ... @@ -94,4 +121,29 @@ public class SysSmsTemplateServiceImpl implements SysSmsTemplateService {
94 121 return smsTemplateMapper.selectList(exportReqVO);
95 122 }
96 123  
  124 + private SysSmsChannelDO checkSmsChannel(Long channelId) {
  125 + SysSmsChannelDO channelDO = smsChannelService.getSmsChannel(channelId);
  126 + if (channelDO == null) {
  127 + throw exception(SMS_CHANNEL_NOT_EXISTS);
  128 + }
  129 + if (!Objects.equals(channelDO.getStatus(), CommonStatusEnum.ENABLE.getStatus())) {
  130 + throw exception(SMS_CHANNEL_DISABLE);
  131 + }
  132 + return channelDO;
  133 + }
  134 +
  135 + private void checkSmsTemplateCodeDuplicate(Long id, String code) {
  136 + SysSmsTemplateDO template = smsTemplateMapper.selectByCode(code);
  137 + if (template == null) {
  138 + return;
  139 + }
  140 + // 如果 id 为空,说明不用比较是否为相同 id 的字典类型
  141 + if (id == null) {
  142 + throw exception(SMS_TEMPLATE_CODE_DUPLICATE);
  143 + }
  144 + if (!template.getId().equals(id)) {
  145 + throw exception(SMS_TEMPLATE_CODE_DUPLICATE);
  146 + }
  147 + }
  148 +
97 149 }
... ...
src/test/java/cn/iocoder/dashboard/modules/system/service/sms/SysSmsTemplateServiceTest.java
1 1 package cn.iocoder.dashboard.modules.system.service.sms;
2 2  
3 3 import cn.iocoder.dashboard.BaseDbUnitTest;
  4 +import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
4 5 import cn.iocoder.dashboard.common.pojo.PageResult;
5 6 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateCreateReqVO;
6 7 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateExportReqVO;
7 8 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplatePageReqVO;
8 9 import cn.iocoder.dashboard.modules.system.controller.sms.vo.template.SysSmsTemplateUpdateReqVO;
  10 +import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsChannelDO;
9 11 import cn.iocoder.dashboard.modules.system.dal.dataobject.sms.SysSmsTemplateDO;
10 12 import cn.iocoder.dashboard.modules.system.dal.mysql.sms.SysSmsTemplateMapper;
  13 +import cn.iocoder.dashboard.modules.system.enums.sms.SysSmsTemplateTypeEnum;
11 14 import cn.iocoder.dashboard.modules.system.service.sms.impl.SysSmsTemplateServiceImpl;
  15 +import cn.iocoder.dashboard.util.collection.ArrayUtils;
12 16 import cn.iocoder.dashboard.util.object.ObjectUtils;
  17 +import com.google.common.collect.Lists;
13 18 import org.junit.jupiter.api.Test;
  19 +import org.springframework.boot.test.mock.mockito.MockBean;
14 20 import org.springframework.context.annotation.Import;
15 21  
16 22 import javax.annotation.Resource;
17 23 import java.util.List;
  24 +import java.util.function.Consumer;
18 25  
  26 +import static cn.hutool.core.util.RandomUtil.randomEle;
19 27 import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.SMS_TEMPLATE_NOT_EXISTS;
20 28 import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
21 29 import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException;
22 30 import static cn.iocoder.dashboard.util.RandomUtils.randomLongId;
23 31 import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;
24 32 import static org.junit.jupiter.api.Assertions.*;
  33 +import static org.mockito.ArgumentMatchers.eq;
  34 +import static org.mockito.Mockito.when;
25 35  
26 36 /**
27 37 * {@link SysSmsTemplateServiceImpl} 的单元测试类
... ... @@ -37,10 +47,35 @@ public class SysSmsTemplateServiceTest extends BaseDbUnitTest {
37 47 @Resource
38 48 private SysSmsTemplateMapper smsTemplateMapper;
39 49  
  50 + @MockBean
  51 + private SysSmsChannelService smsChannelService;
  52 +
  53 + @Test
  54 + public void testParseTemplateContentParams() {
  55 + // 准备参数
  56 + String content = "正在进行登录操作{operation},您的验证码是{code}";
  57 + // mock 方法
  58 +
  59 + // 调用
  60 + List<String> params = smsTemplateService.parseTemplateContentParams(content);
  61 + // 断言
  62 + assertEquals(Lists.newArrayList("operation", "code"), params);
  63 + }
  64 +
40 65 @Test
41 66 public void testCreateSmsTemplate_success() {
42 67 // 准备参数
43   - SysSmsTemplateCreateReqVO reqVO = randomPojo(SysSmsTemplateCreateReqVO.class);
  68 + SysSmsTemplateCreateReqVO reqVO = randomPojo(SysSmsTemplateCreateReqVO.class, o -> {
  69 + o.setContent("正在进行登录操作{operation},您的验证码是{code}");
  70 + o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
  71 + o.setType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 type 的泛微
  72 + });
  73 + // mock 方法
  74 + SysSmsChannelDO channelDO = randomPojo(SysSmsChannelDO.class, o -> {
  75 + o.setId(reqVO.getChannelId());
  76 + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 保证 status 开启,创建必须处于这个状态
  77 + });
  78 + when(smsChannelService.getSmsChannel(eq(channelDO.getId()))).thenReturn(channelDO);
44 79  
45 80 // 调用
46 81 Long smsTemplateId = smsTemplateService.createSmsTemplate(reqVO);
... ... @@ -49,6 +84,8 @@ public class SysSmsTemplateServiceTest extends BaseDbUnitTest {
49 84 // 校验记录的属性是否正确
50 85 SysSmsTemplateDO smsTemplate = smsTemplateMapper.selectById(smsTemplateId);
51 86 assertPojoEquals(reqVO, smsTemplate);
  87 + assertEquals(Lists.newArrayList("operation", "code"), smsTemplate.getParams());
  88 + assertEquals(channelDO.getCode(), smsTemplate.getChannelCode());
52 89 }
53 90  
54 91 @Test
... ... @@ -80,7 +117,7 @@ public class SysSmsTemplateServiceTest extends BaseDbUnitTest {
80 117 @Test
81 118 public void testDeleteSmsTemplate_success() {
82 119 // mock 数据
83   - SysSmsTemplateDO dbSmsTemplate = randomPojo(SysSmsTemplateDO.class);
  120 + SysSmsTemplateDO dbSmsTemplate = randomSmsTemplateDO();
84 121 smsTemplateMapper.insert(dbSmsTemplate);// @Sql: 先插入出一条存在的数据
85 122 // 准备参数
86 123 Long id = dbSmsTemplate.getId();
... ... @@ -191,4 +228,13 @@ public class SysSmsTemplateServiceTest extends BaseDbUnitTest {
191 228 assertPojoEquals(dbSmsTemplate, list.get(0));
192 229 }
193 230  
  231 + @SafeVarargs
  232 + private static SysSmsTemplateDO randomSmsTemplateDO(Consumer<SysSmsTemplateDO>... consumers) {
  233 + Consumer<SysSmsTemplateDO> consumer = (o) -> {
  234 + o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 保证 status 的范围
  235 + o.setType(randomEle(SysSmsTemplateTypeEnum.values()).getType()); // 保证 type 的泛微
  236 + };
  237 + return randomPojo(SysSmsTemplateDO.class, ArrayUtils.append(consumer, consumers));
  238 + }
  239 +
194 240 }
... ...
src/test/resources/sql/create_tables.sql
... ... @@ -358,3 +358,23 @@ CREATE TABLE IF NOT EXISTS &quot;sys_sms_channel&quot; (
358 358 "deleted" bit NOT NULL DEFAULT FALSE,
359 359 PRIMARY KEY ("id")
360 360 ) COMMENT '短信渠道';
  361 +
  362 +CREATE TABLE "sys_sms_template" (
  363 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  364 + "type" tinyint NOT NULL,
  365 + "status" tinyint NOT NULL,
  366 + "code" varchar(63) NOT NULL,
  367 + "name" varchar(63) NOT NULL,
  368 + "content" varchar(255) NOT NULL,
  369 + "params" varchar(255) NOT NULL,
  370 + "remark" varchar(255) DEFAULT NULL,
  371 + "api_template_id" varchar(63) NOT NULL,
  372 + "channel_id" bigint NOT NULL,
  373 + "channel_code" varchar(63) NOT NULL,
  374 + "creator" varchar(64) DEFAULT '',
  375 + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  376 + "updater" varchar(64) DEFAULT '',
  377 + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  378 + "deleted" bit NOT NULL DEFAULT FALSE,
  379 + PRIMARY KEY ("id")
  380 +) COMMENT '短信模板';
... ...