diff --git a/db/db.sql b/db/db.sql
new file mode 100644
index 0000000000000000000000000000000000000000..77aed5c92d7af11dde170971032e4958d83c2c37
--- /dev/null
+++ b/db/db.sql
@@ -0,0 +1,163 @@
+DROP TABLE mock_log;
+CREATE TABLE mock_log (log_id int NOT NULL AUTO_INCREMENT, request_method varchar(12), request_ip varchar(20), hit_url varchar(200), request_url varchar(200), response_detail varchar(5000), request_detail varchar(5000), del_flag int DEFAULT 0, create_by int, create_time bigint, update_by int, update_time bigint, remark varchar(200), PRIMARY KEY (log_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO mock_log (log_id, request_method, request_ip, hit_url, request_url, response_detail, request_detail, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (1151, 'Socket', '/127.0.0.1:54803', 'null', '/127.0.0.1:54803', '{\"hi\":\"hello world\"}', 'GET / HTTP/1.1\r\nHost: 127.0.0.1:10040\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\nAccept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\r\nAccept-Encoding: gzip, deflate, br\r\nConnection: keep-alive\r\nCookie: JSESSIONID=50A3A78E8F33E3270B8889E0BC45FA7E; rememberMe=NtMDKDn/1o6oCECkwPPnrALNvSQVAzNLHDBijocDWttRB1v3hUXHWaEFWqpRD6hcKw3QwwwGh7K+7YQykWpziKCJMvEOAyODy5WGXno5G0gQ3wb58+c4uFEE+Rpj6G+2D5c45920x8Sk/icBAc9MtQ0/Ez51AQQxOF6m1OqFT5AZ9qXzzfixTP+1ni+q/zxfLKAiU3SDEPkZhQ/o6SaFq6Hft0rydFfWBa+YJgiK5ZgkxMMtvw9qccxAojGRQcf+Lw95udInHEeOA8HHwyDH1DU3xVbdRiL+r2Z8DwAWocRo6lFsV1Xw6X308HN3x8DRX7iR7r7q+2Y+2YueIyt6DkWy5AUkCI3+mWmbHGGINEDoADDqkYaewKg2tG39ZET4ecSmV3Ehr+ySBANKW0Hejr33ZthQxpqtExGjLCznMby3d/UP1e7ZtE/GETSWaYfR3kQGe4tCzFKuWUB+DtNTcw38HrB8qpHPOdjL+ijhKYQyq07nEQUEka/A0eaethnTIJEkabcu82UivwIAmgyV+9qprgGdcghOPhjxYtm7bBTSZfFRpb2LvSWiEiG8ac9zZ/TpKQ2EAQirC1rChrMrMN7WfzHwbBe0cwCX2lf9wZ0oaFMtzNp4Yq+mH5orL+t/a29eTqpp3EFfPHZoiypwmUfyHWCUAQdMZZqru68DFCOpIWKJB5YE/Up657ENdgGD2OmtqxEGNtO9OkBL8n6P1u+utqxcK9Bc1+r27+7UoUCklPzEADqRm71Kjvht56uum22AJYX66uqCM3CmYu+tsNzkfwWemj34cFrHB33dWrFsEmU1yhexAOxLH3Yc0NfTAQmWE+rcmiEdRSiHNyzDd0dwMc7aTEjgP3IN9nW2EQnIKHH9mFehDaHgHtipka05y1JE6G2fSjnFUwnByrjN0CzuF57MQB6piVbPsV3IrMSEFmbCQmml4j4FXNa6eqF4V9mo2DP+jfjMdPbazHay3Lod/zJW+uhRYmpqsC6dQ9O7TtRfYzZ0k4PAuAQifMtMcIT16/hjCBNvyasKYSYu7mDFTqL8zkU0H+ARCs5XE68nbKTYZKDReq2n9MmDq4oxqdp8qtMDOxY4R9BzSrRf/ichQZmkszT3RVZxzfBesi2lweO22d5wjF+BpiktL0OBcaFnKNvbq7PzB++7FHAj/0J+fWsVbs538YEXusvPpWMUAfzwONrFEpLVJ906Ojyl1ccdd9p0L8uyqpmF3PSIAbf8bRoKCpfIFikKP9083ODPsCLu49QxI21D4icTriq3ix6ooPWQMXfegujCaWWgOpOBbVUjZqvvoHtlPyxg0+/ZHQ9WSQw6wUY18KbFBi8bU0TNfJgvHeIjQzBo67+HmCdo3mLK382TaEACouJiKHYdI0wC8EujjnI2sGQurj952aA/7BaDao31aiNG8uz51KEsKL0ncbaetvWfJoMdzEMWe3vuM7Q3EOFq5PMann8gNI4k9ixgXC+VQhEtg3wr30rTbMfsonSgziX4Z+mrojmB1V3sId3LZMtb8YaFVKHjkZPO/Rhm6dCmexCidgUN9eC2JcdT2C69zjyPT4rPY4bDP14JaBVBAQZHQhIs+IHZ3DUTcF7YLDLy9olIQ07KmWHGP3txmReEXmMF64D6mkvppigkrN+H91lwFzE=\r\nUpgrade-Insecure-Requests: 1\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nSec-Fetch-User: ?1\r\n\r\n', 0, null, 1689306315926, null, 1689306315926, null);
+INSERT INTO mock_log (log_id, request_method, request_ip, hit_url, request_url, response_detail, request_detail, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (1152, 'Socket', '/127.0.0.1:54804', 'null', '/127.0.0.1:54804', '{\"hi\":\"hello world\"}', 'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1:10040\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0\r\nAccept: image/avif,image/webp,*/*\r\nAccept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\r\nAccept-Encoding: gzip, deflate, br\r\nConnection: keep-alive\r\nReferer: http://127.0.0.1:10040/\r\nCookie: JSESSIONID=50A3A78E8F33E3270B8889E0BC45FA7E; rememberMe=NtMDKDn/1o6oCECkwPPnrALNvSQVAzNLHDBijocDWttRB1v3hUXHWaEFWqpRD6hcKw3QwwwGh7K+7YQykWpziKCJMvEOAyODy5WGXno5G0gQ3wb58+c4uFEE+Rpj6G+2D5c45920x8Sk/icBAc9MtQ0/Ez51AQQxOF6m1OqFT5AZ9qXzzfixTP+1ni+q/zxfLKAiU3SDEPkZhQ/o6SaFq6Hft0rydFfWBa+YJgiK5ZgkxMMtvw9qccxAojGRQcf+Lw95udInHEeOA8HHwyDH1DU3xVbdRiL+r2Z8DwAWocRo6lFsV1Xw6X308HN3x8DRX7iR7r7q+2Y+2YueIyt6DkWy5AUkCI3+mWmbHGGINEDoADDqkYaewKg2tG39ZET4ecSmV3Ehr+ySBANKW0Hejr33ZthQxpqtExGjLCznMby3d/UP1e7ZtE/GETSWaYfR3kQGe4tCzFKuWUB+DtNTcw38HrB8qpHPOdjL+ijhKYQyq07nEQUEka/A0eaethnTIJEkabcu82UivwIAmgyV+9qprgGdcghOPhjxYtm7bBTSZfFRpb2LvSWiEiG8ac9zZ/TpKQ2EAQirC1rChrMrMN7WfzHwbBe0cwCX2lf9wZ0oaFMtzNp4Yq+mH5orL+t/a29eTqpp3EFfPHZoiypwmUfyHWCUAQdMZZqru68DFCOpIWKJB5YE/Up657ENdgGD2OmtqxEGNtO9OkBL8n6P1u+utqxcK9Bc1+r27+7UoUCklPzEADqRm71Kjvht56uum22AJYX66uqCM3CmYu+tsNzkfwWemj34cFrHB33dWrFsEmU1yhexAOxLH3Yc0NfTAQmWE+rcmiEdRSiHNyzDd0dwMc7aTEjgP3IN9nW2EQnIKHH9mFehDaHgHtipka05y1JE6G2fSjnFUwnByrjN0CzuF57MQB6piVbPsV3IrMSEFmbCQmml4j4FXNa6eqF4V9mo2DP+jfjMdPbazHay3Lod/zJW+uhRYmpqsC6dQ9O7TtRfYzZ0k4PAuAQifMtMcIT16/hjCBNvyasKYSYu7mDFTqL8zkU0H+ARCs5XE68nbKTYZKDReq2n9MmDq4oxqdp8qtMDOxY4R9BzSrRf/ichQZmkszT3RVZxzfBesi2lweO22d5wjF+BpiktL0OBcaFnKNvbq7PzB++7FHAj/0J+fWsVbs538YEXusvPpWMUAfzwONrFEpLVJ906Ojyl1ccdd9p0L8uyqpmF3PSIAbf8bRoKCpfIFikKP9083ODPsCLu49QxI21D4icTriq3ix6ooPWQMXfegujCaWWgOpOBbVUjZqvvoHtlPyxg0+/ZHQ9WSQw6wUY18KbFBi8bU0TNfJgvHeIjQzBo67+HmCdo3mLK382TaEACouJiKHYdI0wC8EujjnI2sGQurj952aA/7BaDao31aiNG8uz51KEsKL0ncbaetvWfJoMdzEMWe3vuM7Q3EOFq5PMann8gNI4k9ixgXC+VQhEtg3wr30rTbMfsonSgziX4Z+mrojmB1V3sId3LZMtb8YaFVKHjkZPO/Rhm6dCmexCidgUN9eC2JcdT2C69zjyPT4rPY4bDP14JaBVBAQZHQhIs+IHZ3DUTcF7YLDLy9olIQ07KmWHGP3txmReEXmMF64D6mkvppigkrN+H91lwFzE=\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\n\r\n', 0, null, 1689306315971, null, 1689306315971, null);
+DROP TABLE mock_response;
+CREATE TABLE mock_response (response_id int NOT NULL AUTO_INCREMENT, url_id int, content varchar(2000), status_code int, main int DEFAULT 0, description varchar(500), custom_header varchar(2000), del_flag int DEFAULT 0, create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(200), method varchar(20), PRIMARY KEY (response_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (1, 1, '
示例接口请求成功~
', 200, 1, '示例接口默认返回体', '[{\"key\":\"content-type\",\"val\":\"text/html;charset=utf-8\"}]', 0, 1, '1577177140391', 1, '1577177410704', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (2, 3, 'adfasfasdfasdf', 200, 0, 'asdfasdfasdf', '', 0, 2, '1665742150931', 2, '1665742679831', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (3, 3, 'aaaaaaaaaaaaaaaaaaaaaaaaaa', 200, 1, 'adf', '', 0, 2, '1665742308025', 2, '1665742679893', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (4, 4, '{\r\n \"name\":\"张三\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010208810\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-01\",\r\n \"expiredDate\":\"2032-01-01\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '张三', '', 0, 2, '1666084010725', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (5, 2, '12345544', 200, 1, '测试', '', 0, 2, '1666161447716', 2, '1666161450347', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (6, 4, '{\r\n \"name\":\"李四\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010206110\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-02\",\r\n \"expiredDate\":\"2032-01-02\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '李四', '', 0, 2, '1666162922408', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (7, 4, '{\r\n \"name\":\"王五\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010205492\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-03\",\r\n \"expiredDate\":\"2032-01-03\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '王五', '', 0, 2, '1666162947182', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (8, 4, '{\r\n \"name\":\"赵六\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010204051\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-04\",\r\n \"expiredDate\":\"2032-01-04\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '赵六', '', 0, 2, '1666163007470', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (9, 4, '{\r\n \"name\":\"孙七\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010205118\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-05\",\r\n \"expiredDate\":\"2032-01-05\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '孙七', '', 0, 2, '1666163067813', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (10, 4, '{\r\n \"name\":\"龙八\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010208650\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-06\",\r\n \"expiredDate\":\"2032-01-06\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '龙八', '', 0, 2, '1666163165649', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (11, 5, 'true', 200, 1, '风控校验结果-成功', '', 0, 2, '1666166847075', 2, '1666250760865', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (12, 5, 'false', 200, 0, '风控校验结果-失败', '', 0, 2, '1666166894009', 2, '1666250760793', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (13, 6, 'true', 200, 1, '识别结果-成功', '', 0, 2, '1666167565731', 2, '1666167595097', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (14, 6, 'false', 200, 0, '识别结果-失败', '', 0, 2, '1666167586705', 2, '1666167586705', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (15, 4, '{\r\n \"name\":\"赵九\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010203032\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-07\",\r\n \"expiredDate\":\"2032-01-07\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '赵九', '', 0, 2, '1666235374759', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (16, 4, '{\r\n \"name\":\"胡十\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010205716\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-08\",\r\n \"expiredDate\":\"2032-01-08\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '胡十', '', 0, 2, '1666235408643', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (17, 4, '{\r\n \"name\":\"刘一\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010203139\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-09\",\r\n \"expiredDate\":\"2032-01-09\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '刘一', '', 0, 2, '1666235435067', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (18, 4, '{\r\n \"name\":\"孙二\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"520115199010203470\",\r\n \"birthDate\":\"19901020\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-10\",\r\n \"expiredDate\":\"2032-01-10\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '孙二', '', 0, 2, '1666235453581', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (19, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"521101199001301114\",\r\n\"expiredDate\": \"2028年1月1日\",\r\n\"name\": \"王老十\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022年1月1日\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, '王老十', '', 1, 2, '1666235459781', 2, '1670916097067', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (20, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"521101199001301113\",\r\n\"expiredDate\": \"2028年1月1日\",\r\n\"name\": \"王老九\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022年1月1日\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, '王老九', '', 1, 2, '1666235485939', 2, '1670916097067', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (21, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"521101199001301112\",\r\n\"expiredDate\": \"2028-1-1\",\r\n\"name\": \"王老八\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022-1-1\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, '王老八', '', 0, 2, '1666254640130', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (22, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19920615\",\r\n \"cardNumber\":\"522401199206157410\",\r\n \"expiredDate\":\"2028-01-01\",\r\n \"name\":\"王良州\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022-01-01\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '王良州', '', 0, 2, '1666315135461', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (23, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"520000199910100022\",\r\n\"expiredDate\": \"2028-01-01\",\r\n\"name\": \"貂蝉\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022-01-01\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, '貂蝉', '', 0, 2, '1666760701714', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (24, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"520000199910100034\",\r\n\"expiredDate\": \"2028-01-01\",\r\n\"name\": \"貂蝉\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022-01-01\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, 'zxz', '', 0, 2, '1667544654376', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (25, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"520000199910100035\",\r\n\"expiredDate\": \"2028-01-01\",\r\n\"name\": \"曾宪泽2\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022-01-01\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, 'zxz2', '', 0, 2, '1667549017164', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (26, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"520000199910100035\",\r\n\"expiredDate\": \"2028-01-01\",\r\n\"name\": \"曾宪泽3\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022-01-01\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, 'zxz3', '', 0, 2, '1667549042321', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (27, 4, '{\r\n\"address\": \"贵阳市观山湖区\",\r\n\"birthDate\": \"19900130\",\r\n\"cardNumber\": \"520000199910100036\",\r\n\"expiredDate\": \"2028-01-01\",\r\n\"name\": \"曾宪泽4\",\r\n\"nation\": \"GBN01\",\r\n\"sex\": \"MALE\",\r\n\"signDate\": \"2022-01-01\",\r\n\"signOrg\": \"XXX公安局\"\r\n}', 200, 0, 'zxz4', '', 0, 2, '1667549512598', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (28, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19900101\",\r\n \"cardNumber\":\"522130199307051215\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"曾1\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '曾1', '', 0, 2, '1667552578797', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (29, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19900101\",\r\n \"cardNumber\":\"522130199307051216\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"曾2\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '曾2', '', 0, 2, '1667552617534', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (30, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19900101\",\r\n \"cardNumber\":\"522130199307051217\",\r\n \"expiredDate\":\"2028-01-01\",\r\n \"name\":\"曾3\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022-01-01\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '曾3', '', 0, 2, '1667552636368', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (31, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19970624\",\r\n \"cardNumber\":\"520103199706240443\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"虞姬2\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '虞姬2', '', 0, 2, '1667557405705', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (32, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19970624\",\r\n \"cardNumber\":\"520103199706240444\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"虞姬3\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '虞姬3', '', 0, 2, '1667784857888', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (33, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19970624\",\r\n \"cardNumber\":\"520103199706240445\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"虞姬3\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '虞姬4', '', 0, 2, '1667807717307', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (34, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19970624\",\r\n \"cardNumber\":\"520103199706240446\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"虞姬3\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '虞姬5', '', 0, 2, '1667868869287', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (35, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19970624\",\r\n \"cardNumber\":\"520103199706240223\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"老王1\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '老王1', '', 0, 2, '1668474862364', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (36, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19970624\",\r\n \"cardNumber\":\"520103199706240222\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"老王2\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, 0, '老王2', '', 0, 2, '1668474892019', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (37, 7, 'true', 200, 1, '成功-true', '', 0, 2, '1675816099128', 2, '1675816114579', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (38, 7, 'false', 200, 0, '失败-false', '', 0, 2, '1675816146887', 2, '1675816146887', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (39, 8, '{\r\n \"name\":\"张三\",\r\n \"idCard\":\"520000199911118888\",\r\n \"accountInfos\":[\r\n {\r\n \"bankAccount\":\"88888888\",\r\n \"openBankAccount\":\"贵阳农商银行\"\r\n },\r\n {\r\n \"bankAccount\":\"66666666\",\r\n \"openBankAccount\":\"贵阳农商银行\"\r\n },\r\n {\r\n \"bankAccount\":\"99999999\",\r\n \"openBankAccount\":\"贵阳农商银行\"\r\n }\r\n ]\r\n}', 200, 1, '卡号', '', 0, 2, '1676276765602', 2, '1676279459206', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (40, 4, '{\r\n \"name\":\"鲍思\",\r\n \"sex\":\"FEMALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"522501199107157365\",\r\n \"birthDate\":\"19910715\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2022-01-01\",\r\n \"expiredDate\":\"2032-01-01\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '鲍思', '', 0, 2, '1676345804379', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (41, 4, '{\r\n\"name\": \"耿1\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"520100198808103333\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2022-01-01\",\r\n\"expiredDate\": \"2032-01-01\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '耿1', '', 0, 2, '1677826464329', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (42, 4, '{\r\n\"name\": \"耿2\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"520100198808113333\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2022-01-01\",\r\n\"expiredDate\": \"2032-01-01\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '耿2', '', 0, 2, '1677826489848', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (43, 4, '{\r\n\"name\": \"耿3\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"520100198808123333\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2022-01-01\",\r\n\"expiredDate\": \"2032-01-01\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '耿3', '', 0, 2, '1677826510466', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (44, 4, '{\r\n\"name\": \"耿4\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"520100198808133333\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2022-01-01\",\r\n\"expiredDate\": \"2032-01-01\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '耿4', '', 0, 2, '1677826534083', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (45, 4, '{\r\n\"name\": \"鲍思\",\r\n\"sex\": \"FEMALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"522501199107157365\",\r\n\"birthDate\": \"19901020\",\r\n\"address\": \"贵阳市白云区俊发城\",\r\n\"signDate\": \"2022-01-04\",\r\n\"expiredDate\": \"2032-01-04\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '鲍思', '', 0, 2, '1678151595993', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (46, 4, '{\r\n \"name\":\"王某某\",\r\n \"sex\":\"MALE\",\r\n \"nation\":\"GBN01\",\r\n \"cardNumber\":\"52011319870818282X\",\r\n \"birthDate\":\"19870818\",\r\n \"address\":\"贵阳市观山湖区中天会展城B区\",\r\n \"signDate\":\"2015-01-06\",\r\n \"expiredDate\":\"2032-01-06\",\r\n \"signOrg\":\"贵阳市观山湖区公安局\"\r\n }', 200, 0, '王某某(征信数据不要动)', '', 0, 2, '1678671860369', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (47, 4, '{\r\n\"name\": \"曾宪一\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"362202199410105791\",\r\n\"birthDate\": \"19941010\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '曾宪一(征信勿动)', '', 0, 2, '1678695593670', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (48, 4, '{\r\n\"name\": \"曾宪二\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"362202199410105792\",\r\n\"birthDate\": \"19941010\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '曾宪二(征信勿动)', '', 0, 2, '1678704127310', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (49, 4, '{\r\n\"name\": \"曾宪三\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"362202199410105793\",\r\n\"birthDate\": \"19941010\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '曾宪三(征信勿动)', '', 0, 2, '1678704155148', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (50, 4, '{\r\n\"name\": \"曾宪四\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"362202199410105794\",\r\n\"birthDate\": \"19941010\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '曾宪四(征信勿动)', '', 0, 2, '1678704354245', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (51, 4, '{\r\n\"name\": \"鲍思一\",\r\n\"sex\": \"FEMALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"522501199107157361\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '鲍思一', '', 0, 2, '1678758672856', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (52, 4, '{\r\n\"name\": \"鲍思二\",\r\n\"sex\": \"FEMALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"522501199107157362\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '鲍思二', '', 0, 2, '1678758719861', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (53, 4, '\r\n{\r\n\"name\": \"曾棋\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"522601199002218024\",\r\n\"birthDate\": \"19900221\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2022-01-01\",\r\n\"expiredDate\": \"2032-01-01\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '曾棋征信数据勿动', '', 0, 2, '1678847701029', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (54, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19920615\",\r\n \"cardNumber\":\"522401199206159999\",\r\n \"expiredDate\":\"2028-01-01\",\r\n \"name\":\"王老板\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022-01-01\",\r\n \"signOrg\":\"贵阳市公安局\"\r\n }', 200, 0, '王良州1(sit 勿动)', '', 0, 2, '1679020646304', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (55, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19920615\",\r\n \"cardNumber\":\"522401199206158888\",\r\n \"expiredDate\":\"2028-01-01\",\r\n \"name\":\"王老板呀王老板\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022-01-01\",\r\n \"signOrg\":\"贵阳市公安局\"\r\n }', 200, 0, '王老板01', '', 0, 2, '1679108389649', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (56, 4, '{\r\n\"name\": \"鲍小花\",\r\n\"sex\": \"FEMALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"522501199107157330\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '鲍小花', '', 0, 2, '1679111962727', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (57, 4, '{\r\n\"name\": \"鲍小四\",\r\n\"sex\": \"FEMALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"431129198803143714\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '鲍小四', '', 0, 2, '1679276984472', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (58, 4, '{\r\n\"name\": \"鲍小五\",\r\n\"sex\": \"FEMALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"522501199107157340\",\r\n\"birthDate\": \"19910715\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '鲍小五', '', 0, 2, '1679278285693', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (59, 4, '{\r\n\"name\": \"曾宪六\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"362202199410105796\",\r\n\"birthDate\": \"19941010\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 0, '曾宪六(征信勿动)', '', 0, 2, '1679297591693', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (60, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19920615\",\r\n \"cardNumber\":\"522401199206158888\",\r\n \"expiredDate\":\"2028-01-01\",\r\n \"name\":\"小花\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022-01-01\",\r\n \"signOrg\":\"贵阳市公安局\"\r\n }', 200, 0, '小花', '', 0, 2, '1679302720696', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (61, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19920615\",\r\n \"cardNumber\":\"522401199206152222\",\r\n \"expiredDate\":\"2028-01-01\",\r\n \"name\":\"王总\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022-01-01\",\r\n \"signOrg\":\"贵阳市公安局\"\r\n }', 200, 0, '王总', '', 0, 2, '1679305650536', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (62, 4, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19920615\",\r\n \"cardNumber\":\"522401199206153333\",\r\n \"expiredDate\":\"2028-01-01\",\r\n \"name\":\"王老板娘\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022-01-01\",\r\n \"signOrg\":\"贵阳市公安局\"\r\n }', 200, 0, '王老板娘', '', 0, 2, '1679309209264', 2, '1679400158992', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (63, 4, '{\r\n\"name\": \"鲍二宝\",\r\n\"sex\": \"MALE\",\r\n\"nation\": \"GBN01\",\r\n\"cardNumber\": \"43112919770519525X\",\r\n\"birthDate\": \"19770519\",\r\n\"address\": \"贵阳市观山湖区中天会展城B区\",\r\n\"signDate\": \"2015-01-06\",\r\n\"expiredDate\": \"2032-01-06\",\r\n\"signOrg\": \"贵阳市观山湖区公安局\"\r\n}', 200, 1, '陈小一', '', 0, 2, '1679310517306', 2, '1679401400321', null, 'POST');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (64, 9, '{\r\n\t\"appRes\": {\r\n\t\t\"head\": {\r\n\t\t\t\"timeStamp\": \"20230708214554405\",\r\n\t\t\t\"sendOrder\": \"BD2023070700000003\",\r\n\t\t\t\"appid\": \"00000000001\"\r\n\t\t},\r\n\t\t\"body\": {\r\n\t\t\t\"spidno\": \"522228199005303810\",\r\n\t\t\t\"01_04_16\": \"国有企业\",\r\n\t\t\t\"01_04_15\": \"贵州电网有限责任公司责安供电局\",\r\n\t\t\t\"01_04_14\": \"电力、热力、燃气及水生产和供应业\",\r\n\t\t\t\"01_04_09\": \"01\",\r\n\t\t\t\"01_04_08\": \"11\",\r\n\t\t\t\"01_04_07\": \"34\",\r\n\t\t\t\"01_04_11\": \"131\",\r\n\t\t\t\"01_04_10\": \"02\"\r\n\t\t}\r\n\t},\r\n\t\"retCodet\": \"0000\",\r\n\t\"retMsg\": \"请求成功\"\r\n}', 200, 1, '查询社保公积金', '', 0, 2, '1689142812071', 2, '1689143184433', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (65, 9, '{\r\n\t\"appRes\": {\r\n\t\t\"head\": {\r\n\t\t\t\"timeStamp\": \"20230708214554405\",\r\n\t\t\t\"sendOrder\": \"BD2023070700000003\",\r\n\t\t\t\"appid\": \"00000000001\"\r\n\t\t},\r\n\t\t\"body\": {\r\n\t\t\t\"spidno\": \"522228199005303810\",\r\n\t\t\t\"01_04_16\": \"国有企业\",\r\n\t\t\t\"01_04_15\": \"贵州电网有限责任公司责安供电局\",\r\n\t\t\t\"01_04_14\": \"电力、热力、燃气及水生产和供应业\",\r\n\t\t\t\"01_04_09\": \"01\",\r\n\t\t\t\"01_04_08\": \"11\",\r\n\t\t\t\"01_04_07\": \"34\",\r\n\t\t\t\"01_04_11\": \"131\",\r\n\t\t\t\"01_04_10\": \"02\"\r\n\t\t}\r\n\t},\r\n\t\"retCodet\": \"0000\",\r\n\t\"retMsg\": \"请求成功\"\r\n}', 500, 0, '查询社保公积金-403', '', 0, 2, '1689143062624', 2, '1689143184428', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (66, 10, '{\r\n\r\n -\r\n \"appRes\": {\r\n -\r\n \"head\": {\r\n \"timeStamp\": \"20230708214554405\",\r\n \"sendOrder\": \"BD2023070700000003\",\r\n \"appid\": \"00000000001\"\r\n },\r\n -\r\n \"body\": {\r\n \"spidno\": \"522228199005303810\",\r\n \"01_04_16\": \"国有企业\",\r\n \"01_04_15\": \"贵州电网有限责任公司责安供电局\",\r\n \"01_04_14\": \"电力、热力、燃气及水生产和供应业\",\r\n \"01_04_09\": \"01\",\r\n \"01_04_08\": \"11\",\r\n \"01_04_07\": \"34\",\r\n \"01_04_11\": \"131\",\r\n \"01_04_10\": \"02\"\r\n }\r\n },\r\n \"retCodet\": \"0000\",\r\n \"retMsg\": \"请求成功\"\r\n\r\n}', 200, 1, 't', '', 0, 1, '1689214094950', 1, '1689214097705', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (67, 11, '{\r\n\t\"appRes\": {\r\n\t\t\"head\": {\r\n\t\t\t\"timeStamp\": \"20230708214554405\",\r\n\t\t\t\"sendOrder\": \"BD2023070700000003\",\r\n\t\t\t\"appid\": \"00000000001\"\r\n\t\t},\r\n\t\t\"body\": {\r\n\t\t\t\"spidno\": \"522228199005303810\",\r\n\t\t\t\"01_04_16\": \"国有企业\",\r\n\t\t\t\"01_04_15\": \"贵州电网有限责任公司责安供电局\",\r\n\t\t\t\"01_04_14\": \"电力、热力、燃气及水生产和供应业\",\r\n\t\t\t\"01_04_09\": \"01\",\r\n\t\t\t\"01_04_08\": \"11\",\r\n\t\t\t\"01_04_07\": \"34\",\r\n\t\t\t\"01_04_11\": \"131\",\r\n\t\t\t\"01_04_10\": \"02\"\r\n\t\t}\r\n\t},\r\n\t\"retCode\": \"0000\",\r\n\t\"retMsg\": \"请求成功\"\r\n}', 200, 1, '返回企业社保公积金-json', '', 0, 2, '1689215666373', 2, '1689302952630', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (68, 12, '10040', 200, 1, 'asdf', '', 0, 2, '1689297820090', 2, '1689299752629', null, 'GET');
+INSERT INTO mock_response (response_id, url_id, content, status_code, main, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark, method) VALUES (69, 18, 'asdfasfdasfasfasfdasdfdas', 200, 1, 'asd', '', 0, 2, '1689302217056', 2, '1689302219570', null, 'GET');
+DROP TABLE mock_response_restful;
+CREATE TABLE mock_response_restful (response_id int NOT NULL AUTO_INCREMENT, url_id int NOT NULL, http_method int NOT NULL, content varchar(2000), status_code int, description varchar(500), custom_header varchar(2000), del_flag int DEFAULT 0, create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(200), PRIMARY KEY (response_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO mock_response_restful (response_id, url_id, http_method, content, status_code, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (3, 1, 1, '{\"msg\" : \"success\", \"code\": 666}', 200, 'HEAD 方法的响应不会包含响应正文. 所以返回体可能被调用方忽略。', '', 0, 1, null, 1, '1589770482506', null);
+INSERT INTO mock_response_restful (response_id, url_id, http_method, content, status_code, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (4, 1, 2, '{\"text\": \"创建成功\", \n\"code\" : 10001\n}', 200, '创建资源', '', 0, 1, null, 1, '1589770365834', null);
+INSERT INTO mock_response_restful (response_id, url_id, http_method, content, status_code, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (5, 1, 0, '示例Restful接口请求成功(GET)!!
', 200, '获取资源', '[{\"key\":\"content-type\",\"val\":\"text/html;charset=utf-8\"},{\"key\":\"cookies\",\"val\":\"vmock=test\"}]', 0, 1, '1589770119096', 1, '1589770380264', null);
+INSERT INTO mock_response_restful (response_id, url_id, http_method, content, status_code, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (6, 3, 2, 'restful', 200, 'asdf', '', 0, 2, '1665742483833', 2, '1665742555510', null);
+INSERT INTO mock_response_restful (response_id, url_id, http_method, content, status_code, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (7, 3, 0, 'get-restful', 200, 'get-restful', '', 0, 2, '1665742577444', 2, '1665742577444', null);
+INSERT INTO mock_response_restful (response_id, url_id, http_method, content, status_code, description, custom_header, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (8, 4, 2, '{\r\n \"address\":\"贵阳市观山湖区\",\r\n \"birthDate\":\"19900101\",\r\n \"cardNumber\":\"520101199001013333\",\r\n \"expiredDate\":\"2028年1月1日\",\r\n \"name\":\"张三\",\r\n \"nation\":\"GBN01\",\r\n \"sex\":\"MALE\",\r\n \"signDate\":\"2022年1月1日\",\r\n \"signOrg\":\"XXX公安局\"\r\n }', 200, '张三', '', 0, 2, '1666160069770', 2, '1666161129864', null);
+DROP TABLE mock_url;
+CREATE TABLE mock_url (url_id int NOT NULL AUTO_INCREMENT, url varchar(255), name varchar(150) NOT NULL, description varchar(255), logic varchar(200), del_flag int DEFAULT 0, create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(200), response_type int DEFAULT 1, type varchar(20) DEFAULT 'http', port int DEFAULT 0, PRIMARY KEY (url_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (1, '/test', '示例接口', '示例请求接口, 已启用接收GET的响应体\r\n 访问ip:port/mock/test即可访问到该接口/test', '1', 0, 1, '1577177041874', 2, '1665656226241', null, 2, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (2, '/test2', '测试2', '示例请求接口, 已启用接收GET的响应体 访问ip:port/mock/test2即可访问到该接口test2', '2', 1, 1, '1665653147266', 1, '1665656143459', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (3, '/test3', 'test3', 'test3', '16', 1, 2, '1665742125001', 2, '1665742649912', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (4, '/ocr/idcard', '身份证识别(用户进件)', '', '17,18', 0, 2, '1666083094507', 2, '1675816394195', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (5, '/risk/auth', '风控认证(用户进件)', '', '19,20', 1, 2, '1666166823004', 2, '1666339471744', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (6, '/faceAuth', '人脸识别(用户进件)', '', '29', 0, 2, '1666167537953', 2, '1666167537953', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (7, '/riskAuth', '风控校验(用户进件)', '', '30', 0, 2, '1675816072375', 2, '1675816072375', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (8, '/query/bank/account', '查询银行卡号', '', '34,35,36', 0, 2, '1676276669996', 2, '1676276669996', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (9, '/kuaidata/company', '查询社保公积金', '', '37,38', 0, 2, '1689142780864', 2, '1689142780864', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (10, null, 'test', 'test', null, 1, 1, '1689214043802', 1, '1689214043802', null, 1, 'tcp', 8000);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (11, null, '块数据查询社保公积金', '块数据查询社保公积金', null, 0, 2, '1689215577624', 2, '1689302160359', null, 1, 'tcp', 10010);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (12, null, 'test2', 'test2', null, 1, 2, '1689296857113', 2, '1689296857113', null, 1, 'tcp', 10040);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (13, null, 'test3', 'test3', null, 1, 2, '1689297154366', 2, '1689297154366', null, 1, 'tcp', 10060);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (14, null, 'test', 'test', null, 1, 2, '1689297179592', 2, '1689297179592', null, 1, 'tcp', 10060);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (15, null, 'test', 'test', null, 1, 2, '1689299766165', 2, '1689299766165', null, 1, 'tcp', 10040);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (16, '/test22', 't', 't', '39', 1, 2, '1689300632249', 2, '1689300632249', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (17, '/', 'test', 'test', '', 1, 2, '1689301395829', 2, '1689301395829', null, 1, 'http', 0);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (18, null, 'asdf', 'asfd', null, 1, 2, '1689302193401', 2, '1689302193401', null, 1, 'tcp', 10050);
+INSERT INTO mock_url (url_id, url, name, description, logic, del_flag, create_by, create_time, update_by, update_time, remark, response_type, type, port) VALUES (19, null, 'test', 'test', null, 0, 2, '1689303890560', 2, '1689303890560', null, 1, 'tcp', 10040);
+DROP TABLE mock_url_logic;
+CREATE TABLE mock_url_logic (logic_id int NOT NULL AUTO_INCREMENT, sub_url varchar(200) NOT NULL, del_flag int DEFAULT 0, create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(200), PRIMARY KEY (logic_id), CONSTRAINT sub_url UNIQUE (sub_url)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (1, 'example', 0, 1, '1577177041819', 1, '1577177041819', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (2, 'test2', 0, 1, '1665653147121', 1, '1665653147121', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (16, 'test3', 0, 2, '1665742124906', 2, '1665742124906', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (17, 'ocr', 0, 2, '1666083094331', 2, '1666083094331', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (18, 'idcard', 0, 2, '1666083094366', 2, '1666083094366', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (19, 'risk', 0, 2, '1666166822796', 2, '1666166822796', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (20, 'auth', 0, 2, '1666166822845', 2, '1666166822845', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (29, 'faceAuth', 0, 2, '1666167537837', 2, '1666167537837', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (30, 'riskAuth', 0, 2, '1675816072357', 2, '1675816072357', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (34, 'query', 0, 2, '1676276669942', 2, '1676276669942', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (35, 'bank', 0, 2, '1676276669950', 2, '1676276669950', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (36, 'account', 0, 2, '1676276669952', 2, '1676276669952', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (37, 'kuaidata', 0, 2, '1689142780743', 2, '1689142780743', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (38, 'company', 0, 2, '1689142780792', 2, '1689142780792', null);
+INSERT INTO mock_url_logic (logic_id, sub_url, del_flag, create_by, create_time, update_by, update_time, remark) VALUES (39, 'test22', 0, 2, '1689300630907', 2, '1689300630907', null);
+DROP TABLE sys_config;
+CREATE TABLE sys_config (config_id int NOT NULL AUTO_INCREMENT, config_name varchar(50), config_key varchar(100), config_value varchar(100), create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(200), del_flag int DEFAULT 0, PRIMARY KEY (config_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO sys_config (config_id, config_name, config_key, config_value, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (1, '邀请码', 'system.invitation.code', 'vmock', 1, '1575425366734', 1, '1575958917712', '用户由前台自己注册系统时,需要输入该邀请码验证身份,才能注册成功。', 0);
+DROP TABLE sys_dict_data;
+CREATE TABLE sys_dict_data (dict_code int NOT NULL AUTO_INCREMENT, dict_sort int, dict_label varchar(50), dict_value varchar(50), dict_type varchar(50), css_class varchar(100), list_class varchar(50), is_default varchar(10), create_by int, create_time bigint, update_by int, update_time bigint, remark varchar(200), del_flag int DEFAULT 0, PRIMARY KEY (dict_code)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', 1, 1574842414507, 1, 1574842414507, '性别男', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (2, 2, '女', '1', 'sys_user_sex', '', '', 'N', 1, 1574842414507, 1, 1574842414507, '性别女', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', 1, 1574842414507, 1, 1574842414507, '性别未知', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', 1, 1574842414507, 1, 1574842414507, '显示菜单', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', 1, 1574842414507, 1, 1574842414507, '隐藏菜单', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', 1, 1574842414507, 1, 1574842414507, '正常状态', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', 1, 1574842414507, 1, 1574842414507, '停用状态', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (8, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', 1, 1574842414507, 1, 1574842414507, '系统默认是', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (9, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', 1, 1574842414507, 1, 1574842414507, '系统默认否', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (10, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', 1, 1574842414507, 1, 1574842414507, '正常状态', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (11, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', 1, 1574842414507, 1, 1574842414507, '停用状态', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (12, 0, 'GET', 'GET', 'http_method', '', '', '', 1, 1574842414507, 1, 1574842414507, 'http请求方法', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (13, 1, 'HEAD', 'HEAD', 'http_method', '', '', '', 1, 1574842439909, 1, 1574842439909, 'http请求方法', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (14, 2, 'POST', 'POST', 'http_method', '', '', '', 1, 1574842448104, 1, 1574842448104, 'http请求方法', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (15, 3, 'PUT', 'PUT', 'http_method', '', '', '', 1, 1574842456031, 1, 1574842456031, 'http请求方法', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (16, 4, 'PATCH', 'PATCH', 'http_method', '', '', '', 1, 1574842473821, 1, 1574842473821, 'http请求方法', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (17, 5, 'DELETE', 'DELETE', 'http_method', '', '', '', 1, 1574842482767, 1, 1574842482767, 'http请求方法', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (18, 6, 'OPTIONS', 'OPTIONS', 'http_method', '', '', '', 1, 1574842497976, 1, 1574842497976, 'http请求方法', 0);
+INSERT INTO sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (19, 7, 'TRACE', 'TRACE', 'http_method', '', '', '', 1, 1574842506060, 1, 1574842506060, 'http请求方法', 0);
+DROP TABLE sys_dict_type;
+CREATE TABLE sys_dict_type (dict_id int NOT NULL AUTO_INCREMENT, dict_name varchar(50), dict_type varchar(50), create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(20), del_flag int DEFAULT 0, PRIMARY KEY (dict_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (1, '用户性别', 'sys_user_sex', 1, '2018-03-16 11:33:00', 1, '2018-03-16 11:33:00', '用户性别列表', null);
+INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (2, '菜单状态', 'sys_show_hide', 1, '2018-03-16 11:33:00', 1, '2018-03-16 11:33:00', '菜单状态列表', null);
+INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (3, '系统开关', 'sys_normal_disable', 1, '2018-03-16 11:33:00', 1, '2018-03-16 11:33:00', '系统开关列表', null);
+INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (4, '系统是否', 'sys_yes_no', 1, '2018-03-16 11:33:00', 1, '2018-03-16 11:33:00', '系统是否列表', null);
+INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (5, '系统状态', 'sys_common_status', 1, '2018-03-16 11:33:00', 1, '2018-03-16 11:33:00', '登录状态列表', null);
+INSERT INTO sys_dict_type (dict_id, dict_name, dict_type, create_by, create_time, update_by, update_time, remark, del_flag) VALUES (6, '请求方式', 'http_method', 1, '1574841344757', 1, '1574841344757', '', 0);
+DROP TABLE sys_menu;
+CREATE TABLE sys_menu (menu_id int NOT NULL AUTO_INCREMENT, menu_name varchar(50), parent_id int, order_num int, url varchar(200), target varchar(50), menu_type varchar(10), visible int, icon varchar(50), create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(200), user_display int DEFAULT 1, del_flag int DEFAULT 0, PRIMARY KEY (menu_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, url, target, menu_type, visible, icon, create_by, create_time, update_by, update_time, remark, user_display, del_flag) VALUES (1, '用户管理', 0, 1, '/system/user', 'menuItem', '3', 0, 'fa fa-user', 1, '1574406396326', 1, '1574406396326', '用户管理菜单', 0, 0);
+INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, url, target, menu_type, visible, icon, create_by, create_time, update_by, update_time, remark, user_display, del_flag) VALUES (2, '系统参数', 0, 7, '/system/config', 'menuItem', '3', 0, 'fa fa-cogs', 1, '1574406396326', 1, '1574406396326', '参数设置菜单', 0, 0);
+INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, url, target, menu_type, visible, icon, create_by, create_time, update_by, update_time, remark, user_display, del_flag) VALUES (3, '接口日志', 0, 2, '/system/log', 'menuItem', '3', 0, 'fa fa-book', 1, '1574406396326', 1, '1574406396326', '操作日志菜单', 1, 0);
+INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, url, target, menu_type, visible, icon, create_by, create_time, update_by, update_time, remark, user_display, del_flag) VALUES (4, '接口一览', 0, 1, '/system/url', 'menuItem', '3', 0, 'fa fa-cloud', 1, '1574406396326', 1, '1574406396326', 'url路径菜单', 1, 0);
+DROP TABLE sys_user;
+CREATE TABLE sys_user (user_id int NOT NULL AUTO_INCREMENT, login_name varchar(100) NOT NULL, user_name varchar(100), user_type int DEFAULT 0, email varchar(100), phonenumber varchar(20), sex int, avatar varchar(500), password varchar(100), salt varchar(64), status int DEFAULT 0, del_flag int DEFAULT 0, login_ip varchar(128), login_date varchar(20), create_by int, create_time varchar(20), update_by int, update_time varchar(20), remark varchar(200), PRIMARY KEY (user_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_0900_ai_ci;
+INSERT INTO sys_user (user_id, login_name, user_name, user_type, email, phonenumber, sex, avatar, password, salt, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) VALUES (1, 'admin', '超级管理员', 1, '', '15085958874', 1, '', '1e6d75ed12d1732bde729412f4795a95', 'fc4a41', 0, 0, '192.168.3.20', '1665653236268', 0, '1574406396326', 1, '1665653236268', '管理员,能多看见【用户管理】和【系统参数】');
+INSERT INTO sys_user (user_id, login_name, user_name, user_type, email, phonenumber, sex, avatar, password, salt, status, del_flag, login_ip, login_date, create_by, create_time, update_by, update_time, remark) VALUES (2, 'test', '测试用户', 0, '', '15085958874', 0, null, '364b9a06fffc29b3832e8eac62a69b32', '530ef8', 0, 0, '172.31.243.21', '1689302132685', 1, '1665653206543', 2, '1689302132692', '');
diff --git a/pom.xml b/pom.xml
index a200575e240b22548eb777f387c4a39a645dc544..b0b5902db56de98d9889e558cf2175987a263071 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,14 +3,14 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.vmock
- v-mock
+ com.gysnh
+ mock
1.0.0
jar
- V-Mock
+ Mock-Service
- V-Mock 杞婚噺绾ф帴鍙fā鎷
+ 鍐滃晢绉戦噾mock service
org.springframework.boot
@@ -26,8 +26,8 @@
5.1.4
1.5.3
1.1.14
- 1.18.10
- 3.17
+ 1.18.24
+ 5.2.2
3.2.0
3.31.1
5.0.6
@@ -47,8 +47,11 @@
mybatis-plus-boot-starter
${mybatis.plus.version}
-
-
+
+ mysql
+ mysql-connector-java
+ runtime
+
org.xerial
sqlite-jdbc
diff --git a/src/main/java/com/vmock/biz/controller/LogController.java b/src/main/java/com/vmock/biz/controller/LogController.java
index 089c3361b36a664b783b00eb56d2f53e1acf9c3d..cb6cb9e00242afc67c775810a81def82e34006dc 100644
--- a/src/main/java/com/vmock/biz/controller/LogController.java
+++ b/src/main/java/com/vmock/biz/controller/LogController.java
@@ -67,10 +67,31 @@ public class LogController extends BaseController {
Log mockLog = mockLogService.getById(logId);
String requestDetail = mockLog.getRequestDetail();
mmap.put("mockLog", mockLog);
- mmap.put("requestDetail", JSONUtil.parseObj(requestDetail));
+ boolean json = JSONUtil.isJson(requestDetail);
+ if (json){
+ mmap.put("requestDetail", JSONUtil.parseObj(requestDetail));
+ }else {
+ mmap.put("requestDetail", requestDetail);
+ }
+
return PREFIX + "/requestdetail";
}
+ @GetMapping("/requestTcp/{logId}")
+ public String requestTcpDetail(@PathVariable("logId") Long logId, ModelMap mmap) {
+ Log mockLog = mockLogService.getById(logId);
+ String requestDetail = mockLog.getRequestDetail();
+ mmap.put("mockLog", mockLog);
+ boolean json = JSONUtil.isJson(requestDetail);
+ if (json){
+ mmap.put("requestDetail", JSONUtil.parseObj(requestDetail));
+ }else {
+ mmap.put("requestDetail", requestDetail);
+ }
+
+ return PREFIX + "/requestdetailTcp";
+ }
+
@GetMapping("/response/{logId}")
public String responseDetail(@PathVariable("logId") Long logId, ModelMap mmap) {
Log mockLog = mockLogService.getById(logId);
@@ -79,4 +100,18 @@ public class LogController extends BaseController {
mmap.put("responseDetail", JSONUtil.parseObj(responseDetail));
return PREFIX + "/responsedetail";
}
+ @GetMapping("/responseTcp/{logId}")
+ public String responseTcpDetail(@PathVariable("logId") Long logId, ModelMap mmap) {
+ Log mockLog = mockLogService.getById(logId);
+ String responseDetail = mockLog.getResponseDetail();
+ mmap.put("mockLog", mockLog);
+ boolean json = JSONUtil.isJson(responseDetail);
+ if (json){
+ mmap.put("responseDetail", JSONUtil.parseObj(responseDetail));
+ }else {
+ mmap.put("responseDetail", responseDetail);
+ }
+ return PREFIX + "/responsedetailTcp";
+ }
+
}
diff --git a/src/main/java/com/vmock/biz/controller/ResponseController.java b/src/main/java/com/vmock/biz/controller/ResponseController.java
index 6fa1a5ea0d630ff153590c8248355982ea7842c3..277b1499c7cc44d60fcfbc611cc49253d489150f 100644
--- a/src/main/java/com/vmock/biz/controller/ResponseController.java
+++ b/src/main/java/com/vmock/biz/controller/ResponseController.java
@@ -4,8 +4,11 @@ import com.vmock.base.utils.ExcelUtil;
import com.vmock.base.vo.Result;
import com.vmock.base.vo.TableDataVo;
import com.vmock.biz.entity.Response;
+import com.vmock.biz.entity.Url;
import com.vmock.biz.enums.ResponseTypeEnum;
import com.vmock.biz.service.IResponseService;
+import com.vmock.biz.service.IUrlService;
+import com.vmock.biz.tcp.TcpServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@@ -28,6 +31,10 @@ public class ResponseController extends BaseController {
@Autowired
private IResponseService mockResponseService;
+ @Autowired
+ private TcpServer tcpServer;
+ @Autowired
+ private IUrlService mockUrlService;
@GetMapping
public String response(String urlId, Integer type, ModelMap mmap) {
@@ -96,6 +103,9 @@ public class ResponseController extends BaseController {
@PostMapping("/edit")
@ResponseBody
public Result editSave(Response mockResponse) {
+ if (null != mockResponse.getMain() && 1 == mockResponse.getMain() ){
+ restartServer(mockResponse.getResponseId());
+ }
return create(mockResponseService.updateById(mockResponse));
}
@@ -118,15 +128,27 @@ public class ResponseController extends BaseController {
@ResponseBody
public Result changeMain(@PathVariable(name = "responseId") Long responseId, @RequestParam Integer main) {
mockResponseService.changeMain(responseId, main);
+ restartServer(responseId);
return Result.success();
}
+ private void restartServer(Long responseId) {
+ Response resp = mockResponseService.selectResponseById(responseId);
+ Url url = mockUrlService.selectOneUrlById(String.valueOf(resp.getUrlId()));
+ tcpServer.removeServer(String.valueOf(url.getUrlId()));
+ tcpServer.addServer(url);
+ }
+
/**
* 鍒犻櫎杩斿洖浣
*/
@DeleteMapping
@ResponseBody
public Result remove(String ids) {
+ Response resp = mockResponseService.selectResponseById(Long.valueOf(ids));
+ if (null != resp.getMain() && 1 == resp.getMain() ){
+ restartServer(resp.getResponseId());
+ }
return create(mockResponseService.removeById(ids));
}
}
diff --git a/src/main/java/com/vmock/biz/controller/UrlController.java b/src/main/java/com/vmock/biz/controller/UrlController.java
index e866770d7535f8bccdfa93d380eaa96dbe769370..4d5f83a5fcad7b4e8ca38464ebb2f9fed54d2ef2 100644
--- a/src/main/java/com/vmock/biz/controller/UrlController.java
+++ b/src/main/java/com/vmock/biz/controller/UrlController.java
@@ -5,6 +5,7 @@ import com.vmock.base.vo.Result;
import com.vmock.base.vo.TableDataVo;
import com.vmock.biz.entity.Url;
import com.vmock.biz.service.IUrlService;
+import com.vmock.biz.tcp.TcpServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
@@ -27,6 +28,8 @@ public class UrlController extends BaseController {
@Autowired
private IUrlService mockUrlService;
+ @Autowired
+ private TcpServer tcpServer;
@GetMapping
public String url() {
@@ -66,6 +69,7 @@ public class UrlController extends BaseController {
return PREFIX + "/add";
}
+
/**
* 鏂板淇濆瓨url璺緞
*/
@@ -75,6 +79,27 @@ public class UrlController extends BaseController {
return create(mockUrlService.insertMockUrl(mockUrl));
}
+
+ /**
+ * 鏂板tcp璺緞
+ */
+ @GetMapping("/addtcp")
+ public String addTcp() {
+ return PREFIX + "/addtcp";
+ }
+
+
+ /**
+ * 鏂板淇濆瓨url璺緞
+ */
+ @PostMapping("/addtcp")
+ @ResponseBody
+ public Result addTcpSave(Url mockUrl) {
+ Result result = create(mockUrlService.insertMockUrl(mockUrl));
+ tcpServer.addServer(mockUrl);
+ return result;
+ }
+
/**
* 淇敼url璺緞
*/
@@ -85,6 +110,13 @@ public class UrlController extends BaseController {
return PREFIX + "/edit";
}
+ @GetMapping("/edittcp/{urlId}")
+ public String edittcp(@PathVariable("urlId") Long urlId, ModelMap mmap) {
+ Url mockUrl = mockUrlService.getById(urlId);
+ mmap.put("mockUrl", mockUrl);
+ return PREFIX + "/edittcp";
+ }
+
/**
* 淇敼淇濆瓨url璺緞
*/
@@ -93,15 +125,26 @@ public class UrlController extends BaseController {
@PostMapping("/edit")
@ResponseBody
public Result editSave(Url mockUrl) {
+ tcpServer.removeServer(String.valueOf(mockUrl.getUrlId()));
+ tcpServer.addServer(mockUrl);
return create(mockUrlService.updateMockUrl(mockUrl));
}
+ @PostMapping("/edittcp")
+ @ResponseBody
+ public Result edittcpSave(Url mockUrl) {
+ tcpServer.removeServer(String.valueOf(mockUrl.getUrlId()));
+ tcpServer.addServer(mockUrl);
+ return create(mockUrlService.updateTcp(mockUrl));
+ }
+
/**
* 鍒犻櫎url
*/
@DeleteMapping
@ResponseBody
public Result remove(String ids) {
+ tcpServer.removeServer(ids);
return create(mockUrlService.deleteMockUrlByIds(ids));
}
@@ -115,6 +158,11 @@ public class UrlController extends BaseController {
return mockUrlService.isUniqueUrl(url, urlId);
}
+ @GetMapping("/checkPort")
+ @ResponseBody
+ public Boolean checkPort(Integer port, Long urlId) {
+ return mockUrlService.isUniquePort(port, urlId);
+ }
/**
* 璇︽儏椤
diff --git a/src/main/java/com/vmock/biz/entity/Url.java b/src/main/java/com/vmock/biz/entity/Url.java
index 84b6d3587233e65d6b0e923d65d9a6e361d573f3..0cebf93e8615deab379f473beba5ca416117c2cc 100644
--- a/src/main/java/com/vmock/biz/entity/Url.java
+++ b/src/main/java/com/vmock/biz/entity/Url.java
@@ -16,6 +16,8 @@ import lombok.Data;
@TableName("mock_url")
public class Url extends BaseEntity {
+
+
/**
* 涓婚敭
*/
@@ -28,6 +30,18 @@ public class Url extends BaseEntity {
@Excel(name = "url璺緞锛宲ath浼犲弬浣嶇疆鐢▄path}鍗犱綅")
private String url;
+ /**
+ * url璺緞锛宲ath浼犲弬浣嶇疆鐢▄path}鍗犱綅
+ */
+ @Excel(name = "url璺緞锛宲ath浼犲弬浣嶇疆鐢▄path}鍗犱綅")
+ private Integer port;
+
+ /**
+ * url鍚嶇О
+ */
+ @Excel(name = "url鍚嶇О")
+ private String type;
+
/**
* url鍚嶇О
*/
diff --git a/src/main/java/com/vmock/biz/mapper/UrlMapper.java b/src/main/java/com/vmock/biz/mapper/UrlMapper.java
index 6e021589c53a4963170d79a5efccbba1f19686e9..d9f15ac737ff3350b519145ca07d05dba9824871 100644
--- a/src/main/java/com/vmock/biz/mapper/UrlMapper.java
+++ b/src/main/java/com/vmock/biz/mapper/UrlMapper.java
@@ -11,4 +11,6 @@ import com.vmock.biz.entity.Url;
*/
public interface UrlMapper extends BaseMapper {
+
+
}
diff --git a/src/main/java/com/vmock/biz/service/IResponseService.java b/src/main/java/com/vmock/biz/service/IResponseService.java
index e16fbe1d4df5d526518bd141dfe638c67ac5de9b..ffc5b78771f4d9f363b08f43b61d7c12973e4ee1 100644
--- a/src/main/java/com/vmock/biz/service/IResponseService.java
+++ b/src/main/java/com/vmock/biz/service/IResponseService.java
@@ -36,4 +36,11 @@ public interface IResponseService extends IService {
* @return MockResponse
*/
Response selectMainResponse(Long urlId);
+
+ /**
+ * 鏍规嵁杩斿洖淇℃伅id鏌ヨ杩斿洖浣
+ * @param responseId
+ * @return
+ */
+ Response selectResponseById(Long responseId);
}
diff --git a/src/main/java/com/vmock/biz/service/IUrlService.java b/src/main/java/com/vmock/biz/service/IUrlService.java
index bfd2aa589ebb7a40bf9637c4d308d638d98d7a08..76b3c823ea8e354ce11d71041d1a365c084b1be2 100644
--- a/src/main/java/com/vmock/biz/service/IUrlService.java
+++ b/src/main/java/com/vmock/biz/service/IUrlService.java
@@ -63,7 +63,6 @@ public interface IUrlService extends IService {
/**
* 澶勭悊url涓簂ogic
- *
* @param url 鍏ュ弬url
* @return 澶勭悊濂界殑logic瀛楁
*/
@@ -71,7 +70,6 @@ public interface IUrlService extends IService {
/**
* 澶勭悊url鏍煎紡
- *
* @param url url鏍煎紡
* @return 绠鍗曞鐞嗗悗鐨剈rl
*/
@@ -79,27 +77,30 @@ public interface IUrlService extends IService {
/**
* url unique check
- *
* @param url url path
* @param urlId has id, for edit page
* @return true锛氬敮涓url锛 false 涓嶅敮涓
*/
boolean isUniqueUrl(String url, Long urlId);
+ Boolean isUniquePort(Integer checkPort, Long urlId);
+
/**
* 鏍规嵁閫昏緫鍒涘缓姝e垯鏌rl
- *
* @param requestUrlLogic logic string
* @return mockUrl entity
*/
Url getUrlByRegexp(String requestUrlLogic);
-
/**
* 淇敼杩斿洖绫诲瀷
- *
* @param urlId url涓婚敭
* @param type 鐩爣杩斿洖绫诲瀷
*/
void changeResponseType(Long urlId, Integer type);
+
+ Url selectOneUrlById(String ids);
+
+ boolean updateTcp(Url mockUrl);
+
}
diff --git a/src/main/java/com/vmock/biz/service/impl/ResponseServiceImpl.java b/src/main/java/com/vmock/biz/service/impl/ResponseServiceImpl.java
index 8bff7501fed095656dd3f1a7279ecfe8029ae4a7..5b5d7a017fdb6e16def91db30a620f69f49efdc2 100644
--- a/src/main/java/com/vmock/biz/service/impl/ResponseServiceImpl.java
+++ b/src/main/java/com/vmock/biz/service/impl/ResponseServiceImpl.java
@@ -85,4 +85,11 @@ public class ResponseServiceImpl extends ServiceImpl i
// limit
.last(CommonConst.LIMIT_ONE));
}
+
+ @Override
+ public Response selectResponseById(Long responseId) {
+ return this.getOne(Wrappers.lambdaQuery()
+ .eq(Response::getResponseId, responseId)
+ .last(CommonConst.LIMIT_ONE));
+ }
}
diff --git a/src/main/java/com/vmock/biz/service/impl/UrlLogicServiceImpl.java b/src/main/java/com/vmock/biz/service/impl/UrlLogicServiceImpl.java
index 7b399818798824888459ed2ee43c9904fafc1a96..28af7f99d428be39e2721f120f2466c5fb2eb9b0 100644
--- a/src/main/java/com/vmock/biz/service/impl/UrlLogicServiceImpl.java
+++ b/src/main/java/com/vmock/biz/service/impl/UrlLogicServiceImpl.java
@@ -38,6 +38,9 @@ public class UrlLogicServiceImpl extends ServiceImpl i
public List insertByUrl(String url) {
// 鏍规嵁鏂滅嚎鍒嗗壊 鎻掑叆閫昏緫琛
String[] subUrls = url.split("\\/");
+ if (subUrls.length == 0) {
+ return new ArrayList();
+ }
List mockUrlLogics = new ArrayList<>();
// 鍋氭垚闆嗗悎鎵归噺鎻掑叆
// db sub_url鏄 UNIQUE锛屽苟 ON CONFLICT IGNORE锛屼笉浼氶噸澶嶃
diff --git a/src/main/java/com/vmock/biz/service/impl/UrlServiceImpl.java b/src/main/java/com/vmock/biz/service/impl/UrlServiceImpl.java
index 764b897088c93572d28b280288e30e4be2df90de..b76b71c8411fe330b0ab788e892e9e30dac91cb5 100644
--- a/src/main/java/com/vmock/biz/service/impl/UrlServiceImpl.java
+++ b/src/main/java/com/vmock/biz/service/impl/UrlServiceImpl.java
@@ -8,6 +8,7 @@ import com.vmock.base.constant.CommonConst;
import com.vmock.base.utils.DataBaseUtils;
import com.vmock.biz.entity.Url;
import com.vmock.biz.entity.UrlLogic;
+import com.vmock.biz.tcp.ProtocolTypeEnum;
import com.vmock.biz.mapper.UrlMapper;
import com.vmock.biz.service.IUrlLogicService;
import com.vmock.biz.service.IUrlService;
@@ -92,13 +93,23 @@ public class UrlServiceImpl extends ServiceImpl implements IUrlS
@Transactional(rollbackFor = Exception.class)
@Override
public boolean insertMockUrl(Url mockUrl) {
- // url format
- String url = this.formatUrlStr(mockUrl.getUrl());
- // logic insert
- String urlLogic = this.insertUrlLogic(url);
- // 淇濆瓨杞崲鍚庣殑logic
- mockUrl.setLogic(urlLogic);
- return this.save(mockUrl);
+
+ if (ProtocolTypeEnum.HTTP.getCode().equals(mockUrl.getType())){
+ // url format
+ String url = this.formatUrlStr(mockUrl.getUrl());
+ // logic insert
+ String urlLogic = this.insertUrlLogic(url);
+ // 淇濆瓨杞崲鍚庣殑logic
+ mockUrl.setLogic(urlLogic);
+ return this.save(mockUrl);
+ }else if (ProtocolTypeEnum.TCP.getCode().equals(mockUrl.getType())){
+ Integer port = mockUrl.getPort();
+
+ System.out.println("port = "+port);
+ return this.save(mockUrl);
+ }else {
+ return false;
+ }
}
/**
@@ -144,7 +155,6 @@ public class UrlServiceImpl extends ServiceImpl implements IUrlS
/**
* url unique check
- *
* @param url url path
* @param urlId, for edit page
*/
@@ -160,6 +170,17 @@ public class UrlServiceImpl extends ServiceImpl implements IUrlS
return count == 0;
}
+ @Override
+ public Boolean isUniquePort(Integer checkPort, Long urlId){
+ // format url
+ int count = this.count(Wrappers.lambdaQuery()
+ // url
+ .eq(Url::getPort, checkPort)
+ // id
+ .notIn(urlId != null, Url::getUrlId, urlId));
+ return count == 0;
+ }
+
/**
* 鏍规嵁閫昏緫鍒涘缓姝e垯鏌rl
*
@@ -206,6 +227,11 @@ public class UrlServiceImpl extends ServiceImpl implements IUrlS
this.updateById(urlEntity);
}
+ @Override
+ public Url selectOneUrlById(String id) {
+ return this.getOne(Wrappers.lambdaQuery().eq(Url::getUrlId, id));
+ }
+
/**
* 淇敼url璺緞
*
@@ -223,6 +249,22 @@ public class UrlServiceImpl extends ServiceImpl implements IUrlS
return this.updateById(mockUrl);
}
+ /**
+ * 鏇存柊tcp
+ * @param mockUrl
+ * @return
+ */
+ @Override
+ public boolean updateTcp(Url mockUrl) {
+ // url澶勭悊
+ Integer port = mockUrl.getPort();
+ if (port > 0 && port < 65536){
+ return this.updateById(mockUrl);
+ }else {
+ return false;
+ }
+ }
+
/**
* 鍒犻櫎url璺緞瀵硅薄
*
diff --git a/src/main/java/com/vmock/biz/tcp/ProtocolTypeEnum.java b/src/main/java/com/vmock/biz/tcp/ProtocolTypeEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..c940ad2ff51ed180fc71e0fa399148bca29c25b5
--- /dev/null
+++ b/src/main/java/com/vmock/biz/tcp/ProtocolTypeEnum.java
@@ -0,0 +1,31 @@
+package com.vmock.biz.tcp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 鍗忚绫诲瀷鏋氫妇
+ *
+ * @author wlz
+ * @since 2023骞7鏈12鏃22:53:13
+ */
+@Getter
+@AllArgsConstructor
+public enum ProtocolTypeEnum {
+
+ /**
+ * 鏅氱敤鎴
+ */
+ TCP("tcp"),
+
+ /**
+ * admin
+ */
+ HTTP("http");
+
+ /**
+ * 绫诲瀷鍊
+ */
+ private String code;
+
+}
diff --git a/src/main/java/com/vmock/biz/tcp/TcpConn.java b/src/main/java/com/vmock/biz/tcp/TcpConn.java
new file mode 100644
index 0000000000000000000000000000000000000000..ed76ee467bb0e0c2fd45280af7bf5a2684e9790a
--- /dev/null
+++ b/src/main/java/com/vmock/biz/tcp/TcpConn.java
@@ -0,0 +1,201 @@
+package com.vmock.biz.tcp;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.vmock.biz.entity.Log;
+import com.vmock.biz.entity.Response;
+import com.vmock.biz.entity.Url;
+import com.vmock.biz.service.ILogService;
+import com.vmock.biz.service.IResponseService;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.SocketException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+
+//@Component
+//@Scope("prototype")
+@Getter
+@Setter
+@Slf4j
+public class TcpConn {
+
+
+ private static Integer port;
+ private TcpServerStatusEnum status;
+ private ServerSocket serverSocket ;
+ private Thread masterThread ;
+ private Response response;
+ private Url item;
+ private IResponseService responseService;
+ private ILogService logService;
+// private Executors
+ public TcpConn(Url item, IResponseService responseService, ILogService logService) {
+ this.responseService = responseService;
+ this.item = item;
+ this.logService = logService;
+ try {
+ serverSocket = new ServerSocket(item.getPort());
+ status = TcpServerStatusEnum.RUNING;
+ } catch (IOException e) {
+ log.info(item.getPort() +" 鍚姩澶辫触: "+e.getMessage());
+ return;
+ }
+ this.masterThread = new Thread(new TcpMaster(serverSocket,item,logService),"boss-thread-"+(item.getPort()));
+ this.masterThread.start();
+ log.info(item.getPort()+" 鏈嶅姟鍚姩 success thread = "+masterThread.getName());
+ }
+
+ private class Workthrad implements ThreadFactory{
+ private int workthradnum = 0 ;
+ public Workthrad(int workthradnum){
+ this.workthradnum = workthradnum;
+ }
+ @Override
+ public Thread newThread(Runnable r) {
+ return new Thread(r,Thread.currentThread().getName()+"-work-thread-"+(++workthradnum));
+ }
+
+ }
+ private class TcpMaster implements Runnable {
+ private int workthradnum = 0;
+ ServerSocket serverSocket;
+ private ILogService logService;
+ Url item;
+ public TcpMaster(ServerSocket serverSocket, Url item,ILogService logService) {
+ this.serverSocket = serverSocket;
+ this.item = item;
+ this.logService = logService;
+ }
+
+ @Override
+ public void run() {
+ ExecutorService executorService = Executors.newFixedThreadPool(5,new Workthrad(workthradnum));
+ Response response = responseService.selectMainResponse(item.getUrlId());
+ while (TcpServerStatusEnum.RUNING.equals(status)){
+ try {
+ Socket client = serverSocket.accept();
+ executorService.submit(new tcpWorker(client,response,logService));
+ }catch(SocketException e1){
+ log.warn(serverSocket.getLocalPort()+" 鏈嶅姟鍏抽棴: {}",e1.getMessage());
+ } catch (IOException e) {
+ log.error(serverSocket.getLocalPort()+" 鏈嶅姟鍏抽棴寮傚父: {}",e.getMessage());
+ throw new RuntimeException(e);
+ }
+ }
+ log.info(item.getPort()+" 鏈嶅姟鍋滄锛"+status.getStatus());
+
+ }
+ }
+
+
+ private static class tcpWorker implements Runnable {
+
+ private Socket client;
+ private Response response ;
+ private ILogService logService;
+ public tcpWorker(Socket client, Response response, ILogService logService) {
+ this.client = client;
+ this.response = response;
+ this.logService = logService;
+ }
+
+ @Override
+ public void run() {
+ log.info(client.getRemoteSocketAddress().toString());
+ OutputStream outputStream = null;
+ InputStream inputStream = null;
+ ByteArrayOutputStream outByte = null;
+ String req = null;
+ try {
+ byte [] buff = new byte[1024];
+ int len = 0;
+ inputStream = client.getInputStream();
+ outByte = new ByteArrayOutputStream();
+ while ( ( len = inputStream.read(buff)) > 0 ){
+ outByte.write(buff,0,len);
+ if (len < buff.length) {
+ break;
+ }
+ }
+ req = outByte.toString();
+ log.info("鏀跺埌鎶ユ枃锛歔 {} ]",req);
+ outputStream = client.getOutputStream();
+ if (response == null || outByte.toString().contains("/favicon.ico")) {
+ String resp = "{\"hi\":\"hello world\"}";
+ log.info("杩斿洖鎶ユ枃锛歔 {} ]",resp);
+ recodeLog(logService,req,resp);
+ outputStream.write(resp.getBytes());
+ }else {
+ byte[] resBytes = response.getContent().getBytes();
+ String headlens = StringUtils.leftPad(String.valueOf(resBytes.length), 10, "0");
+ log.info("headlen =[ {} ]",headlens);
+// String resp = headlens + response.getContent();
+ String resp = response.getContent();
+ log.info("杩斿洖鎶ユ枃锛歔 {} ]",resp);
+ recodeLog(logService,req,resp);
+ outputStream.write(resp.getBytes());
+ }
+ outputStream.flush();
+ client.close();
+ } catch (IOException e) {
+ log.warn("outputStream closed",e);
+ throw new RuntimeException(e);
+ }finally {
+ try {
+ if (inputStream != null) {
+ inputStream.close();
+ }
+ if (outputStream != null) {
+ outputStream.close();
+ }
+ if (outByte != null) {
+ outByte.close();
+ }
+ } catch (IOException e) {
+ log.error("鍏抽棴娴侀敊璇紒",e);
+ }
+ }
+ }
+
+ private void recodeLog(ILogService logService, String req, String resp) {
+ Log mockLog = new Log();
+ // 鍛戒腑url锛岀郴缁熶腑閰嶇疆鐨勶紝鍙兘鏄甫path鍗犱綅绗︾殑
+ mockLog.setHitUrl(String.valueOf(port));
+ // 瀹為檯url
+ mockLog.setRequestUrl(client.getRemoteSocketAddress().toString());
+ // ip
+ mockLog.setRequestIp(client.getRemoteSocketAddress().toString());
+ // request method
+ mockLog.setRequestMethod("Socket");
+ // request detail
+ mockLog.setRequestDetail(req);
+ // 鏃ュ織澶勭悊锛屽彧鏈夋垚鍔熷懡涓殑鍦哄悎鎵嶈褰曡缁嗭紝闃叉浜х敓杩囧鍨冨溇鏁版嵁銆
+// JSONObject responseDetailJson = new JSONObject();
+// // 鍝嶅簲http鐮
+// responseDetailJson.put("respStatus", "200");
+// // header
+//// String customHeader = mockResponse.getCustomHeader();
+//// if (StrUtil.isNotBlank(customHeader)) {
+//// responseDetailJson.put("respHeader", new JSONArray(customHeader));
+//// }
+// // 鐩稿簲鍐呭
+// responseDetailJson.put("respContent", resp);
+ // response detail
+ mockLog.setResponseDetail(resp);
+ // 寮傛鎻掑叆
+ logService.asyncInsert(mockLog);
+ }
+ }
+}
diff --git a/src/main/java/com/vmock/biz/tcp/TcpServer.java b/src/main/java/com/vmock/biz/tcp/TcpServer.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb6e3703053ad1d019355a25f363399e22c7675c
--- /dev/null
+++ b/src/main/java/com/vmock/biz/tcp/TcpServer.java
@@ -0,0 +1,74 @@
+package com.vmock.biz.tcp;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.servlet.ServletUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.vmock.base.core.response.IMockResponse;
+import com.vmock.base.utils.BizUtils;
+import com.vmock.biz.entity.Log;
+import com.vmock.biz.entity.Response;
+import com.vmock.biz.entity.Url;
+import com.vmock.biz.service.ILogService;
+import com.vmock.biz.service.IResponseService;
+import com.vmock.biz.service.IUrlService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+@Slf4j
+@Component
+public class TcpServer {
+
+ private static ConcurrentMap serverMap = new ConcurrentHashMap(10) ;
+
+ @Autowired
+ private IUrlService mockUrlService;
+
+ @Autowired
+ private IResponseService mockResponseService;
+
+ @Autowired
+ private ILogService logService;
+ @PostConstruct
+ public void init(){
+ List urls = mockUrlService.selectMockUrlList(new Url());
+ urls.stream().filter(item->(item.getType().equals(ProtocolTypeEnum.TCP.getCode()))).forEach((item)->{
+ serverMap.put(item.getPort(),new TcpConn(item, mockResponseService,logService));
+ });
+ log.info("TCP server num = "+ serverMap.size());
+ }
+
+ public void removeServer(String id) {
+ Url url = mockUrlService.selectOneUrlById(id);
+ if (null != url && ProtocolTypeEnum.TCP.getCode().equals(url.getType())){
+ TcpConn tcpConn = serverMap.get(url.getPort());
+ tcpConn.setStatus(TcpServerStatusEnum.STOP);
+ serverMap.remove(url.getPort());
+ try {
+ ServerSocket ss = tcpConn.getServerSocket();
+ if (ss != null) {
+ tcpConn.getServerSocket().close();
+ }
+ log.info(url.getPort()+" 鏈嶅姟绉诲嚭锛");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+
+ public void addServer(Url item) {
+ if (null != item){
+ Response response = mockResponseService.selectMainResponse(item.getUrlId());
+ serverMap.put(item.getPort(),new TcpConn(item, mockResponseService, logService));
+ }
+ }
+}
diff --git a/src/main/java/com/vmock/biz/tcp/TcpServerStatusEnum.java b/src/main/java/com/vmock/biz/tcp/TcpServerStatusEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..a23feea6deb35516f2449701c338d21b0736d212
--- /dev/null
+++ b/src/main/java/com/vmock/biz/tcp/TcpServerStatusEnum.java
@@ -0,0 +1,21 @@
+package com.vmock.biz.tcp;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum TcpServerStatusEnum {
+
+ RUNING(1,"runing"),
+
+ STOP(0,"stop");
+
+ ;
+
+ private Integer code;
+
+ private String status;
+
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 38716df7b4b180fc3db39891d50e0ca7e19272a7..89460cc32c6e277ccddc9e51fad5139b115c8277 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,6 +1,101 @@
+#server:
+# # 绔彛
+# port: 80
+# servlet:
+# # 璁块棶璺緞
+# context-path: /
+# tomcat:
+# # tomcat鐨刄RI缂栫爜
+# uri-encoding: UTF-8
+# # tomcat鏈澶х嚎绋嬫暟
+# max-threads: 400
+# # tomcat鍒濆鍖栫殑绾跨▼鏁
+# min-spare-threads: 30
+#
+## 鏃ュ織閰嶇疆
+#logging:
+# level:
+# com.vmock: debug
+# org.springframework: warn
+#
+## Spring閰嶇疆
+#spring:
+# # 妯℃澘寮曟搸
+# thymeleaf:
+# mode: HTML
+# encoding: utf-8
+# # 绂佺敤缂撳瓨
+# cache: false
+# jackson:
+# time-zone: GMT+8
+# date-format: yyyy-MM-dd HH:mm:ss
+# profiles:
+# active: druid
+# datasource:
+# type: com.alibaba.druid.pool.DruidDataSource
+# driverClassName: org.sqlite.JDBC
+# druid:
+# # 鏁版嵁婧
+# url: jdbc:sqlite::resource:db/v-mock.sqlite
+# # 鍒濆杩炴帴鏁
+# initialSize: 5
+# # 鏈灏忚繛鎺ユ睜鏁伴噺
+# minIdle: 5
+# # 鏈澶ц繛鎺ユ睜鏁伴噺
+# maxActive: 10
+# # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂
+# maxWait: 30000
+# # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+# timeBetweenEvictionRunsMillis: 60000
+# # 閰嶇疆涓涓繛鎺ュ湪姹犱腑鏈灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+# minEvictableIdleTimeMillis: 300000
+# # 閰嶇疆涓涓繛鎺ュ湪姹犱腑鏈澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+# maxEvictableIdleTimeMillis: 900000
+# # 閰嶇疆妫娴嬭繛鎺ユ槸鍚︽湁鏁
+# validationQuery: SELECT 1
+# testWhileIdle: true
+# webStatFilter:
+# enabled: false
+# statViewServlet:
+# enabled: false
+# filter:
+# stat:
+# enabled: true
+# # 鎱QL璁板綍
+# log-slow-sql: true
+# slow-sql-millis: 1000
+# merge-sql: true
+# wall:
+# config:
+# multi-statement-allow: true
+## MyBatis plus
+#mybatis-plus:
+# # package name range
+# typeAliasesPackage: com.vmock.biz.entity
+# # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵鏈夌殑mapper.xml鏄犲皠鏂囦欢
+# mapperLocations: classpath:mybatis/*Mapper.xml
+# # 鍏ㄥ眬閰嶇疆
+# Configuration:
+# # 鍏ㄥ眬鏄犲皠鍣ㄥ惎鐢ㄧ紦瀛
+# cacheEnabled: true
+# # 鍏佽 JDBC 鏀寔鑷姩鐢熸垚涓婚敭
+# useGeneratedKeys: false
+# # 榛樿鐨勬墽琛屽櫒
+# defaultExecutorType: REUSE
+# logImpl: org.apache.ibatis.logging.slf4j.Slf4jImpl
+# global-config:
+# # banner print -> off
+# banner: false
+# # logic delete config
+# db-config:
+# # already delete value -> 1
+# logic-delete-value: 1
+# # not delete value -> 0
+# logic-not-delete-value: 0
+
server:
# 绔彛
- port: 80
+ port: 8089
servlet:
# 璁块棶璺緞
context-path: /
@@ -33,10 +128,17 @@ spring:
active: druid
datasource:
type: com.alibaba.druid.pool.DruidDataSource
- driverClassName: org.sqlite.JDBC
+ # driverClassName: org.sqlite.JDBC
+
+ # url: jdbc:mysql://120.77.38.34:13306/smlh?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+ # driver-class-name: com.mysql.cj.jdbc.Driver
druid:
# 鏁版嵁婧
- url: jdbc:sqlite::resource:db/v-mock.sqlite
+ # url: jdbc:sqlite::resource:db/v-mock.sqlite
+ url: jdbc:mysql://172.31.214.117:13306/mock?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+ password: mysql@2023
+ username: root
+ driver-class-name: com.mysql.cj.jdbc.Driver
# 鍒濆杩炴帴鏁
initialSize: 5
# 鏈灏忚繛鎺ユ睜鏁伴噺
@@ -68,6 +170,7 @@ spring:
wall:
config:
multi-statement-allow: true
+
# MyBatis plus
mybatis-plus:
# package name range
diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt
index fda3fb23ec47f9e1215c4d584b80cceab0d2cda1..c31f09726d6dc6a3cef728628e3ae2c763015d84 100644
--- a/src/main/resources/banner.txt
+++ b/src/main/resources/banner.txt
@@ -1,7 +1,7 @@
------------------------------------------------------------------------------------------
-___ __ _____ ____ ____ | | __
-\ \/ / ______ / \ / _ \_/ ___\| |/ /
- \ / /_____/ | Y Y ( <_> ) \___| < Power By Spring Boot ${spring-boot.version}
- \_/ |__|_| /\____/ \___ >__|_ \
- \/ \/ \/
+ _____ ____ ____ | | __
+ / \ / _ \_/ ___\| |/ /
+ | Y Y ( <_> ) \___| < Power By Spring Boot ${spring-boot.version}
+ |__|_| /\____/ \___ >__|_ \
+ \/ \/ \/
------------------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/src/main/resources/db/v-mock.sqlite b/src/main/resources/db/v-mock.sqlite
index 263484667086670629a481b31167004307808830..b5f1d5a1676e24569ba89eac07a39e08e610f392 100644
Binary files a/src/main/resources/db/v-mock.sqlite and b/src/main/resources/db/v-mock.sqlite differ
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index 002312cbf5528492f70f93d8aee5ca0dbf9938a6..ec39c83a1a7eb0bb03ff29d94b2f5448e4a65e66 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/src/main/resources/static/favicon.ico b/src/main/resources/static/favicon.ico
index 54d3d267da786afd82d9c7b302f119bd7b731878..d1aed610021e758eb4c63bcc4f9c13776808b877 100644
Binary files a/src/main/resources/static/favicon.ico and b/src/main/resources/static/favicon.ico differ
diff --git a/src/main/resources/static/gyns-log.png b/src/main/resources/static/gyns-log.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1aed610021e758eb4c63bcc4f9c13776808b877
Binary files /dev/null and b/src/main/resources/static/gyns-log.png differ
diff --git a/src/main/resources/static/sys/js/vmock.js b/src/main/resources/static/sys/js/vmock.js
index 6a04bbaf147f3ae5fbe646546995d33018e3ed7c..ef6067787c3fe05bad8799ba2069a5ee0016d0cc 100644
--- a/src/main/resources/static/sys/js/vmock.js
+++ b/src/main/resources/static/sys/js/vmock.js
@@ -887,6 +887,11 @@ var table = {
table.set();
$.modal.open("娣诲姞" + table.options.modalName, $.operate.addUrl(id))
},
+ addtcp: function(id) {
+ table.set();
+ console.log("table.options.modalName = "+table.options.modalName);
+ $.modal.open("娣诲姞tcp" + table.options.modalName, $.operate.addTcp(id))
+ },
addTab: function(id) {
table.set();
$.modal.openTab("娣诲姞" + table.options.modalName, $.operate.addUrl(id))
@@ -900,7 +905,12 @@ var table = {
var url = $.common.isEmpty(id) ? table.options.createUrl.replace("{id}", "") : table.options.createUrl.replace("{id}", id);
return url
},
- edit: function(id) {
+ addTcp: function(id) {
+ console.log("url锛"+url);
+ var url = $.common.isEmpty(id) ? table.options.createTcp.replace("{id}", "") : table.options.createTcp.replace("{id}", id);
+ return url
+ },
+ edit: function(id,type){
table.set();
if ($.common.isEmpty(id) && table.options.type == table_type.bootstrapTreeTable) {
var row = $("#" + table.options.id).bootstrapTreeTable('getSelections')[0];
@@ -908,15 +918,23 @@ var table = {
$.modal.alertWarning("璇疯嚦灏戦夋嫨涓鏉¤褰");
return
}
- var url = table.options.updateUrl.replace("{id}", row[table.options.uniqueId]);
+ var url;
+ if (type === "tcp"){
+ url = table.options.updateTcp.replace("{id}", row[table.options.uniqueId]);
+ }else{
+ url = table.options.updateUrl.replace("{id}", row[table.options.uniqueId]);
+ }
+
$.modal.open("淇敼" + table.options.modalName, url)
} else {
- $.modal.open("淇敼" + table.options.modalName, $.operate.editUrl(id))
+ console.log("id = "+id)
+ console.log("type = "+type)
+ $.modal.open("淇敼" + table.options.modalName, $.operate.editUrl(id,type))
}
},
editTab: function(id) {
table.set();
- $.modal.openTab("淇敼" + table.options.modalName, $.operate.editUrl(id))
+ $.modal.openTab("淇敼" + table.options.modalName, $.operate.editUrl(id,null))
},
editFull: function(id) {
table.set();
@@ -929,10 +947,15 @@ var table = {
}
$.modal.openFull("淇敼" + table.options.modalName, url)
},
- editUrl: function(id) {
+ editUrl: function(id,type) {
var url = "/404.html";
if ($.common.isNotEmpty(id)) {
- url = table.options.updateUrl.replace("{id}", id)
+ if (type === "tcp"){
+ url = table.options.updateTcp.replace("{id}", id);
+ }else {
+ url = table.options.updateUrl.replace("{id}", id);
+ }
+ // url = table.options.updateUrl.replace("{id}", id)
} else {
var id = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
if (id.length == 0) {
diff --git a/src/main/resources/static/vmock.png b/src/main/resources/static/vmock.png
index 55f26c1c423345f694a84bf8c4126753f045b98d..d1aed610021e758eb4c63bcc4f9c13776808b877 100644
Binary files a/src/main/resources/static/vmock.png and b/src/main/resources/static/vmock.png differ
diff --git a/src/main/resources/templates/system/log/mocklog.html b/src/main/resources/templates/system/log/mocklog.html
index eba8fbe3753327a704d2d425c2080013db36ce22..96c6ce77ad0d82d51460c338d294fa0106cfb395 100644
--- a/src/main/resources/templates/system/log/mocklog.html
+++ b/src/main/resources/templates/system/log/mocklog.html
@@ -102,8 +102,8 @@
align: 'center',
formatter: function(value, row, index) {
var actions = [];
- actions.push(` 璇锋眰璇︾粏 `);
- actions.push(` 鍝嶅簲璇︾粏 `);
+ actions.push(` 璇锋眰璇︾粏 `);
+ actions.push(` 鍝嶅簲璇︾粏 `);
return actions.join('');
}
}]
@@ -130,11 +130,23 @@
$("#businessTypes").selectpicker('refresh');
}
- function requestDetail(logId){
- $.modal.openWithoutYes("璇锋眰璇︽儏", prefix + `/request/${logId}`);
+ function requestDetail(logId,requestMethod){
+ console.log("requestMethod = "+requestMethod)
+ if (requestMethod === "Socket"){
+ $.modal.openWithoutYes("璇锋眰璇︽儏", prefix + `/requestTcp/${logId}`);
+ }else {
+ $.modal.openWithoutYes("璇锋眰璇︽儏", prefix + `/request/${logId}`);
+ }
+
}
- function responseDetail(logId){
- $.modal.openWithoutYes("鍝嶅簲璇︽儏", prefix + `/response/${logId}`);
+ function responseDetail(logId,requestMethod){
+ console.log("requestMethod = "+requestMethod)
+ if (requestMethod === "Socket"){
+ $.modal.openWithoutYes("鍝嶅簲璇︽儏", prefix + `/responseTcp/${logId}`);
+ }else {
+ $.modal.openWithoutYes("鍝嶅簲璇︽儏", prefix + `/response/${logId}`);
+ }
+
}
diff --git a/src/main/resources/templates/system/log/requestdetail.html b/src/main/resources/templates/system/log/requestdetail.html
index a2d35d1f8db23258a902c903c6936149dce4c229..3dce79a28eb1f4110f54277a15a3aaa5759a1a2c 100644
--- a/src/main/resources/templates/system/log/requestdetail.html
+++ b/src/main/resources/templates/system/log/requestdetail.html
@@ -54,7 +54,8 @@
@@ -71,8 +72,9 @@
diff --git a/src/main/resources/templates/system/log/requestdetailTcp.html b/src/main/resources/templates/system/log/requestdetailTcp.html
new file mode 100644
index 0000000000000000000000000000000000000000..de236e7d3101c4c0600d6f59c1399905753c3ba5
--- /dev/null
+++ b/src/main/resources/templates/system/log/requestdetailTcp.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/system/log/responsedetailTcp.html b/src/main/resources/templates/system/log/responsedetailTcp.html
new file mode 100644
index 0000000000000000000000000000000000000000..35652daefbe2012310230055f829f964103e02ef
--- /dev/null
+++ b/src/main/resources/templates/system/log/responsedetailTcp.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/templates/system/response/edit.html b/src/main/resources/templates/system/response/edit.html
index c6cdb0d2ea88e88e0c3423f65ae910734baed410..b52b2769e20111ff4edf1b198c9cf3a8ba9a8e5b 100644
--- a/src/main/resources/templates/system/response/edit.html
+++ b/src/main/resources/templates/system/response/edit.html
@@ -8,6 +8,7 @@