diff --git a/sql/ruoyi-vue-pro.sql b/sql/ruoyi-vue-pro.sql index a0aad50e64..1c7bd20ce8 100644 --- a/sql/ruoyi-vue-pro.sql +++ b/sql/ruoyi-vue-pro.sql @@ -11,7 +11,7 @@ Target Server Version : 80026 File Encoding : 65001 - Date: 12/10/2021 21:21:14 + Date: 29/10/2021 08:21:35 */ SET NAMES utf8mb4; @@ -43,12 +43,614 @@ CREATE TABLE `inf_api_access_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=1571 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='API 访问日志表'; +) ENGINE=InnoDB AUTO_INCREMENT=2173 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='API 访问日志表'; -- ---------------------------- -- Records of inf_api_access_log -- ---------------------------- BEGIN; +INSERT INTO `inf_api_access_log` VALUES (1571, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 12:39:14', '2021-10-24 12:39:15', 562, 0, '', NULL, '2021-10-24 12:39:15', NULL, '2021-10-24 12:39:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1572, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 12:39:25', '2021-10-24 12:39:25', 10, 0, '', NULL, '2021-10-24 12:39:25', NULL, '2021-10-24 12:39:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1573, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 12:39:28', '2021-10-24 12:39:28', 8, 0, '', NULL, '2021-10-24 12:39:28', NULL, '2021-10-24 12:39:28', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1574, '', 0, 0, 'yudao-user-server', 'GET', '/api/pay/order/index', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 21:55:32', '2021-10-24 21:55:32', 66, 0, '', NULL, '2021-10-24 21:55:32', NULL, '2021-10-24 21:55:32', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1575, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay.html', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:40', '2021-10-24 22:00:40', 39, 0, '', NULL, '2021-10-24 22:00:40', NULL, '2021-10-24 22:00:40', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1576, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay.html', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:42', '2021-10-24 22:00:42', 11, 0, '', NULL, '2021-10-24 22:00:42', NULL, '2021-10-24 22:00:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1577, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay.html', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:42', '2021-10-24 22:00:42', 8, 0, '', NULL, '2021-10-24 22:00:42', NULL, '2021-10-24 22:00:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1578, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:00:45', '2021-10-24 22:00:45', 7, 0, '', NULL, '2021-10-24 22:00:45', NULL, '2021-10-24 22:00:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1579, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:01', '2021-10-24 22:01:01', 5, 0, '', NULL, '2021-10-24 22:01:01', NULL, '2021-10-24 22:01:01', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1580, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:07', '2021-10-24 22:01:07', 5, 0, '', NULL, '2021-10-24 22:01:07', NULL, '2021-10-24 22:01:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1581, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:08', '2021-10-24 22:01:08', 5, 0, '', NULL, '2021-10-24 22:01:08', NULL, '2021-10-24 22:01:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1582, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:22', '2021-10-24 22:01:22', 4, 0, '', NULL, '2021-10-24 22:01:22', NULL, '2021-10-24 22:01:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1583, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:22', '2021-10-24 22:01:22', 4, 0, '', NULL, '2021-10-24 22:01:22', NULL, '2021-10-24 22:01:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1584, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:34', '2021-10-24 22:01:34', 3, 0, '', NULL, '2021-10-24 22:01:34', NULL, '2021-10-24 22:01:34', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1585, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:34', '2021-10-24 22:01:34', 3, 0, '', NULL, '2021-10-24 22:01:34', NULL, '2021-10-24 22:01:34', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1586, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:35', '2021-10-24 22:01:35', 4, 0, '', NULL, '2021-10-24 22:01:35', NULL, '2021-10-24 22:01:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1587, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:35', '2021-10-24 22:01:35', 4, 0, '', NULL, '2021-10-24 22:01:35', NULL, '2021-10-24 22:01:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1588, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:01:53', '2021-10-24 22:01:53', 3, 0, '', NULL, '2021-10-24 22:01:53', NULL, '2021-10-24 22:01:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1589, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', '2021-10-24 22:02:43', '2021-10-24 22:02:44', 904, 0, '', NULL, '2021-10-24 22:02:44', NULL, '2021-10-24 22:02:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1590, '', 0, 0, 'yudao-user-server', 'GET', '/api/', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:02:55', '2021-10-24 22:02:55', 4, 0, '', NULL, '2021-10-24 22:02:55', NULL, '2021-10-24 22:02:55', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1591, '', 0, 0, 'yudao-user-server', 'GET', '/api/', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:39', '2021-10-24 22:03:39', 58, 0, '', NULL, '2021-10-24 22:03:39', NULL, '2021-10-24 22:03:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1592, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:44', '2021-10-24 22:03:44', 7, 0, '', NULL, '2021-10-24 22:03:44', NULL, '2021-10-24 22:03:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1593, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:45', '2021-10-24 22:03:45', 6, 0, '', NULL, '2021-10-24 22:03:45', NULL, '2021-10-24 22:03:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1594, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:03:52', '2021-10-24 22:03:52', 6, 0, '', NULL, '2021-10-24 22:03:52', NULL, '2021-10-24 22:03:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1595, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:05:52', '2021-10-24 22:05:54', 2094, 0, '', NULL, '2021-10-24 22:05:54', NULL, '2021-10-24 22:05:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1596, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:34', '2021-10-24 22:06:35', 203, 0, '', NULL, '2021-10-24 22:06:35', NULL, '2021-10-24 22:06:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1597, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:54', '2021-10-24 22:06:54', 9, 0, '', NULL, '2021-10-24 22:06:54', NULL, '2021-10-24 22:06:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1598, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:55', '2021-10-24 22:06:55', 6, 0, '', NULL, '2021-10-24 22:06:55', NULL, '2021-10-24 22:06:55', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1599, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:57', '2021-10-24 22:06:57', 5, 0, '', NULL, '2021-10-24 22:06:57', NULL, '2021-10-24 22:06:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1600, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:06:58', '2021-10-24 22:06:58', 4, 0, '', NULL, '2021-10-24 22:06:58', NULL, '2021-10-24 22:06:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1601, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:07:20', '2021-10-24 22:07:20', 26, 0, '', NULL, '2021-10-24 22:07:20', NULL, '2021-10-24 22:07:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1602, '', 0, 0, 'yudao-user-server', 'GET', '/api/demo/pay', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:07:21', '2021-10-24 22:07:21', 7, 0, '', NULL, '2021-10-24 22:07:21', NULL, '2021-10-24 22:07:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1603, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp//get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:23:54', '2021-10-24 22:23:54', 6, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 22:23:54', NULL, '2021-10-24 22:23:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1604, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp//get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:24:07', '2021-10-24 22:24:07', 0, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 22:24:07', NULL, '2021-10-24 22:24:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1605, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp//get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:24:27', '2021-10-24 22:24:27', 0, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 22:24:27', NULL, '2021-10-24 22:24:27', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1606, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:24:47', '2021-10-24 22:24:47', 71, 0, '', NULL, '2021-10-24 22:24:47', NULL, '2021-10-24 22:24:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1607, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:25:54', '2021-10-24 22:25:54', 9, 0, '', NULL, '2021-10-24 22:25:54', NULL, '2021-10-24 22:25:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1608, '', 0, 0, 'yudao-user-server', 'GET', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:32:58', '2021-10-24 22:32:58', 6, 0, '', NULL, '2021-10-24 22:32:58', NULL, '2021-10-24 22:32:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1609, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/get-jsapi-ticket', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:44:14', '2021-10-24 22:44:14', 15, 0, '', NULL, '2021-10-24 22:44:14', NULL, '2021-10-24 22:44:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1610, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:44:52', '2021-10-24 22:44:53', 186, 0, '', NULL, '2021-10-24 22:44:53', NULL, '2021-10-24 22:44:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1611, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:45:32', '2021-10-24 22:45:32', 8, 0, '', NULL, '2021-10-24 22:45:32', NULL, '2021-10-24 22:45:32', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1612, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:47:48', '2021-10-24 22:47:48', 6, 0, '', NULL, '2021-10-24 22:47:48', NULL, '2021-10-24 22:47:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1613, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:00', '2021-10-24 22:48:00', 7, 0, '', NULL, '2021-10-24 22:48:00', NULL, '2021-10-24 22:48:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1614, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:04', '2021-10-24 22:48:04', 8, 0, '', NULL, '2021-10-24 22:48:04', NULL, '2021-10-24 22:48:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1615, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:06', '2021-10-24 22:48:06', 7, 0, '', NULL, '2021-10-24 22:48:06', NULL, '2021-10-24 22:48:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1616, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:18', '2021-10-24 22:48:18', 17, 0, '', NULL, '2021-10-24 22:48:18', NULL, '2021-10-24 22:48:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1617, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:48:22', '2021-10-24 22:48:22', 8, 0, '', NULL, '2021-10-24 22:48:22', NULL, '2021-10-24 22:48:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1618, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:13', '2021-10-24 22:50:13', 7, 0, '', NULL, '2021-10-24 22:50:13', NULL, '2021-10-24 22:50:13', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1619, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:14', '2021-10-24 22:50:14', 9, 0, '', NULL, '2021-10-24 22:50:14', NULL, '2021-10-24 22:50:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1620, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:15', '2021-10-24 22:50:15', 6, 0, '', NULL, '2021-10-24 22:50:15', NULL, '2021-10-24 22:50:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1621, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 7, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1622, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 7, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1623, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 6, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1624, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:16', '2021-10-24 22:50:16', 8, 0, '', NULL, '2021-10-24 22:50:16', NULL, '2021-10-24 22:50:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1625, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:17', '2021-10-24 22:50:17', 10, 0, '', NULL, '2021-10-24 22:50:17', NULL, '2021-10-24 22:50:17', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1626, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:50:17', '2021-10-24 22:50:18', 8, 0, '', NULL, '2021-10-24 22:50:18', NULL, '2021-10-24 22:50:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1627, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 22:53:23', '2021-10-24 22:53:23', 8, 0, '', NULL, '2021-10-24 22:53:23', NULL, '2021-10-24 22:53:23', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1628, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:32', '2021-10-24 22:53:32', 7, 0, '', NULL, '2021-10-24 22:53:32', NULL, '2021-10-24 22:53:32', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1629, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:38', '2021-10-24 22:53:38', 8, 0, '', NULL, '2021-10-24 22:53:38', NULL, '2021-10-24 22:53:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1630, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:44', '2021-10-24 22:53:44', 7, 0, '', NULL, '2021-10-24 22:53:44', NULL, '2021-10-24 22:53:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1631, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:51', '2021-10-24 22:53:51', 8, 0, '', NULL, '2021-10-24 22:53:51', NULL, '2021-10-24 22:53:51', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1632, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:53:52', '2021-10-24 22:53:52', 6, 0, '', NULL, '2021-10-24 22:53:52', NULL, '2021-10-24 22:53:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1633, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:15', '2021-10-24 22:54:15', 7, 0, '', NULL, '2021-10-24 22:54:15', NULL, '2021-10-24 22:54:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1634, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 22:54:33', '2021-10-24 22:54:33', 14, 0, '', NULL, '2021-10-24 22:54:33', NULL, '2021-10-24 22:54:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1635, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:33', '2021-10-24 22:54:33', 8, 0, '', NULL, '2021-10-24 22:54:33', NULL, '2021-10-24 22:54:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1636, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 22:54:40', '2021-10-24 22:54:40', 9, 0, '', NULL, '2021-10-24 22:54:40', NULL, '2021-10-24 22:54:40', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1637, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:41', '2021-10-24 22:54:41', 10, 0, '', NULL, '2021-10-24 22:54:41', NULL, '2021-10-24 22:54:41', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1638, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:54:42', '2021-10-24 22:54:42', 7, 0, '', NULL, '2021-10-24 22:54:42', NULL, '2021-10-24 22:54:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1639, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:58:43', '2021-10-24 22:58:43', 102, 0, '', NULL, '2021-10-24 22:58:43', NULL, '2021-10-24 22:58:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1640, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 22:58:44', '2021-10-24 22:58:44', 10, 0, '', NULL, '2021-10-24 22:58:44', NULL, '2021-10-24 22:58:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1641, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 22:58:54', '2021-10-24 22:58:54', 9, 0, '', NULL, '2021-10-24 22:58:54', NULL, '2021-10-24 22:58:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1642, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 22:58:59', '2021-10-24 22:58:59', 9, 0, '', NULL, '2021-10-24 22:58:59', NULL, '2021-10-24 22:58:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1643, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://127.0.0.1:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 22:59:09', '2021-10-24 22:59:09', 9, 0, '', NULL, '2021-10-24 22:59:09', NULL, '2021-10-24 22:59:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1644, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:01:24', '2021-10-24 23:01:24', 12, 0, '', NULL, '2021-10-24 23:01:24', NULL, '2021-10-24 23:01:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1645, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:01:25', '2021-10-24 23:01:25', 10, 0, '', NULL, '2021-10-24 23:01:25', NULL, '2021-10-24 23:01:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1646, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:33', '2021-10-24 23:01:33', 8, 0, '', NULL, '2021-10-24 23:01:33', NULL, '2021-10-24 23:01:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1647, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:35', '2021-10-24 23:01:35', 10, 0, '', NULL, '2021-10-24 23:01:35', NULL, '2021-10-24 23:01:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1648, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.5.2.501 MiniProgramEnv/Mac MiniProgram wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:45', '2021-10-24 23:01:45', 9, 0, '', NULL, '2021-10-24 23:01:45', NULL, '2021-10-24 23:01:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1649, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.5.2.501 MiniProgramEnv/Mac MiniProgram wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 Language/zh_CN webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:01:54', '2021-10-24 23:01:55', 14, 0, '', NULL, '2021-10-24 23:01:55', NULL, '2021-10-24 23:01:55', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1650, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:02:00', '2021-10-24 23:02:00', 10, 0, '', NULL, '2021-10-24 23:02:00', NULL, '2021-10-24 23:02:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1651, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:02:03', '2021-10-24 23:02:03', 9, 0, '', NULL, '2021-10-24 23:02:03', NULL, '2021-10-24 23:02:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1652, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:08:23', '2021-10-24 23:08:23', 10, 0, '', NULL, '2021-10-24 23:08:23', NULL, '2021-10-24 23:08:23', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1653, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:09:42', '2021-10-24 23:09:42', 11, 0, '', NULL, '2021-10-24 23:09:42', NULL, '2021-10-24 23:09:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1654, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:09:42', '2021-10-24 23:09:42', 9, 0, '', NULL, '2021-10-24 23:09:42', NULL, '2021-10-24 23:09:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1655, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:11:02', '2021-10-24 23:11:02', 10, 0, '', NULL, '2021-10-24 23:11:02', NULL, '2021-10-24 23:11:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1656, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:11:03', '2021-10-24 23:11:03', 12, 0, '', NULL, '2021-10-24 23:11:03', NULL, '2021-10-24 23:11:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1657, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:12:05', '2021-10-24 23:12:05', 11, 0, '', NULL, '2021-10-24 23:12:05', NULL, '2021-10-24 23:12:05', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1658, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:12:06', '2021-10-24 23:12:06', 8, 0, '', NULL, '2021-10-24 23:12:06', NULL, '2021-10-24 23:12:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1659, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:12:17', '2021-10-24 23:12:17', 10, 0, '', NULL, '2021-10-24 23:12:17', NULL, '2021-10-24 23:12:17', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1660, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:12:18', '2021-10-24 23:12:18', 8, 0, '', NULL, '2021-10-24 23:12:18', NULL, '2021-10-24 23:12:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1661, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:13:08', '2021-10-24 23:13:08', 8, 0, '', NULL, '2021-10-24 23:13:08', NULL, '2021-10-24 23:13:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1662, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:13:08', '2021-10-24 23:13:08', 9, 0, '', NULL, '2021-10-24 23:13:08', NULL, '2021-10-24 23:13:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1663, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:13:09', '2021-10-24 23:13:09', 9, 0, '', NULL, '2021-10-24 23:13:09', NULL, '2021-10-24 23:13:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1664, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:13:45', '2021-10-24 23:13:45', 16, 0, '', NULL, '2021-10-24 23:13:45', NULL, '2021-10-24 23:13:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1665, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:13:45', '2021-10-24 23:13:45', 9, 0, '', NULL, '2021-10-24 23:13:45', NULL, '2021-10-24 23:13:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1666, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350053756452272 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:13:45', '2021-10-24 23:13:45', 14, 0, '', NULL, '2021-10-24 23:13:45', NULL, '2021-10-24 23:13:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1667, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:14:38', '2021-10-24 23:14:38', 10, 0, '', NULL, '2021-10-24 23:14:38', NULL, '2021-10-24 23:14:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1668, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:14:38', '2021-10-24 23:14:38', 6, 0, '', NULL, '2021-10-24 23:14:38', NULL, '2021-10-24 23:14:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1669, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 26, 0, '', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1670, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 55, 400, '请求参数不正确', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1671, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 8, 400, '请求参数不正确', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1672, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=ib9jd3p9ptgc8fglr7ern2ten4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:17:01', '2021-10-24 23:17:01', 15, 0, '', NULL, '2021-10-24 23:17:01', NULL, '2021-10-24 23:17:01', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1673, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:10', '2021-10-24 23:17:10', 6, 0, '', NULL, '2021-10-24 23:17:10', NULL, '2021-10-24 23:17:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1674, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:18', '2021-10-24 23:17:18', 8, 0, '', NULL, '2021-10-24 23:17:18', NULL, '2021-10-24 23:17:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1675, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:20', '2021-10-24 23:17:20', 7, 0, '', NULL, '2021-10-24 23:17:20', NULL, '2021-10-24 23:17:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1676, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:22', '2021-10-24 23:17:22', 8, 0, '', NULL, '2021-10-24 23:17:22', NULL, '2021-10-24 23:17:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1677, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:55', '2021-10-24 23:17:55', 65, 400, '请求参数不正确', NULL, '2021-10-24 23:17:55', NULL, '2021-10-24 23:17:55', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1678, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:55', '2021-10-24 23:17:55', 123, 0, '', NULL, '2021-10-24 23:17:55', NULL, '2021-10-24 23:17:55', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1679, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:59', '2021-10-24 23:17:59', 8, 400, '请求参数不正确', NULL, '2021-10-24 23:17:59', NULL, '2021-10-24 23:17:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1680, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:17:59', '2021-10-24 23:17:59', 14, 0, '', NULL, '2021-10-24 23:17:59', NULL, '2021-10-24 23:17:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1681, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:10', '2021-10-24 23:18:10', 12, 0, '', NULL, '2021-10-24 23:18:10', NULL, '2021-10-24 23:18:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1682, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:10', '2021-10-24 23:18:10', 6, 400, '请求参数不正确', NULL, '2021-10-24 23:18:10', NULL, '2021-10-24 23:18:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1683, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:48', '2021-10-24 23:18:52', 3525, 0, '', NULL, '2021-10-24 23:18:52', NULL, '2021-10-24 23:18:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1684, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350886293937392 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:18:48', '2021-10-24 23:19:02', 14069, 400, '请求参数不正确', NULL, '2021-10-24 23:19:02', NULL, '2021-10-24 23:19:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1685, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:19:56', '2021-10-24 23:19:58', 2565, 0, '', NULL, '2021-10-24 23:19:58', NULL, '2021-10-24 23:19:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1686, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:19:56', '2021-10-24 23:19:58', 2576, 0, '', NULL, '2021-10-24 23:19:58', NULL, '2021-10-24 23:19:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1687, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:20:29', '2021-10-24 23:20:29', 9, 0, '', NULL, '2021-10-24 23:20:29', NULL, '2021-10-24 23:20:29', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1688, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:20:29', '2021-10-24 23:20:29', 32, 0, '', NULL, '2021-10-24 23:20:29', NULL, '2021-10-24 23:20:29', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1689, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:14', '2021-10-24 23:22:14', 13, 0, '', NULL, '2021-10-24 23:22:14', NULL, '2021-10-24 23:22:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1690, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:14', '2021-10-24 23:22:14', 48, 0, '', NULL, '2021-10-24 23:22:14', NULL, '2021-10-24 23:22:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1691, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:17', '2021-10-24 23:22:17', 10, 0, '', NULL, '2021-10-24 23:22:17', NULL, '2021-10-24 23:22:17', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1692, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:17', '2021-10-24 23:22:17', 30, 0, '', NULL, '2021-10-24 23:22:17', NULL, '2021-10-24 23:22:17', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1693, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:24', '2021-10-24 23:22:24', 12, 0, '', NULL, '2021-10-24 23:22:24', NULL, '2021-10-24 23:22:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1694, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:22:24', '2021-10-24 23:22:24', 36, 0, '', NULL, '2021-10-24 23:22:24', NULL, '2021-10-24 23:22:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1695, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:56', '2021-10-24 23:22:56', 10, 0, '', NULL, '2021-10-24 23:22:56', NULL, '2021-10-24 23:22:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1696, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:22:56', '2021-10-24 23:22:56', 31, 0, '', NULL, '2021-10-24 23:22:56', NULL, '2021-10-24 23:22:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1697, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:00', '2021-10-24 23:23:00', 14, 0, '', NULL, '2021-10-24 23:23:00', NULL, '2021-10-24 23:23:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1698, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:00', '2021-10-24 23:23:00', 38, 0, '', NULL, '2021-10-24 23:23:00', NULL, '2021-10-24 23:23:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1699, '', 0, 0, 'yudao-user-server', 'POST', '/api//pay/order/submit', '{\"query\":{\"id\":\"17\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:02', '2021-10-24 23:23:02', 2, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 23:23:02', NULL, '2021-10-24 23:23:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1700, '', 0, 0, 'yudao-user-server', 'POST', '/api//pay/order/submit', '{\"query\":{\"id\":\"17\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:12', '2021-10-24 23:23:12', 1, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 23:23:12', NULL, '2021-10-24 23:23:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1701, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:23:43', '2021-10-24 23:23:43', 12, 0, '', NULL, '2021-10-24 23:23:43', NULL, '2021-10-24 23:23:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1702, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:23:43', '2021-10-24 23:23:43', 32, 0, '', NULL, '2021-10-24 23:23:43', NULL, '2021-10-24 23:23:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1703, '', 0, 0, 'yudao-user-server', 'POST', '/api//pay/order/submit', '{\"query\":{\"id\":\"17\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:46', '2021-10-24 23:23:46', 0, 500, 'RequestRejectedException: The request was rejected because the URL contained a potentially malicious String \"//\"', NULL, '2021-10-24 23:23:46', NULL, '2021-10-24 23:23:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1704, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:49', '2021-10-24 23:23:49', 14, 0, '', NULL, '2021-10-24 23:23:49', NULL, '2021-10-24 23:23:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1705, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:49', '2021-10-24 23:23:49', 32, 0, '', NULL, '2021-10-24 23:23:49', NULL, '2021-10-24 23:23:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1706, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"19\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:54', '2021-10-24 23:23:54', 15, 500, '系统异常', NULL, '2021-10-24 23:23:54', NULL, '2021-10-24 23:23:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1707, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:25:25', '2021-10-24 23:25:25', 12, 0, '', NULL, '2021-10-24 23:25:25', NULL, '2021-10-24 23:25:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1708, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:25:25', '2021-10-24 23:25:25', 44, 0, '', NULL, '2021-10-24 23:25:25', NULL, '2021-10-24 23:25:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1709, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:34', '2021-10-24 23:25:34', 11, 0, '', NULL, '2021-10-24 23:25:34', NULL, '2021-10-24 23:25:34', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1710, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:34', '2021-10-24 23:25:34', 31, 0, '', NULL, '2021-10-24 23:25:34', NULL, '2021-10-24 23:25:34', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1711, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:37', '2021-10-24 23:25:37', 3, 500, '系统异常', NULL, '2021-10-24 23:25:37', NULL, '2021-10-24 23:25:37', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1712, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:48', '2021-10-24 23:25:48', 3, 500, '系统异常', NULL, '2021-10-24 23:25:48', NULL, '2021-10-24 23:25:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1713, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:00', '2021-10-24 23:26:00', 17, 0, '', NULL, '2021-10-24 23:26:00', NULL, '2021-10-24 23:26:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1714, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:00', '2021-10-24 23:26:00', 37, 0, '', NULL, '2021-10-24 23:26:00', NULL, '2021-10-24 23:26:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1715, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=22&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:03', '2021-10-24 23:26:03', 11, 500, '系统异常', NULL, '2021-10-24 23:26:03', NULL, '2021-10-24 23:26:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1716, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 9, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1717, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 29, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1718, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 16, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1719, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:11', '2021-10-24 23:26:11', 39, 0, '', NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1720, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:18', '2021-10-24 23:26:18', 17, 0, '', NULL, '2021-10-24 23:26:18', NULL, '2021-10-24 23:26:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1721, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:18', '2021-10-24 23:26:18', 42, 0, '', NULL, '2021-10-24 23:26:18', NULL, '2021-10-24 23:26:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1722, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:20', '2021-10-24 23:26:20', 12, 0, '', NULL, '2021-10-24 23:26:20', NULL, '2021-10-24 23:26:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1723, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:20', '2021-10-24 23:26:20', 38, 0, '', NULL, '2021-10-24 23:26:20', NULL, '2021-10-24 23:26:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1724, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:49', '2021-10-24 23:26:49', 8, 0, '', NULL, '2021-10-24 23:26:49', NULL, '2021-10-24 23:26:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1725, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:26:49', '2021-10-24 23:26:49', 29, 0, '', NULL, '2021-10-24 23:26:49', NULL, '2021-10-24 23:26:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1726, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:58', '2021-10-24 23:26:58', 11, 0, '', NULL, '2021-10-24 23:26:58', NULL, '2021-10-24 23:26:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1727, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:58', '2021-10-24 23:26:58', 32, 0, '', NULL, '2021-10-24 23:26:58', NULL, '2021-10-24 23:26:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1728, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"28\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:00', '2021-10-24 23:27:00', 4, 500, '系统异常', NULL, '2021-10-24 23:27:00', NULL, '2021-10-24 23:27:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1729, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:02', '2021-10-24 23:27:02', 14, 0, '', NULL, '2021-10-24 23:27:02', NULL, '2021-10-24 23:27:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1730, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:02', '2021-10-24 23:27:02', 32, 0, '', NULL, '2021-10-24 23:27:02', NULL, '2021-10-24 23:27:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1731, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"29\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:05', '2021-10-24 23:27:05', 3, 500, '系统异常', NULL, '2021-10-24 23:27:05', NULL, '2021-10-24 23:27:05', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1732, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:27:47', '2021-10-24 23:27:47', 142, 0, '', NULL, '2021-10-24 23:27:47', NULL, '2021-10-24 23:27:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1733, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:27:47', '2021-10-24 23:27:47', 129, 0, '', NULL, '2021-10-24 23:27:47', NULL, '2021-10-24 23:27:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1734, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:49', '2021-10-24 23:27:49', 14, 0, '', NULL, '2021-10-24 23:27:49', NULL, '2021-10-24 23:27:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1735, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:49', '2021-10-24 23:27:49', 67, 0, '', NULL, '2021-10-24 23:27:49', NULL, '2021-10-24 23:27:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1736, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"31\",\"channelCode\":\"wx_pub\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:50', '2021-10-24 23:27:50', 15, 500, '系统异常', NULL, '2021-10-24 23:27:50', NULL, '2021-10-24 23:27:50', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1737, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:28:30', '2021-10-24 23:28:30', 8, 0, '', NULL, '2021-10-24 23:28:30', NULL, '2021-10-24 23:28:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1738, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:28:30', '2021-10-24 23:28:30', 35, 0, '', NULL, '2021-10-24 23:28:30', NULL, '2021-10-24 23:28:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1739, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:34', '2021-10-24 23:28:34', 23, 0, '', NULL, '2021-10-24 23:28:34', NULL, '2021-10-24 23:28:34', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1740, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:34', '2021-10-24 23:28:34', 41, 0, '', NULL, '2021-10-24 23:28:34', NULL, '2021-10-24 23:28:34', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1741, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=33&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:36', '2021-10-24 23:28:36', 10, 500, '系统异常', NULL, '2021-10-24 23:28:36', NULL, '2021-10-24 23:28:36', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1742, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:46', '2021-10-24 23:28:46', 10, 0, '', NULL, '2021-10-24 23:28:46', NULL, '2021-10-24 23:28:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1743, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:46', '2021-10-24 23:28:46', 33, 0, '', NULL, '2021-10-24 23:28:46', NULL, '2021-10-24 23:28:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1744, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=34&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:47', '2021-10-24 23:28:47', 4, 500, '系统异常', NULL, '2021-10-24 23:28:47', NULL, '2021-10-24 23:28:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1745, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:13', '2021-10-24 23:30:13', 10, 0, '', NULL, '2021-10-24 23:30:13', NULL, '2021-10-24 23:30:13', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1746, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:13', '2021-10-24 23:30:13', 39, 0, '', NULL, '2021-10-24 23:30:13', NULL, '2021-10-24 23:30:13', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1747, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:23', '2021-10-24 23:30:23', 12, 0, '', NULL, '2021-10-24 23:30:24', NULL, '2021-10-24 23:30:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1748, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:23', '2021-10-24 23:30:24', 34, 0, '', NULL, '2021-10-24 23:30:24', NULL, '2021-10-24 23:30:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1749, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:44', '2021-10-24 23:30:44', 15, 0, '', NULL, '2021-10-24 23:30:44', NULL, '2021-10-24 23:30:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1750, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:30:44', '2021-10-24 23:30:44', 38, 0, '', NULL, '2021-10-24 23:30:44', NULL, '2021-10-24 23:30:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1751, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:48', '2021-10-24 23:30:48', 19, 0, '', NULL, '2021-10-24 23:30:48', NULL, '2021-10-24 23:30:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1752, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:48', '2021-10-24 23:30:48', 46, 0, '', NULL, '2021-10-24 23:30:48', NULL, '2021-10-24 23:30:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1753, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"{\\\"id\\\":38,\\\"channelCode\\\":\\\"wx_pub\\\"}\":\"\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:50', '2021-10-24 23:30:50', 4, 500, '系统异常', NULL, '2021-10-24 23:30:50', NULL, '2021-10-24 23:30:50', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1754, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:32:37', '2021-10-24 23:32:37', 10, 0, '', NULL, '2021-10-24 23:32:37', NULL, '2021-10-24 23:32:37', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1755, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:32:37', '2021-10-24 23:32:37', 42, 0, '', NULL, '2021-10-24 23:32:37', NULL, '2021-10-24 23:32:37', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1756, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:41', '2021-10-24 23:32:41', 15, 0, '', NULL, '2021-10-24 23:32:41', NULL, '2021-10-24 23:32:41', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1757, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:41', '2021-10-24 23:32:41', 45, 0, '', NULL, '2021-10-24 23:32:41', NULL, '2021-10-24 23:32:41', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1758, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:44', '2021-10-24 23:32:44', 10, 0, '', NULL, '2021-10-24 23:32:44', NULL, '2021-10-24 23:32:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1759, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:44', '2021-10-24 23:32:44', 30, 0, '', NULL, '2021-10-24 23:32:44', NULL, '2021-10-24 23:32:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1760, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":41,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:45', '2021-10-24 23:32:45', 626, 0, '', NULL, '2021-10-24 23:32:45', NULL, '2021-10-24 23:32:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1761, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:56', '2021-10-24 23:32:56', 13, 0, '', NULL, '2021-10-24 23:32:56', NULL, '2021-10-24 23:32:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1762, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:32:56', '2021-10-24 23:32:56', 30, 0, '', NULL, '2021-10-24 23:32:56', NULL, '2021-10-24 23:32:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1763, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":42,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:33:03', '2021-10-24 23:33:03', 343, 0, '', NULL, '2021-10-24 23:33:03', NULL, '2021-10-24 23:33:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1764, '', 0, 0, 'yudao-user-server', 'GET', '/api/pay/order/submit', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:33:14', '2021-10-24 23:33:14', 4, 405, '请求方法不正确:Request method \'GET\' not supported', NULL, '2021-10-24 23:33:14', NULL, '2021-10-24 23:33:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1765, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":42,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:33:33', '2021-10-24 23:33:33', 349, 0, '', NULL, '2021-10-24 23:33:33', NULL, '2021-10-24 23:33:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1766, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:37:14', '2021-10-24 23:37:14', 134, 0, '', NULL, '2021-10-24 23:37:14', NULL, '2021-10-24 23:37:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1767, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-24 23:37:14', '2021-10-24 23:37:14', 153, 0, '', NULL, '2021-10-24 23:37:14', NULL, '2021-10-24 23:37:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1768, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:37:45', '2021-10-24 23:37:45', 12, 0, '', NULL, '2021-10-24 23:37:45', NULL, '2021-10-24 23:37:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1769, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:37:45', '2021-10-24 23:37:45', 35, 0, '', NULL, '2021-10-24 23:37:45', NULL, '2021-10-24 23:37:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1770, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":44,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:37:47', '2021-10-24 23:37:48', 566, 0, '', NULL, '2021-10-24 23:37:48', NULL, '2021-10-24 23:37:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1771, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":44,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:38:13', '2021-10-24 23:38:13', 302, 0, '', NULL, '2021-10-24 23:38:14', NULL, '2021-10-24 23:38:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1772, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:07', '2021-10-24 23:39:07', 7, 0, '', NULL, '2021-10-24 23:39:07', NULL, '2021-10-24 23:39:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1773, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:07', '2021-10-24 23:39:07', 30, 0, '', NULL, '2021-10-24 23:39:07', NULL, '2021-10-24 23:39:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1774, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:10', '2021-10-24 23:39:10', 10, 0, '', NULL, '2021-10-24 23:39:10', NULL, '2021-10-24 23:39:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1775, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:10', '2021-10-24 23:39:10', 31, 0, '', NULL, '2021-10-24 23:39:10', NULL, '2021-10-24 23:39:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1776, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":46,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:12', '2021-10-24 23:39:13', 348, 0, '', NULL, '2021-10-24 23:39:13', NULL, '2021-10-24 23:39:13', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1777, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 9, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1778, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 30, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1779, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 8, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1780, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:38', '2021-10-24 23:39:38', 31, 0, '', NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1781, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:43', '2021-10-24 23:39:43', 9, 0, '', NULL, '2021-10-24 23:39:43', NULL, '2021-10-24 23:39:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1782, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:43', '2021-10-24 23:39:43', 28, 0, '', NULL, '2021-10-24 23:39:43', NULL, '2021-10-24 23:39:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1783, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":49,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:39:45', '2021-10-24 23:39:45', 308, 0, '', NULL, '2021-10-24 23:39:45', NULL, '2021-10-24 23:39:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1784, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:41:24', '2021-10-24 23:41:24', 10, 0, '', NULL, '2021-10-24 23:41:24', NULL, '2021-10-24 23:41:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1785, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:41:24', '2021-10-24 23:41:25', 34, 0, '', NULL, '2021-10-24 23:41:25', NULL, '2021-10-24 23:41:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1786, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:19', '2021-10-24 23:42:19', 8, 0, '', NULL, '2021-10-24 23:42:19', NULL, '2021-10-24 23:42:19', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1787, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:19', '2021-10-24 23:42:19', 26, 0, '', NULL, '2021-10-24 23:42:19', NULL, '2021-10-24 23:42:19', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1788, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:33', '2021-10-24 23:42:33', 8, 0, '', NULL, '2021-10-24 23:42:33', NULL, '2021-10-24 23:42:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1789, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:42:33', '2021-10-24 23:42:33', 26, 0, '', NULL, '2021-10-24 23:42:33', NULL, '2021-10-24 23:42:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1790, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:42:39', '2021-10-24 23:42:39', 8, 0, '', NULL, '2021-10-24 23:42:39', NULL, '2021-10-24 23:42:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1791, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:42:39', '2021-10-24 23:42:39', 45, 0, '', NULL, '2021-10-24 23:42:39', NULL, '2021-10-24 23:42:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1792, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":53,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:42:41', '2021-10-24 23:42:42', 508, 0, '', NULL, '2021-10-24 23:42:42', NULL, '2021-10-24 23:42:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1793, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:26', '2021-10-24 23:44:26', 8, 0, '', NULL, '2021-10-24 23:44:26', NULL, '2021-10-24 23:44:26', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1794, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:26', '2021-10-24 23:44:26', 25, 0, '', NULL, '2021-10-24 23:44:26', NULL, '2021-10-24 23:44:26', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1795, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:28', '2021-10-24 23:44:28', 288, 0, '', NULL, '2021-10-24 23:44:28', NULL, '2021-10-24 23:44:28', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1796, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:28', '2021-10-24 23:44:29', 307, 0, '', NULL, '2021-10-24 23:44:29', NULL, '2021-10-24 23:44:29', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1797, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:29', '2021-10-24 23:44:30', 270, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1798, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:30', 298, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1799, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:30', 261, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1800, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:30', 259, 0, '', NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1801, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:31', 308, 0, '', NULL, '2021-10-24 23:44:31', NULL, '2021-10-24 23:44:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1802, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:30', '2021-10-24 23:44:31', 242, 0, '', NULL, '2021-10-24 23:44:31', NULL, '2021-10-24 23:44:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1803, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":54,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:31', '2021-10-24 23:44:31', 274, 0, '', NULL, '2021-10-24 23:44:31', NULL, '2021-10-24 23:44:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1804, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:44:45', '2021-10-24 23:44:45', 9, 0, '', NULL, '2021-10-24 23:44:45', NULL, '2021-10-24 23:44:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1805, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:44:45', '2021-10-24 23:44:45', 124, 0, '', NULL, '2021-10-24 23:44:45', NULL, '2021-10-24 23:44:45', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1806, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:47', '2021-10-24 23:44:47', 9, 0, '', NULL, '2021-10-24 23:44:47', NULL, '2021-10-24 23:44:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1807, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:47', '2021-10-24 23:44:47', 25, 0, '', NULL, '2021-10-24 23:44:47', NULL, '2021-10-24 23:44:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1808, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":56,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:49', '2021-10-24 23:44:49', 251, 0, '', NULL, '2021-10-24 23:44:49', NULL, '2021-10-24 23:44:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1809, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":56,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/6.8.0(0x16080000) MacWechat/3.2.1(0x13020111) NetType/WIFI WindowsWechat', '2021-10-24 23:44:54', '2021-10-24 23:44:54', 211, 0, '', NULL, '2021-10-24 23:44:54', NULL, '2021-10-24 23:44:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1810, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:45:59', '2021-10-24 23:45:59', 9, 0, '', NULL, '2021-10-24 23:45:59', NULL, '2021-10-24 23:45:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1811, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-24 23:45:59', '2021-10-24 23:45:59', 35, 0, '', NULL, '2021-10-24 23:45:59', NULL, '2021-10-24 23:45:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1812, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://ningmengyum.nat300.top:28080/static/pay.html\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:46:06', '2021-10-24 23:46:06', 10, 0, '', NULL, '2021-10-24 23:46:06', NULL, '2021-10-24 23:46:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1813, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:46:06', '2021-10-24 23:46:06', 28, 0, '', NULL, '2021-10-24 23:46:06', NULL, '2021-10-24 23:46:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1814, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":58,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:46:07', '2021-10-24 23:46:08', 459, 0, '', NULL, '2021-10-24 23:46:08', NULL, '2021-10-24 23:46:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1815, '', 0, 0, 'yudao-user-server', 'GET', '/api/MP_verify_DKOvVzFP7vPwwHx2.txt', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:31:12', '2021-10-25 08:31:12', 22, 0, '', NULL, '2021-10-25 08:31:12', NULL, '2021-10-25 08:31:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1816, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:38:17', '2021-10-25 08:38:17', 133, 0, '', NULL, '2021-10-25 08:38:17', NULL, '2021-10-25 08:38:17', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1817, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:38:17', '2021-10-25 08:38:18', 648, 500, '系统异常', NULL, '2021-10-25 08:38:18', NULL, '2021-10-25 08:38:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1818, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:38:41', '2021-10-25 08:38:41', 85, 500, '系统异常', NULL, '2021-10-25 08:38:41', NULL, '2021-10-25 08:38:41', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1819, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:38:50', '2021-10-25 08:38:50', 22, 0, '', NULL, '2021-10-25 08:38:50', NULL, '2021-10-25 08:38:50', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1820, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:39:19', '2021-10-25 08:39:19', 26, 0, '', NULL, '2021-10-25 08:39:19', NULL, '2021-10-25 08:39:19', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1821, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:39:19', '2021-10-25 08:39:28', 9146, 500, '系统异常', NULL, '2021-10-25 08:39:28', NULL, '2021-10-25 08:39:28', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1822, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:40:47', '2021-10-25 08:40:47', 27, 0, '', NULL, '2021-10-25 08:40:47', NULL, '2021-10-25 08:40:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1823, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:40:47', '2021-10-25 08:40:47', 890, 0, '', NULL, '2021-10-25 08:40:47', NULL, '2021-10-25 08:40:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1824, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:41:27', '2021-10-25 08:41:27', 9, 0, '', NULL, '2021-10-25 08:41:27', NULL, '2021-10-25 08:41:27', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1825, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:41:27', '2021-10-25 08:41:27', 25, 0, '', NULL, '2021-10-25 08:41:27', NULL, '2021-10-25 08:41:27', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1826, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:41:31', '2021-10-25 08:41:31', 9, 0, '', NULL, '2021-10-25 08:41:31', NULL, '2021-10-25 08:41:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1827, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:41:31', '2021-10-25 08:41:31', 21, 0, '', NULL, '2021-10-25 08:41:31', NULL, '2021-10-25 08:41:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1828, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:41:48', '2021-10-25 08:41:48', 7, 0, '', NULL, '2021-10-25 08:41:48', NULL, '2021-10-25 08:41:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1829, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:41:48', '2021-10-25 08:41:48', 24, 0, '', NULL, '2021-10-25 08:41:48', NULL, '2021-10-25 08:41:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1830, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":65,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:41:52', '2021-10-25 08:41:53', 683, 0, '', NULL, '2021-10-25 08:41:53', NULL, '2021-10-25 08:41:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1831, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:18', '2021-10-25 08:42:18', 20, 0, '', NULL, '2021-10-25 08:42:18', NULL, '2021-10-25 08:42:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1832, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:18', '2021-10-25 08:42:18', 6, 0, '', NULL, '2021-10-25 08:42:18', NULL, '2021-10-25 08:42:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1833, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":66,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:19', '2021-10-25 08:42:19', 452, 0, '', NULL, '2021-10-25 08:42:19', NULL, '2021-10-25 08:42:19', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1834, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":66,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:42:24', '2021-10-25 08:42:25', 729, 0, '', NULL, '2021-10-25 08:42:25', NULL, '2021-10-25 08:42:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1835, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:00', '2021-10-25 08:45:00', 10, 0, '', NULL, '2021-10-25 08:45:00', NULL, '2021-10-25 08:45:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1836, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:00', '2021-10-25 08:45:00', 49, 0, '', NULL, '2021-10-25 08:45:00', NULL, '2021-10-25 08:45:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1837, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:39', '2021-10-25 08:45:39', 8, 0, '', NULL, '2021-10-25 08:45:39', NULL, '2021-10-25 08:45:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1838, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:45:39', '2021-10-25 08:45:39', 27, 0, '', NULL, '2021-10-25 08:45:39', NULL, '2021-10-25 08:45:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1839, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:44', '2021-10-25 08:45:44', 7, 0, '', NULL, '2021-10-25 08:45:44', NULL, '2021-10-25 08:45:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1840, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:44', '2021-10-25 08:45:44', 21, 0, '', NULL, '2021-10-25 08:45:44', NULL, '2021-10-25 08:45:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1841, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":69,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:46', '2021-10-25 08:45:46', 681, 0, '', NULL, '2021-10-25 08:45:46', NULL, '2021-10-25 08:45:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1842, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":69,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:45:47', '2021-10-25 08:45:49', 1459, 0, '', NULL, '2021-10-25 08:45:49', NULL, '2021-10-25 08:45:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1843, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:08', '2021-10-25 08:47:08', 22, 0, '', NULL, '2021-10-25 08:47:08', NULL, '2021-10-25 08:47:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1844, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:08', '2021-10-25 08:47:08', 7, 0, '', NULL, '2021-10-25 08:47:08', NULL, '2021-10-25 08:47:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1845, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:47', '2021-10-25 08:47:47', 19, 0, '', NULL, '2021-10-25 08:47:47', NULL, '2021-10-25 08:47:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1846, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:49', '2021-10-25 08:47:49', 7, 0, '', NULL, '2021-10-25 08:47:49', NULL, '2021-10-25 08:47:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1847, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:50', '2021-10-25 08:47:50', 6, 0, '', NULL, '2021-10-25 08:47:50', NULL, '2021-10-25 08:47:50', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1848, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:47:50', '2021-10-25 08:47:50', 17, 0, '', NULL, '2021-10-25 08:47:50', NULL, '2021-10-25 08:47:50', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1849, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:48:04', '2021-10-25 08:48:04', 9, 0, '', NULL, '2021-10-25 08:48:04', NULL, '2021-10-25 08:48:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1850, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:48:04', '2021-10-25 08:48:04', 23, 0, '', NULL, '2021-10-25 08:48:04', NULL, '2021-10-25 08:48:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1851, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:05', '2021-10-25 08:48:05', 7, 0, '', NULL, '2021-10-25 08:48:05', NULL, '2021-10-25 08:48:05', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1852, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:05', '2021-10-25 08:48:05', 21, 0, '', NULL, '2021-10-25 08:48:05', NULL, '2021-10-25 08:48:05', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1853, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:06', '2021-10-25 08:48:06', 6, 0, '', NULL, '2021-10-25 08:48:06', NULL, '2021-10-25 08:48:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1854, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:06', '2021-10-25 08:48:06', 20, 0, '', NULL, '2021-10-25 08:48:06', NULL, '2021-10-25 08:48:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1855, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:38', '2021-10-25 08:48:38', 6, 0, '', NULL, '2021-10-25 08:48:38', NULL, '2021-10-25 08:48:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1856, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 08:48:38', '2021-10-25 08:48:38', 24, 0, '', NULL, '2021-10-25 08:48:38', NULL, '2021-10-25 08:48:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1857, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:50:30', '2021-10-25 08:50:30', 21, 0, '', NULL, '2021-10-25 08:50:30', NULL, '2021-10-25 08:50:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1858, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:50:31', '2021-10-25 08:50:31', 6, 0, '', NULL, '2021-10-25 08:50:31', NULL, '2021-10-25 08:50:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1859, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":77,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:50:31', '2021-10-25 08:51:04', 32995, 0, '', NULL, '2021-10-25 08:51:04', NULL, '2021-10-25 08:51:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1860, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:51:08', '2021-10-25 08:51:08', 6, 0, '', NULL, '2021-10-25 08:51:08', NULL, '2021-10-25 08:51:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1861, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:51:08', '2021-10-25 08:51:08', 19, 0, '', NULL, '2021-10-25 08:51:08', NULL, '2021-10-25 08:51:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1862, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:51:14', '2021-10-25 08:51:14', 6, 0, '', NULL, '2021-10-25 08:51:14', NULL, '2021-10-25 08:51:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1863, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:51:14', '2021-10-25 08:51:14', 18, 0, '', NULL, '2021-10-25 08:51:14', NULL, '2021-10-25 08:51:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1864, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":79,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:51:14', '2021-10-25 08:51:19', 4428, 0, '', NULL, '2021-10-25 08:51:19', NULL, '2021-10-25 08:51:19', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1865, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":79,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:07', '2021-10-25 08:53:08', 446, 0, '', NULL, '2021-10-25 08:53:08', NULL, '2021-10-25 08:53:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1866, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:15', '2021-10-25 08:53:15', 7, 0, '', NULL, '2021-10-25 08:53:15', NULL, '2021-10-25 08:53:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1867, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:15', '2021-10-25 08:53:15', 18, 0, '', NULL, '2021-10-25 08:53:15', NULL, '2021-10-25 08:53:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1868, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":80,\\\"channelCode\\\":\\\"wx_pub\\\"}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 08:53:15', '2021-10-25 08:53:16', 399, 0, '', NULL, '2021-10-25 08:53:16', NULL, '2021-10-25 08:53:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1869, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:01:32', '2021-10-25 09:01:32', 26, 0, '', NULL, '2021-10-25 09:01:32', NULL, '2021-10-25 09:01:32', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1870, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:01:32', '2021-10-25 09:01:32', 6, 0, '', NULL, '2021-10-25 09:01:32', NULL, '2021-10-25 09:01:32', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1871, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:03:27', '2021-10-25 09:03:27', 7, 0, '', NULL, '2021-10-25 09:03:27', NULL, '2021-10-25 09:03:27', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1872, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:03:27', '2021-10-25 09:03:27', 18, 0, '', NULL, '2021-10-25 09:03:27', NULL, '2021-10-25 09:03:27', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1873, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:05:48', '2021-10-25 09:05:48', 7, 0, '', NULL, '2021-10-25 09:05:48', NULL, '2021-10-25 09:05:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1874, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:05:48', '2021-10-25 09:05:48', 20, 0, '', NULL, '2021-10-25 09:05:48', NULL, '2021-10-25 09:05:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1875, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:06:02', '2021-10-25 09:06:02', 5, 0, '', NULL, '2021-10-25 09:06:02', NULL, '2021-10-25 09:06:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1876, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:06:02', '2021-10-25 09:06:02', 17, 0, '', NULL, '2021-10-25 09:06:02', NULL, '2021-10-25 09:06:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1877, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:08:56', '2021-10-25 09:08:56', 8, 0, '', NULL, '2021-10-25 09:08:56', NULL, '2021-10-25 09:08:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1878, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 09:08:56', '2021-10-25 09:08:56', 30, 0, '', NULL, '2021-10-25 09:08:56', NULL, '2021-10-25 09:08:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1879, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 09:12:54', '2021-10-25 09:12:54', 93, 0, '', NULL, '2021-10-25 09:12:54', NULL, '2021-10-25 09:12:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1880, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-25 09:12:54', '2021-10-25 09:12:54', 104, 0, '', NULL, '2021-10-25 09:12:54', NULL, '2021-10-25 09:12:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1881, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:12', '2021-10-25 09:13:12', 7, 0, '', NULL, '2021-10-25 09:13:12', NULL, '2021-10-25 09:13:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1882, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:12', '2021-10-25 09:13:12', 22, 0, '', NULL, '2021-10-25 09:13:12', NULL, '2021-10-25 09:13:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1883, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:13', '2021-10-25 09:13:13', 86, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:13:13', NULL, '2021-10-25 09:13:13', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1884, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:13:22', '2021-10-25 09:13:23', 33, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:13:23', NULL, '2021-10-25 09:13:23', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1885, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:14:06', '2021-10-25 09:14:06', 165, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:14:06', NULL, '2021-10-25 09:14:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1886, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:14:24', '2021-10-25 09:14:51', 26325, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:14:51', NULL, '2021-10-25 09:14:51', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1887, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:14:53', '2021-10-25 09:15:38', 44820, 2002000999, 'IllegalArgumentException: 支付请求的 openid 不能为空!', NULL, '2021-10-25 09:15:38', NULL, '2021-10-25 09:15:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1888, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:16:52', '2021-10-25 09:16:57', 5794, 0, '', NULL, '2021-10-25 09:16:57', NULL, '2021-10-25 09:16:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1889, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":null}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-25 09:28:07', '2021-10-25 09:28:07', 44, 500, '系统异常', NULL, '2021-10-25 09:28:07', NULL, '2021-10-25 09:28:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1890, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":\"{\\n}\"}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-25 09:28:27', '2021-10-25 09:28:29', 1921, 0, '', NULL, '2021-10-25 09:28:29', NULL, '2021-10-25 09:28:29', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1891, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":\"{\\n}\"}', '101.82.138.223', 'PostmanRuntime/6.4.1', '2021-10-25 09:29:18', '2021-10-25 09:29:20', 2009, 0, '', NULL, '2021-10-25 09:29:20', NULL, '2021-10-25 09:29:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1892, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":87,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:31:53', '2021-10-25 09:31:55', 1374, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:31:55', NULL, '2021-10-25 09:31:55', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1893, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:32:00', '2021-10-25 09:32:00', 53, 0, '', NULL, '2021-10-25 09:32:00', NULL, '2021-10-25 09:32:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1894, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:32:00', '2021-10-25 09:32:00', 47, 0, '', NULL, '2021-10-25 09:32:00', NULL, '2021-10-25 09:32:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1895, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":88,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:32:01', '2021-10-25 09:32:02', 829, 0, '', NULL, '2021-10-25 09:32:02', NULL, '2021-10-25 09:32:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1896, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:32:10', '2021-10-25 09:32:15', 4661, 0, '', NULL, '2021-10-25 09:32:15', NULL, '2021-10-25 09:32:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1897, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify_wx', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-25 09:32:15', '2021-10-25 09:32:16', 970, 0, '', NULL, '2021-10-25 09:32:16', NULL, '2021-10-25 09:32:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1898, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:07', '2021-10-25 09:54:07', 103, 0, '', NULL, '2021-10-25 09:54:07', NULL, '2021-10-25 09:54:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1899, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:07', '2021-10-25 09:54:07', 63, 0, '', NULL, '2021-10-25 09:54:07', NULL, '2021-10-25 09:54:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1900, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:08', '2021-10-25 09:54:12', 4084, 0, '', NULL, '2021-10-25 09:54:12', NULL, '2021-10-25 09:54:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1901, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:54:45', '2021-10-25 09:55:02', 16587, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:02', NULL, '2021-10-25 09:55:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1902, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:08', '2021-10-25 09:55:21', 13246, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:21', NULL, '2021-10-25 09:55:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1903, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:24', '2021-10-25 09:55:31', 7369, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:31', NULL, '2021-10-25 09:55:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1904, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":89,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:30', '2021-10-25 09:55:31', 1089, 2002000000, '未知错误,需要解析', NULL, '2021-10-25 09:55:31', NULL, '2021-10-25 09:55:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1905, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:33', '2021-10-25 09:55:33', 8, 0, '', NULL, '2021-10-25 09:55:33', NULL, '2021-10-25 09:55:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1906, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:33', '2021-10-25 09:55:33', 21, 0, '', NULL, '2021-10-25 09:55:33', NULL, '2021-10-25 09:55:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1907, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":90,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 09:55:35', '2021-10-25 09:55:35', 394, 0, '', NULL, '2021-10-25 09:55:35', NULL, '2021-10-25 09:55:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1908, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:55:41', '2021-10-25 09:55:43', 2013, 0, '', NULL, '2021-10-25 09:55:43', NULL, '2021-10-25 09:55:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1909, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:55:46', '2021-10-25 09:55:54', 8156, 0, '', NULL, '2021-10-25 09:55:54', NULL, '2021-10-25 09:55:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1910, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 09:55:57', '2021-10-25 09:55:57', 2, 0, '', NULL, '2021-10-25 09:55:57', NULL, '2021-10-25 09:55:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1911, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 10:03:48', '2021-10-25 10:03:48', 80, 0, '', NULL, '2021-10-25 10:03:48', NULL, '2021-10-25 10:03:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1912, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 10:03:49', '2021-10-25 10:03:49', 69, 0, '', NULL, '2021-10-25 10:03:49', NULL, '2021-10-25 10:03:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1913, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":91,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.138.223', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-25 10:03:49', '2021-10-25 10:03:53', 4224, 0, '', NULL, '2021-10-25 10:03:53', NULL, '2021-10-25 10:03:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1914, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-25 10:03:59', '2021-10-25 10:04:03', 3815, 0, '', NULL, '2021-10-25 10:04:03', NULL, '2021-10-25 10:04:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1915, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-25 10:04:04', '2021-10-25 10:04:04', 458, 0, '', NULL, '2021-10-25 10:04:04', NULL, '2021-10-25 10:04:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1916, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:45', '2021-10-26 09:20:46', 111, 0, '', NULL, '2021-10-26 09:20:46', NULL, '2021-10-26 09:20:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1917, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:45', '2021-10-26 09:20:46', 555, 500, '系统异常', NULL, '2021-10-26 09:20:46', NULL, '2021-10-26 09:20:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1918, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":92,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:58', '2021-10-26 09:20:59', 656, 0, '', NULL, '2021-10-26 09:20:59', NULL, '2021-10-26 09:20:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1919, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:21:10', '2021-10-26 09:21:10', 27, 0, '', NULL, '2021-10-26 09:21:10', NULL, '2021-10-26 09:21:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1920, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:21:10', '2021-10-26 09:21:33', 22624, 500, '系统异常', NULL, '2021-10-26 09:21:33', NULL, '2021-10-26 09:21:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1921, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:22:48', '2021-10-26 09:22:48', 24, 0, '', NULL, '2021-10-26 09:22:48', NULL, '2021-10-26 09:22:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1922, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:22:48', '2021-10-26 09:22:49', 611, 0, '', NULL, '2021-10-26 09:22:49', NULL, '2021-10-26 09:22:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1923, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":94,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:22:57', '2021-10-26 09:22:58', 700, 0, '', NULL, '2021-10-26 09:22:58', NULL, '2021-10-26 09:22:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1924, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:23:04', '2021-10-26 09:23:08', 4082, 0, '', NULL, '2021-10-26 09:23:08', NULL, '2021-10-26 09:23:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1925, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:23:09', '2021-10-26 09:23:12', 3057, 0, '', NULL, '2021-10-26 09:23:12', NULL, '2021-10-26 09:23:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1926, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:24:49', '2021-10-26 09:24:49', 80, 0, '', NULL, '2021-10-26 09:24:49', NULL, '2021-10-26 09:24:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1927, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:24:49', '2021-10-26 09:24:49', 70, 0, '', NULL, '2021-10-26 09:24:49', NULL, '2021-10-26 09:24:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1928, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":95,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:24:51', '2021-10-26 09:24:52', 738, 0, '', NULL, '2021-10-26 09:24:52', NULL, '2021-10-26 09:24:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1929, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:24:58', '2021-10-26 09:24:58', 40, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:24:58', NULL, '2021-10-26 09:24:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1930, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:25:07', '2021-10-26 09:25:07', 23, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:25:07', NULL, '2021-10-26 09:25:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1931, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:24:59', '2021-10-26 09:25:12', 12909, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:25:12', NULL, '2021-10-26 09:25:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1932, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:25:20', '2021-10-26 09:25:22', 2186, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:25:22', NULL, '2021-10-26 09:25:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1933, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:25:15', '2021-10-26 09:26:16', 60349, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1934, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-26 09:26:16', '2021-10-26 09:26:16', 31, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1935, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:26:16', '2021-10-26 09:26:16', 42, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1936, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:26:16', '2021-10-26 09:26:16', 41, 1007001000, '支付渠道的配置不存在', NULL, '2021-10-26 09:26:16', NULL, '2021-10-26 09:26:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1937, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:29:05', '2021-10-26 09:29:38', 32943, 500, '系统异常', NULL, '2021-10-26 09:29:38', NULL, '2021-10-26 09:29:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1938, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:30:46', '2021-10-26 09:30:46', 100, 0, '', NULL, '2021-10-26 09:30:46', NULL, '2021-10-26 09:30:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1939, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:30:46', '2021-10-26 09:30:46', 64, 0, '', NULL, '2021-10-26 09:30:46', NULL, '2021-10-26 09:30:46', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1940, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":96,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:30:47', '2021-10-26 09:30:48', 715, 0, '', NULL, '2021-10-26 09:30:48', NULL, '2021-10-26 09:30:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1941, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:30:53', '2021-10-26 09:33:21', 147170, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1942, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-26 09:30:59', '2021-10-26 09:33:21', 141982, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1943, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 45, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1944, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 41, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1945, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 41, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1946, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 42, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1947, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:33:21', '2021-10-26 09:33:21', 47, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:33:21', NULL, '2021-10-26 09:33:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1948, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":96,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:09', '2021-10-26 09:34:10', 1027, 2002000000, '未知错误,需要解析', NULL, '2021-10-26 09:34:10', NULL, '2021-10-26 09:34:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1949, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:23', '2021-10-26 09:34:23', 46, 0, '', NULL, '2021-10-26 09:34:23', NULL, '2021-10-26 09:34:23', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1950, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:24', '2021-10-26 09:34:24', 51, 0, '', NULL, '2021-10-26 09:34:24', NULL, '2021-10-26 09:34:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1951, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":97,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:34:25', '2021-10-26 09:34:26', 496, 0, '', NULL, '2021-10-26 09:34:26', NULL, '2021-10-26 09:34:26', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1952, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:34:31', '2021-10-26 09:35:28', 57124, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:28', NULL, '2021-10-26 09:35:28', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1953, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.53', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1492, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1954, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1493, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1955, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1490, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1956, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1490, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1957, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1509, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1958, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:35:30', 1519, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:35:30', NULL, '2021-10-26 09:35:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1959, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:35:28', '2021-10-26 09:38:07', 158950, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:38:07', NULL, '2021-10-26 09:38:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1960, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:38:07', '2021-10-26 09:38:07', 34, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:38:07', NULL, '2021-10-26 09:38:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1961, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:38:07', '2021-10-26 09:38:07', 33, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:38:07', NULL, '2021-10-26 09:38:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1962, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:38:35', '2021-10-26 09:38:36', 102, 0, '', NULL, '2021-10-26 09:38:36', NULL, '2021-10-26 09:38:36', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1963, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:38:36', '2021-10-26 09:38:36', 61, 0, '', NULL, '2021-10-26 09:38:36', NULL, '2021-10-26 09:38:36', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1964, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:39:11', '2021-10-26 09:39:14', 3226, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:14', NULL, '2021-10-26 09:39:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1965, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:38:37', '2021-10-26 09:39:14', 37716, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:14', NULL, '2021-10-26 09:39:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1966, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-26 09:39:11', '2021-10-26 09:39:14', 3225, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:14', NULL, '2021-10-26 09:39:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1967, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":98,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:38:37', '2021-10-26 09:39:15', 38297, 0, '', NULL, '2021-10-26 09:39:15', NULL, '2021-10-26 09:39:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1968, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:39:21', '2021-10-26 09:39:26', 5385, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:26', NULL, '2021-10-26 09:39:26', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1969, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:39:25', '2021-10-26 09:39:27', 1323, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:27', NULL, '2021-10-26 09:39:27', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1970, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-26 09:39:27', '2021-10-26 09:39:28', 870, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:28', NULL, '2021-10-26 09:39:28', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1971, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-26 09:39:29', '2021-10-26 09:39:34', 4938, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:39:34', NULL, '2021-10-26 09:39:34', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1972, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:39:36', '2021-10-26 09:39:36', 7, 0, '', NULL, '2021-10-26 09:39:36', NULL, '2021-10-26 09:39:36', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1973, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:39:36', '2021-10-26 09:39:36', 16, 0, '', NULL, '2021-10-26 09:39:36', NULL, '2021-10-26 09:39:36', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1974, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2298, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1975, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2298, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1976, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2309, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1977, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:40:22', '2021-10-26 09:40:25', 2313, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1978, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-26 09:40:25', '2021-10-26 09:40:25', 18, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:40:25', NULL, '2021-10-26 09:40:25', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1979, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:02', '2021-10-26 09:41:02', 97, 0, '', NULL, '2021-10-26 09:41:02', NULL, '2021-10-26 09:41:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1980, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:02', '2021-10-26 09:41:02', 115, 0, '', NULL, '2021-10-26 09:41:02', NULL, '2021-10-26 09:41:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1981, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":100,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:05', '2021-10-26 09:41:10', 5425, 0, '', NULL, '2021-10-26 09:41:10', NULL, '2021-10-26 09:41:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1982, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":100,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:41:09', '2021-10-26 09:41:10', 769, 0, '', NULL, '2021-10-26 09:41:10', NULL, '2021-10-26 09:41:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1983, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:41:21', '2021-10-26 09:41:22', 1022, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:22', NULL, '2021-10-26 09:41:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1984, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-26 09:41:16', '2021-10-26 09:41:36', 20362, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:36', NULL, '2021-10-26 09:41:36', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1985, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:41:36', '2021-10-26 09:41:38', 1578, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:38', NULL, '2021-10-26 09:41:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1986, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-26 09:41:36', '2021-10-26 09:41:38', 1578, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:38', NULL, '2021-10-26 09:41:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1987, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-26 09:41:39', '2021-10-26 09:41:40', 1298, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:40', NULL, '2021-10-26 09:41:40', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1988, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:41:48', '2021-10-26 09:41:54', 5416, 0, '', NULL, '2021-10-26 09:41:54', NULL, '2021-10-26 09:41:54', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1989, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:41:55', '2021-10-26 09:41:56', 1336, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:41:56', NULL, '2021-10-26 09:41:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1990, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:04', '2021-10-26 09:42:04', 8, 0, '', NULL, '2021-10-26 09:42:04', NULL, '2021-10-26 09:42:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1991, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:04', '2021-10-26 09:42:04', 19, 0, '', NULL, '2021-10-26 09:42:04', NULL, '2021-10-26 09:42:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1992, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":101,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:05', '2021-10-26 09:42:06', 693, 0, '', NULL, '2021-10-26 09:42:06', NULL, '2021-10-26 09:42:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1993, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:42:20', '2021-10-26 09:42:20', 422, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:20', NULL, '2021-10-26 09:42:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1994, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:42:26', '2021-10-26 09:42:28', 2077, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:28', NULL, '2021-10-26 09:42:28', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1995, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-26 09:42:16', '2021-10-26 09:42:33', 17112, 0, '', NULL, '2021-10-26 09:42:33', NULL, '2021-10-26 09:42:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1996, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:42:22', '2021-10-26 09:42:33', 11064, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:33', NULL, '2021-10-26 09:42:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1997, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:42:33', '2021-10-26 09:42:35', 1727, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:35', NULL, '2021-10-26 09:42:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1998, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:42:38', '2021-10-26 09:42:38', 21, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:38', NULL, '2021-10-26 09:42:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (1999, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":101,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:40', '2021-10-26 09:42:40', 19, 1007002001, '支付订单不处于待支付', NULL, '2021-10-26 09:42:40', NULL, '2021-10-26 09:42:40', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2000, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-26 09:42:49', '2021-10-26 09:42:49', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:49', NULL, '2021-10-26 09:42:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2001, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.45', 'Mozilla/4.0', '2021-10-26 09:42:53', '2021-10-26 09:42:53', 19, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:42:53', NULL, '2021-10-26 09:42:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2002, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:57', '2021-10-26 09:42:57', 9, 0, '', NULL, '2021-10-26 09:42:57', NULL, '2021-10-26 09:42:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2003, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:57', '2021-10-26 09:42:57', 19, 0, '', NULL, '2021-10-26 09:42:57', NULL, '2021-10-26 09:42:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2004, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":102,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:42:57', '2021-10-26 09:42:58', 485, 0, '', NULL, '2021-10-26 09:42:58', NULL, '2021-10-26 09:42:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2005, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":102,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:43:03', '2021-10-26 09:43:03', 460, 0, '', NULL, '2021-10-26 09:43:03', NULL, '2021-10-26 09:43:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2006, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.56', 'Mozilla/4.0', '2021-10-26 09:43:17', '2021-10-26 09:43:17', 47, 0, '', NULL, '2021-10-26 09:43:17', NULL, '2021-10-26 09:43:17', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2007, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:43:20', '2021-10-26 09:43:20', 17, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:43:20', NULL, '2021-10-26 09:43:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2008, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:43:24', '2021-10-26 09:43:24', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:43:24', NULL, '2021-10-26 09:43:24', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2009, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:43:26', '2021-10-26 09:43:26', 49, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:43:26', NULL, '2021-10-26 09:43:26', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2010, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":102,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:43:29', '2021-10-26 09:43:29', 18, 1007002001, '支付订单不处于待支付', NULL, '2021-10-26 09:43:29', NULL, '2021-10-26 09:43:29', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2011, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:43:32', '2021-10-26 09:43:32', 18, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:43:32', NULL, '2021-10-26 09:43:32', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2012, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:45:00', '2021-10-26 09:45:00', 23, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:45:00', NULL, '2021-10-26 09:45:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2013, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:45:04', '2021-10-26 09:45:04', 15, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:45:04', NULL, '2021-10-26 09:45:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2014, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:45:21', '2021-10-26 09:45:21', 17, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:45:21', NULL, '2021-10-26 09:45:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2015, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:45:27', '2021-10-26 09:45:27', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:45:27', NULL, '2021-10-26 09:45:27', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2016, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-26 09:46:20', '2021-10-26 09:46:20', 18, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:46:20', NULL, '2021-10-26 09:46:20', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2017, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-26 09:46:26', '2021-10-26 09:46:26', 17, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-26 09:46:26', NULL, '2021-10-26 09:46:26', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2018, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:48:38', '2021-10-26 09:48:38', 201, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:48:38', NULL, '2021-10-26 09:48:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2019, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-26 09:48:42', '2021-10-26 09:48:42', 22, 1007003000, '支付交易拓展单不存在', NULL, '2021-10-26 09:48:42', NULL, '2021-10-26 09:48:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2020, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:48:49', '2021-10-26 09:48:49', 52, 0, '', NULL, '2021-10-26 09:48:49', NULL, '2021-10-26 09:48:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2021, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:48:49', '2021-10-26 09:48:49', 49, 0, '', NULL, '2021-10-26 09:48:49', NULL, '2021-10-26 09:48:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2022, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":103,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:48:50', '2021-10-26 09:48:51', 707, 0, '', NULL, '2021-10-26 09:48:51', NULL, '2021-10-26 09:48:51', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2023, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-26 09:48:56', '2021-10-26 09:48:56', 67, 0, '', NULL, '2021-10-26 09:48:56', NULL, '2021-10-26 09:48:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2024, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":null}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:24:29', '2021-10-27 08:24:29', 20, 0, '', NULL, '2021-10-27 08:24:29', NULL, '2021-10-27 08:24:29', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2025, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":null}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:24:57', '2021-10-27 08:24:57', 49, 500, '系统异常', NULL, '2021-10-27 08:24:57', NULL, '2021-10-27 08:24:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2026, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\n\\t\\n}\"}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:25:10', '2021-10-27 08:25:10', 30, 400, '请求参数不正确:支付订单编号不能为空', NULL, '2021-10-27 08:25:10', NULL, '2021-10-27 08:25:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2027, '', 0, 0, 'yudao-admin-server', 'GET', '/api/get-permission-info', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:03', '2021-10-27 08:30:03', 43, 0, '', NULL, '2021-10-27 08:30:03', NULL, '2021-10-27 08:30:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2028, '', 0, 0, 'yudao-admin-server', 'GET', '/api/system/dict-data/list-all-simple', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:03', '2021-10-27 08:30:03', 43, 0, '', NULL, '2021-10-27 08:30:03', NULL, '2021-10-27 08:30:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2029, '', 0, 0, 'yudao-admin-server', 'POST', '/api/logout', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:03', '2021-10-27 08:30:03', 7, 0, '', NULL, '2021-10-27 08:30:03', NULL, '2021-10-27 08:30:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2030, '', 0, 0, 'yudao-admin-server', 'GET', '/api/system/captcha/get-image', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:04', '2021-10-27 08:30:06', 2264, 0, '', NULL, '2021-10-27 08:30:06', NULL, '2021-10-27 08:30:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2031, '', 0, 0, 'yudao-admin-server', 'POST', '/api/login', '{\"query\":{},\"body\":\"{\\\"username\\\":\\\"admin\\\",\\\"password\\\":\\\"admin123\\\",\\\"code\\\":\\\"18zk0\\\",\\\"uuid\\\":\\\"1a5b41e42f34443f90f1a8049c7c172b\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:09', '2021-10-27 08:30:10', 264, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2032, '', 1, 2, 'yudao-admin-server', 'GET', '/api/get-permission-info', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 30, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2033, '', 1, 2, 'yudao-admin-server', 'GET', '/api/system/dict-data/list-all-simple', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 37, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2034, '', 1, 2, 'yudao-admin-server', 'GET', '/api/list-menus', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 13, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2035, '', 0, 0, 'yudao-admin-server', 'GET', '/api/infra/file/get/7e7ed694-2242-46cf-9ac9-0709debcc22f', '{\"query\":{},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:30:10', '2021-10-27 08:30:10', 34, 0, '', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2036, '', 1, 2, 'yudao-admin-server', 'GET', '/api/system/post/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:32:15', '2021-10-27 08:32:15', 118, 0, '', NULL, '2021-10-27 08:32:15', NULL, '2021-10-27 08:32:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2037, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:32:21', '2021-10-27 08:32:21', 41, 0, '', NULL, '2021-10-27 08:32:21', NULL, '2021-10-27 08:32:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2038, '', 1, 2, 'yudao-admin-server', 'POST', '/api/infra/job/create', '{\"query\":{},\"body\":\"{\\\"name\\\":\\\"payNotifyJob\\\",\\\"handlerName\\\":\\\"支付通知 Job\\\",\\\"cronExpression\\\":\\\"* * * * * ?\\\",\\\"retryCount\\\":\\\"0\\\",\\\"retryInterval\\\":\\\"0\\\",\\\"monitorTimeout\\\":\\\"\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:33:35', '2021-10-27 08:33:35', 68, 0, '', NULL, '2021-10-27 08:33:35', NULL, '2021-10-27 08:33:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2039, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:33:35', '2021-10-27 08:33:35', 18, 0, '', NULL, '2021-10-27 08:33:35', NULL, '2021-10-27 08:33:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2040, '', 1, 2, 'yudao-admin-server', 'PUT', '/api/infra/job/trigger', '{\"query\":{\"id\":\"3\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:33:59', '2021-10-27 08:33:59', 42, 0, '', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2041, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/get', '{\"query\":{\"id\":\"4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:08', '2021-10-27 08:34:08', 8, 0, '', NULL, '2021-10-27 08:34:08', NULL, '2021-10-27 08:34:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2042, '', 1, 2, 'yudao-admin-server', 'DELETE', '/api/infra/job/delete', '{\"query\":{\"id\":\"4\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:15', '2021-10-27 08:34:15', 56, 0, '', NULL, '2021-10-27 08:34:15', NULL, '2021-10-27 08:34:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2043, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:15', '2021-10-27 08:34:15', 23, 0, '', NULL, '2021-10-27 08:34:15', NULL, '2021-10-27 08:34:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2044, '', 1, 2, 'yudao-admin-server', 'POST', '/api/infra/job/create', '{\"query\":{},\"body\":\"{\\\"name\\\":\\\"支付通知 Job\\\",\\\"handlerName\\\":\\\"payNotifyJob\\\",\\\"cronExpression\\\":\\\"* * * * * ?\\\",\\\"retryCount\\\":\\\"0\\\",\\\"retryInterval\\\":\\\"0\\\"}\"}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:42', '2021-10-27 08:34:42', 58, 0, '', NULL, '2021-10-27 08:34:42', NULL, '2021-10-27 08:34:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2045, '', 1, 2, 'yudao-admin-server', 'GET', '/api/infra/job/page', '{\"query\":{\"pageNo\":\"1\",\"pageSize\":\"10\"},\"body\":null}', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-27 08:34:43', '2021-10-27 08:34:43', 16, 0, '', NULL, '2021-10-27 08:34:43', NULL, '2021-10-27 08:34:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2046, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\n\\t\\n}\"}', '127.0.0.1', 'PostmanRuntime/6.4.1', '2021-10-27 08:36:17', '2021-10-27 08:36:17', 5, 400, '请求参数不正确:支付订单编号不能为空', NULL, '2021-10-27 08:36:18', NULL, '2021-10-27 08:36:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2047, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212524100\\\",\\\"payOrderId\\\":101}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 24, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2048, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212929429\\\",\\\"payOrderId\\\":103}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 24, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2049, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212576678\\\",\\\"payOrderId\\\":102}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 24, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2050, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635212461835\\\",\\\"payOrderId\\\":100}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:38:43', '2021-10-27 08:38:43', 3, 0, '', NULL, '2021-10-27 08:38:43', NULL, '2021-10-27 08:38:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2051, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:49:30', '2021-10-27 08:49:30', 102, 0, '', NULL, '2021-10-27 08:49:30', NULL, '2021-10-27 08:49:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2052, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:49:29', '2021-10-27 08:49:30', 1081, 500, '系统异常', NULL, '2021-10-27 08:49:30', NULL, '2021-10-27 08:49:30', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2053, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:51:19', '2021-10-27 08:51:19', 26, 0, '', NULL, '2021-10-27 08:51:19', NULL, '2021-10-27 08:51:19', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2054, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:51:18', '2021-10-27 08:51:19', 596, 0, '', NULL, '2021-10-27 08:51:19', NULL, '2021-10-27 08:51:19', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2055, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":105,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:51:20', '2021-10-27 08:51:22', 2180, 0, '', NULL, '2021-10-27 08:51:22', NULL, '2021-10-27 08:51:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2056, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 08:51:32', '2021-10-27 08:53:03', 90973, 0, '', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2057, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:03', 60, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2058, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 08:51:47', '2021-10-27 08:53:03', 76425, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2059, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:03', 65, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2060, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.24', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:03', 65, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:03', NULL, '2021-10-27 08:53:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2061, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:04', 80, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2062, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635295878514\\\",\\\"payOrderId\\\":105}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 08:53:04', '2021-10-27 08:53:04', 12, 0, '', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2063, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:04', 122, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2064, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 08:53:03', '2021-10-27 08:53:04', 123, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 08:53:04', NULL, '2021-10-27 08:53:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2065, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:08:03', '2021-10-27 09:08:03', 113, 0, '', NULL, '2021-10-27 09:08:03', NULL, '2021-10-27 09:08:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2066, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:08:03', '2021-10-27 09:08:03', 84, 0, '', NULL, '2021-10-27 09:08:03', NULL, '2021-10-27 09:08:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2067, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":106,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:08:04', '2021-10-27 09:08:07', 3016, 0, '', NULL, '2021-10-27 09:08:07', NULL, '2021-10-27 09:08:07', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2068, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-27 09:08:12', '2021-10-27 09:08:43', 30745, 0, '', NULL, '2021-10-27 09:08:43', NULL, '2021-10-27 09:08:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2069, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.45', 'Mozilla/4.0', '2021-10-27 09:08:43', '2021-10-27 09:08:44', 1419, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2070, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:08:43', '2021-10-27 09:08:44', 1418, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2071, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:08:43', '2021-10-27 09:08:44', 1421, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2072, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635296883074\\\",\\\"payOrderId\\\":106}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 09:08:44', '2021-10-27 09:08:44', 8, 0, '', NULL, '2021-10-27 09:08:44', NULL, '2021-10-27 09:08:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2073, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:20:35', '2021-10-27 09:20:35', 135, 0, '', NULL, '2021-10-27 09:20:35', NULL, '2021-10-27 09:20:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2074, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:20:35', '2021-10-27 09:20:35', 146, 0, '', NULL, '2021-10-27 09:20:35', NULL, '2021-10-27 09:20:35', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2075, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":107,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:20:36', '2021-10-27 09:20:37', 979, 0, '', NULL, '2021-10-27 09:20:37', NULL, '2021-10-27 09:20:37', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2076, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 09:20:58', '2021-10-27 09:20:59', 118, 0, '', NULL, '2021-10-27 09:20:59', NULL, '2021-10-27 09:20:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2077, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:21:40', '2021-10-27 09:21:40', 9, 0, '', NULL, '2021-10-27 09:21:40', NULL, '2021-10-27 09:21:40', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2078, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:21:40', '2021-10-27 09:21:40', 21, 0, '', NULL, '2021-10-27 09:21:40', NULL, '2021-10-27 09:21:40', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2079, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":108,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:21:46', '2021-10-27 09:21:47', 668, 0, '', NULL, '2021-10-27 09:21:47', NULL, '2021-10-27 09:21:47', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2080, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-27 09:21:55', '2021-10-27 09:22:02', 6586, 0, '', NULL, '2021-10-27 09:25:52', NULL, '2021-10-27 09:25:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2081, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.177', 'Mozilla/4.0', '2021-10-27 09:22:01', '2021-10-27 09:25:52', 231851, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:52', NULL, '2021-10-27 09:25:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2082, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.53', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:52', 61, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2083, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:52', 60, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2084, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:53', 66, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2085, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.168', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:53', 68, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2086, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-27 09:25:52', '2021-10-27 09:25:53', 72, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:25:53', NULL, '2021-10-27 09:25:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2087, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:28:48', '2021-10-27 09:28:48', 127, 0, '', NULL, '2021-10-27 09:28:48', NULL, '2021-10-27 09:28:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2088, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:28:48', '2021-10-27 09:28:49', 92, 0, '', NULL, '2021-10-27 09:28:49', NULL, '2021-10-27 09:28:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2089, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":109,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:28:49', '2021-10-27 09:28:51', 1856, 0, '', NULL, '2021-10-27 09:28:51', NULL, '2021-10-27 09:28:51', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2090, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:28:57', '2021-10-27 09:29:18', 21289, 0, '', NULL, '2021-10-27 09:29:18', NULL, '2021-10-27 09:29:18', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2091, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 09:29:18', '2021-10-27 09:29:22', 3729, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:22', NULL, '2021-10-27 09:29:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2092, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-27 09:29:18', '2021-10-27 09:29:22', 3730, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:22', NULL, '2021-10-27 09:29:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2093, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:29:21', '2021-10-27 09:29:22', 565, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:22', NULL, '2021-10-27 09:29:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2094, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 09:29:29', '2021-10-27 09:29:29', 20, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:29', NULL, '2021-10-27 09:29:29', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2095, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:29:57', '2021-10-27 09:29:57', 8, 0, '', NULL, '2021-10-27 09:29:57', NULL, '2021-10-27 09:29:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2096, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:29:57', '2021-10-27 09:29:57', 25, 0, '', NULL, '2021-10-27 09:29:57', NULL, '2021-10-27 09:29:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2097, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":110,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:29:57', '2021-10-27 09:29:58', 516, 0, '', NULL, '2021-10-27 09:29:58', NULL, '2021-10-27 09:29:58', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2098, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:29:59', '2021-10-27 09:29:59', 21, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:29:59', NULL, '2021-10-27 09:29:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2099, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:30:05', '2021-10-27 09:30:05', 21, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:30:05', NULL, '2021-10-27 09:30:05', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2100, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-27 09:30:05', '2021-10-27 09:30:09', 4090, 0, '', NULL, '2021-10-27 09:34:15', NULL, '2021-10-27 09:34:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2101, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.15', 'Mozilla/4.0', '2021-10-27 09:34:14', '2021-10-27 09:34:15', 80, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:34:15', NULL, '2021-10-27 09:34:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2102, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '101.226.103.16', 'Mozilla/4.0', '2021-10-27 09:34:14', '2021-10-27 09:34:15', 80, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:34:15', NULL, '2021-10-27 09:34:15', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2103, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:35:42', '2021-10-27 09:35:42', 121, 0, '', NULL, '2021-10-27 09:35:42', NULL, '2021-10-27 09:35:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2104, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:35:42', '2021-10-27 09:35:42', 87, 0, '', NULL, '2021-10-27 09:35:42', NULL, '2021-10-27 09:35:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2105, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":111,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:35:43', '2021-10-27 09:35:44', 961, 0, '', NULL, '2021-10-27 09:35:44', NULL, '2021-10-27 09:35:44', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2106, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '183.3.234.61', 'Mozilla/4.0', '2021-10-27 09:35:49', '2021-10-27 09:35:52', 3265, 0, '', NULL, '2021-10-27 09:35:52', NULL, '2021-10-27 09:35:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2107, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:38:56', '2021-10-27 09:38:56', 141, 0, '', NULL, '2021-10-27 09:38:56', NULL, '2021-10-27 09:38:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2108, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:38:56', '2021-10-27 09:38:56', 99, 0, '', NULL, '2021-10-27 09:38:56', NULL, '2021-10-27 09:38:56', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2109, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":112,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:39:02', '2021-10-27 09:39:03', 805, 0, '', NULL, '2021-10-27 09:39:03', NULL, '2021-10-27 09:39:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2110, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":112,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:38:57', '2021-10-27 09:39:06', 8971, 0, '', NULL, '2021-10-27 09:39:06', NULL, '2021-10-27 09:39:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2111, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 09:39:08', '2021-10-27 09:39:11', 2682, 0, '', NULL, '2021-10-27 09:39:11', NULL, '2021-10-27 09:39:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2112, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-27 09:39:36', '2021-10-27 09:39:36', 38, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:36', NULL, '2021-10-27 09:39:36', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2113, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 09:39:38', '2021-10-27 09:39:38', 32, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:38', NULL, '2021-10-27 09:39:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2114, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.171', 'Mozilla/4.0', '2021-10-27 09:39:38', '2021-10-27 09:39:38', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:38', NULL, '2021-10-27 09:39:38', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2115, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:39:39', '2021-10-27 09:39:39', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:39', NULL, '2021-10-27 09:39:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2116, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:39:41', '2021-10-27 09:39:41', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:41', NULL, '2021-10-27 09:39:41', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2117, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:39:42', '2021-10-27 09:39:42', 31, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:42', NULL, '2021-10-27 09:39:42', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2118, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:39:43', '2021-10-27 09:39:43', 29, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:43', NULL, '2021-10-27 09:39:43', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2119, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.75', 'Mozilla/4.0', '2021-10-27 09:39:53', '2021-10-27 09:39:53', 31, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:53', NULL, '2021-10-27 09:39:53', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2120, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:39:57', '2021-10-27 09:39:57', 8, 0, '', NULL, '2021-10-27 09:39:57', NULL, '2021-10-27 09:39:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2121, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:39:57', '2021-10-27 09:39:57', 58, 0, '', NULL, '2021-10-27 09:39:57', NULL, '2021-10-27 09:39:57', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2122, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.78', 'Mozilla/4.0', '2021-10-27 09:39:59', '2021-10-27 09:39:59', 34, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:39:59', NULL, '2021-10-27 09:39:59', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2123, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":113,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:40:03', '2021-10-27 09:40:06', 2605, 0, '', NULL, '2021-10-27 09:40:06', NULL, '2021-10-27 09:40:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2124, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:40:08', '2021-10-27 09:40:08', 26, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:40:08', NULL, '2021-10-27 09:40:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2125, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":113,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:40:11', '2021-10-27 09:40:11', 423, 0, '', NULL, '2021-10-27 09:40:11', NULL, '2021-10-27 09:40:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2126, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:40:14', '2021-10-27 09:40:14', 29, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:40:14', NULL, '2021-10-27 09:40:14', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2127, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:40:21', '2021-10-27 09:40:22', 1809, 0, '', NULL, '2021-10-27 09:40:22', NULL, '2021-10-27 09:40:22', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2128, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 32, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2129, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 33, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2130, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 36, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2131, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 51, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2132, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:43:09', '2021-10-27 09:43:09', 60, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 09:43:09', NULL, '2021-10-27 09:43:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2133, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:45:48', '2021-10-27 09:45:48', 124, 0, '', NULL, '2021-10-27 09:45:48', NULL, '2021-10-27 09:45:48', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2134, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:45:49', '2021-10-27 09:45:49', 87, 0, '', NULL, '2021-10-27 09:45:49', NULL, '2021-10-27 09:45:49', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2135, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":114,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 09:45:50', '2021-10-27 09:45:52', 2286, 0, '', NULL, '2021-10-27 09:45:52', NULL, '2021-10-27 09:45:52', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2136, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:45:57', '2021-10-27 09:46:39', 41995, 0, '', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2137, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 64, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2138, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '140.207.54.76', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 64, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2139, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 63, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2140, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.169', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 65, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2141, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.62', 'Mozilla/4.0', '2021-10-27 09:46:39', '2021-10-27 09:46:39', 64, 1007003001, '支付交易拓展单不处于待支付', NULL, '2021-10-27 09:46:39', NULL, '2021-10-27 09:46:39', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2142, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 10:04:21', '2021-10-27 10:04:21', 127, 0, '', NULL, '2021-10-27 10:04:21', NULL, '2021-10-27 10:04:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2143, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 10:04:21', '2021-10-27 10:04:21', 93, 0, '', NULL, '2021-10-27 10:04:21', NULL, '2021-10-27 10:04:21', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2144, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":115,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 10:04:22', '2021-10-27 10:04:23', 1164, 0, '', NULL, '2021-10-27 10:04:23', NULL, '2021-10-27 10:04:23', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2145, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-27 10:04:29', '2021-10-27 10:04:31', 2729, 0, '', NULL, '2021-10-27 10:04:31', NULL, '2021-10-27 10:04:31', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2146, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635300261266\\\",\\\"payOrderId\\\":115}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 10:04:33', '2021-10-27 10:04:33', 10, 0, '', NULL, '2021-10-27 10:04:33', NULL, '2021-10-27 10:04:33', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2147, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:09:12', '2021-10-27 13:09:12', 138, 0, '', NULL, '2021-10-27 13:09:12', NULL, '2021-10-27 13:09:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2148, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:09:12', '2021-10-27 13:09:12', 677, 500, '系统异常', NULL, '2021-10-27 13:09:12', NULL, '2021-10-27 13:09:12', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2149, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:11:08', '2021-10-27 13:11:08', 33, 0, '', NULL, '2021-10-27 13:11:08', NULL, '2021-10-27 13:11:08', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2150, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:11:08', '2021-10-27 13:11:09', 560, 0, '', NULL, '2021-10-27 13:11:09', NULL, '2021-10-27 13:11:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2151, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":117,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:11:10', '2021-10-27 13:11:11', 771, 0, '', NULL, '2021-10-27 13:11:11', NULL, '2021-10-27 13:11:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2152, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.30.173', 'Mozilla/4.0', '2021-10-27 13:11:16', '2021-10-27 13:11:16', 121, 0, '', NULL, '2021-10-27 13:11:16', NULL, '2021-10-27 13:11:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2153, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635311468233\\\",\\\"payOrderId\\\":117}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 13:11:17', '2021-10-27 13:11:17', 8, 0, '', NULL, '2021-10-27 13:11:17', NULL, '2021-10-27 13:11:17', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2154, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:17:03', '2021-10-27 13:17:03', 8, 0, '', NULL, '2021-10-27 13:17:03', NULL, '2021-10-27 13:17:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2155, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:17:03', '2021-10-27 13:17:03', 18, 0, '', NULL, '2021-10-27 13:17:03', NULL, '2021-10-27 13:17:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2156, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":118,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:17:04', '2021-10-27 13:17:04', 526, 0, '', NULL, '2021-10-27 13:17:04', NULL, '2021-10-27 13:17:04', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2157, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.175', 'Mozilla/4.0', '2021-10-27 13:17:09', '2021-10-27 13:17:09', 46, 0, '', NULL, '2021-10-27 13:17:09', NULL, '2021-10-27 13:17:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2158, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:18:01', '2021-10-27 13:18:02', 137, 0, '', NULL, '2021-10-27 13:18:02', NULL, '2021-10-27 13:18:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2159, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:18:01', '2021-10-27 13:18:02', 129, 0, '', NULL, '2021-10-27 13:18:02', NULL, '2021-10-27 13:18:02', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2160, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":119,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:18:02', '2021-10-27 13:18:03', 930, 0, '', NULL, '2021-10-27 13:18:03', NULL, '2021-10-27 13:18:03', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2161, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.53', 'Mozilla/4.0', '2021-10-27 13:18:11', '2021-10-27 13:18:11', 148, 0, '', NULL, '2021-10-27 13:18:11', NULL, '2021-10-27 13:18:11', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2162, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":119,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:00', '2021-10-27 13:19:00', 33, 1007002001, '支付订单不处于待支付', NULL, '2021-10-27 13:19:00', NULL, '2021-10-27 13:19:00', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2163, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:09', '2021-10-27 13:19:09', 8, 0, '', NULL, '2021-10-27 13:19:09', NULL, '2021-10-27 13:19:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2164, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:09', '2021-10-27 13:19:09', 25, 0, '', NULL, '2021-10-27 13:19:09', NULL, '2021-10-27 13:19:09', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2165, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":120,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:19:10', '2021-10-27 13:19:10', 530, 0, '', NULL, '2021-10-27 13:19:10', NULL, '2021-10-27 13:19:10', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2166, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '58.251.80.46', 'Mozilla/4.0', '2021-10-27 13:19:15', '2021-10-27 13:19:16', 109, 0, '', NULL, '2021-10-27 13:19:16', NULL, '2021-10-27 13:19:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2167, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635311949168\\\",\\\"payOrderId\\\":120}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 13:19:40', '2021-10-27 13:19:40', 9, 0, '', NULL, '2021-10-27 13:19:40', NULL, '2021-10-27 13:19:40', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2168, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/create', '{\"query\":{},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:22:05', '2021-10-27 13:22:05', 134, 0, '', NULL, '2021-10-27 13:22:05', NULL, '2021-10-27 13:22:05', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2169, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":null}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:22:05', '2021-10-27 13:22:05', 131, 0, '', NULL, '2021-10-27 13:22:05', NULL, '2021-10-27 13:22:05', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2170, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"{\\\"id\\\":121,\\\"channelCode\\\":\\\"wx_pub\\\",\\\"channelExtras\\\":{\\\"openid\\\":\\\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\\\"}}\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:22:06', '2021-10-27 13:22:06', 790, 0, '', NULL, '2021-10-27 13:22:06', NULL, '2021-10-27 13:22:06', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2171, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/notify/wx-pub/9', '{\"query\":{},\"body\":null}', '121.51.58.170', 'Mozilla/4.0', '2021-10-27 13:22:16', '2021-10-27 13:22:16', 116, 0, '', NULL, '2021-10-27 13:22:16', NULL, '2021-10-27 13:22:16', b'0'); +INSERT INTO `inf_api_access_log` VALUES (2172, '', 0, 0, 'yudao-user-server', 'POST', '/api/shop/order/pay-notify', '{\"query\":{},\"body\":\"{\\\"merchantOrderId\\\":\\\"1635312124657\\\",\\\"payOrderId\\\":121}\"}', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 Hutool', '2021-10-27 13:22:21', '2021-10-27 13:22:21', 10, 0, '', NULL, '2021-10-27 13:22:21', NULL, '2021-10-27 13:22:21', b'0'); COMMIT; -- ---------------------------- @@ -84,12 +686,29 @@ CREATE TABLE `inf_api_error_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统异常日志'; +) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统异常日志'; -- ---------------------------- -- Records of inf_api_error_log -- ---------------------------- BEGIN; +INSERT INTO `inf_api_error_log` VALUES (53, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"19\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:23:54', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:23:54', NULL, '2021-10-24 23:23:54', b'0'); +INSERT INTO `inf_api_error_log` VALUES (54, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:37', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:25:37', NULL, '2021-10-24 23:25:37', b'0'); +INSERT INTO `inf_api_error_log` VALUES (55, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"21\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:25:48', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:25:48', NULL, '2021-10-24 23:25:48', b'0'); +INSERT INTO `inf_api_error_log` VALUES (56, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=22&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:26:03', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:389)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:342)\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:186)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter.doFilterInternal(CacheRequestBodyFilter.java:22)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\nCaused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851)\n at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3588)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2683)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:865)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:757)\n at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664)\n at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513)\n at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3521)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:378)\n ... 121 more\n', 'org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter', 'AbstractJackson2HttpMessageConverter.java', 'readJavaType', 389, 0, NULL, 0, NULL, '2021-10-24 23:26:03', NULL, '2021-10-24 23:26:03', b'0'); +INSERT INTO `inf_api_error_log` VALUES (57, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"28\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:00', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:27:00', NULL, '2021-10-24 23:27:00', b'0'); +INSERT INTO `inf_api_error_log` VALUES (58, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"29\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:05', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:27:05', NULL, '2021-10-24 23:27:05', b'0'); +INSERT INTO `inf_api_error_log` VALUES (59, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"id\":\"31\",\"channelCode\":\"wx_pub\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:27:50', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:27:50', NULL, '2021-10-24 23:27:50', b'0'); +INSERT INTO `inf_api_error_log` VALUES (60, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=33&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:36', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:389)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:342)\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:186)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter.doFilterInternal(CacheRequestBodyFilter.java:22)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\nCaused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851)\n at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3588)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2683)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:865)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:757)\n at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664)\n at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513)\n at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3521)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:378)\n ... 121 more\n', 'org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter', 'AbstractJackson2HttpMessageConverter.java', 'readJavaType', 389, 0, NULL, 0, NULL, '2021-10-24 23:28:36', NULL, '2021-10-24 23:28:36', b'0'); +INSERT INTO `inf_api_error_log` VALUES (61, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{},\"body\":\"id=34&channelCode=wx_pub\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:28:47', 'org.springframework.http.converter.HttpMessageNotReadableException', 'HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]', 'org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:389)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:342)\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:186)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.web.core.filter.CacheRequestBodyFilter.doFilterInternal(CacheRequestBodyFilter.java:22)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\nCaused by: com.fasterxml.jackson.core.JsonParseException: Unrecognized token \'id\': was expecting (JSON String, Number, Array, Object or token \'null\', \'true\' or \'false\')\n at [Source: (PushbackInputStream); line: 1, column: 4]\n at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851)\n at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:717)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken(UTF8StreamJsonParser.java:3588)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2683)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:865)\n at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:757)\n at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4664)\n at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4513)\n at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3521)\n at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:378)\n ... 121 more\n', 'org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter', 'AbstractJackson2HttpMessageConverter.java', 'readJavaType', 389, 0, NULL, 0, NULL, '2021-10-24 23:28:47', NULL, '2021-10-24 23:28:47', b'0'); +INSERT INTO `inf_api_error_log` VALUES (62, '', 0, 0, 'yudao-user-server', 'POST', '/api/pay/order/submit', '{\"query\":{\"{\\\"id\\\":38,\\\"channelCode\\\":\\\"wx_pub\\\"}\":\"\"},\"body\":\"\"}', '127.0.0.1', 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1 wechatdevtools/1.05.2110110 MicroMessenger/8.0.5 webview/16350887771782877 webdebugger port/40959 token/3859dc67f12345c5d8653a2cc61d9470', '2021-10-24 23:30:50', 'org.springframework.web.HttpMediaTypeNotSupportedException', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported', 'org.springframework.web.HttpMediaTypeNotSupportedException: Content type \'application/x-www-form-urlencoded;charset=UTF-8\' not supported\n at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:207)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158)\n at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131)\n at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)\n at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver', 'AbstractMessageConverterMethodArgumentResolver.java', 'readWithMessageConverters', 207, 0, NULL, 0, NULL, '2021-10-24 23:30:50', NULL, '2021-10-24 23:30:50', b'0'); +INSERT INTO `inf_api_error_log` VALUES (63, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"_ij_reload\":\"\",\"url\":\"http://localhost:63342/dashboard/yudao-user-server/static/pay.html?_ijt=q3r4kbuhbobkaatgub1e1dmsoa\"},\"body\":\"\"}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:81.0) Gecko/20100101 Firefox/81.0', '2021-10-25 08:38:18', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc79-1be8d90d-6d4dd4b8\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$3e195ba1.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-25 08:38:18', NULL, '2021-10-25 08:38:18', b'0'); +INSERT INTO `inf_api_error_log` VALUES (64, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:38:41', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fc91-6091fac7-62054871\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$3e195ba1.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-25 08:38:41', NULL, '2021-10-25 08:38:41', b'0'); +INSERT INTO `inf_api_error_log` VALUES (65, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.138.223', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', '2021-10-25 08:39:28', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.138.223 ipv6 ::ffff:101.82.138.223, not in whitelist rid: 6175fcb6-74b26f29-48d42d07\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$3e195ba1.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-25 08:39:28', NULL, '2021-10-25 08:39:28', b'0'); +INSERT INTO `inf_api_error_log` VALUES (66, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:20:46', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 617757ed-43dccf61-7189bd00\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$109d0847.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-26 09:20:46', NULL, '2021-10-26 09:20:46', b'0'); +INSERT INTO `inf_api_error_log` VALUES (67, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.98.72', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/4G Language/zh_CN ABI/arm64', '2021-10-26 09:21:33', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.98.72 ipv6 ::ffff:101.82.98.72, not in whitelist rid: 61775806-508b6477-3686e7cc\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$109d0847.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-26 09:21:33', NULL, '2021-10-26 09:21:33', b'0'); +INSERT INTO `inf_api_error_log` VALUES (68, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.181.148', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 08:49:30', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.181.148 ipv6 ::ffff:101.82.181.148, not in whitelist rid: 6178a21a-5556e976-7358e3e3\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$ae5f34e3.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-27 08:49:30', NULL, '2021-10-27 08:49:30', b'0'); +INSERT INTO `inf_api_error_log` VALUES (69, '', 0, 0, 'yudao-user-server', 'POST', '/api/wx/mp/create-jsapi-signature', '{\"query\":{\"url\":\"http://niubi.natapp1.cc/static/pay.html\"},\"body\":\"\"}', '101.82.233.75', 'Mozilla/5.0 (Linux; Android 11; V2055A Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/045811 Mobile Safari/537.36 MMWEBID/2883 MicroMessenger/8.0.11.1980(0x28000B59) Process/tools WeChat/arm64 Weixin NetType/5G Language/zh_CN ABI/arm64', '2021-10-27 13:09:12', 'me.chanjar.weixin.common.error.WxErrorException', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127\"}', 'WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127\"}', 'me.chanjar.weixin.common.error.WxErrorException: 错误代码:40164, 错误信息:invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127,微信原始报文:{\"errcode\":40164,\"errmsg\":\"invalid ip 101.82.233.75 ipv6 ::ffff:101.82.233.75, not in whitelist rid: 6178def8-13461660-0d019127\"}\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.extractAccessToken(BaseWxMpServiceImpl.java:454)\n at me.chanjar.weixin.mp.api.impl.WxMpServiceHttpClientImpl.getAccessToken(WxMpServiceHttpClientImpl.java:91)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.executeInternal(BaseWxMpServiceImpl.java:399)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.execute(BaseWxMpServiceImpl.java:363)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getTicket(BaseWxMpServiceImpl.java:200)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.getJsapiTicket(BaseWxMpServiceImpl.java:222)\n at me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl.createJsapiSignature(BaseWxMpServiceImpl.java:229)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController.createJsapiSignature(WxMpController.java:34)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$FastClassBySpringCGLIB$$cde47d88.invoke()\n at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)\n at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)\n at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:692)\n at cn.iocoder.yudao.userserver.modules.weixin.controller.mp.WxMpController$$EnhancerBySpringCGLIB$$31cb4ab8.createJsapiSignature()\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)\n at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)\n at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)\n at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\n at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060)\n at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962)\n at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)\n at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)\n at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)\n at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)\n at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at cn.iocoder.yudao.framework.security.core.filter.JWTAuthenticationTokenFilter.doFilterInternal(JWTAuthenticationTokenFilter.java:62)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)\n at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)\n at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)\n at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)\n at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)\n at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)\n at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.apilog.core.filter.ApiAccessLogFilter.doFilterInternal(ApiAccessLogFilter.java:59)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:103)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at cn.iocoder.yudao.framework.tracer.core.filter.TraceFilter.doFilterInternal(TraceFilter.java:30)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)\n at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\n at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\n at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\n at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)\n at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)\n at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\n at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)\n at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)\n at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)\n at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707)\n at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n at java.lang.Thread.run(Thread.java:748)\n', 'me.chanjar.weixin.mp.api.impl.BaseWxMpServiceImpl', 'BaseWxMpServiceImpl.java', 'extractAccessToken', 454, 0, NULL, 0, NULL, '2021-10-27 13:09:12', NULL, '2021-10-27 13:09:12', b'0'); COMMIT; -- ---------------------------- @@ -175,7 +794,7 @@ CREATE TABLE `inf_job` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='定时任务表'; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='定时任务表'; -- ---------------------------- -- Records of inf_job @@ -183,6 +802,8 @@ CREATE TABLE `inf_job` ( BEGIN; INSERT INTO `inf_job` VALUES (2, '用户 Session 超时 Job', 3, 'sysUserSessionTimeoutJob', 'aoteman', '0/5 * * * * ? *', 0, 0, 10, '', '2021-02-07 10:15:09', '', '2021-02-07 12:57:44', b'1'); INSERT INTO `inf_job` VALUES (3, '用户 Session 超时 Job', 1, 'sysUserSessionTimeoutJob', NULL, '0 * * * * ? *', 3, 2000, 0, '', '2021-02-07 13:07:32', '', '2021-02-08 04:44:58', b'0'); +INSERT INTO `inf_job` VALUES (4, 'payNotifyJob', 1, '支付通知 Job', NULL, '* * * * * ?', 0, 0, 0, '1', '2021-10-27 08:33:35', '1', '2021-10-27 00:34:14', b'1'); +INSERT INTO `inf_job` VALUES (5, '支付通知 Job', 1, 'payNotifyJob', NULL, '* * * * * ?', 0, 0, 0, '1', '2021-10-27 08:34:42', '1', '2021-10-27 08:34:42', b'0'); COMMIT; -- ---------------------------- @@ -206,12 +827,75 @@ CREATE TABLE `inf_job_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=2100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='定时任务日志表'; +) ENGINE=InnoDB AUTO_INCREMENT=2163 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='定时任务日志表'; -- ---------------------------- -- Records of inf_job_log -- ---------------------------- BEGIN; +INSERT INTO `inf_job_log` VALUES (2100, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:29:49', '2021-10-27 08:29:49', 489, 1, '移除在线会话数量为 1 个', NULL, '2021-10-27 08:29:49', NULL, '2021-10-27 08:29:49', b'0'); +INSERT INTO `inf_job_log` VALUES (2101, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:30:00', '2021-10-27 08:30:00', 21, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:30:00', NULL, '2021-10-27 08:30:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2102, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:31:00', '2021-10-27 08:31:00', 13, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:31:00', NULL, '2021-10-27 08:31:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2103, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:32:00', '2021-10-27 08:32:00', 13, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:32:00', NULL, '2021-10-27 08:32:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2104, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:33:00', '2021-10-27 08:33:00', 14, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:33:00', NULL, '2021-10-27 08:33:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2105, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:33:59', '2021-10-27 08:33:59', 14, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); +INSERT INTO `inf_job_log` VALUES (2106, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:33:59', '2021-10-27 08:33:59', 23, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); +INSERT INTO `inf_job_log` VALUES (2107, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:33:59', '2021-10-27 08:33:59', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); +INSERT INTO `inf_job_log` VALUES (2108, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 13, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2109, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2110, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2111, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 15, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2112, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2113, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 14, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2114, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 7, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2115, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2116, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 18, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2117, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:00', '2021-10-27 08:34:00', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:00', NULL, '2021-10-27 08:34:00', b'0'); +INSERT INTO `inf_job_log` VALUES (2118, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2119, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 12, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2120, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2121, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2122, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2123, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2124, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 7, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2125, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2126, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2127, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2128, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 11, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2129, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:01', '2021-10-27 08:34:01', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:01', NULL, '2021-10-27 08:34:01', b'0'); +INSERT INTO `inf_job_log` VALUES (2130, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); +INSERT INTO `inf_job_log` VALUES (2131, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 6, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); +INSERT INTO `inf_job_log` VALUES (2132, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 7, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); +INSERT INTO `inf_job_log` VALUES (2133, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); +INSERT INTO `inf_job_log` VALUES (2134, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:02', '2021-10-27 08:34:02', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:02', NULL, '2021-10-27 08:34:02', b'0'); +INSERT INTO `inf_job_log` VALUES (2135, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:03', '2021-10-27 08:34:03', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:03', NULL, '2021-10-27 08:34:03', b'0'); +INSERT INTO `inf_job_log` VALUES (2136, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:04', '2021-10-27 08:34:04', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:04', NULL, '2021-10-27 08:34:04', b'0'); +INSERT INTO `inf_job_log` VALUES (2137, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:05', '2021-10-27 08:34:05', 13, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:05', NULL, '2021-10-27 08:34:05', b'0'); +INSERT INTO `inf_job_log` VALUES (2138, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:06', '2021-10-27 08:34:06', 10, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:06', NULL, '2021-10-27 08:34:06', b'0'); +INSERT INTO `inf_job_log` VALUES (2139, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:07', '2021-10-27 08:34:07', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:07', NULL, '2021-10-27 08:34:07', b'0'); +INSERT INTO `inf_job_log` VALUES (2140, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:08', '2021-10-27 08:34:08', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:08', NULL, '2021-10-27 08:34:08', b'0'); +INSERT INTO `inf_job_log` VALUES (2141, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:09', '2021-10-27 08:34:09', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:09', NULL, '2021-10-27 08:34:09', b'0'); +INSERT INTO `inf_job_log` VALUES (2142, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:10', '2021-10-27 08:34:10', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:10', NULL, '2021-10-27 08:34:10', b'0'); +INSERT INTO `inf_job_log` VALUES (2143, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:11', '2021-10-27 08:34:11', 8, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:11', NULL, '2021-10-27 08:34:11', b'0'); +INSERT INTO `inf_job_log` VALUES (2144, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:12', '2021-10-27 08:34:12', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:12', NULL, '2021-10-27 08:34:12', b'0'); +INSERT INTO `inf_job_log` VALUES (2145, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:13', '2021-10-27 08:34:13', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:13', NULL, '2021-10-27 08:34:13', b'0'); +INSERT INTO `inf_job_log` VALUES (2146, 4, '支付通知 Job', NULL, 1, '2021-10-27 08:34:14', '2021-10-27 08:34:14', 9, 2, 'NoSuchBeanDefinitionException: No bean named \'支付通知 Job\' available', NULL, '2021-10-27 08:34:14', NULL, '2021-10-27 08:34:14', b'0'); +INSERT INTO `inf_job_log` VALUES (2147, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:34:43', '2021-10-27 08:35:30', 47031, 2, 'SQLException: Incorrect DATETIME value: \'NOW()\'', NULL, '2021-10-27 08:34:43', NULL, '2021-10-27 08:35:30', b'0'); +INSERT INTO `inf_job_log` VALUES (2148, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:35:30', '2021-10-27 08:35:30', 14, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:35:30', NULL, '2021-10-27 08:35:30', b'0'); +INSERT INTO `inf_job_log` VALUES (2149, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:35:30', '2021-10-27 08:35:30', 17, 2, 'SQLException: Incorrect DATETIME value: \'NOW()\'', NULL, '2021-10-27 08:35:30', NULL, '2021-10-27 08:35:30', b'0'); +INSERT INTO `inf_job_log` VALUES (2150, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:36:18', '2021-10-27 08:36:18', 52, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:36:18', NULL, '2021-10-27 08:36:18', b'0'); +INSERT INTO `inf_job_log` VALUES (2151, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:18', '2021-10-27 08:36:23', 4716, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:18', NULL, '2021-10-27 08:36:23', b'0'); +INSERT INTO `inf_job_log` VALUES (2152, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:23', '2021-10-27 08:36:46', 23191, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:23', NULL, '2021-10-27 08:36:46', b'0'); +INSERT INTO `inf_job_log` VALUES (2153, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:46', '2021-10-27 08:36:48', 1376, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:46', NULL, '2021-10-27 08:36:48', b'0'); +INSERT INTO `inf_job_log` VALUES (2154, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:36:48', '2021-10-27 08:37:14', 25787, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:36:48', NULL, '2021-10-27 08:37:14', b'0'); +INSERT INTO `inf_job_log` VALUES (2155, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:37:14', '2021-10-27 08:37:14', 22, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:37:14', NULL, '2021-10-27 08:37:14', b'0'); +INSERT INTO `inf_job_log` VALUES (2156, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:37:14', '2021-10-27 08:37:15', 1016, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:37:14', NULL, '2021-10-27 08:37:15', b'0'); +INSERT INTO `inf_job_log` VALUES (2157, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:37:15', '2021-10-27 08:37:15', 23, 1, '执行支付通知 0 个', NULL, '2021-10-27 08:37:15', NULL, '2021-10-27 08:37:15', b'0'); +INSERT INTO `inf_job_log` VALUES (2158, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:37:48', '2021-10-27 08:38:07', 19457, 1, '执行支付通知 4 个', NULL, '2021-10-27 08:37:48', NULL, '2021-10-27 08:38:07', b'0'); +INSERT INTO `inf_job_log` VALUES (2159, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:38:02', '2021-10-27 08:38:03', 776, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:38:02', NULL, '2021-10-27 08:38:03', b'0'); +INSERT INTO `inf_job_log` VALUES (2160, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:38:08', '2021-10-27 08:38:40', 32324, 1, '执行支付通知 4 个', NULL, '2021-10-27 08:38:08', NULL, '2021-10-27 08:38:40', b'0'); +INSERT INTO `inf_job_log` VALUES (2161, 5, 'payNotifyJob', NULL, 1, '2021-10-27 08:38:40', '2021-10-27 08:38:59', 18496, 1, '执行支付通知 4 个', NULL, '2021-10-27 08:38:40', NULL, '2021-10-27 08:38:59', b'0'); +INSERT INTO `inf_job_log` VALUES (2162, 3, 'sysUserSessionTimeoutJob', NULL, 1, '2021-10-27 08:39:00', '2021-10-27 08:39:00', 16, 1, '移除在线会话数量为 0 个', NULL, '2021-10-27 08:39:00', NULL, '2021-10-27 08:39:00', b'0'); COMMIT; -- ---------------------------- @@ -245,6 +929,434 @@ INSERT INTO `mbr_user` VALUES (245, '芋艿', 'http://www.baidu.com', 0, '156016 INSERT INTO `mbr_user` VALUES (246, '', '', 0, '15601691301', '$2a$10$KLvmwoU.bvjU2u/MeWa1iOX2GDRJ2P9YqaCad10bYQCiyOaPexGwW', '127.0.0.1', '127.0.0.1', '2021-10-10 22:36:27', NULL, '2021-10-10 22:36:27', NULL, '2021-10-10 22:36:27', b'0'); COMMIT; +-- ---------------------------- +-- Table structure for pay_app +-- ---------------------------- +DROP TABLE IF EXISTS `pay_app`; +CREATE TABLE `pay_app` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '应用编号', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '应用名', + `status` tinyint NOT NULL COMMENT '开启状态', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `pay_notify_url` varchar(1024) NOT NULL COMMENT '支付结果的回调地址', + `refund_notify_url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '退款结果的回调地址', + `merchant_id` bigint NOT NULL COMMENT '商户编号', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付应用信息'; + +-- ---------------------------- +-- Records of pay_app +-- ---------------------------- +BEGIN; +INSERT INTO `pay_app` VALUES (6, '芋道', 0, '我是一个公众号', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 'http://127.0.0.1', 1, '', '2021-10-23 08:49:25', '', '2021-10-27 00:26:35', b'0'); +COMMIT; + +-- ---------------------------- +-- Table structure for pay_channel +-- ---------------------------- +DROP TABLE IF EXISTS `pay_channel`; +CREATE TABLE `pay_channel` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '商户编号', + `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '渠道编码', + `status` tinyint NOT NULL COMMENT '开启状态', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `fee_rate` double NOT NULL DEFAULT '0' COMMENT '渠道费率,单位:百分比', + `merchant_id` bigint NOT NULL COMMENT '商户编号', + `app_id` bigint NOT NULL COMMENT '应用编号', + `config` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '支付渠道配置', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付渠道\n'; + +-- ---------------------------- +-- Records of pay_channel +-- ---------------------------- +BEGIN; +INSERT INTO `pay_channel` VALUES (9, 'wx_pub', 0, NULL, 1, 1, 6, '{\"@class\":\"cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig\",\"appId\":\"wx041349c6f39b268b\",\"mchId\":\"1545083881\",\"apiVersion\":\"v2\",\"mchKey\":\"0alL64UDQdlCwiKZ73ib7ypaIjMns06p\",\"privateKeyContent\":\"-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5q2hYE3loOQoH\\nl/2kh/epuj17W8VpV5vBl7ysJWAbBXux6mlq4gKTHD0QUQdiKtDEUm/bKC9Bi6VU\\nuklM5Y8oCaCbhjklHRbET8jsgd9phSNGviHclYRLsQRO8oXnN89kN0y7DYKm0hYd\\nmaiS12Z3v8VaImSTr4HVeHlC/z3S6mdwSr263stKt931YTcbTj/QFH7znsv9Na0u\\nX6LaMBEEAsJctWdm8Ndrd1tGh9Fzf0DA5VRXsJR3kkWspy+IwiDTPV/FDKOU9NJC\\nSxMmDePerTfkoZ2s1rltqBK0ykDJrXtxR+hTzEsKZ/KpNi8tyYpfNZsviHIlUsLP\\nFJ5UvUhpAgMBAAECggEAd90NltazqTIxpGdeCwrwOzWNnYbIclJprlhMKIJUgf1P\\nNrPTbHoOGXTAgzkcYCat8iAaMEzH/TOu/3zn92m3uqxEcEL9v1UBLqknWHAbkB6w\\ngGocqDAqYUcdNe5hvbyM+fCta5C0SQgV2PQrHOlMMICwYpkTfzhtxCdreXIYMoGg\\nJEIRkZWgrm/N7LTtNgizznuUjy6OURWjXaWKPcs3b3j6G1gLj9Vp++z4y0u51nqM\\n4R6fcvl8M6BjlcC8zo6DbOvCW8cXtuXsnru+2TPrUnsGeybJok4fEQsfW1BvpvPo\\nief38rYJn4OWxIrHcpWrhNtXtgRPeiMGFfIsEQDmVQKBgQDzXK6Nn3Nr3TFfGVTy\\n8QYrzOuY2NqzH8nnsLL6qn3HoKxTv+PcFKOTPsi6f4hIYCzBP0esRrPv0ffMu9oQ\\nJvFtCJvMmcKGtp0Q5hcj0y/XkbC3AWuahJtBv8lhKXVnQXSL0j3+ombljw4/8yN0\\nAzgBz+j/skQQgZ3sN5h+DHGtgwKBgQDDT784/2pd4m86c/uBmrwYfqu6MJo0eHJh\\n1XPtE+u8pOHyNTFk77rKobKDqN5VlrF0uEmBc/08LKhyxJ3vh/zAbcmqT1Mq778y\\nAKKUtVmvcaVDrvSQHsnhj0zt4SHGmmU34U2b9hV+nocq5VszX6/jp//HJi9bs3We\\ndAzfFCmaowKBgC1MmDVGc+6lCraf+X8LPFHU4Bnga70h8qxM6NPd/nG1R76DHn/t\\n25DiA+0rJgwK0unZxJadxoqic9TJNssA5Lmd+5o3GM2Imm311mLVwbcHqHQ4MHZf\\nrqKrd2m9lNv2hCIurVmDk1Gxsj5XHMdQfhFgSQengCHubp30r07vNA3PAoGAUEAE\\nIjdQTSMs8KeXP7mEb8wcY3R05/pVhT1fVJpK0kgtTofss7yM05V88/v+3sv8Pik6\\niqZN9tuimwWOn00Q3UA/DGtrkMjRlooMQ24AW8YmUZkhg9YivTtUMKnAZwopbLx2\\nVw7V5iDdCRMUVheK/c+ZmQpnixZBzcmBQGfYcGECgYBjEq3Mem+Aw6pXOu6+0FwH\\n9y6Xi4HhBkq0OOZZuXFtWVry7YrD3pBgzWVAZJqJCkyPKKZzCzwdbFd3u0lYBs35\\nzYgx7ug4hR+wfI980a3vxjcWGOqnOUUnUJ7ucIa+KDgnYV/bBy4jqpVreXmWAJXl\\nfyjG3eLWBrtrsI9YX6zeAA==\\n-----END PRIVATE KEY-----\\n\",\"privateCertContent\":\"-----BEGIN CERTIFICATE-----\\nMIID6TCCAtGgAwIBAgIUNkEHq6aQcF80NSYqWS58ybsJzI4wDQYJKoZIhvcNAQEL\\nBQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT\\nFFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg\\nQ0EwHhcNMjExMDIxMDU0NTQxWhcNMjYxMDIwMDU0NTQxWjB7MRMwEQYDVQQDDAox\\nNTQ1MDgzODgxMRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xJzAlBgNVBAsM\\nHuWOhuWfjuWMuuWkp+adjuWwp+aXpeeUqOWTgeW6lzELMAkGA1UEBgwCQ04xETAP\\nBgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA\\nuatoWBN5aDkKB5f9pIf3qbo9e1vFaVebwZe8rCVgGwV7seppauICkxw9EFEHYirQ\\nxFJv2ygvQYulVLpJTOWPKAmgm4Y5JR0WxE/I7IHfaYUjRr4h3JWES7EETvKF5zfP\\nZDdMuw2CptIWHZmoktdmd7/FWiJkk6+B1Xh5Qv890upncEq9ut7LSrfd9WE3G04/\\n0BR+857L/TWtLl+i2jARBALCXLVnZvDXa3dbRofRc39AwOVUV7CUd5JFrKcviMIg\\n0z1fxQyjlPTSQksTJg3j3q035KGdrNa5bagStMpAya17cUfoU8xLCmfyqTYvLcmK\\nXzWbL4hyJVLCzxSeVL1IaQIDAQABo4GBMH8wCQYDVR0TBAIwADALBgNVHQ8EBAMC\\nBPAwZQYDVR0fBF4wXDBaoFigVoZUaHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1\\nYmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMw\\nMUMzRThFQkQyMA0GCSqGSIb3DQEBCwUAA4IBAQBe7XgncAY/1PLbCsnMsYt11k3V\\n2cdNZ+yuCxhlOEKk3nHE6WCTL6zL0qWlTKKpnw1rE/+4OS76Tg72wWXcHfHDAOgt\\n9icp62cKx1WO3QweeZpSvLDmtdLgKKrqeIWh+rL8+ZhuAOxSkaRwcsMTWDaLeDOi\\n0pGeqvfG8WNhPxkkaSI8xbiTK641Yg9WT/Q4yfHS7Q6wg1dj9YQdo0dvVB0S2Nir\\nX9IK6PUaHDnQeFKDmKgLkDGLaKaiijEvC91wMEE6qB8b0eNhciaxq2YhGHcFmSRP\\nWUyc5CmBadt7wIOH5Z3bfuwWGxqxKjNw/baM/d+nk7hlDr01YL9c0g16B9MW\\n-----END CERTIFICATE-----\\n\",\"apiV3Key\":\"joerVi8y5DJ3o4ttA0o1uH47Xz1u2Ase\"}', NULL, '2021-10-23 17:12:10', NULL, '2021-10-23 17:12:10', b'0'); +COMMIT; + +-- ---------------------------- +-- Table structure for pay_merchant +-- ---------------------------- +DROP TABLE IF EXISTS `pay_merchant`; +CREATE TABLE `pay_merchant` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '商户编号', + `no` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商户号', + `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商户全称', + `short_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商户简称', + `status` tinyint NOT NULL COMMENT '开启状态', + `remark` varchar(255) DEFAULT NULL COMMENT '备注', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付商户信息'; + +-- ---------------------------- +-- Records of pay_merchant +-- ---------------------------- +BEGIN; +INSERT INTO `pay_merchant` VALUES (1, 'M233666999', '芋道源码', '芋艿', 0, '我是备注', '', '2021-10-23 08:31:14', '', '2021-10-23 08:44:04', b'0'); +COMMIT; + +-- ---------------------------- +-- Table structure for pay_notify_log +-- ---------------------------- +DROP TABLE IF EXISTS `pay_notify_log`; +CREATE TABLE `pay_notify_log` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '日志编号', + `task_id` bigint NOT NULL COMMENT '通知任务编号', + `notify_times` tinyint NOT NULL COMMENT '第几次被通知', + `response` varchar(2048) NOT NULL COMMENT '请求参数', + `status` tinyint NOT NULL COMMENT '通知状态', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=93 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付通知 App 的日志'; + +-- ---------------------------- +-- Records of pay_notify_log +-- ---------------------------- +BEGIN; +INSERT INTO `pay_notify_log` VALUES (92, 111, 1, '{\"code\":0,\"data\":true,\"msg\":\"\"}', 2, NULL, '2021-10-27 13:22:21', NULL, '2021-10-27 13:22:21', b'0'); +COMMIT; + +-- ---------------------------- +-- Table structure for pay_notify_task +-- ---------------------------- +DROP TABLE IF EXISTS `pay_notify_task`; +CREATE TABLE `pay_notify_task` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务编号', + `merchant_id` bigint NOT NULL COMMENT '商户编号', + `app_id` bigint NOT NULL COMMENT '应用编号', + `type` tinyint NOT NULL COMMENT '通知类型', + `data_id` bigint NOT NULL COMMENT '数据编号', + `status` tinyint NOT NULL COMMENT '通知状态', + `merchant_order_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商户订单编号', + `next_notify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下一次通知时间', + `last_execute_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次执行时间', + `notify_times` tinyint NOT NULL COMMENT '当前通知次数', + `max_notify_times` tinyint NOT NULL COMMENT '最大可通知次数', + `notify_url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '异步通知地址', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=112 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商户支付、退款等的通知\n'; + +-- ---------------------------- +-- Records of pay_notify_task +-- ---------------------------- +BEGIN; +INSERT INTO `pay_notify_task` VALUES (96, 1, 6, 1, 105, 1, '1635295878514', '2021-10-27 08:51:33', '2021-10-27 00:51:32', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 08:51:33', NULL, '2021-10-27 08:51:33', b'0'); +INSERT INTO `pay_notify_task` VALUES (97, 1, 6, 1, 106, 1, '1635296883074', '2021-10-27 09:08:12', '2021-10-27 01:08:12', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:08:12', NULL, '2021-10-27 09:08:12', b'0'); +INSERT INTO `pay_notify_task` VALUES (98, 1, 6, 1, 107, 1, '1635297635297', '2021-10-27 09:20:59', '2021-10-27 01:20:58', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:20:59', NULL, '2021-10-27 09:20:59', b'0'); +INSERT INTO `pay_notify_task` VALUES (99, 1, 6, 1, 108, 1, '1635297700295', '2021-10-27 09:21:55', '2021-10-27 01:21:55', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:21:55', NULL, '2021-10-27 09:21:55', b'0'); +INSERT INTO `pay_notify_task` VALUES (100, 1, 6, 1, 109, 1, '1635298128448', '2021-10-27 09:28:57', '2021-10-27 01:28:56', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:28:57', NULL, '2021-10-27 09:28:57', b'0'); +INSERT INTO `pay_notify_task` VALUES (101, 1, 6, 1, 110, 1, '1635298196716', '2021-10-27 09:30:05', '2021-10-27 01:30:05', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:30:05', NULL, '2021-10-27 09:30:05', b'0'); +INSERT INTO `pay_notify_task` VALUES (102, 1, 6, 1, 111, 1, '1635298542165', '2021-10-27 09:35:49', '2021-10-27 01:35:49', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:35:49', NULL, '2021-10-27 09:35:49', b'0'); +INSERT INTO `pay_notify_task` VALUES (103, 1, 6, 1, 112, 1, '1635298736280', '2021-10-27 09:39:08', '2021-10-27 01:39:07', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:39:08', NULL, '2021-10-27 09:39:08', b'0'); +INSERT INTO `pay_notify_task` VALUES (104, 1, 6, 1, 113, 1, '1635298796688', '2021-10-27 09:40:21', '2021-10-27 01:40:20', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:40:21', NULL, '2021-10-27 09:40:21', b'0'); +INSERT INTO `pay_notify_task` VALUES (105, 1, 6, 1, 114, 1, '1635299148566', '2021-10-27 09:45:57', '2021-10-27 01:45:57', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 09:45:57', NULL, '2021-10-27 09:45:57', b'0'); +INSERT INTO `pay_notify_task` VALUES (106, 1, 6, 1, 115, 1, '1635300261266', '2021-10-27 10:04:29', '2021-10-27 02:04:28', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 10:04:29', NULL, '2021-10-27 10:04:29', b'0'); +INSERT INTO `pay_notify_task` VALUES (107, 1, 6, 1, 117, 1, '1635311468233', '2021-10-27 13:11:16', '2021-10-27 05:11:16', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 13:11:16', NULL, '2021-10-27 13:11:16', b'0'); +INSERT INTO `pay_notify_task` VALUES (108, 1, 6, 1, 118, 1, '1635311823086', '2021-10-27 13:17:09', '2021-10-27 05:17:08', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 13:17:09', NULL, '2021-10-27 13:17:09', b'0'); +INSERT INTO `pay_notify_task` VALUES (109, 1, 6, 1, 119, 1, '1635311881440', '2021-10-27 13:18:11', '2021-10-27 05:18:10', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 13:18:11', NULL, '2021-10-27 13:18:11', b'0'); +INSERT INTO `pay_notify_task` VALUES (110, 1, 6, 1, 120, 1, '1635311949168', '2021-10-27 13:19:15', '2021-10-27 05:19:15', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 13:19:15', NULL, '2021-10-27 13:19:15', b'0'); +INSERT INTO `pay_notify_task` VALUES (111, 1, 6, 1, 121, 1, '1635312124657', '2021-10-27 13:22:16', '2021-10-27 05:22:16', 0, 9, 'http://127.0.0.1:28080/api/shop/order/pay-notify', NULL, '2021-10-27 13:22:16', NULL, '2021-10-27 13:22:16', b'0'); +COMMIT; + +-- ---------------------------- +-- Table structure for pay_order +-- ---------------------------- +DROP TABLE IF EXISTS `pay_order`; +CREATE TABLE `pay_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '支付订单编号', + `merchant_id` bigint NOT NULL COMMENT '商户编号', + `app_id` bigint NOT NULL COMMENT '应用编号', + `channel_id` bigint DEFAULT NULL COMMENT '渠道编号', + `channel_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '渠道编码', + `merchant_order_id` varchar(64) NOT NULL COMMENT '商户订单编号', + `subject` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品标题', + `body` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '商品描述', + `notify_url` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '异步通知地址', + `notify_status` tinyint NOT NULL COMMENT '通知商户支付结果的回调状态', + `amount` bigint NOT NULL COMMENT '支付金额,单位:分', + `channel_fee_rate` double DEFAULT '0' COMMENT '渠道手续费,单位:百分比', + `channel_fee_amount` bigint DEFAULT '0' COMMENT '渠道手续金额,单位:分', + `status` tinyint NOT NULL COMMENT '支付状态', + `user_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户 IP', + `expire_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单失效时间', + `success_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '订单支付成功时间', + `notify_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '订单支付通知时间', + `success_extension_id` bigint DEFAULT NULL COMMENT '支付成功的订单拓展单编号', + `refund_status` tinyint NOT NULL COMMENT '退款状态', + `refund_times` tinyint NOT NULL COMMENT '退款次数', + `refund_amount` bigint NOT NULL COMMENT '退款总金额,单位:分', + `channel_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '渠道用户编号', + `channel_order_no` varchar(64) DEFAULT NULL COMMENT '渠道订单号', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付订单\n'; + +-- ---------------------------- +-- Records of pay_order +-- ---------------------------- +BEGIN; +INSERT INTO `pay_order` VALUES (10, 1, 6, NULL, NULL, '1634988463462', '标题', '内容', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-24 19:27:43', '2021-10-23 11:27:43', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-23 19:27:44', NULL, '2021-10-23 19:27:44', b'0'); +INSERT INTO `pay_order` VALUES (11, 1, 6, NULL, NULL, '1635088798052', '标题:1635088798052', '内容:1635088798052', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:19:58', '2021-10-24 15:19:58', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:19:58', NULL, '2021-10-24 23:19:58', b'0'); +INSERT INTO `pay_order` VALUES (12, 1, 6, NULL, NULL, '1635088829013', '标题:1635088829013', '内容:1635088829013', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:20:29', '2021-10-24 15:20:29', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:20:29', NULL, '2021-10-24 23:20:29', b'0'); +INSERT INTO `pay_order` VALUES (13, 1, 6, NULL, NULL, '1635088934120', '标题:1635088934120', '内容:1635088934120', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:22:14', '2021-10-24 15:22:14', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:22:14', NULL, '2021-10-24 23:22:14', b'0'); +INSERT INTO `pay_order` VALUES (14, 1, 6, NULL, NULL, '1635088936920', '标题:1635088936920', '内容:1635088936920', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:22:17', '2021-10-24 15:22:16', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:22:17', NULL, '2021-10-24 23:22:17', b'0'); +INSERT INTO `pay_order` VALUES (15, 1, 6, NULL, NULL, '1635088943990', '标题:1635088943990', '内容:1635088943990', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:22:24', '2021-10-24 15:22:24', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:22:24', NULL, '2021-10-24 23:22:24', b'0'); +INSERT INTO `pay_order` VALUES (16, 1, 6, NULL, NULL, '1635088976396', '标题:1635088976396', '内容:1635088976396', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:22:56', '2021-10-24 15:22:56', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:22:56', NULL, '2021-10-24 23:22:56', b'0'); +INSERT INTO `pay_order` VALUES (17, 1, 6, NULL, NULL, '1635088979514', '标题:1635088979514', '内容:1635088979514', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:23:00', '2021-10-24 15:22:59', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:23:00', NULL, '2021-10-24 23:23:00', b'0'); +INSERT INTO `pay_order` VALUES (18, 1, 6, NULL, NULL, '1635089022772', '标题:1635089022772', '内容:1635089022772', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:23:43', '2021-10-24 15:23:42', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:23:43', NULL, '2021-10-24 23:23:43', b'0'); +INSERT INTO `pay_order` VALUES (19, 1, 6, NULL, NULL, '1635089029019', '标题:1635089029019', '内容:1635089029019', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:23:49', '2021-10-24 15:23:49', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:23:49', NULL, '2021-10-24 23:23:49', b'0'); +INSERT INTO `pay_order` VALUES (20, 1, 6, NULL, NULL, '1635089125167', '标题:1635089125167', '内容:1635089125167', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:25:25', '2021-10-24 15:25:25', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:25:25', NULL, '2021-10-24 23:25:25', b'0'); +INSERT INTO `pay_order` VALUES (21, 1, 6, NULL, NULL, '1635089133667', '标题:1635089133667', '内容:1635089133667', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:25:34', '2021-10-24 15:25:33', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:25:34', NULL, '2021-10-24 23:25:34', b'0'); +INSERT INTO `pay_order` VALUES (22, 1, 6, NULL, NULL, '1635089160201', '标题:1635089160201', '内容:1635089160201', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:26:00', '2021-10-24 15:26:00', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:26:00', NULL, '2021-10-24 23:26:00', b'0'); +INSERT INTO `pay_order` VALUES (23, 1, 6, NULL, NULL, '1635089171152', '标题:1635089171152', '内容:1635089171152', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:26:11', '2021-10-24 15:26:11', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); +INSERT INTO `pay_order` VALUES (24, 1, 6, NULL, NULL, '1635089171281', '标题:1635089171281', '内容:1635089171281', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:26:11', '2021-10-24 15:26:11', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:26:11', NULL, '2021-10-24 23:26:11', b'0'); +INSERT INTO `pay_order` VALUES (25, 1, 6, NULL, NULL, '1635089177510', '标题:1635089177510', '内容:1635089177510', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:26:18', '2021-10-24 15:26:17', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:26:18', NULL, '2021-10-24 23:26:18', b'0'); +INSERT INTO `pay_order` VALUES (26, 1, 6, NULL, NULL, '1635089179921', '标题:1635089179921', '内容:1635089179921', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:26:20', '2021-10-24 15:26:19', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:26:20', NULL, '2021-10-24 23:26:20', b'0'); +INSERT INTO `pay_order` VALUES (27, 1, 6, NULL, NULL, '1635089209386', '标题:1635089209386', '内容:1635089209386', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:26:49', '2021-10-24 15:26:49', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:26:49', NULL, '2021-10-24 23:26:49', b'0'); +INSERT INTO `pay_order` VALUES (28, 1, 6, NULL, NULL, '1635089217890', '标题:1635089217890', '内容:1635089217890', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:26:58', '2021-10-24 15:26:57', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:26:58', NULL, '2021-10-24 23:26:58', b'0'); +INSERT INTO `pay_order` VALUES (29, 1, 6, NULL, NULL, '1635089222164', '标题:1635089222163', '内容:1635089222163', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:27:02', '2021-10-24 15:27:02', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:27:02', NULL, '2021-10-24 23:27:02', b'0'); +INSERT INTO `pay_order` VALUES (30, 1, 6, NULL, NULL, '1635089267113', '标题:1635089267113', '内容:1635089267113', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:27:47', '2021-10-24 15:27:47', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:27:47', NULL, '2021-10-24 23:27:47', b'0'); +INSERT INTO `pay_order` VALUES (31, 1, 6, NULL, NULL, '1635089268654', '标题:1635089268654', '内容:1635089268654', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:27:49', '2021-10-24 15:27:48', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:27:49', NULL, '2021-10-24 23:27:49', b'0'); +INSERT INTO `pay_order` VALUES (32, 1, 6, NULL, NULL, '1635089310024', '标题:1635089310024', '内容:1635089310024', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:28:30', '2021-10-24 15:28:30', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:28:30', NULL, '2021-10-24 23:28:30', b'0'); +INSERT INTO `pay_order` VALUES (33, 1, 6, NULL, NULL, '1635089314276', '标题:1635089314276', '内容:1635089314276', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:28:34', '2021-10-24 15:28:34', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:28:34', NULL, '2021-10-24 23:28:34', b'0'); +INSERT INTO `pay_order` VALUES (34, 1, 6, NULL, NULL, '1635089325747', '标题:1635089325747', '内容:1635089325747', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:28:46', '2021-10-24 15:28:45', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:28:46', NULL, '2021-10-24 23:28:46', b'0'); +INSERT INTO `pay_order` VALUES (35, 1, 6, NULL, NULL, '1635089412828', '标题:1635089412828', '内容:1635089412828', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:30:13', '2021-10-24 15:30:12', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:30:13', NULL, '2021-10-24 23:30:13', b'0'); +INSERT INTO `pay_order` VALUES (36, 1, 6, NULL, NULL, '1635089423488', '标题:1635089423488', '内容:1635089423488', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:30:23', '2021-10-24 15:30:23', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:30:24', NULL, '2021-10-24 23:30:24', b'0'); +INSERT INTO `pay_order` VALUES (37, 1, 6, NULL, NULL, '1635089444235', '标题:1635089444235', '内容:1635089444235', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:30:44', '2021-10-24 15:30:44', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:30:44', NULL, '2021-10-24 23:30:44', b'0'); +INSERT INTO `pay_order` VALUES (38, 1, 6, NULL, NULL, '1635089448403', '标题:1635089448403', '内容:1635089448403', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:30:48', '2021-10-24 15:30:48', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:30:48', NULL, '2021-10-24 23:30:48', b'0'); +INSERT INTO `pay_order` VALUES (39, 1, 6, NULL, NULL, '1635089556720', '标题:1635089556720', '内容:1635089556720', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:32:37', '2021-10-24 15:32:36', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:32:37', NULL, '2021-10-24 23:32:37', b'0'); +INSERT INTO `pay_order` VALUES (40, 1, 6, NULL, NULL, '1635089561277', '标题:1635089561277', '内容:1635089561277', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:32:41', '2021-10-24 15:32:41', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:32:41', NULL, '2021-10-24 23:32:41', b'0'); +INSERT INTO `pay_order` VALUES (41, 1, 6, NULL, NULL, '1635089563908', '标题:1635089563908', '内容:1635089563908', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:32:44', '2021-10-24 15:32:43', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:32:44', NULL, '2021-10-24 23:32:44', b'0'); +INSERT INTO `pay_order` VALUES (42, 1, 6, NULL, NULL, '1635089576165', '标题:1635089576165', '内容:1635089576165', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:32:56', '2021-10-24 15:32:56', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:32:56', NULL, '2021-10-24 23:32:56', b'0'); +INSERT INTO `pay_order` VALUES (43, 1, 6, NULL, NULL, '1635089833753', '标题:1635089833753', '内容:1635089833753', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:37:14', '2021-10-24 15:37:13', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:37:14', NULL, '2021-10-24 23:37:14', b'0'); +INSERT INTO `pay_order` VALUES (44, 1, 6, NULL, NULL, '1635089864519', '标题:1635089864519', '内容:1635089864519', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:37:45', '2021-10-24 15:37:44', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:37:45', NULL, '2021-10-24 23:37:45', b'0'); +INSERT INTO `pay_order` VALUES (45, 1, 6, NULL, NULL, '1635089946932', '标题:1635089946932', '内容:1635089946932', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:39:07', '2021-10-24 15:39:06', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:39:07', NULL, '2021-10-24 23:39:07', b'0'); +INSERT INTO `pay_order` VALUES (46, 1, 6, NULL, NULL, '1635089950125', '标题:1635089950125', '内容:1635089950125', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:39:10', '2021-10-24 15:39:10', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:39:10', NULL, '2021-10-24 23:39:10', b'0'); +INSERT INTO `pay_order` VALUES (47, 1, 6, NULL, NULL, '1635089977784', '标题:1635089977784', '内容:1635089977784', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:39:38', '2021-10-24 15:39:37', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); +INSERT INTO `pay_order` VALUES (48, 1, 6, NULL, NULL, '1635089978099', '标题:1635089978099', '内容:1635089978099', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:39:38', '2021-10-24 15:39:38', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:39:38', NULL, '2021-10-24 23:39:38', b'0'); +INSERT INTO `pay_order` VALUES (49, 1, 6, NULL, NULL, '1635089982848', '标题:1635089982848', '内容:1635089982848', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:39:43', '2021-10-24 15:39:42', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:39:43', NULL, '2021-10-24 23:39:43', b'0'); +INSERT INTO `pay_order` VALUES (50, 1, 6, NULL, NULL, '1635090084470', '标题:1635090084470', '内容:1635090084470', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:41:24', '2021-10-24 15:41:24', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:41:24', NULL, '2021-10-24 23:41:24', b'0'); +INSERT INTO `pay_order` VALUES (51, 1, 6, NULL, NULL, '1635090139009', '标题:1635090139009', '内容:1635090139009', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:42:19', '2021-10-24 15:42:19', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:42:19', NULL, '2021-10-24 23:42:19', b'0'); +INSERT INTO `pay_order` VALUES (52, 1, 6, NULL, NULL, '1635090153216', '标题:1635090153216', '内容:1635090153216', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:42:33', '2021-10-24 15:42:33', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:42:33', NULL, '2021-10-24 23:42:33', b'0'); +INSERT INTO `pay_order` VALUES (53, 1, 6, NULL, NULL, '1635090158589', '标题:1635090158589', '内容:1635090158589', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:42:39', '2021-10-24 15:42:38', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:42:39', NULL, '2021-10-24 23:42:39', b'0'); +INSERT INTO `pay_order` VALUES (54, 1, 6, NULL, NULL, '1635090265951', '标题:1635090265951', '内容:1635090265951', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:44:26', '2021-10-24 15:44:25', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:44:26', NULL, '2021-10-24 23:44:26', b'0'); +INSERT INTO `pay_order` VALUES (55, 1, 6, NULL, NULL, '1635090284982', '标题:1635090284982', '内容:1635090284982', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:44:45', '2021-10-24 15:44:45', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:44:45', NULL, '2021-10-24 23:44:45', b'0'); +INSERT INTO `pay_order` VALUES (56, 1, 6, NULL, NULL, '1635090286709', '标题:1635090286709', '内容:1635090286709', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:44:47', '2021-10-24 15:44:46', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:44:47', NULL, '2021-10-24 23:44:47', b'0'); +INSERT INTO `pay_order` VALUES (57, 1, 6, NULL, NULL, '1635090358714', '标题:1635090358714', '内容:1635090358714', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:45:59', '2021-10-24 15:45:58', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:45:59', NULL, '2021-10-24 23:45:59', b'0'); +INSERT INTO `pay_order` VALUES (58, 1, 6, NULL, NULL, '1635090365901', '标题:1635090365901', '内容:1635090365901', 'http://127.0.0.1', 0, 100, 0, 0, 0, '127.0.0.1', '2021-10-25 23:46:06', '2021-10-24 15:46:05', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-24 23:46:06', NULL, '2021-10-24 23:46:06', b'0'); +INSERT INTO `pay_order` VALUES (59, 1, 6, NULL, NULL, '1635122297240', '标题:1635122297240', '内容:1635122297240', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:38:17', '2021-10-25 00:38:17', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:38:17', NULL, '2021-10-25 08:38:17', b'0'); +INSERT INTO `pay_order` VALUES (60, 1, 6, NULL, NULL, '1635122329998', '标题:1635122329998', '内容:1635122329998', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:38:50', '2021-10-25 00:38:50', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:38:50', NULL, '2021-10-25 08:38:50', b'0'); +INSERT INTO `pay_order` VALUES (61, 1, 6, NULL, NULL, '1635122358555', '标题:1635122358555', '内容:1635122358555', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:39:19', '2021-10-25 00:39:18', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:39:19', NULL, '2021-10-25 08:39:19', b'0'); +INSERT INTO `pay_order` VALUES (62, 1, 6, NULL, NULL, '1635122446577', '标题:1635122446577', '内容:1635122446577', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:40:47', '2021-10-25 00:40:46', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:40:47', NULL, '2021-10-25 08:40:47', b'0'); +INSERT INTO `pay_order` VALUES (63, 1, 6, NULL, NULL, '1635122486835', '标题:1635122486835', '内容:1635122486835', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:41:27', '2021-10-25 00:41:26', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:41:27', NULL, '2021-10-25 08:41:27', b'0'); +INSERT INTO `pay_order` VALUES (64, 1, 6, NULL, NULL, '1635122490656', '标题:1635122490656', '内容:1635122490656', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:41:31', '2021-10-25 00:41:30', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:41:31', NULL, '2021-10-25 08:41:31', b'0'); +INSERT INTO `pay_order` VALUES (65, 1, 6, NULL, NULL, '1635122508318', '标题:1635122508318', '内容:1635122508318', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:41:48', '2021-10-25 00:41:48', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:41:48', NULL, '2021-10-25 08:41:48', b'0'); +INSERT INTO `pay_order` VALUES (66, 1, 6, NULL, NULL, '1635122538233', '标题:1635122538233', '内容:1635122538233', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:42:18', '2021-10-25 00:42:18', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:42:18', NULL, '2021-10-25 08:42:18', b'0'); +INSERT INTO `pay_order` VALUES (67, 1, 6, NULL, NULL, '1635122700108', '标题:1635122700108', '内容:1635122700108', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:45:00', '2021-10-25 00:45:00', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:45:00', NULL, '2021-10-25 08:45:00', b'0'); +INSERT INTO `pay_order` VALUES (68, 1, 6, NULL, NULL, '1635122739305', '标题:1635122739305', '内容:1635122739305', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:45:39', '2021-10-25 00:45:39', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:45:39', NULL, '2021-10-25 08:45:39', b'0'); +INSERT INTO `pay_order` VALUES (69, 1, 6, NULL, NULL, '1635122743771', '标题:1635122743771', '内容:1635122743771', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:45:44', '2021-10-25 00:45:43', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:45:44', NULL, '2021-10-25 08:45:44', b'0'); +INSERT INTO `pay_order` VALUES (70, 1, 6, NULL, NULL, '1635122827585', '标题:1635122827585', '内容:1635122827585', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:47:08', '2021-10-25 00:47:07', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:47:08', NULL, '2021-10-25 08:47:08', b'0'); +INSERT INTO `pay_order` VALUES (71, 1, 6, NULL, NULL, '1635122867264', '标题:1635122867264', '内容:1635122867264', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:47:47', '2021-10-25 00:47:47', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:47:47', NULL, '2021-10-25 08:47:47', b'0'); +INSERT INTO `pay_order` VALUES (72, 1, 6, NULL, NULL, '1635122869903', '标题:1635122869903', '内容:1635122869903', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:47:50', '2021-10-25 00:47:49', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:47:50', NULL, '2021-10-25 08:47:50', b'0'); +INSERT INTO `pay_order` VALUES (73, 1, 6, NULL, NULL, '1635122883742', '标题:1635122883742', '内容:1635122883742', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:48:04', '2021-10-25 00:48:03', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:48:04', NULL, '2021-10-25 08:48:04', b'0'); +INSERT INTO `pay_order` VALUES (74, 1, 6, NULL, NULL, '1635122885267', '标题:1635122885267', '内容:1635122885267', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:48:05', '2021-10-25 00:48:05', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:48:05', NULL, '2021-10-25 08:48:05', b'0'); +INSERT INTO `pay_order` VALUES (75, 1, 6, NULL, NULL, '1635122885582', '标题:1635122885582', '内容:1635122885582', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:48:06', '2021-10-25 00:48:05', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:48:06', NULL, '2021-10-25 08:48:06', b'0'); +INSERT INTO `pay_order` VALUES (76, 1, 6, NULL, NULL, '1635122918126', '标题:1635122918126', '内容:1635122918126', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:48:38', '2021-10-25 00:48:38', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:48:38', NULL, '2021-10-25 08:48:38', b'0'); +INSERT INTO `pay_order` VALUES (77, 1, 6, NULL, NULL, '1635123030294', '标题:1635123030294', '内容:1635123030294', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:50:30', '2021-10-25 00:50:30', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:50:30', NULL, '2021-10-25 08:50:30', b'0'); +INSERT INTO `pay_order` VALUES (78, 1, 6, NULL, NULL, '1635123068343', '标题:1635123068343', '内容:1635123068343', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:51:08', '2021-10-25 00:51:08', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:51:08', NULL, '2021-10-25 08:51:08', b'0'); +INSERT INTO `pay_order` VALUES (79, 1, 6, NULL, NULL, '1635123073596', '标题:1635123073596', '内容:1635123073596', 'http://127.0.0.1', 0, 100, 0, 0, 0, '101.82.138.223', '2021-10-26 08:51:14', '2021-10-25 00:51:13', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:51:14', NULL, '2021-10-25 08:51:14', b'0'); +INSERT INTO `pay_order` VALUES (80, 1, 6, NULL, NULL, '1635123195063', '标题:1635123195063', '内容:1635123195063', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 08:53:15', '2021-10-25 00:53:15', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 08:53:15', NULL, '2021-10-25 08:53:15', b'0'); +INSERT INTO `pay_order` VALUES (81, 1, 6, NULL, NULL, '1635123692042', '标题:1635123692042', '内容:1635123692042', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:01:32', '2021-10-25 01:01:32', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:01:32', NULL, '2021-10-25 09:01:32', b'0'); +INSERT INTO `pay_order` VALUES (82, 1, 6, NULL, NULL, '1635123806943', '标题:1635123806943', '内容:1635123806943', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:03:27', '2021-10-25 01:03:26', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:03:27', NULL, '2021-10-25 09:03:27', b'0'); +INSERT INTO `pay_order` VALUES (83, 1, 6, NULL, NULL, '1635123948382', '标题:1635123948382', '内容:1635123948382', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:05:48', '2021-10-25 01:05:48', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:05:48', NULL, '2021-10-25 09:05:48', b'0'); +INSERT INTO `pay_order` VALUES (84, 1, 6, NULL, NULL, '1635123961537', '标题:1635123961537', '内容:1635123961537', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:06:02', '2021-10-25 01:06:01', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:06:02', NULL, '2021-10-25 09:06:02', b'0'); +INSERT INTO `pay_order` VALUES (85, 1, 6, NULL, NULL, '1635124136136', '标题:1635124136136', '内容:1635124136136', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:08:56', '2021-10-25 01:08:56', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:08:56', NULL, '2021-10-25 09:08:56', b'0'); +INSERT INTO `pay_order` VALUES (86, 1, 6, NULL, NULL, '1635124373620', '标题:1635124373620', '内容:1635124373620', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:12:54', '2021-10-25 01:12:53', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:12:54', NULL, '2021-10-25 09:12:54', b'0'); +INSERT INTO `pay_order` VALUES (87, 1, 6, NULL, NULL, '1635124391618', '标题:1635124391618', '内容:1635124391618', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:13:12', '2021-10-25 01:13:11', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:13:12', NULL, '2021-10-25 09:13:12', b'0'); +INSERT INTO `pay_order` VALUES (88, 1, 6, NULL, NULL, '1635125520387', '标题:1635125520387', '内容:1635125520387', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:32:00', '2021-10-25 01:32:00', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:32:00', NULL, '2021-10-25 09:32:00', b'0'); +INSERT INTO `pay_order` VALUES (89, 1, 6, NULL, NULL, '1635126846741', '标题:1635126846741', '内容:1635126846741', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:54:07', '2021-10-25 01:54:06', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:54:07', NULL, '2021-10-25 09:54:07', b'0'); +INSERT INTO `pay_order` VALUES (90, 1, 6, NULL, NULL, '1635126932826', '标题:1635126932826', '内容:1635126932826', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 09:55:33', '2021-10-25 01:55:32', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 09:55:33', NULL, '2021-10-25 09:55:33', b'0'); +INSERT INTO `pay_order` VALUES (91, 1, 6, NULL, NULL, '1635127428562', '标题:1635127428562', '内容:1635127428562', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.138.223', '2021-10-26 10:03:49', '2021-10-25 02:03:48', '2021-10-25 15:16:53', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-25 10:03:49', NULL, '2021-10-25 10:03:49', b'0'); +INSERT INTO `pay_order` VALUES (92, 1, 6, NULL, NULL, '1635211245454', '标题:1635211245454', '内容:1635211245454', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:20:45', '2021-10-26 01:20:45', '2021-10-26 01:20:45', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:20:46', NULL, '2021-10-26 09:20:46', b'0'); +INSERT INTO `pay_order` VALUES (93, 1, 6, NULL, NULL, '1635211270009', '标题:1635211270009', '内容:1635211270009', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:21:10', '2021-10-26 01:21:10', '2021-10-26 01:21:10', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:21:10', NULL, '2021-10-26 09:21:10', b'0'); +INSERT INTO `pay_order` VALUES (94, 1, 6, NULL, NULL, '1635211368329', '标题:1635211368329', '内容:1635211368329', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:22:48', '2021-10-26 01:22:48', '2021-10-26 01:22:48', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:22:48', NULL, '2021-10-26 09:22:48', b'0'); +INSERT INTO `pay_order` VALUES (95, 1, 6, NULL, NULL, '1635211489276', '标题:1635211489276', '内容:1635211489276', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:24:49', '2021-10-26 01:24:49', '2021-10-26 01:24:49', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:24:49', NULL, '2021-10-26 09:24:49', b'0'); +INSERT INTO `pay_order` VALUES (96, 1, 6, NULL, NULL, '1635211845846', '标题:1635211845846', '内容:1635211845846', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:30:46', '2021-10-26 01:30:45', '2021-10-26 01:30:45', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:30:46', NULL, '2021-10-26 09:30:46', b'0'); +INSERT INTO `pay_order` VALUES (97, 1, 6, NULL, NULL, '1635212063323', '标题:1635212063323', '内容:1635212063323', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:34:23', '2021-10-26 01:34:23', '2021-10-26 01:34:23', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:34:23', NULL, '2021-10-26 09:34:23', b'0'); +INSERT INTO `pay_order` VALUES (98, 1, 6, NULL, NULL, '1635212315488', '标题:1635212315487', '内容:1635212315487', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:38:35', '2021-10-26 01:38:35', '2021-10-26 01:38:35', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:38:36', NULL, '2021-10-26 09:38:36', b'0'); +INSERT INTO `pay_order` VALUES (99, 1, 6, NULL, NULL, '1635212375595', '标题:1635212375595', '内容:1635212375595', 'http://127.0.0.1', 0, 1, 0, 0, 0, '101.82.98.72', '2021-10-27 09:39:36', '2021-10-26 01:39:35', '2021-10-26 01:39:35', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:39:36', NULL, '2021-10-26 09:39:36', b'0'); +INSERT INTO `pay_order` VALUES (100, 1, 6, 9, 'wx_pub', '1635212461835', '标题:1635212461835', '内容:1635212461835', 'http://127.0.0.1', 0, 1, 0, 0, 10, '101.82.98.72', '2021-10-27 09:41:02', '2021-10-26 09:41:15', '2021-10-26 09:41:54', 78, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:41:02', NULL, '2021-10-26 09:41:54', b'0'); +INSERT INTO `pay_order` VALUES (101, 1, 6, 9, 'wx_pub', '1635212524100', '标题:1635212524100', '内容:1635212524100', 'http://127.0.0.1', 0, 1, 0, 0, 10, '101.82.98.72', '2021-10-27 09:42:04', '2021-10-26 09:42:15', '2021-10-26 09:42:27', 79, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:42:04', NULL, '2021-10-26 09:42:28', b'0'); +INSERT INTO `pay_order` VALUES (102, 1, 6, 9, 'wx_pub', '1635212576678', '标题:1635212576678', '内容:1635212576678', 'http://127.0.0.1', 0, 1, 0, 0, 10, '101.82.98.72', '2021-10-27 09:42:57', '2021-10-26 09:43:16', '2021-10-26 09:43:17', 81, 0, 0, 0, NULL, NULL, NULL, '2021-10-26 09:42:57', NULL, '2021-10-26 09:43:17', b'0'); +INSERT INTO `pay_order` VALUES (103, 1, 6, 9, 'wx_pub', '1635212929429', '标题:1635212929428', '内容:1635212929428', 'http://127.0.0.1', 0, 1, 0, 0, 10, '101.82.98.72', '2021-10-27 09:48:49', '2021-10-26 09:48:55', '2021-10-26 09:48:56', 82, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001151202110263761187715', NULL, '2021-10-26 09:48:49', NULL, '2021-10-26 09:48:56', b'0'); +INSERT INTO `pay_order` VALUES (104, 1, 6, NULL, NULL, '1635295769583', '标题:1635295769583', '内容:1635295769583', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 0, '101.82.181.148', '2021-10-28 08:49:30', '2021-10-27 00:49:29', '2021-10-27 00:49:29', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-27 08:49:30', NULL, '2021-10-27 08:49:30', b'0'); +INSERT INTO `pay_order` VALUES (105, 1, 6, 9, 'wx_pub', '1635295878514', '标题:1635295878514', '内容:1635295878514', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 08:51:19', '2021-10-27 08:51:32', '2021-10-27 08:51:33', 83, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001175202110273387197932', NULL, '2021-10-27 08:51:19', NULL, '2021-10-27 08:51:33', b'0'); +INSERT INTO `pay_order` VALUES (106, 1, 6, 9, 'wx_pub', '1635296883074', '标题:1635296883074', '内容:1635296883074', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:08:03', '2021-10-27 09:08:11', '2021-10-27 09:08:12', 84, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001183202110271706103601', NULL, '2021-10-27 09:08:03', NULL, '2021-10-27 09:08:12', b'0'); +INSERT INTO `pay_order` VALUES (107, 1, 6, 9, 'wx_pub', '1635297635297', '标题:1635297635297', '内容:1635297635297', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:20:35', '2021-10-27 09:20:58', '2021-10-27 09:20:59', 85, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001173202110274487848024', NULL, '2021-10-27 09:20:35', NULL, '2021-10-27 09:20:59', b'0'); +INSERT INTO `pay_order` VALUES (108, 1, 6, 9, 'wx_pub', '1635297700295', '标题:1635297700295', '内容:1635297700295', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:21:40', '2021-10-27 09:21:54', '2021-10-27 09:21:55', 86, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001194202110270081665611', NULL, '2021-10-27 09:21:40', NULL, '2021-10-27 09:21:55', b'0'); +INSERT INTO `pay_order` VALUES (109, 1, 6, 9, 'wx_pub', '1635298128448', '标题:1635298128448', '内容:1635298128448', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:28:48', '2021-10-27 09:28:56', '2021-10-27 09:28:57', 87, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001163202110279271204066', NULL, '2021-10-27 09:28:49', NULL, '2021-10-27 09:28:57', b'0'); +INSERT INTO `pay_order` VALUES (110, 1, 6, 9, 'wx_pub', '1635298196716', '标题:1635298196716', '内容:1635298196716', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:29:57', '2021-10-27 09:30:04', '2021-10-27 09:30:05', 88, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001178202110270321083776', NULL, '2021-10-27 09:29:57', NULL, '2021-10-27 09:30:05', b'0'); +INSERT INTO `pay_order` VALUES (111, 1, 6, 9, 'wx_pub', '1635298542165', '标题:1635298542165', '内容:1635298542165', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:35:42', '2021-10-27 09:35:48', '2021-10-27 09:35:49', 89, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001165202110279375621615', NULL, '2021-10-27 09:35:42', NULL, '2021-10-27 09:35:49', b'0'); +INSERT INTO `pay_order` VALUES (112, 1, 6, 9, 'wx_pub', '1635298736280', '标题:1635298736280', '内容:1635298736280', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:38:56', '2021-10-27 09:39:07', '2021-10-27 09:39:08', 91, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001169202110279628461999', NULL, '2021-10-27 09:38:56', NULL, '2021-10-27 09:39:08', b'0'); +INSERT INTO `pay_order` VALUES (113, 1, 6, 9, 'wx_pub', '1635298796688', '标题:1635298796688', '内容:1635298796688', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:39:57', '2021-10-27 09:40:20', '2021-10-27 09:40:21', 93, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001180202110276135740320', NULL, '2021-10-27 09:39:57', NULL, '2021-10-27 09:40:21', b'0'); +INSERT INTO `pay_order` VALUES (114, 1, 6, 9, 'wx_pub', '1635299148566', '标题:1635299148566', '内容:1635299148566', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 09:45:49', '2021-10-27 09:45:56', '2021-10-27 09:45:57', 94, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001305202110277322382253', NULL, '2021-10-27 09:45:49', NULL, '2021-10-27 09:45:57', b'0'); +INSERT INTO `pay_order` VALUES (115, 1, 6, 9, 'wx_pub', '1635300261266', '标题:1635300261266', '内容:1635300261266', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.181.148', '2021-10-28 10:04:21', '2021-10-27 10:04:28', '2021-10-27 10:04:29', 95, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001201202110271614745531', NULL, '2021-10-27 10:04:21', NULL, '2021-10-27 10:04:29', b'0'); +INSERT INTO `pay_order` VALUES (116, 1, 6, NULL, NULL, '1635311351736', '标题:1635311351736', '内容:1635311351736', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 0, '101.82.233.75', '2021-10-28 13:09:12', '2021-10-27 05:09:11', '2021-10-27 05:09:11', NULL, 0, 0, 0, NULL, NULL, NULL, '2021-10-27 13:09:12', NULL, '2021-10-27 13:09:12', b'0'); +INSERT INTO `pay_order` VALUES (117, 1, 6, 9, 'wx_pub', '1635311468233', '标题:1635311468233', '内容:1635311468233', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.233.75', '2021-10-28 13:11:08', '2021-10-27 13:11:15', '2021-10-27 13:11:16', 96, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001194202110276752100612', NULL, '2021-10-27 13:11:08', NULL, '2021-10-27 13:11:16', b'0'); +INSERT INTO `pay_order` VALUES (118, 1, 6, 9, 'wx_pub', '1635311823086', '标题:1635311823086', '内容:1635311823086', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.233.75', '2021-10-28 13:17:03', '2021-10-27 13:17:08', '2021-10-27 13:17:09', 97, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001167202110271022491439', NULL, '2021-10-27 13:17:03', NULL, '2021-10-27 13:17:09', b'0'); +INSERT INTO `pay_order` VALUES (119, 1, 6, 9, 'wx_pub', '1635311881440', '标题:1635311881439', '内容:1635311881439', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.233.75', '2021-10-28 13:18:01', '2021-10-27 13:18:10', '2021-10-27 13:18:11', 98, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001173202110272847982104', NULL, '2021-10-27 13:18:02', NULL, '2021-10-27 13:18:11', b'0'); +INSERT INTO `pay_order` VALUES (120, 1, 6, 9, 'wx_pub', '1635311949168', '标题:1635311949168', '内容:1635311949168', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.233.75', '2021-10-28 13:19:09', '2021-10-27 13:19:15', '2021-10-27 13:19:15', 99, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001181202110277723215336', NULL, '2021-10-27 13:19:09', NULL, '2021-10-27 13:19:15', b'0'); +INSERT INTO `pay_order` VALUES (121, 1, 6, 9, 'wx_pub', '1635312124657', '标题:1635312124656', '内容:1635312124656', 'http://127.0.0.1:28080/api/shop/order/pay-notify', 0, 1, 0, 0, 10, '101.82.233.75', '2021-10-28 13:22:05', '2021-10-27 13:22:15', '2021-10-27 13:22:16', 100, 0, 0, 0, 'ockUAwIZ-0OeMZl9ogcZ4ILrGba0', '4200001174202110278060590766', NULL, '2021-10-27 13:22:05', NULL, '2021-10-27 13:22:16', b'0'); +COMMIT; + +-- ---------------------------- +-- Table structure for pay_order_extension +-- ---------------------------- +DROP TABLE IF EXISTS `pay_order_extension`; +CREATE TABLE `pay_order_extension` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '支付订单编号', + `no` varchar(64) NOT NULL COMMENT '支付订单号', + `order_id` bigint NOT NULL COMMENT '支付订单编号', + `channel_id` bigint NOT NULL COMMENT '渠道编号', + `channel_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '渠道编码', + `user_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户 IP', + `status` tinyint NOT NULL COMMENT '支付状态', + `channel_extras` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '支付渠道的额外参数', + `channel_notify_data` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '支付渠道异步通知的内容', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='支付订单\n'; + +-- ---------------------------- +-- Records of pay_order_extension +-- ---------------------------- +BEGIN; +INSERT INTO `pay_order_extension` VALUES (9, '', 1, 0, '', '', 0, '', '2021-10-23 09:27:37', NULL, '2021-10-23 17:12:10', NULL, '2021-10-23 17:12:10', b'0'); +INSERT INTO `pay_order_extension` VALUES (10, '20211023193842142492', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:38:42', NULL, '2021-10-23 19:38:42', b'0'); +INSERT INTO `pay_order_extension` VALUES (11, '20211023193939910727', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:39:40', NULL, '2021-10-23 19:39:40', b'0'); +INSERT INTO `pay_order_extension` VALUES (12, '20211023193959120765', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:40:00', NULL, '2021-10-23 19:40:00', b'0'); +INSERT INTO `pay_order_extension` VALUES (13, '20211023194227878115', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:42:27', NULL, '2021-10-23 19:42:27', b'0'); +INSERT INTO `pay_order_extension` VALUES (14, '20211023194954819846', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:49:55', NULL, '2021-10-23 19:49:55', b'0'); +INSERT INTO `pay_order_extension` VALUES (15, '20211023195101845551', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:51:02', NULL, '2021-10-23 19:51:02', b'0'); +INSERT INTO `pay_order_extension` VALUES (16, '20211023195217837007', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:52:18', NULL, '2021-10-23 19:52:18', b'0'); +INSERT INTO `pay_order_extension` VALUES (17, '20211023195729876366', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 19:57:29', NULL, '2021-10-23 19:57:29', b'0'); +INSERT INTO `pay_order_extension` VALUES (18, '20211023200000426986', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 20:00:00', NULL, '2021-10-23 20:00:00', b'0'); +INSERT INTO `pay_order_extension` VALUES (19, '20211023200023656577', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 20:00:23', NULL, '2021-10-23 20:00:23', b'0'); +INSERT INTO `pay_order_extension` VALUES (20, '20211023200035442235', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 20:00:35', NULL, '2021-10-23 20:00:35', b'0'); +INSERT INTO `pay_order_extension` VALUES (21, '20211023200108884896', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 20:01:08', NULL, '2021-10-23 20:01:08', b'0'); +INSERT INTO `pay_order_extension` VALUES (22, '20211023200148935150', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 20:01:49', NULL, '2021-10-23 20:01:49', b'0'); +INSERT INTO `pay_order_extension` VALUES (23, '20211023200246679654', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 20:02:46', NULL, '2021-10-23 20:02:46', b'0'); +INSERT INTO `pay_order_extension` VALUES (24, '20211023200952513780', 10, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-23 20:09:52', NULL, '2021-10-23 20:09:52', b'0'); +INSERT INTO `pay_order_extension` VALUES (25, '20211024233244795306', 41, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:32:45', NULL, '2021-10-24 23:32:45', b'0'); +INSERT INTO `pay_order_extension` VALUES (26, '20211024233303886430', 42, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:33:03', NULL, '2021-10-24 23:33:03', b'0'); +INSERT INTO `pay_order_extension` VALUES (27, '20211024233332176343', 42, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:33:33', NULL, '2021-10-24 23:33:33', b'0'); +INSERT INTO `pay_order_extension` VALUES (28, '20211024233747270447', 44, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:37:47', NULL, '2021-10-24 23:37:47', b'0'); +INSERT INTO `pay_order_extension` VALUES (29, '20211024233813637832', 44, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:38:13', NULL, '2021-10-24 23:38:13', b'0'); +INSERT INTO `pay_order_extension` VALUES (30, '20211024233912251285', 46, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:39:13', NULL, '2021-10-24 23:39:13', b'0'); +INSERT INTO `pay_order_extension` VALUES (31, '20211024233944497880', 49, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:39:45', NULL, '2021-10-24 23:39:45', b'0'); +INSERT INTO `pay_order_extension` VALUES (32, '20211024234241316516', 53, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:42:41', NULL, '2021-10-24 23:42:41', b'0'); +INSERT INTO `pay_order_extension` VALUES (33, '20211024234427711411', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:28', NULL, '2021-10-24 23:44:28', b'0'); +INSERT INTO `pay_order_extension` VALUES (34, '20211024234428149145', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:28', NULL, '2021-10-24 23:44:28', b'0'); +INSERT INTO `pay_order_extension` VALUES (35, '20211024234429753909', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:29', NULL, '2021-10-24 23:44:29', b'0'); +INSERT INTO `pay_order_extension` VALUES (36, '20211024234429396293', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `pay_order_extension` VALUES (37, '20211024234429401965', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `pay_order_extension` VALUES (38, '20211024234430210068', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `pay_order_extension` VALUES (39, '20211024234430964487', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `pay_order_extension` VALUES (40, '20211024234430380287', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:30', NULL, '2021-10-24 23:44:30', b'0'); +INSERT INTO `pay_order_extension` VALUES (41, '20211024234430758697', 54, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:31', NULL, '2021-10-24 23:44:31', b'0'); +INSERT INTO `pay_order_extension` VALUES (42, '20211024234448627934', 56, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:49', NULL, '2021-10-24 23:44:49', b'0'); +INSERT INTO `pay_order_extension` VALUES (43, '20211024234453140708', 56, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:44:54', NULL, '2021-10-24 23:44:54', b'0'); +INSERT INTO `pay_order_extension` VALUES (44, '20211024234607812259', 58, 9, 'wx_pub', '127.0.0.1', 0, NULL, NULL, NULL, '2021-10-24 23:46:07', NULL, '2021-10-24 23:46:07', b'0'); +INSERT INTO `pay_order_extension` VALUES (45, '20211025084152506777', 65, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:41:52', NULL, '2021-10-25 08:41:52', b'0'); +INSERT INTO `pay_order_extension` VALUES (46, '20211025084218756961', 66, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:42:19', NULL, '2021-10-25 08:42:19', b'0'); +INSERT INTO `pay_order_extension` VALUES (47, '20211025084223637696', 66, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:42:24', NULL, '2021-10-25 08:42:24', b'0'); +INSERT INTO `pay_order_extension` VALUES (48, '20211025084545919504', 69, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:45:46', NULL, '2021-10-25 08:45:46', b'0'); +INSERT INTO `pay_order_extension` VALUES (49, '20211025084547682989', 69, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:45:47', NULL, '2021-10-25 08:45:47', b'0'); +INSERT INTO `pay_order_extension` VALUES (50, '20211025085031437385', 77, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:50:31', NULL, '2021-10-25 08:50:31', b'0'); +INSERT INTO `pay_order_extension` VALUES (51, '20211025085114816101', 79, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:51:14', NULL, '2021-10-25 08:51:14', b'0'); +INSERT INTO `pay_order_extension` VALUES (52, '20211025085307768616', 79, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:53:07', NULL, '2021-10-25 08:53:07', b'0'); +INSERT INTO `pay_order_extension` VALUES (53, '20211025085315553301', 80, 9, 'wx_pub', '101.82.138.223', 0, NULL, NULL, NULL, '2021-10-25 08:53:15', NULL, '2021-10-25 08:53:15', b'0'); +INSERT INTO `pay_order_extension` VALUES (54, '20211025091312320198', 87, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:13:13', NULL, '2021-10-25 09:13:13', b'0'); +INSERT INTO `pay_order_extension` VALUES (55, '20211025091322710425', 87, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:13:22', NULL, '2021-10-25 09:13:22', b'0'); +INSERT INTO `pay_order_extension` VALUES (56, '20211025091405316694', 87, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:14:06', NULL, '2021-10-25 09:14:06', b'0'); +INSERT INTO `pay_order_extension` VALUES (57, '20211025091429783090', 87, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:14:29', NULL, '2021-10-25 09:14:29', b'0'); +INSERT INTO `pay_order_extension` VALUES (58, '20211025091457423311', 87, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:14:57', NULL, '2021-10-25 09:14:57', b'0'); +INSERT INTO `pay_order_extension` VALUES (59, '20211025091651245779', 87, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:16:52', NULL, '2021-10-25 09:16:52', b'0'); +INSERT INTO `pay_order_extension` VALUES (60, '20211025093153397917', 87, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:31:53', NULL, '2021-10-25 09:31:53', b'0'); +INSERT INTO `pay_order_extension` VALUES (61, '20211025093201208115', 88, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:32:01', NULL, '2021-10-25 09:32:01', b'0'); +INSERT INTO `pay_order_extension` VALUES (62, '20211025095407668368', 89, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:54:08', NULL, '2021-10-25 09:54:08', b'0'); +INSERT INTO `pay_order_extension` VALUES (63, '20211025095445170008', 89, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:54:45', NULL, '2021-10-25 09:54:45', b'0'); +INSERT INTO `pay_order_extension` VALUES (64, '20211025095508568823', 89, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:55:08', NULL, '2021-10-25 09:55:08', b'0'); +INSERT INTO `pay_order_extension` VALUES (65, '20211025095523349753', 89, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:55:24', NULL, '2021-10-25 09:55:24', b'0'); +INSERT INTO `pay_order_extension` VALUES (66, '20211025095530432861', 89, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:55:30', NULL, '2021-10-25 09:55:30', b'0'); +INSERT INTO `pay_order_extension` VALUES (67, '20211025095534847863', 90, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 09:55:35', NULL, '2021-10-25 09:55:35', b'0'); +INSERT INTO `pay_order_extension` VALUES (68, '20211025100349356411', 91, 9, 'wx_pub', '101.82.138.223', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-25 10:03:49', NULL, '2021-10-25 10:03:49', b'0'); +INSERT INTO `pay_order_extension` VALUES (69, '20211026092058874496', 92, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:20:58', NULL, '2021-10-26 09:20:58', b'0'); +INSERT INTO `pay_order_extension` VALUES (70, '20211026092257213499', 94, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:22:57', NULL, '2021-10-26 09:22:57', b'0'); +INSERT INTO `pay_order_extension` VALUES (71, '20211026092451868262', 95, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:24:51', NULL, '2021-10-26 09:24:51', b'0'); +INSERT INTO `pay_order_extension` VALUES (72, '20211026093046878736', 96, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:30:47', NULL, '2021-10-26 09:30:47', b'0'); +INSERT INTO `pay_order_extension` VALUES (73, '20211026093409899041', 96, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:34:09', NULL, '2021-10-26 09:34:09', b'0'); +INSERT INTO `pay_order_extension` VALUES (74, '20211026093425988092', 97, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:34:25', NULL, '2021-10-26 09:34:25', b'0'); +INSERT INTO `pay_order_extension` VALUES (75, '20211026093911898026', 98, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:39:12', NULL, '2021-10-26 09:39:12', b'0'); +INSERT INTO `pay_order_extension` VALUES (76, '20211026093936195779', 99, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:39:36', NULL, '2021-10-26 09:39:36', b'0'); +INSERT INTO `pay_order_extension` VALUES (77, '20211026094104450323', 100, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:41:05', NULL, '2021-10-26 09:41:05', b'0'); +INSERT INTO `pay_order_extension` VALUES (78, '20211026094109746189', 100, 9, 'wx_pub', '101.82.98.72', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-26 09:41:09', NULL, '2021-10-26 09:41:54', b'0'); +INSERT INTO `pay_order_extension` VALUES (79, '20211026094205207212', 101, 9, 'wx_pub', '101.82.98.72', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-26 09:42:05', NULL, '2021-10-26 09:42:21', b'0'); +INSERT INTO `pay_order_extension` VALUES (80, '20211026094257435456', 102, 9, 'wx_pub', '101.82.98.72', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-26 09:42:57', NULL, '2021-10-26 09:42:57', b'0'); +INSERT INTO `pay_order_extension` VALUES (81, '20211026094302217748', 102, 9, 'wx_pub', '101.82.98.72', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-26 09:43:03', NULL, '2021-10-26 09:43:17', b'0'); +INSERT INTO `pay_order_extension` VALUES (82, '20211026094850532322', 103, 9, 'wx_pub', '101.82.98.72', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-26 09:48:50', NULL, '2021-10-26 09:48:56', b'0'); +INSERT INTO `pay_order_extension` VALUES (83, '20211027085119113077', 105, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 08:51:20', NULL, '2021-10-27 08:51:33', b'0'); +INSERT INTO `pay_order_extension` VALUES (84, '20211027090803894341', 106, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:08:04', NULL, '2021-10-27 09:08:12', b'0'); +INSERT INTO `pay_order_extension` VALUES (85, '20211027092036195615', 107, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:20:36', NULL, '2021-10-27 09:20:59', b'0'); +INSERT INTO `pay_order_extension` VALUES (86, '20211027092146762628', 108, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:21:46', NULL, '2021-10-27 09:21:55', b'0'); +INSERT INTO `pay_order_extension` VALUES (87, '20211027092849374159', 109, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:28:49', NULL, '2021-10-27 09:28:57', b'0'); +INSERT INTO `pay_order_extension` VALUES (88, '20211027092957858804', 110, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:29:57', NULL, '2021-10-27 09:30:05', b'0'); +INSERT INTO `pay_order_extension` VALUES (89, '20211027093542980205', 111, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:35:43', NULL, '2021-10-27 09:35:49', b'0'); +INSERT INTO `pay_order_extension` VALUES (90, '20211027093856598882', 112, 9, 'wx_pub', '101.82.181.148', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-27 09:38:57', NULL, '2021-10-27 09:38:57', b'0'); +INSERT INTO `pay_order_extension` VALUES (91, '20211027093901662188', 112, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:39:02', NULL, '2021-10-27 09:39:08', b'0'); +INSERT INTO `pay_order_extension` VALUES (92, '20211027094003448769', 113, 9, 'wx_pub', '101.82.181.148', 0, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', NULL, NULL, '2021-10-27 09:40:03', NULL, '2021-10-27 09:40:03', b'0'); +INSERT INTO `pay_order_extension` VALUES (93, '20211027094010419256', 113, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:40:11', NULL, '2021-10-27 09:40:21', b'0'); +INSERT INTO `pay_order_extension` VALUES (94, '20211027094549230727', 114, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 09:45:50', NULL, '2021-10-27 09:45:57', b'0'); +INSERT INTO `pay_order_extension` VALUES (95, '20211027100421694902', 115, 9, 'wx_pub', '101.82.181.148', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 10:04:22', NULL, '2021-10-27 10:04:29', b'0'); +INSERT INTO `pay_order_extension` VALUES (96, '20211027131109347140', 117, 9, 'wx_pub', '101.82.233.75', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 13:11:10', NULL, '2021-10-27 13:11:16', b'0'); +INSERT INTO `pay_order_extension` VALUES (97, '20211027131703494434', 118, 9, 'wx_pub', '101.82.233.75', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 13:17:04', NULL, '2021-10-27 13:17:09', b'0'); +INSERT INTO `pay_order_extension` VALUES (98, '20211027131802329182', 119, 9, 'wx_pub', '101.82.233.75', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 13:18:02', NULL, '2021-10-27 13:18:11', b'0'); +INSERT INTO `pay_order_extension` VALUES (99, '20211027131909520645', 120, 9, 'wx_pub', '101.82.233.75', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 13:19:10', NULL, '2021-10-27 13:19:15', b'0'); +INSERT INTO `pay_order_extension` VALUES (100, '20211027132205235959', 121, 9, 'wx_pub', '101.82.233.75', 10, '{\"openid\":\"ockUAwIZ-0OeMZl9ogcZ4ILrGba0\"}', '\n\n\n\n\n\n\n\n\n\n\n\n\n1\n\n\n', NULL, '2021-10-27 13:22:06', NULL, '2021-10-27 13:22:16', b'0'); +COMMIT; + -- ---------------------------- -- Table structure for sys_dept -- ---------------------------- @@ -557,12 +1669,14 @@ CREATE TABLE `sys_login_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=148 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统访问记录'; +) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='系统访问记录'; -- ---------------------------- -- Records of sys_login_log -- ---------------------------- BEGIN; +INSERT INTO `sys_login_log` VALUES (148, 201, '', 1, 2, 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-27 08:29:49', NULL, '2021-10-27 08:29:49', b'0'); +INSERT INTO `sys_login_log` VALUES (149, 100, '', 1, 2, 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); COMMIT; -- ---------------------------- @@ -783,12 +1897,16 @@ CREATE TABLE `sys_operate_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=58 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='操作日志记录'; +) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='操作日志记录'; -- ---------------------------- -- Records of sys_operate_log -- ---------------------------- BEGIN; +INSERT INTO `sys_operate_log` VALUES (58, '', 1, '定时任务', '创建定时任务', 2, '', '', 'POST', '/api/infra/job/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.createJob(InfJobCreateReqVO)', '{\"createReqVO\":{\"name\":\"payNotifyJob\",\"handlerParam\":null,\"cronExpression\":\"* * * * * ?\",\"retryCount\":0,\"retryInterval\":0,\"monitorTimeout\":null,\"handlerName\":\"支付通知 Job\"}}', '2021-10-27 08:33:35', 57, 0, '', '4', NULL, '2021-10-27 08:33:35', NULL, '2021-10-27 08:33:35', b'0'); +INSERT INTO `sys_operate_log` VALUES (59, '', 1, '定时任务', '触发定时任务', 3, '', '', 'PUT', '/api/infra/job/trigger', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.triggerJob(Long)', '{\"id\":3}', '2021-10-27 08:33:59', 35, 0, '', 'true', NULL, '2021-10-27 08:33:59', NULL, '2021-10-27 08:33:59', b'0'); +INSERT INTO `sys_operate_log` VALUES (60, '', 1, '定时任务', '删除定时任务', 4, '', '', 'DELETE', '/api/infra/job/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.deleteJob(Long)', '{\"id\":4}', '2021-10-27 08:34:15', 50, 0, '', 'true', NULL, '2021-10-27 08:34:15', NULL, '2021-10-27 08:34:15', b'0'); +INSERT INTO `sys_operate_log` VALUES (61, '', 1, '定时任务', '创建定时任务', 2, '', '', 'POST', '/api/infra/job/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', 'CommonResult cn.iocoder.yudao.adminserver.modules.infra.controller.job.InfJobController.createJob(InfJobCreateReqVO)', '{\"createReqVO\":{\"name\":\"支付通知 Job\",\"handlerParam\":null,\"cronExpression\":\"* * * * * ?\",\"retryCount\":0,\"retryInterval\":0,\"monitorTimeout\":null,\"handlerName\":\"payNotifyJob\"}}', '2021-10-27 08:34:42', 51, 0, '', '5', NULL, '2021-10-27 08:34:42', NULL, '2021-10-27 08:34:42', b'0'); COMMIT; -- ---------------------------- @@ -1238,7 +2356,7 @@ CREATE TABLE `sys_user` ( -- Records of sys_user -- ---------------------------- BEGIN; -INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://127.0.0.1:48080/api/infra/file/get/7e7ed694-2242-46cf-9ac9-0709debcc22f', 0, '127.0.0.1', '2021-10-12 09:22:43', 'admin', '2021-01-05 17:03:47', NULL, '2021-10-12 09:22:43', b'0'); +INSERT INTO `sys_user` VALUES (1, 'admin', '$2a$10$0acJOIk2D25/oC87nyclE..0lzeu9DtQ/n3geP4fkun/zIVRhHJIO', '芋道源码', '管理员', 103, '[1]', 'aoteman@126.com', '15612345678', 1, 'http://127.0.0.1:48080/api/infra/file/get/7e7ed694-2242-46cf-9ac9-0709debcc22f', 0, '127.0.0.1', '2021-10-27 08:30:10', 'admin', '2021-01-05 17:03:47', NULL, '2021-10-27 08:30:10', b'0'); INSERT INTO `sys_user` VALUES (2, 'ry', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '若依', '测试员', 105, '[2]', 'ry@qq.com', '15666666666', 1, '', 0, '127.0.0.1', '2021-01-05 17:03:47', 'admin', '2021-01-05 17:03:47', '', '2021-04-01 04:50:36', b'1'); INSERT INTO `sys_user` VALUES (100, 'yudao', '$2a$10$11U48RhyJ5pSBYWSn12AD./ld671.ycSzJHbyrtpeoMeYiw31eo8a', '芋道', '不要吓我', 100, '[1]', 'yudao@iocoder.cn', '15601691300', 1, '', 1, '', NULL, '', '2021-01-07 09:07:17', '1', '2021-03-14 22:35:17', b'0'); INSERT INTO `sys_user` VALUES (103, 'yuanma', '', '源码', NULL, 100, NULL, 'yuanma@iocoder.cn', '15601701300', 0, '', 0, '', NULL, '', '2021-01-13 23:50:35', '', '2021-01-13 23:50:35', b'0'); @@ -1304,9 +2422,10 @@ INSERT INTO `sys_user_session` VALUES ('02f40128d6ae47caae7ebe1eac9300b6', 245, INSERT INTO `sys_user_session` VALUES ('112ac5cf97a34607b13ad0a5831df9af', 1, 2, '2021-10-12 09:34:24', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-12 08:20:37', NULL, '2021-10-12 01:37:21', b'1'); INSERT INTO `sys_user_session` VALUES ('549f940264cc4edf8ed78a9a0bafd7db', 245, 1, '2021-10-10 17:25:06', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 16:55:06', NULL, '2021-10-10 10:17:26', b'1'); INSERT INTO `sys_user_session` VALUES ('5c8f2bb378aa4f8b92ef5b52a6ab282b', 245, 1, '2021-10-10 18:50:07', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 18:20:07', NULL, '2021-10-10 14:47:27', b'1'); +INSERT INTO `sys_user_session` VALUES ('5efe7272e0414d38be45f26228be6dfd', 1, 2, '2021-10-27 09:00:10', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', NULL, '2021-10-27 08:30:10', NULL, '2021-10-27 08:30:10', b'0'); INSERT INTO `sys_user_session` VALUES ('78c34a300fe449e391d8187a61164b6e', 1, 2, '2021-10-11 08:35:34', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-11 07:55:00', NULL, '2021-10-12 00:19:28', b'1'); INSERT INTO `sys_user_session` VALUES ('8f4d894746394901bcf7dcf6d4321868', 245, 1, '2021-10-10 23:04:03', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 22:34:03', NULL, '2021-10-10 23:50:42', b'1'); -INSERT INTO `sys_user_session` VALUES ('9ddb53d391f9413cbd460ec2461ceeb0', 1, 2, '2021-10-12 10:07:20', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-12 09:22:43', NULL, '2021-10-12 09:37:20', b'0'); +INSERT INTO `sys_user_session` VALUES ('9ddb53d391f9413cbd460ec2461ceeb0', 1, 2, '2021-10-12 10:07:20', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-12 09:22:43', NULL, '2021-10-27 00:29:48', b'1'); INSERT INTO `sys_user_session` VALUES ('c1b76bdaf2c146c581caa4d7fd81ee66', 246, 1, '2021-10-10 23:06:27', '15601691301', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 22:36:27', NULL, '2021-10-10 14:50:05', b'1'); INSERT INTO `sys_user_session` VALUES ('dcb1de2e2ef14e37bca3e64f5bbb603f', 245, 1, '2021-10-10 18:55:16', '15601691300', '127.0.0.1', 'Apache-HttpClient/4.5.13 (Java/11.0.11)', NULL, '2021-10-10 18:25:16', NULL, '2021-10-10 14:47:27', b'1'); INSERT INTO `sys_user_session` VALUES ('e206ac2498054d0c822392e599f6151a', 1, 2, '2021-10-10 00:17:31', 'admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', NULL, '2021-10-09 23:47:31', NULL, '2021-10-10 10:17:26', b'1'); diff --git a/yudao-admin-server/pom.xml b/yudao-admin-server/pom.xml index bfccf80923..9200eb7710 100644 --- a/yudao-admin-server/pom.xml +++ b/yudao-admin-server/pom.xml @@ -122,6 +122,12 @@ screw-core + + + + com.xkcoding.justauth + justauth-spring-boot-starter + diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiAccessLogConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiAccessLogConvert.java index ba21d33ce1..1b4faa0be3 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiAccessLogConvert.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/convert/logger/InfApiAccessLogConvert.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.adminserver.modules.infra.convert.logger; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExcelVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogRespVO; import org.mapstruct.Mapper; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/package-info.java new file mode 100644 index 0000000000..da39733908 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/package-info.java @@ -0,0 +1,6 @@ +/** + * 提供 POJO 类的实体转换 + * + * 目前使用 MapStruct 框架 + */ +package cn.iocoder.yudao.adminserver.modules.pay.convert; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md new file mode 100644 index 0000000000..8153487b72 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md @@ -0,0 +1 @@ + diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/job/notify/PayNotifyJob.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/job/notify/PayNotifyJob.java new file mode 100644 index 0000000000..58685f1b56 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/job/notify/PayNotifyJob.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.adminserver.modules.pay.job.notify; + +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.PayNotifyCoreService; +import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 支付通知 Job + * 通过不断扫描待通知的 PayNotifyTaskDO 记录,回调业务线的回调接口 + * + * @author 芋道源码 + */ +@Component +@Slf4j +public class PayNotifyJob implements JobHandler { + + @Resource + private PayNotifyCoreService payNotifyCoreService; + + @Override + public String execute(String param) throws Exception { + int notifyCount = payNotifyCoreService.executeNotify(); + return String.format("执行支付通知 %s 个", notifyCount); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/job/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/job/package-info.java new file mode 100644 index 0000000000..3db5697897 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/job/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.adminserver.modules.pay.job; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/package-info.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/package-info.java new file mode 100644 index 0000000000..a113b9beb6 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/package-info.java @@ -0,0 +1,7 @@ +/** + * pay 包下,我们放支付业务,提供业务的支付能力。 + * 例如说:商户、应用、支付、退款等等 + * + * 缩写:pay + */ +package cn.iocoder.yudao.adminserver.modules.pay; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java index 5724b12742..0a7220a791 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/SysSmsChannelService.java @@ -11,7 +11,7 @@ import java.util.Collection; import java.util.List; /** - * 短信渠道Service接口 + * 短信渠道 Service 接口 * * @author zzf * @date 2021/1/25 9:24 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java index deb76e56ed..d8c5b99130 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/service/sms/impl/SysSmsTemplateServiceImpl.java @@ -33,7 +33,7 @@ import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeCons import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** - * 短信模板Service实现类 + * 短信模板 Service 实现类 * * @author zzf * @date 2021/1/25 9:25 diff --git a/yudao-admin-server/src/main/resources/application-local.yaml b/yudao-admin-server/src/main/resources/application-local.yaml index 2d36b7157f..4f45d9476d 100644 --- a/yudao-admin-server/src/main/resources/application-local.yaml +++ b/yudao-admin-server/src/main/resources/application-local.yaml @@ -166,6 +166,9 @@ yudao: exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系 - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 + pay: + pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify + refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify demo: false # 关闭演示模式 justauth: diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java index 9a1edf3cf2..73e918da49 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiAccessLogServiceImplTest.java @@ -1,12 +1,10 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.logger; -import cn.hutool.core.util.RandomUtil; import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogExportReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apiaccesslog.InfApiAccessLogPageReqVO; import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiAccessLogMapper; @@ -19,7 +17,6 @@ import org.springframework.context.annotation.Import; import javax.annotation.Resource; import java.util.Date; import java.util.List; -import java.util.concurrent.Future; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java index 97ce8c6610..307f0172a4 100644 --- a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/infra/service/logger/InfApiErrorLogServiceImplTest.java @@ -1,11 +1,9 @@ package cn.iocoder.yudao.adminserver.modules.infra.service.logger; -import cn.hutool.core.util.RandomUtil; import cn.iocoder.yudao.adminserver.BaseDbUnitTest; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogExportReqVO; import cn.iocoder.yudao.adminserver.modules.infra.controller.logger.vo.apierrorlog.InfApiErrorLogPageReqVO; import cn.iocoder.yudao.adminserver.modules.infra.dal.mysql.logger.InfApiErrorLogMapper; @@ -19,7 +17,6 @@ import org.springframework.context.annotation.Import; import javax.annotation.Resource; import java.util.Date; import java.util.List; -import java.util.concurrent.Future; import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_NOT_FOUND; import static cn.iocoder.yudao.adminserver.modules.infra.enums.InfErrorCodeConstants.API_ERROR_LOG_PROCESSED; diff --git a/yudao-core-service/pom.xml b/yudao-core-service/pom.xml index 56402180f4..4fd85c0aac 100644 --- a/yudao-core-service/pom.xml +++ b/yudao-core-service/pom.xml @@ -32,6 +32,10 @@ cn.iocoder.boot yudao-spring-boot-starter-biz-sms + + cn.iocoder.boot + yudao-spring-boot-starter-biz-pay + @@ -73,6 +77,12 @@ yudao-spring-boot-starter-mq + + + cn.iocoder.boot + yudao-spring-boot-starter-protection + + cn.iocoder.boot diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiAccessLogCoreConvert.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiAccessLogCoreConvert.java index 4bfb4941ca..f5152f7109 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiAccessLogCoreConvert.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiAccessLogCoreConvert.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.coreservice.modules.infra.convert.logger; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateReqDTO; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -10,6 +10,6 @@ public interface InfApiAccessLogCoreConvert { InfApiAccessLogCoreConvert INSTANCE = Mappers.getMapper(InfApiAccessLogCoreConvert.class); - InfApiAccessLogDO convert(ApiAccessLogCreateDTO bean); + InfApiAccessLogDO convert(ApiAccessLogCreateReqDTO bean); } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiErrorLogCoreConvert.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiErrorLogCoreConvert.java index 8979013d5c..0c130a28b9 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiErrorLogCoreConvert.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/convert/logger/InfApiErrorLogCoreConvert.java @@ -1,6 +1,6 @@ package cn.iocoder.yudao.coreservice.modules.infra.convert.logger; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateReqDTO; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -10,6 +10,6 @@ public interface InfApiErrorLogCoreConvert { InfApiErrorLogCoreConvert INSTANCE = Mappers.getMapper(InfApiErrorLogCoreConvert.class); - InfApiErrorLogDO convert(ApiErrorLogCreateDTO bean); + InfApiErrorLogDO convert(ApiErrorLogCreateReqDTO bean); } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/config/InfConfigDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/config/InfConfigDO.java index 5955fe18c3..c8d58196ee 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/config/InfConfigDO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/config/InfConfigDO.java @@ -11,7 +11,7 @@ import lombok.ToString; /** * 参数配置表 * - * @author ruoyi + * @author 芋道源码 */ @TableName("inf_config") @Data diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java index 114ebf23af..4cd4ebf408 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.coreservice.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; @@ -25,6 +26,7 @@ public class InfApiErrorLogDO extends BaseDO { /** * 编号 */ + @TableId private Long id; /** * 用户编号 diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiAccessLogCoreServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiAccessLogCoreServiceImpl.java index 6ef022b5a2..6327b8b967 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiAccessLogCoreServiceImpl.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiAccessLogCoreServiceImpl.java @@ -1,18 +1,16 @@ package cn.iocoder.yudao.coreservice.modules.infra.service.logger.impl; import cn.iocoder.yudao.coreservice.modules.infra.convert.logger.InfApiAccessLogCoreConvert; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateReqDTO; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import cn.iocoder.yudao.coreservice.modules.infra.dal.mysql.logger.InfApiAccessLogCoreMapper; import cn.iocoder.yudao.coreservice.modules.infra.service.logger.InfApiAccessLogCoreService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.concurrent.Future; /** * API 访问日志 Service 实现类 @@ -29,7 +27,7 @@ public class InfApiAccessLogCoreServiceImpl implements InfApiAccessLogCoreServic @Override @Async - public void createApiAccessLogAsync(ApiAccessLogCreateDTO createDTO) { + public void createApiAccessLogAsync(ApiAccessLogCreateReqDTO createDTO) { InfApiAccessLogDO apiAccessLog = InfApiAccessLogCoreConvert.INSTANCE.convert(createDTO); apiAccessLogMapper.insert(apiAccessLog); } diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiErrorLogCoreServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiErrorLogCoreServiceImpl.java index a11552bcb5..4004ea7f66 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiErrorLogCoreServiceImpl.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/impl/InfApiErrorLogCoreServiceImpl.java @@ -5,15 +5,13 @@ import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiEr import cn.iocoder.yudao.coreservice.modules.infra.dal.mysql.logger.InfApiErrorLogCoreMapper; import cn.iocoder.yudao.coreservice.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum; import cn.iocoder.yudao.coreservice.modules.infra.service.logger.InfApiErrorLogCoreService; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateReqDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.concurrent.Future; /** * API 错误日志 Service 实现类 @@ -30,7 +28,7 @@ public class InfApiErrorLogCoreServiceImpl implements InfApiErrorLogCoreService @Override @Async - public void createApiErrorLogAsync(ApiErrorLogCreateDTO createDTO) { + public void createApiErrorLogAsync(ApiErrorLogCreateReqDTO createDTO) { InfApiErrorLogDO apiErrorLog = InfApiErrorLogCoreConvert.INSTANCE.convert(createDTO); apiErrorLog.setProcessStatus(InfApiErrorLogProcessStatusEnum.INIT.getStatus()); apiErrorLogMapper.insert(apiErrorLog); diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/order/PayOrderCoreConvert.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/order/PayOrderCoreConvert.java new file mode 100644 index 0000000000..3e5215cd87 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/order/PayOrderCoreConvert.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.coreservice.modules.pay.convert.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitReqDTO; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface PayOrderCoreConvert { + + PayOrderCoreConvert INSTANCE = Mappers.getMapper(PayOrderCoreConvert.class); + + PayOrderDO convert(PayOrderCreateReqDTO bean); + + PayOrderExtensionDO convert(PayOrderSubmitReqDTO bean); + + PayOrderUnifiedReqDTO convert2(PayOrderSubmitReqDTO bean); + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/package-info.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/package-info.java new file mode 100644 index 0000000000..b10c090290 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/package-info.java @@ -0,0 +1,6 @@ +/** + * 提供 POJO 类的实体转换 + * + * 目前使用 MapStruct 框架 + */ +package cn.iocoder.yudao.coreservice.modules.pay.convert; diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md new file mode 100644 index 0000000000..8153487b72 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md @@ -0,0 +1 @@ + diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayAppDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayAppDO.java new file mode 100644 index 0000000000..acc849cbc6 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayAppDO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 支付应用 DO + * 一个商户下,可能会有多个支付应用。例如说,京东有京东商城、京东到家等等 + * 不过一般来说,一个商户,只有一个应用哈~ + * + * 即 PayMerchantDO : PayAppDO = 1 : n + * + * @author 芋道源码 + */ +@TableName("pay_app") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayAppDO extends BaseDO { + + /** + * 应用编号,数据库自增 + */ + @TableId + private Long id; + /** + * 应用名 + */ + private String name; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + /** + * 支付结果的回调地址 + */ + private String payNotifyUrl; + /** + * 退款结果的回调地址 + */ + private String refundNotifyUrl; + + /** + * 商户编号 + * + * 关联 {@link PayMerchantDO#getId()} + */ + private Long merchantId; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayChannelDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayChannelDO.java new file mode 100644 index 0000000000..2101e6634a --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayChannelDO.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +/** + * 支付渠道 DO + * 一个应用下,会有多种支付渠道,例如说微信支付、支付宝支付等等 + * + * 即 PayAppDO : PayChannelDO = 1 : n + * + * @author 芋道源码 + */ +@Data +@TableName(value = "pay_channel", autoResultMap = true) +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayChannelDO extends BaseDO { + + /** + * 渠道编号,数据库自增 + */ + private Long id; + /** + * 渠道编码 + * + * 枚举 {@link PayChannelEnum} + */ + private String code; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 渠道费率,单位:百分比 + */ + private Double feeRate; + + /** + * 商户编号 + * + * 关联 {@link PayMerchantDO#getId()} + */ + private Long merchantId; + /** + * 应用编号 + * + * 关联 {@link PayAppDO#getId()} + */ + private Long appId; + /** + * 支付渠道配置 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private PayClientConfig config; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayMerchantDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayMerchantDO.java new file mode 100644 index 0000000000..d2b20111a2 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayMerchantDO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant; + +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 支付商户信息 DO + * 目前暂时没有特别的用途,主要为未来多商户提供基础。 + * + * @author 芋道源码 + */ +@Data +@TableName("pay_merchant") +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayMerchantDO extends BaseDO { + + /** + * 商户编号,数据库自增 + */ + @TableId + private Long id; + /** + * 商户号 + * 例如说,M233666999 + */ + private String no; + /** + * 商户全称 + */ + private String name; + /** + * 商户简称 + */ + private String shortName; + /** + * 状态 + * + * 枚举 {@link CommonStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/notify/PayNotifyLogDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/notify/PayNotifyLogDO.java new file mode 100644 index 0000000000..85626006cf --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/notify/PayNotifyLogDO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.notify; + +import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +/** + * 商户支付、退款等的通知 Log + * 每次通知时,都会在该表中,记录一次 Log,方便排查问题 + * + * @author 芋道源码 + */ +@TableName("pay_notify_log") +@Data +@EqualsAndHashCode(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayNotifyLogDO extends BaseDO { + + /** + * 日志编号,自增 + */ + private Long id; + /** + * 通知任务编号 + * + * 关联 {@link PayNotifyTaskDO#getId()} + */ + private Long taskId; + /** + * 第几次被通知 + * + * 对应到 {@link PayNotifyTaskDO#getNotifyTimes()} + */ + private Integer notifyTimes; + /** + * HTTP 响应结果 + */ + private String response; + /** + * 支付通知状态 + * + * 外键 {@link PayNotifyStatusEnum} + */ + private Integer status; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/notify/PayNotifyTaskDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/notify/PayNotifyTaskDO.java new file mode 100644 index 0000000000..3d10ac83a4 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/notify/PayNotifyTaskDO.java @@ -0,0 +1,99 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.notify; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayRefundDO; +import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyStatusEnum; +import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyTypeEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; + +/** + * 商户支付、退款等的通知 + * 在支付系统收到支付渠道的支付、退款的结果后,需要不断的通知到业务系统,直到成功。 + * + * @author 芋道源码 + */ +@TableName("pay_notify_task") +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +public class PayNotifyTaskDO extends BaseDO { + + /** + * 通知频率,单位为秒。 + * + * 算上首次的通知,实际是一共 1 + 8 = 9 次。 + */ + public static final Integer[] NOTIFY_FREQUENCY = new Integer[]{ + 15, 15, 30, 180, + 1800, 1800, 1800, 3600 + }; + + /** + * 编号,自增 + */ + private Long id; + /** + * 商户编号 + * + * 关联 {@link PayMerchantDO#getId()} + */ + private Long merchantId; + /** + * 应用编号 + * + * 关联 {@link PayAppDO#getId()} + */ + private Long appId; + /** + * 通知类型 + * + * 外键 {@link PayNotifyTypeEnum} + */ + private Integer type; + /** + * 数据编号,根据不同 type 进行关联: + * + * 1. {@link PayNotifyTypeEnum#ORDER} 时,关联 {@link PayOrderDO#getId()} + * 2. {@link PayNotifyTypeEnum#REFUND} 时,关联 {@link PayRefundDO#getId()} + */ + private Long dataId; + /** + * 商户订单编号 + */ + private String merchantOrderId; + /** + * 通知状态 + * + * 外键 {@link PayNotifyStatusEnum} + */ + private Integer status; + /** + * 下一次通知时间 + */ + private Date nextNotifyTime; + /** + * 最后一次执行时间 + */ + private Date lastExecuteTime; + /** + * 当前通知次数 + */ + private Integer notifyTimes; + /** + * 最大可通知次数 + */ + private Integer maxNotifyTimes; + /** + * 通知地址 + */ + private String notifyUrl; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayOrderDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayOrderDO.java new file mode 100644 index 0000000000..ccaed8a2cb --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayOrderDO.java @@ -0,0 +1,162 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO; +import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderNotifyStatusEnum; +import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderRefundStatusEnum; +import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.util.Date; + +/** + * 支付订单 DO + * + * @author 芋道源码 + */ +@TableName("pay_order") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayOrderDO extends BaseDO { + + /** + * 订单编号,数据库自增 + */ + private Long id; + /** + * 商户编号 + * + * 关联 {@link PayMerchantDO#getId()} + */ + private Long merchantId; + /** + * 应用编号 + * + * 关联 {@link PayAppDO#getId()} + */ + private Long appId; + /** + * 渠道编号 + * + * 关联 {@link PayChannelDO#getId()} + */ + private Long channelId; + /** + * 渠道编码 + * + * 枚举 {@link PayChannelEnum} + */ + private String channelCode; + + // ========== 商户相关字段 ========== + + /** + * 商户订单编号 + * 例如说,内部系统 A 的订单号。需要保证每个 PayMerchantDO 唯一 + */ + private String merchantOrderId; + /** + * 商品标题 + */ + private String subject; + /** + * 商品描述信息 + */ + private String body; + /** + * 异步通知地址 + */ + private String notifyUrl; + /** + * 通知商户支付结果的回调状态 + * + * 枚举 {@link PayOrderNotifyStatusEnum} + */ + private Integer notifyStatus; +// /** +// * 商户拓展参数 +// */ +// private Map merchantExtras; + + // ========== 订单相关字段 ========== + + /** + * 支付金额,单位:分 + */ + private Long amount; + /** + * 渠道手续费,单位:百分比 + * + * 冗余 {@link PayChannelDO#getFeeRate()} + */ + private Double channelFeeRate; + /** + * 渠道手续金额,单位:分 + */ + private Long channelFeeAmount; + /** + * 支付状态 + * + * 枚举 {@link PayOrderStatusEnum} + */ + private Integer status; + /** + * 用户 IP + */ + private String userIp; + /** + * 订单失效时间 + */ + private Date expireTime; + /** + * 订单支付成功时间 + */ + private Date successTime; + /** + * 订单支付通知时间,即支付渠道的通知时间 + */ + private Date notifyTime; + /** + * 支付成功的订单拓展单编号 + * + * 关联 {@link PayOrderDO#getId()} + */ + private Long successExtensionId; + + // ========== 退款相关字段 ========== + /** + * 退款状态 + * + * 枚举 {@link PayOrderRefundStatusEnum} + */ + private Integer refundStatus; + /** + * 退款次数 + */ + private Integer refundTimes; + /** + * 退款总金额,单位:分 + */ + private Long refundAmount; + + // ========== 渠道相关字段 ========== + /** + * 渠道用户编号 + * + * 例如说,微信 openid、支付宝账号 + */ + private String channelUserId; + /** + * 渠道订单号 + */ + private String channelOrderNo; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayOrderExtensionDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayOrderExtensionDO.java new file mode 100644 index 0000000000..92347647aa --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayOrderExtensionDO.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; + +import java.util.Map; + +/** + * 支付订单拓展 DO + * + * + * @author 芋道源码 + */ +@TableName("pay_order_extension") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayOrderExtensionDO extends BaseDO { + + /** + * 订单拓展编号,数据库自增 + */ + private Long id; + /** + * 支付订单号,根据规则生成 + * 调用支付渠道时,使用该字段作为对接的订单号。 + * 1. 调用微信支付 https://api.mch.weixin.qq.com/pay/unifiedorder 时,使用该字段作为 out_trade_no + * 2. 调用支付宝 https://opendocs.alipay.com/apis 时,使用该字段作为 out_trade_no + * + * 例如说,P202110132239124200055 + */ + private String no; + /** + * 订单号 + * + * 关联 {@link PayOrderDO#getId()} + */ + private Long orderId; + /** + * 渠道编号 + * + * 关联 {@link PayChannelDO#getId()} + */ + private Long channelId; + /** + * 渠道编码 + */ + private String channelCode; + /** + * 用户 IP + */ + private String userIp; + /** + * 支付状态 + * + * 枚举 {@link PayOrderStatusEnum} + * 注意,只包含上述枚举的 WAITING 和 SUCCESS + */ + private Integer status; + /** + * 支付渠道的额外参数 + * + * 参见 https://www.pingxx.com/api/支付渠道%20extra%20参数说明.html + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map channelExtras; + /** + * 支付渠道异步通知的内容 + * + * 在支持成功后,会记录回调的数据 + */ + private String channelNotifyData; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayRefundDO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayRefundDO.java new file mode 100644 index 0000000000..77e5a51e73 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/order/PayRefundDO.java @@ -0,0 +1,128 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerchantDO; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import lombok.Data; + +import java.util.Date; + +/** + * 支付退款单 DO + * 一个支付订单,可以拥有多个支付退款单 + * + * 即 PayOrderDO : PayRefundDO = 1 : n + * + * @author 芋道源码 + */ +@Data +public class PayRefundDO extends BaseDO { + + /** + * 退款单编号,数据库自增 + */ + private Long id; + /** + * 退款单号,根据规则生成 + * + * 例如说,R202109181134287570000 + */ + private String no; + /** + * 商户编号 + * + * 关联 {@link PayMerchantDO#getId()} + */ + private Long merchantId; + /** + * 应用编号 + * + * 关联 {@link PayAppDO#getId()} + */ + private Long appId; + /** + * 渠道编号 + * + * 关联 {@link PayChannelDO#getId()} + */ + private Long channelId; + /** + * 商户编码 + * + * 枚举 {@link PayChannelEnum} + */ + private String channelCode; + /** + * 订单编号 + * + * 关联 {@link PayOrderDO#getId()} + */ + private Long orderId; + + // ========== 商户相关字段 ========== + /** + * 商户退款订单号 + * 例如说,内部系统 A 的退款订单号。需要保证每个 PayMerchantDO 唯一 TODO 芋艿:需要在测试下 + */ + private String merchantRefundNo; +// /** +// * 商户拓展参数 +// */ +// private String merchantExtra; + /** + * 异步通知地址 + */ + private String notifyUrl; + /** + * 通知商户退款结果的回调状态 + * TODO 芋艿:0 未发送 1 已发送 + */ + private Integer notifyStatus; + + // ========== 退款相关字段 ========== + /** + * 退款状态 + * + * TODO 芋艿:状态枚举 + */ + private Integer status; + /** + * 用户 IP + */ + private String userIp; + /** + * 退款金额,单位:分 + */ + private Long amount; + /** + * 退款原因 + */ + private String reason; + /** + * 订单退款成功时间 + */ + private Date successTime; + /** + * 退款失效时间 + */ + private Date expireTime; + /** + * 支付渠道的额外参数 + * + * 参见 https://www.pingxx.com/api/Refunds%20退款概述.html + */ + private String channelExtra; + + // ========== 渠道相关字段 ========== + /** + * 渠道订单号 + */ + private String channelOrderNo; + /** + * 渠道退款号 + */ + private String channelRefundNo; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayAppCoreMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayAppCoreMapper.java new file mode 100644 index 0000000000..603ff4609c --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayAppCoreMapper.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.merchant; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PayAppCoreMapper extends BaseMapperX { +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayChannelCoreMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayChannelCoreMapper.java new file mode 100644 index 0000000000..d8780a92fb --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayChannelCoreMapper.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.merchant; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.Date; + +@Mapper +public interface PayChannelCoreMapper extends BaseMapperX { + + default PayChannelDO selectByAppIdAndCode(Long appId, String code) { + return selectOne("app_id", appId, "code", code); + } + + @Select("SELECT id FROM pay_channel WHERE update_time > #{maxUpdateTime} LIMIT 1") + Long selectExistsByUpdateTimeAfter(Date maxUpdateTime); + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/notify/PayNotifyLogCoreMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/notify/PayNotifyLogCoreMapper.java new file mode 100644 index 0000000000..e3f90d614f --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/notify/PayNotifyLogCoreMapper.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.notify; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.notify.PayNotifyLogDO; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PayNotifyLogCoreMapper extends BaseMapperX { +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/notify/PayNotifyTaskCoreMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/notify/PayNotifyTaskCoreMapper.java new file mode 100644 index 0000000000..276c6710b6 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/notify/PayNotifyTaskCoreMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.notify; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.notify.PayNotifyTaskDO; +import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.Date; +import java.util.List; + +@Mapper +public interface PayNotifyTaskCoreMapper extends BaseMapperX { + + /** + * 获得需要通知的 PayNotifyTaskDO 记录。需要满足如下条件: + * + * 1. status 非成功 + * 2. nextNotifyTime 小于当前时间 + * + * @return PayTransactionNotifyTaskDO 数组 + */ + default List selectListByNotify() { + return selectList(new QueryWrapper() + .in("status", PayNotifyStatusEnum.WAITING.getStatus(), PayNotifyStatusEnum.REQUEST_SUCCESS.getStatus(), + PayNotifyStatusEnum.REQUEST_FAILURE.getStatus()) + .le("next_notify_time", new Date())); + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/order/PayOrderCoreMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/order/PayOrderCoreMapper.java new file mode 100644 index 0000000000..1ed34d549b --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/order/PayOrderCoreMapper.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PayOrderCoreMapper extends BaseMapperX { + + default PayOrderDO selectByAppIdAndMerchantOrderId(Long appId, String merchantOrderId) { + return selectOne(new QueryWrapper().eq("app_id", appId) + .eq("merchant_order_id", merchantOrderId)); + } + + default int updateByIdAndStatus(Long id, Integer status, PayOrderDO update) { + return update(update, new QueryWrapper() + .eq("id", id).eq("status", status)); + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/order/PayOrderExtensionCoreMapper.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/order/PayOrderExtensionCoreMapper.java new file mode 100644 index 0000000000..3518986f8f --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/order/PayOrderExtensionCoreMapper.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface PayOrderExtensionCoreMapper extends BaseMapperX { + + default PayOrderExtensionDO selectByNo(String no) { + return selectOne("no", no); + } + + default int updateByIdAndStatus(Long id, Integer status, PayOrderExtensionDO update) { + return update(update, new QueryWrapper() + .eq("id", id).eq("status", status)); + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/redis/PayRedisKeyCoreConstants.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/redis/PayRedisKeyCoreConstants.java new file mode 100644 index 0000000000..99384ec126 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/redis/PayRedisKeyCoreConstants.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.redis; + +import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; +import org.redisson.api.RLock; + +import static cn.iocoder.yudao.framework.redis.core.RedisKeyDefine.KeyTypeEnum.HASH; + +/** + * Lock4j Redis Key 枚举类 + * + * @author 芋道源码 + */ +public interface PayRedisKeyCoreConstants { + + RedisKeyDefine PAY_NOTIFY_LOCK = new RedisKeyDefine("通知任务的分布式锁", + "pay_notify:lock:", // 参数来自 DefaultLockKeyBuilder 类 + HASH, RLock.class, RedisKeyDefine.TimeoutTypeEnum.DYNAMIC); // Redisson 的 Lock 锁,使用 Hash 数据结构 + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/redis/notify/PayNotifyLockCoreRedisDAO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/redis/notify/PayNotifyLockCoreRedisDAO.java new file mode 100644 index 0000000000..5ce6b44b32 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/dal/redis/notify/PayNotifyLockCoreRedisDAO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.redis.notify; + +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +import static cn.iocoder.yudao.coreservice.modules.pay.dal.redis.PayRedisKeyCoreConstants.PAY_NOTIFY_LOCK; + +/** + * 支付通知的锁 Redis DAO + * + * @author 芋道源码 + */ +@Repository +public class PayNotifyLockCoreRedisDAO { + + @Resource + private RedissonClient redissonClient; + + public void lock(Long id, Long timeoutMillis, Runnable runnable) { + String lockKey = formatKey(id); + RLock lock = redissonClient.getLock(lockKey); + try { + lock.lock(timeoutMillis, TimeUnit.MILLISECONDS); + // 执行逻辑 + runnable.run(); + } finally { + lock.unlock(); + } + } + + private static String formatKey(Long id) { + return String.format(PAY_NOTIFY_LOCK.getKeyTemplate(), id); + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/PayErrorCodeCoreConstants.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/PayErrorCodeCoreConstants.java new file mode 100644 index 0000000000..d2b9402239 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/PayErrorCodeCoreConstants.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.coreservice.modules.pay.enums; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +/** + * Pay 错误码 Core 枚举类 + * + * pay 系统,使用 1-007-000-000 段 + */ +public interface PayErrorCodeCoreConstants { + + // ========== APP 模块 1-007-000-000 ========== + ErrorCode PAY_APP_NOT_FOUND = new ErrorCode(1007000000, "App 不存在"); + ErrorCode PAY_APP_IS_DISABLE = new ErrorCode(1007000002, "App 已经被禁用"); + + // ========== CHANNEL 模块 1-007-001-000 ========== + ErrorCode PAY_CHANNEL_NOT_FOUND = new ErrorCode(1007001000, "支付渠道的配置不存在"); + ErrorCode PAY_CHANNEL_IS_DISABLE = new ErrorCode(1007001001, "支付渠道已经禁用"); + ErrorCode PAY_CHANNEL_CLIENT_NOT_FOUND = new ErrorCode(1007001002, "支付渠道的客户端不存在"); + + // ========== ORDER 模块 1-007-002-000 ========== + ErrorCode PAY_ORDER_NOT_FOUND = new ErrorCode(1007002000, "支付订单不存在"); + ErrorCode PAY_ORDER_STATUS_IS_NOT_WAITING = new ErrorCode(1007002001, "支付订单不处于待支付"); + ErrorCode PAY_ORDER_STATUS_IS_NOT_SUCCESS = new ErrorCode(1007002002, "支付订单不处于已支付"); + ErrorCode PAY_ORDER_ERROR_USER = new ErrorCode(1007002003, "支付订单用户不正确"); + // ========== ORDER 模块(拓展单) 1-007-003-000 ========== + ErrorCode PAY_ORDER_EXTENSION_NOT_FOUND = new ErrorCode(1007003000, "支付交易拓展单不存在"); + ErrorCode PAY_ORDER_EXTENSION_STATUS_IS_NOT_WAITING = new ErrorCode(1007003001, "支付交易拓展单不处于待支付"); + ErrorCode PAY_ORDER_EXTENSION_STATUS_IS_NOT_SUCCESS = new ErrorCode(1007003002, "支付订单不处于已支付"); + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/notify/PayNotifyStatusEnum.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/notify/PayNotifyStatusEnum.java new file mode 100644 index 0000000000..2c3c6b5921 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/notify/PayNotifyStatusEnum.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.coreservice.modules.pay.enums.notify; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付通知状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum PayNotifyStatusEnum { + + WAITING(1, "等待通知"), + SUCCESS(2, "通知成功"), + FAILURE(3, "通知失败"), // 多次尝试,彻底失败 + REQUEST_SUCCESS(4, "请求成功,但是结果失败"), + REQUEST_FAILURE(5, "请求失败"), + + ; + + /** + * 状态 + */ + private final Integer status; + /** + * 名字 + */ + private final String name; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/notify/PayNotifyTypeEnum.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/notify/PayNotifyTypeEnum.java new file mode 100644 index 0000000000..a501bc55f9 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/notify/PayNotifyTypeEnum.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.coreservice.modules.pay.enums.notify; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付通知类型 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum PayNotifyTypeEnum { + + ORDER(1, "支付单"), + REFUND(2, "退款单"), + ; + + /** + * 类型 + */ + private final Integer type; + /** + * 名字 + */ + private final String name; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderNotifyStatusEnum.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderNotifyStatusEnum.java new file mode 100644 index 0000000000..4bda485d2a --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderNotifyStatusEnum.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.coreservice.modules.pay.enums.order; + +import cn.iocoder.yudao.framework.common.core.IntArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付订单的通知状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum PayOrderNotifyStatusEnum implements IntArrayValuable { + + NO(0, "未通知"), + SUCCESS(10, "通知成功"), + FAILURE(20, "通知失败") + ; + + private final Integer status; + private final String name; + + @Override + public int[] array() { + return new int[0]; + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderRefundStatusEnum.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderRefundStatusEnum.java new file mode 100644 index 0000000000..3c283a9d58 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderRefundStatusEnum.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.coreservice.modules.pay.enums.order; + +import cn.iocoder.yudao.framework.common.core.IntArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付订单的退款状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum PayOrderRefundStatusEnum implements IntArrayValuable { + + NO(0, "未退款"), + SOME(10, "部分退款"), + ALL(20, "全部退款") + ; + + private final Integer status; + private final String name; + + @Override + public int[] array() { + return new int[0]; + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderStatusEnum.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderStatusEnum.java new file mode 100644 index 0000000000..b61c0400ce --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/enums/order/PayOrderStatusEnum.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.coreservice.modules.pay.enums.order; + +import cn.iocoder.yudao.framework.common.core.IntArrayValuable; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付订单的状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum PayOrderStatusEnum implements IntArrayValuable { + + WAITING(0, "未支付"), + SUCCESS(10, "支付成功"), + CLOSED(20, "支付关闭"), // 未付款交易超时关闭,或支付完成后全额退款 TODO 芋艿:需要优化下 + ; + + private final Integer status; + private final String name; + + @Override + public int[] array() { + return new int[0]; + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/package-info.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/package-info.java new file mode 100644 index 0000000000..8f5ba6ac30 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/package-info.java @@ -0,0 +1,7 @@ +/** + * pay 包下,我们放支付业务,提供业务的支付能力。 + * 例如说:商户、应用、支付、退款等等 + * + * 缩写:pay + */ +package cn.iocoder.yudao.coreservice.modules.pay; diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/PayAppCoreService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/PayAppCoreService.java new file mode 100644 index 0000000000..ab6f3f27f0 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/PayAppCoreService.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.merchant; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; +import cn.iocoder.yudao.framework.common.exception.ServiceException; + +/** + * 支付应用 Core Service 接口 + * + * @author 芋道源码 + */ +public interface PayAppCoreService { + + /** + * 支付应用的合法性 + * + * 如果不合法,抛出 {@link ServiceException} 业务异常 + * + * @param id 应用编号 + * @return 应用信息 + */ + PayAppDO validPayApp(Long id); + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/PayChannelCoreService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/PayChannelCoreService.java new file mode 100644 index 0000000000..76d4678759 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/PayChannelCoreService.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.merchant; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.framework.common.exception.ServiceException; + +/** + * 支付渠道 Core Service 接口 + * + * @author 芋道源码 + */ +public interface PayChannelCoreService { + + /** + * 初始化支付客户端 + */ + void initPayClients(); + + /** + * 支付渠道的合法性 + * + * 如果不合法,抛出 {@link ServiceException} 业务异常 + * + * @param id 渠道编号 + * @return 渠道信息 + */ + PayChannelDO validPayChannel(Long id); + + /** + * 支付渠道的合法性 + * + * 如果不合法,抛出 {@link ServiceException} 业务异常 + * + * @param appId 应用编号 + * @param code 支付渠道 + * @return 渠道信息 + */ + PayChannelDO validPayChannel(Long appId, String code); + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/impl/PayAppCoreServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/impl/PayAppCoreServiceImpl.java new file mode 100644 index 0000000000..916b501377 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/impl/PayAppCoreServiceImpl.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.merchant.impl; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.merchant.PayAppCoreMapper; +import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.PayAppCoreService; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 支付应用 Core Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Valid +@Slf4j +public class PayAppCoreServiceImpl implements PayAppCoreService { + + @Resource + private PayAppCoreMapper payAppCoreMapper; + + @Override + public PayAppDO validPayApp(Long id) { + PayAppDO app = payAppCoreMapper.selectById(id); + // 校验是否存在 + if (app == null) { + throw exception(PAY_APP_NOT_FOUND); + } + // 校验是否禁用 + if (CommonStatusEnum.DISABLE.getStatus().equals(app.getStatus())) { + throw exception(PAY_APP_IS_DISABLE); + } + return app; + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/impl/PayChannelCoreServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/impl/PayChannelCoreServiceImpl.java new file mode 100644 index 0000000000..5029b6ebd7 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/merchant/impl/PayChannelCoreServiceImpl.java @@ -0,0 +1,121 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.merchant.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.merchant.PayChannelCoreMapper; +import cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants; +import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.PayChannelCoreService; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import javax.validation.Valid; + +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 支付渠道 Core Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Valid +@Slf4j +public class PayChannelCoreServiceImpl implements PayChannelCoreService { + + /** + * 定时执行 {@link #schedulePeriodicRefresh()} 的周期 + * 因为已经通过 Redis Pub/Sub 机制,所以频率不需要高 + */ + private static final long SCHEDULER_PERIOD = 5 * 60 * 1000L; + + /** + * 缓存菜单的最大更新时间,用于后续的增量轮询,判断是否有更新 + */ + private volatile Date maxUpdateTime; + + @Resource + private PayChannelCoreMapper payChannelCoreMapper; + + @Resource + private PayClientFactory payClientFactory; + + @Override + @PostConstruct + public void initPayClients() { + // 获取支付渠道,如果有更新 + List payChannels = this.loadPayChannelIfUpdate(maxUpdateTime); + if (CollUtil.isEmpty(payChannels)) { + return; + } + + // 创建或更新支付 Client + payChannels.forEach(payChannel -> payClientFactory.createOrUpdatePayClient(payChannel.getId(), + payChannel.getCode(), payChannel.getConfig())); + + // 写入缓存 + assert payChannels.size() > 0; // 断言,避免告警 + maxUpdateTime = payChannels.stream().max(Comparator.comparing(BaseDO::getUpdateTime)).get().getUpdateTime(); + log.info("[initPayClients][初始化 PayChannel 数量为 {}]", payChannels.size()); + } + + @Scheduled(fixedDelay = SCHEDULER_PERIOD, initialDelay = SCHEDULER_PERIOD) + public void schedulePeriodicRefresh() { + initPayClients(); + } + + /** + * 如果支付渠道发生变化,从数据库中获取最新的全量支付渠道。 + * 如果未发生变化,则返回空 + * + * @param maxUpdateTime 当前支付渠道的最大更新时间 + * @return 支付渠道列表 + */ + private List loadPayChannelIfUpdate(Date maxUpdateTime) { + // 第一步,判断是否要更新。 + if (maxUpdateTime == null) { // 如果更新时间为空,说明 DB 一定有新数据 + log.info("[loadPayChannelIfUpdate][首次加载全量支付渠道]"); + } else { // 判断数据库中是否有更新的支付渠道 + if (payChannelCoreMapper.selectExistsByUpdateTimeAfter(maxUpdateTime) == null) { + return null; + } + log.info("[loadPayChannelIfUpdate][增量加载全量支付渠道]"); + } + // 第二步,如果有更新,则从数据库加载所有支付渠道 + return payChannelCoreMapper.selectList(); + } + + @Override + public PayChannelDO validPayChannel(Long id) { + PayChannelDO channel = payChannelCoreMapper.selectById(id); + this.validPayChannel(channel); + return channel; + } + + @Override + public PayChannelDO validPayChannel(Long appId, String code) { + PayChannelDO channel = payChannelCoreMapper.selectByAppIdAndCode(appId, code); + this.validPayChannel(channel); + return channel; + } + + private void validPayChannel(PayChannelDO channel) { + if (channel == null) { + throw exception(PAY_CHANNEL_NOT_FOUND); + } + if (CommonStatusEnum.DISABLE.getStatus().equals(channel.getStatus())) { + throw exception(PayErrorCodeCoreConstants.PAY_CHANNEL_IS_DISABLE); + } + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/PayNotifyCoreService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/PayNotifyCoreService.java new file mode 100644 index 0000000000..4683757099 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/PayNotifyCoreService.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.notify; + +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.dto.PayNotifyTaskCreateReqDTO; + +import javax.validation.Valid; + +/** + * 支付通知 Core Service 接口 + * + * @author 芋道源码 + */ +public interface PayNotifyCoreService { + + /** + * 创建支付通知任务 + * + * @param reqDTO 任务信息 + */ + void createPayNotifyTask(@Valid PayNotifyTaskCreateReqDTO reqDTO); + + /** + * 执行支付通知 + * + * 注意,该方法提供给定时任务调用。目前是 yudao-admin-server 进行调用 + * @return 通知数量 + */ + int executeNotify() throws InterruptedException; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/dto/PayNotifyTaskCreateReqDTO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/dto/PayNotifyTaskCreateReqDTO.java new file mode 100644 index 0000000000..8d40ffb91e --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/dto/PayNotifyTaskCreateReqDTO.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.notify.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; + +/** + * 支付通知创建 DTO + * + * @author 芋道源码 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayNotifyTaskCreateReqDTO { + + /** + * 类型 + */ + @NotNull(message = "类型不能为空") + private Integer type; + /** + * 数据编号 + */ + @NotNull(message = "数据编号不能为空") + private Long dataId; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/impl/PayNotifyCoreServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/impl/PayNotifyCoreServiceImpl.java new file mode 100644 index 0000000000..4e7b915479 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/impl/PayNotifyCoreServiceImpl.java @@ -0,0 +1,256 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.notify.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.http.HttpUtil; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.notify.PayNotifyLogDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.notify.PayNotifyTaskDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.notify.PayNotifyLogCoreMapper; +import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.notify.PayNotifyTaskCoreMapper; +import cn.iocoder.yudao.coreservice.modules.pay.dal.redis.notify.PayNotifyLockCoreRedisDAO; +import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyStatusEnum; +import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyTypeEnum; +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.PayNotifyCoreService; +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.dto.PayNotifyTaskCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.vo.PayNotifyOrderReqVO; +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.vo.PayRefundOrderReqVO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayOrderCoreService; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Lazy; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.SECOND_MILLIS; +import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; + +/** + * 支付通知 Core Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Valid +@Slf4j +public class PayNotifyCoreServiceImpl implements PayNotifyCoreService { + + /** + * 通知超时时间,单位:秒 + */ + public static final int NOTIFY_TIMEOUT = 120; + /** + * {@link #NOTIFY_TIMEOUT} 的毫秒 + */ + public static final long NOTIFY_TIMEOUT_MILLIS = 120 * SECOND_MILLIS; + + @Resource + @Lazy // 循环依赖,避免报错 + private PayOrderCoreService payOrderCoreService; + + @Resource + private PayNotifyTaskCoreMapper payNotifyTaskCoreMapper; + @Resource + private PayNotifyLogCoreMapper payNotifyLogCoreMapper; + + @Resource + private ThreadPoolTaskExecutor threadPoolTaskExecutor; // TODO 芋艿:未来提供独立的线程池 + + @Resource + private PayNotifyLockCoreRedisDAO payNotifyLockCoreRedisDAO; + + @Resource + @Lazy // 循环依赖(自己依赖自己),避免报错 + private PayNotifyCoreServiceImpl self; + + @Override + public void createPayNotifyTask(PayNotifyTaskCreateReqDTO reqDTO) { + PayNotifyTaskDO task = new PayNotifyTaskDO(); + task.setType(reqDTO.getType()).setDataId(reqDTO.getDataId()); + task.setStatus(PayNotifyStatusEnum.WAITING.getStatus()).setNextNotifyTime(new Date()) + .setNotifyTimes(0).setMaxNotifyTimes(PayNotifyTaskDO.NOTIFY_FREQUENCY.length + 1); + // 补充 merchantId + appId + notifyUrl 字段 + if (Objects.equals(task.getType(), PayNotifyTypeEnum.ORDER.getType())) { + PayOrderDO order = payOrderCoreService.getPayOrder(task.getDataId()); // 不进行非空判断,有问题直接异常 + task.setMerchantId(order.getMerchantId()).setAppId(order.getAppId()). + setMerchantOrderId(order.getMerchantOrderId()).setNotifyUrl(order.getNotifyUrl()); + } else if (Objects.equals(task.getType(), PayNotifyTypeEnum.REFUND.getType())) { + // TODO 芋艿,需要实现下哈 + throw new UnsupportedOperationException("需要实现"); + } + + // 执行插入 + payNotifyTaskCoreMapper.insert(task); + + // 异步直接发起任务。虽然会有定时任务扫描,但是会导致延迟 + self.executeNotifyAsync(task); + } + + @Override + public int executeNotify() throws InterruptedException { + // 获得需要通知的任务 + List tasks = payNotifyTaskCoreMapper.selectListByNotify(); + if (CollUtil.isEmpty(tasks)) { + return 0; + } + + // 遍历,逐个通知 + CountDownLatch latch = new CountDownLatch(tasks.size()); + tasks.forEach(task -> threadPoolTaskExecutor.execute(() -> { + try { + executeNotifySync(task); + } finally { + latch.countDown(); + } + })); + // 等待完成 + this.awaitExecuteNotify(latch); + // 返回执行完成的任务数(成功 + 失败) + return tasks.size(); + } + + /** + * 等待全部支付通知的完成 + * 每 1 秒会打印一次剩余任务数量 + * + * @param latch Latch + * @throws InterruptedException 如果被打断 + */ + private void awaitExecuteNotify(CountDownLatch latch) throws InterruptedException { + long size = latch.getCount(); + for (int i = 0; i < NOTIFY_TIMEOUT; i++) { + if (latch.await(1L, TimeUnit.SECONDS)) { + return; + } + log.info("[awaitExecuteNotify][任务处理中, 总任务数({}) 剩余任务数({})]", size, latch.getCount()); + } + log.error("[awaitExecuteNotify][任务未处理完,总任务数({}) 剩余任务数({})]", size, latch.getCount()); + } + + /** + * 异步执行单个支付通知 + * + * @param task 通知任务 + */ + @Async + public void executeNotifyAsync(PayNotifyTaskDO task) { + self.executeNotifySync(task); // 使用 self,避免事务不发起 + } + + /** + * 同步执行单个支付通知 + * + * @param task 通知任务 + */ + public void executeNotifySync(PayNotifyTaskDO task) { + // 分布式锁,避免并发问题 + payNotifyLockCoreRedisDAO.lock(task.getId(), NOTIFY_TIMEOUT_MILLIS, () -> { + // 校验,当前任务是否已经被通知过 + // 虽然已经通过分布式加锁,但是可能同时满足通知的条件,然后都去获得锁。此时,第一个执行完后,第二个还是能拿到锁,然后会再执行一次。 + PayNotifyTaskDO dbTask = payNotifyTaskCoreMapper.selectById(task.getId()); + if (DateUtils.afterNow(dbTask.getNextNotifyTime())) { + log.info("[executeNotify][dbTask({}) 任务被忽略,原因是未到达下次通知时间,可能是因为并发执行了]", toJsonString(dbTask)); + return; + } + + // 执行通知 + executeNotify(dbTask); + }); + } + + @Transactional + public void executeNotify(PayNotifyTaskDO task) { + // 发起回调 + CommonResult invokeResult = null; + Throwable invokeException = null; + try { + invokeResult = executeNotifyInvoke(task); + } catch (Throwable e) { + invokeException = e; + } + + // 处理 + Integer newStatus = this.processNotifyResult(task, invokeResult, invokeException); + + // 记录 PayNotifyLog 日志 + String response = invokeException != null ? getRootCauseMessage(invokeException) : toJsonString(invokeResult); + payNotifyLogCoreMapper.insert(PayNotifyLogDO.builder().taskId(task.getId()) + .notifyTimes(task.getNotifyTimes() + 1).status(newStatus).response(response).build()); + } + + /** + * 执行单个支付任务的 HTTP 调用 + * + * @param task 通知任务 + * @return HTTP 响应 + */ + private CommonResult executeNotifyInvoke(PayNotifyTaskDO task) { + // 拼接参数 + Object request; + if (Objects.equals(task.getType(), PayNotifyTypeEnum.ORDER.getType())) { + request = PayNotifyOrderReqVO.builder().merchantOrderId(task.getMerchantOrderId()) + .payOrderId(task.getDataId()).build(); + } else if (Objects.equals(task.getType(), PayNotifyTypeEnum.REFUND.getType())) { + request = PayRefundOrderReqVO.builder().merchantOrderId(task.getMerchantOrderId()) + .payRefundId(task.getDataId()).build(); + } else { + throw new RuntimeException("未知的通知任务类型:" + toJsonString(task)); + } + // 请求地址 + String response = HttpUtil.post(task.getNotifyUrl(), toJsonString(request), + (int) NOTIFY_TIMEOUT_MILLIS); + // 解析结果 + return JsonUtils.parseObject(response, CommonResult.class); + } + + /** + * 处理并更新通知结果 + * + * @param task 通知任务 + * @param invokeResult 通知结果 + * @param invokeException 通知异常 + * @return 最终任务的状态 + */ + private Integer processNotifyResult(PayNotifyTaskDO task, CommonResult invokeResult, Throwable invokeException) { + // 设置通用的更新 PayNotifyTaskDO 的字段 + PayNotifyTaskDO updateTask = new PayNotifyTaskDO() + .setId(task.getId()) + .setLastExecuteTime(new Date()) + .setNotifyTimes(task.getNotifyTimes() + 1); + + // 情况一:调用成功 + if (invokeResult != null && invokeResult.isSuccess()) { + updateTask.setStatus(PayNotifyStatusEnum.SUCCESS.getStatus()); + return updateTask.getStatus(); + } + // 情况二:调用失败、调用异常 + // 2.1 超过最大回调次数 + if (updateTask.getNotifyTimes() >= PayNotifyTaskDO.NOTIFY_FREQUENCY.length) { + updateTask.setStatus(PayNotifyStatusEnum.FAILURE.getStatus()); + return updateTask.getStatus(); + } + // 2.2 未超过最大回调次数 + updateTask.setNextNotifyTime(DateUtils.addDate(Calendar.SECOND, PayNotifyTaskDO.NOTIFY_FREQUENCY[updateTask.getNotifyTimes()])); + updateTask.setStatus(invokeException != null ? PayNotifyStatusEnum.REQUEST_FAILURE.getStatus() + : PayNotifyStatusEnum.REQUEST_SUCCESS.getStatus()); + return updateTask.getStatus(); + } + + private void processNotifySuccess(PayNotifyTaskDO task, PayNotifyTaskDO updateTask) { + payNotifyTaskCoreMapper.updateById(updateTask); + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/PayNotifyOrderReqVO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/PayNotifyOrderReqVO.java new file mode 100644 index 0000000000..94b1fec563 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/PayNotifyOrderReqVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.notify.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@ApiModel(value = "支付单的通知 Request VO", description = "业务方接入支付回调时,使用该 VO 对象") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayNotifyOrderReqVO { + + @ApiModelProperty(value = "商户订单编号", required = true, example = "10") + @NotEmpty(message = "商户订单号不能为空") + private String merchantOrderId; + + @ApiModelProperty(value = "支付订单编号", required = true, example = "20") + @NotNull(message = "支付订单编号不能为空") + private Long payOrderId; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/PayRefundOrderReqVO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/PayRefundOrderReqVO.java new file mode 100644 index 0000000000..705800892b --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/PayRefundOrderReqVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.notify.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@ApiModel(value = "退款单的通知 Request VO", description = "业务方接入退款回调时,使用该 VO 对象") +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayRefundOrderReqVO { + + @ApiModelProperty(value = "商户订单编号", required = true, example = "10") + @NotEmpty(message = "商户订单号不能为空") + private String merchantOrderId; + + @ApiModelProperty(value = "支付退款编号", required = true, example = "20") + @NotNull(message = "支付退款编号不能为空") + private Long payRefundId; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/package-info.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/package-info.java new file mode 100644 index 0000000000..78667d3ce9 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/notify/vo/package-info.java @@ -0,0 +1,6 @@ +/** + * 这里的 VO 包有点特殊,是提供给接入支付模块的业务,提供回调接口时,可以直接使用 VO + * + * 例如说,支付单的回调,使用 + */ +package cn.iocoder.yudao.coreservice.modules.pay.service.notify.vo; diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayOrderCoreService.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayOrderCoreService.java new file mode 100644 index 0000000000..002716eaca --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayOrderCoreService.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitRespDTO; + +import javax.validation.Valid; + +/** + * 支付订单 Core Service + * + * @author 芋道源码 + */ +public interface PayOrderCoreService { + + /** + * 获得支付单 + * + * @param id 支付单编号 + * @return 支付单 + */ + PayOrderDO getPayOrder(Long id); + + /** + * 创建支付单 + * + * @param reqDTO 创建请求 + * @return 支付单编号 + */ + Long createPayOrder(@Valid PayOrderCreateReqDTO reqDTO); + + /** + * 提交支付 + * 此时,会发起支付渠道的调用 + * + * @param reqDTO 提交请求 + * @return 提交结果 + */ + PayOrderSubmitRespDTO submitPayOrder(@Valid PayOrderSubmitReqDTO reqDTO); + + /** + * 通知支付单成功 + * + * @param channelId 渠道编号 + * @param channelCode 渠道编码 + * @param notifyData 通知数据 + */ + void notifyPayOrder(Long channelId, String channelCode, String notifyData) throws Exception; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderCreateReqDTO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderCreateReqDTO.java new file mode 100644 index 0000000000..a5d2b0f4e2 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderCreateReqDTO.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.order.dto; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + +/** + * 支付单创建 Request DTO + */ +@Data +public class PayOrderCreateReqDTO implements Serializable { + + /** + * 应用编号 + */ + @NotNull(message = "应用编号不能为空") + private Long appId; + /** + * 用户 IP + */ + @NotEmpty(message = "用户 IP 不能为空") + private String userIp; + + // ========== 商户相关字段 ========== + + /** + * 商户订单编号 + */ + @NotEmpty(message = "商户订单编号不能为空") + private String merchantOrderId; + /** + * 商品标题 + */ + @NotEmpty(message = "商品标题不能为空") + @Length(max = 32, message = "商品标题不能超过 32") + private String subject; + /** + * 商品描述 + */ + @NotEmpty(message = "商品描述信息不能为空") + @Length(max = 128, message = "商品描述信息长度不能超过128") + private String body; + + // ========== 订单相关字段 ========== + + /** + * 支付金额,单位:分 + */ + @NotNull(message = "支付金额不能为空") + @DecimalMin(value = "0", inclusive = false, message = "支付金额必须大于零") + private Integer amount; + + /** + * 支付过期时间 + */ + @NotNull(message = "支付过期时间不能为空") + private Date expireTime; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderSubmitReqDTO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderSubmitReqDTO.java new file mode 100644 index 0000000000..eb08fbb3e1 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderSubmitReqDTO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.order.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Map; + +/** + * 支付单提交 Request DTO + */ +@Data +@Accessors(chain = true) +public class PayOrderSubmitReqDTO implements Serializable { + + /** + * 应用编号 + */ + @NotNull(message = "应用编号不能为空") + private Long appId; + + /** + * 支付单编号 + */ + @NotNull(message = "支付单编号不能为空") + private Long id; + + /** + * 支付渠道 + */ + @NotEmpty(message = "支付渠道不能为空") + private String channelCode; + + /** + * 用户 IP + */ + @NotEmpty(message = "用户 IP 不能为空") + private String userIp; + + /** + * 支付渠道的额外参数 + */ + private Map channelExtras; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderSubmitRespDTO.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderSubmitRespDTO.java new file mode 100644 index 0000000000..2bcb504e85 --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/dto/PayOrderSubmitRespDTO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.order.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 支付单提交 Response DTO + */ +@Data +public class PayOrderSubmitRespDTO implements Serializable { + + /** + * 支付拓展单的编号 + */ + private Long extensionId; + + /** + * 调用支付渠道的响应结果 + */ + private Object invokeResponse; + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayOrderCoreServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayOrderCoreServiceImpl.java new file mode 100644 index 0000000000..5515dd87ca --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/impl/PayOrderCoreServiceImpl.java @@ -0,0 +1,242 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.order.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.coreservice.modules.pay.convert.order.PayOrderCoreConvert; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayOrderCoreMapper; +import cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.order.PayOrderExtensionCoreMapper; +import cn.iocoder.yudao.coreservice.modules.pay.enums.notify.PayNotifyTypeEnum; +import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderNotifyStatusEnum; +import cn.iocoder.yudao.coreservice.modules.pay.enums.order.PayOrderStatusEnum; +import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.PayAppCoreService; +import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.PayChannelCoreService; +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.PayNotifyCoreService; +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.dto.PayNotifyTaskCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayOrderCoreService; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitRespDTO; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.framework.pay.config.PayProperties; +import cn.iocoder.yudao.framework.pay.core.client.PayClient; +import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderNotifyRespDTO; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.Objects; + +import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 支付订单 Core Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +@Slf4j +public class PayOrderCoreServiceImpl implements PayOrderCoreService { + + @Resource + private PayProperties payProperties; + + @Resource + private PayAppCoreService payAppCoreService; + @Resource + private PayChannelCoreService payChannelCoreService; + @Resource + private PayNotifyCoreService payNotifyCoreService; + + @Resource + private PayClientFactory payClientFactory; + + @Resource + private PayOrderCoreMapper payOrderCoreMapper; + @Resource + private PayOrderExtensionCoreMapper payOrderExtensionCoreMapper; + + @Override + public PayOrderDO getPayOrder(Long id) { + return payOrderCoreMapper.selectById(id); + } + + @Override + public Long createPayOrder(PayOrderCreateReqDTO reqDTO) { + // 校验 App + PayAppDO app = payAppCoreService.validPayApp(reqDTO.getAppId()); + + // 查询对应的支付交易单是否已经存在。如果是,则直接返回 + PayOrderDO order = payOrderCoreMapper.selectByAppIdAndMerchantOrderId( + reqDTO.getAppId(), reqDTO.getMerchantOrderId()); + if (order != null) { + log.warn("[createPayOrder][appId({}) merchantOrderId({}) 已经存在对应的支付单({})]", order.getAppId(), + order.getMerchantOrderId(), JsonUtils.toJsonString(order)); // 理论来说,不会出现这个情况 + return app.getId(); + } + + // 创建支付交易单 + order = PayOrderCoreConvert.INSTANCE.convert(reqDTO) + .setMerchantId(app.getMerchantId()).setAppId(app.getId()); + // 商户相关字段 + order.setNotifyUrl(app.getPayNotifyUrl()) + .setNotifyStatus(PayOrderNotifyStatusEnum.NO.getStatus()); + // 订单相关字段 + order.setStatus(PayOrderStatusEnum.WAITING.getStatus()); + // 退款相关字段 + order.setRefundStatus(PayOrderNotifyStatusEnum.NO.getStatus()) + .setRefundTimes(0).setRefundAmount(0L); + payOrderCoreMapper.insert(order); + // 最终返回 + return order.getId(); + } + + @Override + public PayOrderSubmitRespDTO submitPayOrder(PayOrderSubmitReqDTO reqDTO) { + // 校验 App + payAppCoreService.validPayApp(reqDTO.getAppId()); + // 校验支付渠道是否有效 + PayChannelDO channel = payChannelCoreService.validPayChannel(reqDTO.getAppId(), reqDTO.getChannelCode()); + // 校验支付客户端是否正确初始化 + PayClient client = payClientFactory.getPayClient(channel.getId()); + if (client == null) { + log.error("[submitPayOrder][渠道编号({}) 找不到对应的支付客户端]", channel.getId()); + throw exception(PAY_CHANNEL_CLIENT_NOT_FOUND); + } + + // 获得 PayOrderDO ,并校验其是否存在 + PayOrderDO order = payOrderCoreMapper.selectById(reqDTO.getId()); + if (order == null || !Objects.equals(order.getAppId(), reqDTO.getAppId())) { // 是否存在 + throw exception(PAY_ORDER_NOT_FOUND); + } + if (!PayOrderStatusEnum.WAITING.getStatus().equals(order.getStatus())) { // 校验状态,必须是待支付 + throw exception(PAY_ORDER_STATUS_IS_NOT_WAITING); + } + + // 插入 PayOrderExtensionDO + PayOrderExtensionDO orderExtension = PayOrderCoreConvert.INSTANCE.convert(reqDTO) + .setOrderId(order.getId()).setNo(generateOrderExtensionNo()) + .setChannelId(channel.getId()).setChannelCode(channel.getCode()) + .setStatus(PayOrderStatusEnum.WAITING.getStatus()); + payOrderExtensionCoreMapper.insert(orderExtension); + + // 调用三方接口 + PayOrderUnifiedReqDTO unifiedOrderReqDTO = PayOrderCoreConvert.INSTANCE.convert2(reqDTO); + // 商户相关字段 + unifiedOrderReqDTO.setMerchantOrderId(orderExtension.getNo()) // 注意,此处使用的是 PayOrderExtensionDO.no 属性! + .setSubject(order.getSubject()).setBody(order.getBody()) + .setNotifyUrl(genChannelPayNotifyUrl(channel)); + // 订单相关字段 + unifiedOrderReqDTO.setAmount(order.getAmount()).setExpireTime(order.getExpireTime()); + CommonResult unifiedOrderResult = client.unifiedOrder(unifiedOrderReqDTO); + unifiedOrderResult.checkError(); + + // TODO 轮询三方接口,是否已经支付的任务 + // 返回成功 + return new PayOrderSubmitRespDTO().setExtensionId(orderExtension.getId()) + .setInvokeResponse(unifiedOrderResult.getData()); + } + + /** + * 根据支付渠道的编码,生成支付渠道的回调地址 + * + * @param channel 支付渠道 + * @return 支付渠道的回调地址 + */ + private String genChannelPayNotifyUrl(PayChannelDO channel) { + // _ 转化为 - 的原因,是因为 URL 我们统一采用中划线的原则 + return payProperties.getPayNotifyUrl() + "/" + StrUtil.replace(channel.getCode(), "_", "-") + + "/" + channel.getId(); + } + + private String generateOrderExtensionNo() { +// wx +// 2014 +// 10 +// 27 +// 20 +// 09 +// 39 +// 5522657 +// a690389285100 + // 目前的算法 + // 时间序列,年月日时分秒 14 位 + // 纯随机,6 位 TODO 芋艿:此处估计是会有问题的,后续在调整 + return DateUtil.format(new Date(), "yyyyMMddHHmmss") + // 时间序列 + RandomUtil.randomInt(100000, 999999) // 随机。为什么是这个范围,因为偷懒 + ; + } + + @Override + @Transactional + public void notifyPayOrder(Long channelId, String channelCode, String notifyData) throws Exception { + // TODO 芋艿,记录回调日志 + log.info("[notifyPayOrder][channelId({}) 回调数据({})]", channelId, notifyData); + + // 校验支付渠道是否有效 + PayChannelDO channel = payChannelCoreService.validPayChannel(channelId); + // 校验支付客户端是否正确初始化 + PayClient client = payClientFactory.getPayClient(channel.getId()); + if (client == null) { + log.error("[notifyPayOrder][渠道编号({}) 找不到对应的支付客户端]", channel.getId()); + throw exception(PAY_CHANNEL_CLIENT_NOT_FOUND); + } + // 解析支付结果 + PayOrderNotifyRespDTO notifyRespDTO = client.parseOrderNotify(notifyData); + + // TODO 芋艿,先最严格的校验。即使调用方重复调用,实际哪个订单已经被重复回调的支付,也返回 false 。也没问题,因为实际已经回调成功了。 + // 1.1 查询 PayOrderExtensionDO + PayOrderExtensionDO orderExtension = payOrderExtensionCoreMapper.selectByNo( + notifyRespDTO.getOrderExtensionNo()); + if (orderExtension == null) { + throw exception(PAY_ORDER_EXTENSION_NOT_FOUND); + } + if (!PayOrderStatusEnum.WAITING.getStatus().equals(orderExtension.getStatus())) { // 校验状态,必须是待支付 + throw exception(PAY_ORDER_EXTENSION_STATUS_IS_NOT_WAITING); + } + // 1.2 更新 PayOrderExtensionDO + int updateCounts = payOrderExtensionCoreMapper.updateByIdAndStatus(orderExtension.getId(), + PayOrderStatusEnum.WAITING.getStatus(), PayOrderExtensionDO.builder().id(orderExtension.getId()) + .status(PayOrderStatusEnum.SUCCESS.getStatus()).channelNotifyData(notifyData).build()); + if (updateCounts == 0) { // 校验状态,必须是待支付 + throw exception(PAY_ORDER_EXTENSION_STATUS_IS_NOT_WAITING); + } + log.info("[notifyPayOrder][支付拓展单({}) 更新为已支付]", orderExtension.getId()); + + // 2.1 判断 PayOrderDO 是否处于待支付 + PayOrderDO order = payOrderCoreMapper.selectById(orderExtension.getOrderId()); + if (order == null) { + throw exception(PAY_ORDER_NOT_FOUND); + } + if (!PayOrderStatusEnum.WAITING.getStatus().equals(order.getStatus())) { // 校验状态,必须是待支付 + throw exception(PAY_ORDER_STATUS_IS_NOT_WAITING); + } + // 2.2 更新 PayOrderDO + updateCounts = payOrderCoreMapper.updateByIdAndStatus(order.getId(), PayOrderStatusEnum.WAITING.getStatus(), + PayOrderDO.builder().status(PayOrderStatusEnum.SUCCESS.getStatus()).channelId(channelId).channelCode(channelCode) + .successTime(notifyRespDTO.getSuccessTime()).successExtensionId(orderExtension.getId()) + .channelOrderNo(notifyRespDTO.getChannelOrderNo()).channelUserId(notifyRespDTO.getChannelUserId()) + .notifyTime(new Date()).build()); + if (updateCounts == 0) { // 校验状态,必须是待支付 + throw exception(PAY_ORDER_STATUS_IS_NOT_WAITING); + } + log.info("[notifyPayOrder][支付订单({}) 更新为已支付]", order.getId()); + + // 3. 插入支付通知记录 + payNotifyCoreService.createPayNotifyTask(PayNotifyTaskCreateReqDTO.builder() + .type(PayNotifyTypeEnum.ORDER.getType()).dataId(order.getId()).build()); + } + +} diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/package-info.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/package-info.java new file mode 100644 index 0000000000..13b4863a5b --- /dev/null +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/pay/service/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service; diff --git a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java index 2bc8a73857..d1419c44f8 100644 --- a/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java +++ b/yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/service/social/impl/SysSocialServiceImpl.java @@ -19,9 +19,9 @@ import me.zhyd.oauth.request.AuthRequest; import me.zhyd.oauth.utils.AuthStateUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import javax.validation.Valid; import java.util.List; import java.util.Objects; @@ -36,7 +36,7 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString * @author 芋道源码 */ @Service -@Valid +@Validated @Slf4j public class SysSocialServiceImpl implements SysSocialService { diff --git a/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseDbAndRedisIntegrationTest.java b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseDbAndRedisIntegrationTest.java new file mode 100644 index 0000000000..dc15808943 --- /dev/null +++ b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseDbAndRedisIntegrationTest.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.coreservice; + +import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; +import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; +import org.redisson.spring.starter.RedissonAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbAndRedisIntegrationTest.Application.class) +@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 +public class BaseDbAndRedisIntegrationTest { + + @Import({ + // DB 配置类 + DynamicDataSourceAutoConfiguration.class, // Dynamic Datasource 配置类 + YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 + DataSourceAutoConfiguration.class, // Spring DB 自动配置类 + DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 + // MyBatis 配置类 + YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 + MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 + + // Redis 配置类 + RedisAutoConfiguration.class, // Spring Redis 自动配置类 + YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 + RedissonAutoConfiguration.class, // Redisson 自动高配置类 + }) + public static class Application { + } + +} diff --git a/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseDbIntegrationTest.java b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseDbIntegrationTest.java new file mode 100644 index 0000000000..c0ebe98738 --- /dev/null +++ b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseDbIntegrationTest.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.coreservice; + +import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; +import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbIntegrationTest.Application.class) +@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 +public class BaseDbIntegrationTest { + + @Import({ + // DB 配置类 + DynamicDataSourceAutoConfiguration.class, // Dynamic Datasource 配置类 + YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 + DataSourceAutoConfiguration.class, // Spring DB 自动配置类 + DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 + // MyBatis 配置类 + YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 + MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 + }) + public static class Application { + } + +} diff --git a/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseRedisIntegrationTest.java b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseRedisIntegrationTest.java new file mode 100644 index 0000000000..16b5e98f14 --- /dev/null +++ b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/BaseRedisIntegrationTest.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.coreservice; + +import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; +import org.redisson.spring.starter.RedissonAutoConfiguration; +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseRedisIntegrationTest.Application.class) +@ActiveProfiles("integration-test") // 设置使用 application-integration-test 配置文件 +public class BaseRedisIntegrationTest { + + @Import({ + // Redis 配置类 + RedisAutoConfiguration.class, // Spring Redis 自动配置类 + YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 + RedissonAutoConfiguration.class, // Redisson 自动高配置类 + }) + public static class Application { + } + +} diff --git a/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayChannelDOTest.java b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayChannelDOTest.java new file mode 100644 index 0000000000..c0fb7d5bd6 --- /dev/null +++ b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/dal/dataobject/merchant/PayChannelDOTest.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant; + +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig; +import org.junit.jupiter.api.Test; + +public class PayChannelDOTest { + + @Test + public void testSerialization() { + PayChannelDO payChannelDO = new PayChannelDO(); + // 创建配置 + WXPayClientConfig config = new WXPayClientConfig(); + config.setAppId("wx041349c6f39b268b"); + config.setMchId("1545083881"); + config.setApiVersion(WXPayClientConfig.API_VERSION_V2); + config.setMchKey("0alL64UDQdlCwiKZ73ib7ypaIjMns06p"); + payChannelDO.setConfig(config); + + // 序列化 + String text = JsonUtils.toJsonString(payChannelDO); + System.out.println(text); + + // 反序列化 + payChannelDO = JsonUtils.parseObject(text, PayChannelDO.class); + System.out.println(payChannelDO.getConfig().getClass()); + } + +} diff --git a/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayChannelCoreMapperTest.java b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayChannelCoreMapperTest.java new file mode 100644 index 0000000000..b214f7b650 --- /dev/null +++ b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/dal/mysql/merchant/PayChannelCoreMapperTest.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.coreservice.modules.pay.dal.mysql.merchant; + +import cn.hutool.core.io.IoUtil; +import cn.iocoder.yudao.coreservice.BaseDbAndRedisIntegrationTest; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayChannelDO; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import org.junit.jupiter.api.Test; + +import javax.annotation.Resource; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.List; + +@Resource +public class PayChannelCoreMapperTest extends BaseDbAndRedisIntegrationTest { + + @Resource + private PayChannelCoreMapper payChannelCoreMapper; + + /** + * 插入初始配置 + */ + @Test + public void testInsert() throws FileNotFoundException { + PayChannelDO payChannelDO = new PayChannelDO(); + payChannelDO.setCode(PayChannelEnum.WX_PUB.getCode()); + payChannelDO.setStatus(CommonStatusEnum.ENABLE.getStatus()); + payChannelDO.setFeeRate(1D); + payChannelDO.setMerchantId(1L); + payChannelDO.setAppId(6L); + // 配置 + WXPayClientConfig config = new WXPayClientConfig(); + config.setAppId("wx041349c6f39b268b"); + config.setMchId("1545083881"); + config.setApiVersion(WXPayClientConfig.API_VERSION_V2); + config.setMchKey("0alL64UDQdlCwiKZ73ib7ypaIjMns06p"); + config.setPrivateKeyContent(IoUtil.readUtf8(new FileInputStream("/Users/yunai/Downloads/wx_pay/apiclient_key.pem"))); + config.setPrivateCertContent(IoUtil.readUtf8(new FileInputStream("/Users/yunai/Downloads/wx_pay/apiclient_cert.pem"))); + config.setApiV3Key("joerVi8y5DJ3o4ttA0o1uH47Xz1u2Ase"); + payChannelDO.setConfig(config); + // 执行插入 + payChannelCoreMapper.insert(payChannelDO); + } + + /** + * 查询所有支付配置,看看是否都是 ok 的 + */ + @Test + public void testSelectList() { + List payChannels = payChannelCoreMapper.selectList(); + System.out.println(payChannels.size()); + } + +} diff --git a/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayOrderCoreServiceTest.java b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayOrderCoreServiceTest.java new file mode 100644 index 0000000000..2a5e137412 --- /dev/null +++ b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/service/order/PayOrderCoreServiceTest.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service.order; + +import cn.iocoder.yudao.coreservice.BaseDbIntegrationTest; +import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.impl.PayAppCoreServiceImpl; +import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.impl.PayChannelCoreServiceImpl; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderCreateReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.impl.PayOrderCoreServiceImpl; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.pay.config.YudaoPayAutoConfiguration; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import org.junit.jupiter.api.Test; +import org.springframework.context.annotation.Import; + +import javax.annotation.Resource; +import java.time.Duration; + +@Import({PayOrderCoreServiceImpl.class, PayAppCoreServiceImpl.class, + PayChannelCoreServiceImpl.class, YudaoPayAutoConfiguration.class}) +public class PayOrderCoreServiceTest extends BaseDbIntegrationTest { + + @Resource + private PayOrderCoreService payOrderCoreService; + + @Test + public void testCreatePayOrder() { + // 构造请求 + PayOrderCreateReqDTO reqDTO = new PayOrderCreateReqDTO(); + reqDTO.setAppId(6L); + reqDTO.setUserIp("127.0.0.1"); + reqDTO.setMerchantOrderId(String.valueOf(System.currentTimeMillis())); + reqDTO.setSubject("标题"); + reqDTO.setBody("内容"); + reqDTO.setAmount(100); + reqDTO.setExpireTime(DateUtils.addTime(Duration.ofDays(1))); + // 发起请求 + payOrderCoreService.createPayOrder(reqDTO); + } + + @Test + public void testSubmitPayOrder() { + // 构造请求 + PayOrderSubmitReqDTO reqDTO = new PayOrderSubmitReqDTO(); + reqDTO.setId(10L); + reqDTO.setAppId(6L); + reqDTO.setChannelCode(PayChannelEnum.WX_PUB.getCode()); + reqDTO.setUserIp("127.0.0.1"); + // 发起请求 + payOrderCoreService.submitPayOrder(reqDTO); + } + +} diff --git a/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/service/package-info.java b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/service/package-info.java new file mode 100644 index 0000000000..13b4863a5b --- /dev/null +++ b/yudao-core-service/src/test-integration/java/cn/iocoder/yudao/coreservice/modules/pay/service/package-info.java @@ -0,0 +1 @@ +package cn.iocoder.yudao.coreservice.modules.pay.service; diff --git a/yudao-core-service/src/test-integration/resources/application-integration-test.yaml b/yudao-core-service/src/test-integration/resources/application-integration-test.yaml new file mode 100644 index 0000000000..06353ae111 --- /dev/null +++ b/yudao-core-service/src/test-integration/resources/application-integration-test.yaml @@ -0,0 +1,92 @@ +spring: + main: + lazy-initialization: true # 开启懒加载,加快速度 + banner-mode: off # 单元测试,禁用 Banner + +--- #################### 数据库相关配置 #################### + +spring: + # 数据源配置项 + autoconfigure: + exclude: + - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源 + datasource: + druid: # Druid 【监控】相关的全局配置 + web-stat-filter: + enabled: true + dynamic: # 多数据源配置 + druid: # Druid 【连接池】相关的全局配置 + initial-size: 5 # 初始连接数 + min-idle: 10 # 最小连接池数量 + max-active: 20 # 最大连接池数量 + max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒 + time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒 + min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒 + max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒 + validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效 + test-while-idle: true + test-on-borrow: false + test-on-return: false + primary: master + datasource: + master: + name: ruoyi-vue-pro + url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT + driver-class-name: com.mysql.jdbc.Driver + username: root + password: 123456 + slave: # 模拟从库,可根据自己需要修改 + name: ruoyi-vue-pro + url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT + driver-class-name: com.mysql.jdbc.Driver + username: root + password: 123456 + + # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 + redis: + host: 127.0.0.1 # 地址 + port: 6379 # 端口 + database: 0 # 数据库索引 + +mybatis: + lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试 +mybatis-plus: + configuration: + map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印日志 + global-config: + db-config: + id-type: AUTO # 自增 ID + logic-delete-value: 1 # 逻辑已删除值(默认为 1) + logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) + mapper-locations: classpath*:mapper/*.xml + type-aliases-package: ${yudao.core-service.base-package}.modules.*.dal.dataobject + +--- #################### 定时任务相关配置 #################### + +--- #################### 配置中心相关配置 #################### + +--- #################### 服务保障相关配置 #################### + +# Lock4j 配置项(单元测试,禁用 Lock4j) + +# Resilience4j 配置项 +resilience4j: + ratelimiter: + instances: + backendA: + limit-for-period: 1 # 每个周期内,允许的请求数。默认为 50 + limit-refresh-period: 60s # 每个周期的时长,单位:微秒。默认为 500 + timeout-duration: 1s # 被限流时,阻塞等待的时长,单位:微秒。默认为 5s + register-health-indicator: true # 是否注册到健康监测 + +--- #################### 监控相关配置 #################### + +--- #################### 芋道相关配置 #################### + +yudao: + info: + version: 1.0.0 + base-package: cn.iocoder.yudao.adminserver + core-service: + base-package: cn.iocoder.yudao.coreservice diff --git a/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiAccessLogCoreServiceTest.java b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiAccessLogCoreServiceTest.java index b634cc3c2a..c7b2620eb0 100644 --- a/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiAccessLogCoreServiceTest.java +++ b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiAccessLogCoreServiceTest.java @@ -5,14 +5,13 @@ import cn.iocoder.yudao.coreservice.BaseDbUnitTest; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiAccessLogDO; import cn.iocoder.yudao.coreservice.modules.infra.dal.mysql.logger.InfApiAccessLogCoreMapper; import cn.iocoder.yudao.coreservice.modules.infra.service.logger.impl.InfApiAccessLogCoreServiceImpl; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateReqDTO; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.test.core.util.RandomUtils; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Import; import javax.annotation.Resource; -import java.util.concurrent.Future; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -32,7 +31,7 @@ public class InfApiAccessLogCoreServiceTest extends BaseDbUnitTest { @Test public void testCreateApiAccessLogAsync() { // 准备参数 - ApiAccessLogCreateDTO createDTO = RandomUtils.randomPojo(ApiAccessLogCreateDTO.class, + ApiAccessLogCreateReqDTO createDTO = RandomUtils.randomPojo(ApiAccessLogCreateReqDTO.class, dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue())); // 调用 diff --git a/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiErrorLogCoreServiceTest.java b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiErrorLogCoreServiceTest.java index 5ca6449a11..6379ab32a1 100644 --- a/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiErrorLogCoreServiceTest.java +++ b/yudao-core-service/src/test/java/cn/iocoder/yudao/coreservice/modules/infra/service/logger/InfApiErrorLogCoreServiceTest.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.coreservice.BaseDbUnitTest; import cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger.InfApiErrorLogDO; import cn.iocoder.yudao.coreservice.modules.infra.dal.mysql.logger.InfApiErrorLogCoreMapper; import cn.iocoder.yudao.coreservice.modules.infra.service.logger.impl.InfApiErrorLogCoreServiceImpl; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateReqDTO; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; import cn.iocoder.yudao.framework.test.core.util.RandomUtils; import org.junit.jupiter.api.Test; @@ -31,7 +31,7 @@ public class InfApiErrorLogCoreServiceTest extends BaseDbUnitTest { @Test public void testCreateApiErrorLogAsync() { // 准备参数 - ApiErrorLogCreateDTO createDTO = RandomUtils.randomPojo(ApiErrorLogCreateDTO.class, + ApiErrorLogCreateReqDTO createDTO = RandomUtils.randomPojo(ApiErrorLogCreateReqDTO.class, dto -> dto.setUserType(RandomUtil.randomEle(UserTypeEnum.values()).getValue())); // 调用 diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index 18894b0d92..fba3941500 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -93,6 +93,16 @@ yudao-spring-boot-starter-biz-sms ${revision} + + cn.iocoder.boot + yudao-spring-boot-starter-biz-pay + ${revision} + + + cn.iocoder.boot + yudao-spring-boot-starter-biz-weixin + ${revision} + diff --git a/yudao-framework/pom.xml b/yudao-framework/pom.xml index 635dc7cf62..f3927b3a39 100644 --- a/yudao-framework/pom.xml +++ b/yudao-framework/pom.xml @@ -28,6 +28,9 @@ yudao-spring-boot-starter-biz-operatelog yudao-spring-boot-starter-biz-dict yudao-spring-boot-starter-biz-sms + yudao-spring-boot-starter-biz-pay + yudao-spring-boot-starter-biz-weixin + yudao-spring-boot-starter-extension yudao-framework diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java index 7837470870..d508c6ced8 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java @@ -6,6 +6,8 @@ import java.util.Date; /** * 时间工具类 + * + * @author 芋道源码 */ public class DateUtils { @@ -14,6 +16,11 @@ public class DateUtils { */ public static final String TIME_ZONE_DEFAULT = "GMT+8"; + /** + * 秒转换成毫秒 + */ + public static final long SECOND_MILLIS = 1000; + public static final String FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND = "yyyy-MM-dd HH:mm:ss"; public static Date addTime(Duration duration) { @@ -74,4 +81,43 @@ public class DateUtils { return a.compareTo(b) > 0 ? a : b; } + public static boolean beforeNow(Date date) { + return date.getTime() < System.currentTimeMillis(); + } + + public static boolean afterNow(Date date) { + return date.getTime() >= System.currentTimeMillis(); + } + + /** + * 计算当期时间相差的日期 + * + * @param field 日历字段.
eg:Calendar.MONTH,Calendar.DAY_OF_MONTH,
Calendar.HOUR_OF_DAY等. + * @param amount 相差的数值 + * @return 计算后的日志 + */ + public static Date addDate(int field, int amount) { + return addDate(null, field, amount); + } + + /** + * 计算当期时间相差的日期 + * + * @param date 设置时间 + * @param field 日历字段 例如说,{@link Calendar#DAY_OF_MONTH} 等 + * @param amount 相差的数值 + * @return 计算后的日志 + */ + public static Date addDate(Date date, int field, int amount) { + if (amount == 0) { + return date; + } + Calendar c = Calendar.getInstance(); + if (date != null) { + c.setTime(date); + } + c.add(field, amount); + return c.getTime(); + } + } diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/io/FileUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/io/FileUtils.java new file mode 100644 index 0000000000..56baaed957 --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/io/FileUtils.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.framework.common.util.io; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.IdUtil; +import lombok.SneakyThrows; + +import java.io.File; + +/** + * 文件工具类 + * + * @author 芋道源码 + */ +public class FileUtils { + + /** + * 创建临时文件 + * 该文件会在 JVM 退出时,进行删除 + * + * @param data 文件内容 + * @return 文件 + */ + @SneakyThrows + public static File createTempFile(String data) { + // 创建文件,通过 UUID 保证唯一 + File file = File.createTempFile(IdUtil.simpleUUID(), null); + // 标记 JVM 退出时,自动删除 + file.deleteOnExit(); + // 写入内容 + FileUtil.writeUtf8String(data, file); + return file; + } + +} diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/object/ObjectUtils.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/object/ObjectUtils.java index 29a8d38b89..17a1ef8434 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/object/ObjectUtils.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/object/ObjectUtils.java @@ -29,4 +29,13 @@ public class ObjectUtils { return obj1.compareTo(obj2) > 0 ? obj1 : obj2; } + public static T defaultIfNull(T... array) { + for (T item : array) { + if (item != null) { + return item; + } + } + return null; + } + } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-pay/pom.xml new file mode 100644 index 0000000000..217aac56dd --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/pom.xml @@ -0,0 +1,76 @@ + + + + yudao-framework + cn.iocoder.boot + ${revision} + + 4.0.0 + + yudao-spring-boot-starter-biz-pay + ${artifactId} + 支付拓展,接入国内多个支付渠道 + 1. 支付宝,基于官方 SDK 接入 + 2. 微信支付,基于 weixin-java-pay 接入 + + + + + cn.iocoder.boot + yudao-common + + + + + org.springframework.boot + spring-boot-starter + + + + + jakarta.validation + jakarta.validation-api + + + org.hibernate.validator + hibernate-validator + + + + org.slf4j + slf4j-api + + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-core + + + + + com.alipay.sdk + alipay-sdk-java + 4.17.9.ALL + + + com.github.binarywang + weixin-java-pay + 4.1.9.B + + + + + + cn.iocoder.boot + yudao-spring-boot-starter-test + test + + + + diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/config/PayProperties.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/config/PayProperties.java new file mode 100644 index 0000000000..c568684775 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/config/PayProperties.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.framework.pay.config; + +import lombok.Data; +import org.hibernate.validator.constraints.URL; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.time.Duration; + +@ConfigurationProperties(prefix = "yudao.pay") +@Validated +@Data +public class PayProperties { + + /** + * 支付回调地址 + * 注意,支付渠道统一回调到 payNotifyUrl 地址,由支付模块统一处理;然后,自己的支付模块,在回调 PayAppDO.payNotifyUrl 地址 + */ + @NotEmpty(message = "支付回调地址不能为空") + @URL(message = "支付回调地址的格式必须是 URL") + private String payNotifyUrl; + /** + * 退款回调地址 + * 注意点,同 {@link #payNotifyUrl} 属性 + */ + @NotNull(message = "短信发送频率不能为空") + @URL(message = "退款回调地址的格式必须是 URL") + private String refundNotifyUrl; + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/config/YudaoPayAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/config/YudaoPayAutoConfiguration.java new file mode 100644 index 0000000000..d49c1c2b2c --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/config/YudaoPayAutoConfiguration.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.framework.pay.config; + +import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory; +import cn.iocoder.yudao.framework.pay.core.client.impl.PayClientFactoryImpl; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 支付配置类 + * + * @author 芋道源码 + */ +@EnableConfigurationProperties(PayProperties.class) +public class YudaoPayAutoConfiguration { + + @Bean + public PayClientFactory payClientFactory() { + return new PayClientFactoryImpl(); + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/AbstractPayCodeMapping.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/AbstractPayCodeMapping.java new file mode 100644 index 0000000000..88be97f003 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/AbstractPayCodeMapping.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.framework.pay.core.client; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.pay.core.enums.PayFrameworkErrorCodeConstants; +import lombok.extern.slf4j.Slf4j; + +/** + * 将 API 的错误码,转换为通用的错误码 + * + * @see PayCommonResult + * @see PayFrameworkErrorCodeConstants + * + * @author 芋道源码 + */ +@Slf4j +public abstract class AbstractPayCodeMapping { + + public final ErrorCode apply(String apiCode, String apiMsg) { + if (apiCode == null) { + log.error("[apply][API 错误码为空,请排查]"); + return PayFrameworkErrorCodeConstants.EXCEPTION; + } + ErrorCode errorCode = this.apply0(apiCode, apiMsg); + if (errorCode == null) { + log.error("[apply][API 错误码({}) 错误提示({}) 无法匹配]", apiCode, apiMsg); + return PayFrameworkErrorCodeConstants.PAY_UNKNOWN; + } + return errorCode; + } + + protected abstract ErrorCode apply0(String apiCode, String apiMsg); + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClient.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClient.java new file mode 100644 index 0000000000..96a5233fc5 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClient.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.framework.pay.core.client; + +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderNotifyRespDTO; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; + +/** + * 支付客户端,用于对接各支付渠道的 SDK,实现发起支付、退款等功能 + * + * @author 芋道源码 + */ +public interface PayClient { + + /** + * 获得渠道编号 + * + * @return 渠道编号 + */ + Long getId(); + + /** + * 调用支付渠道,统一下单 + * + * @param reqDTO 下单信息 + * @return 各支付渠道的返回结果 + */ + PayCommonResult unifiedOrder(PayOrderUnifiedReqDTO reqDTO); + + /** + * 解析支付单的通知结果 + * + * @param data 通知结果 + * @return 解析结果 + * @throws Exception 解析失败,抛出异常 + */ + PayOrderNotifyRespDTO parseOrderNotify(String data) throws Exception; + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientConfig.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientConfig.java new file mode 100644 index 0000000000..8d66aedbf9 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientConfig.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.framework.pay.core.client; + +import com.fasterxml.jackson.annotation.JsonTypeInfo; + +/** + * 支付客户端的配置,本质是支付渠道的配置 + * 每个不同的渠道,需要不同的配置,通过子类来定义 + * + * @author 芋道源码 + */ +@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) +// @JsonTypeInfo 注解的作用,Jackson 多态 +// 1. 序列化到时数据库时,增加 @class 属性。 +// 2. 反序列化到内存对象时,通过 @class 属性,可以创建出正确的类型 +public interface PayClientConfig { +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientFactory.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientFactory.java new file mode 100644 index 0000000000..f6d0ca6b5a --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientFactory.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.framework.pay.core.client; + +/** + * 支付客户端的工厂接口 + * + * @author 芋道源码 + */ +public interface PayClientFactory { + + /** + * 获得支付客户端 + * + * @param channelId 渠道编号 + * @return 支付客户端 + */ + PayClient getPayClient(Long channelId); + + /** + * 创建支付客户端 + * + * @param channelId 渠道编号 + * @param channelCode 渠道编码 + * @param config 支付配置 + */ + void createOrUpdatePayClient(Long channelId, String channelCode, + Config config); + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayCommonResult.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayCommonResult.java new file mode 100644 index 0000000000..8837a0ac9d --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayCommonResult.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.framework.pay.core.client; + +import cn.hutool.core.exceptions.ExceptionUtil; +import cn.hutool.core.lang.Assert; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.pay.core.enums.PayFrameworkErrorCodeConstants; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 支付的 CommonResult 拓展类 + * + * 考虑到不同的平台,返回的 code 和 msg 是不同的,所以统一额外返回 {@link #apiCode} 和 {@link #apiMsg} 字段 + * + * @author 芋道源码 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PayCommonResult extends CommonResult { + + /** + * API 返回错误码 + * + * 由于第三方的错误码可能是字符串,所以使用 String 类型 + */ + private String apiCode; + /** + * API 返回提示 + */ + private String apiMsg; + + private PayCommonResult() { + } + + public static PayCommonResult build(String apiCode, String apiMsg, T data, AbstractPayCodeMapping codeMapping) { + Assert.notNull(codeMapping, "参数 codeMapping 不能为空"); + PayCommonResult result = new PayCommonResult().setApiCode(apiCode).setApiMsg(apiMsg); + result.setData(data); + // 翻译错误码 + if (codeMapping != null) { + ErrorCode errorCode = codeMapping.apply(apiCode, apiMsg); + result.setCode(errorCode.getCode()).setMsg(errorCode.getMsg()); + } + return result; + } + + public static PayCommonResult error(Throwable ex) { + PayCommonResult result = new PayCommonResult<>(); + result.setCode(PayFrameworkErrorCodeConstants.EXCEPTION.getCode()); + result.setMsg(ExceptionUtil.getRootCauseMessage(ex)); + return result; + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderNotifyRespDTO.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderNotifyRespDTO.java new file mode 100644 index 0000000000..e9e3fb457c --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderNotifyRespDTO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.framework.pay.core.client.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 支付通知 Response DTO + * + * @author 芋道源码 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayOrderNotifyRespDTO { + + /** + * 支付订单号(支付模块的) + */ + private String orderExtensionNo; + /** + * 支付渠道编号 + */ + private String channelOrderNo; + /** + * 支付渠道用户编号 + */ + private String channelUserId; + /** + * 支付成功时间 + */ + private Date successTime; + + /** + * 通知的原始数据 + * + * 主要用于持久化,方便后续修复数据,或者排错 + */ + private String data; + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderUnifiedReqDTO.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderUnifiedReqDTO.java new file mode 100644 index 0000000000..299f0b3f15 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/PayOrderUnifiedReqDTO.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.framework.pay.core.client.dto; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.hibernate.validator.constraints.URL; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.Map; + +/** + * 统一下单 Request DTO + * + * @author 芋道源码 + */ +@Data +public class PayOrderUnifiedReqDTO { + + /** + * 用户 IP + */ + @NotEmpty(message = "用户 IP 不能为空") + private String userIp; + + // ========== 商户相关字段 ========== + + /** + * 商户订单编号 + */ + @NotEmpty(message = "商户订单编号不能为空") + private String merchantOrderId; + /** + * 商品标题 + */ + @NotEmpty(message = "商品标题不能为空") + @Length(max = 32, message = "商品标题不能超过 32") + private String subject; + /** + * 商品描述信息 + */ + @NotEmpty(message = "商品描述信息不能为空") + @Length(max = 128, message = "商品描述信息长度不能超过128") + private String body; + /** + * 支付结果的回调地址 + */ + @NotEmpty(message = "支付结果的回调地址不能为空") + @URL(message = "支付结果的回调地址必须是 URL 格式") + private String notifyUrl; + + // ========== 订单相关字段 ========== + + /** + * 支付金额,单位:分 + */ + @NotNull(message = "支付金额不能为空") + @DecimalMin(value = "0", inclusive = false, message = "支付金额必须大于零") + private Long amount; + + /** + * 支付过期时间 + */ + @NotNull(message = "支付过期时间不能为空") + private Date expireTime; + + // ========== 拓展参数 ========== + /** + * 支付渠道的额外参数 + * + * 例如说,微信公众号需要传递 openid 参数 + */ + private Map channelExtras; + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/AbstractPayClient.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/AbstractPayClient.java new file mode 100644 index 0000000000..1e228b252e --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/AbstractPayClient.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl; + +import cn.hutool.extra.validation.ValidationUtil; +import cn.iocoder.yudao.framework.pay.core.client.AbstractPayCodeMapping; +import cn.iocoder.yudao.framework.pay.core.client.PayClient; +import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; +import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; +import lombok.extern.slf4j.Slf4j; + +import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; + +/** + * 支付客户端的抽象类,提供模板方法,减少子类的冗余代码 + * + * @author 芋道源码 + */ +@Slf4j +public abstract class AbstractPayClient implements PayClient { + + /** + * 渠道编号 + */ + private final Long channelId; + /** + * 渠道编码 + */ + private final String channelCode; + /** + * 错误码枚举类 + */ + protected AbstractPayCodeMapping codeMapping; + /** + * 支付配置 + */ + protected Config config; + + protected Double calculateAmount(Long amount) { + return amount / 100.0; + } + + public AbstractPayClient(Long channelId, String channelCode, Config config, AbstractPayCodeMapping codeMapping) { + this.channelId = channelId; + this.channelCode = channelCode; + this.codeMapping = codeMapping; + this.config = config; + } + + /** + * 初始化 + */ + public final void init() { + doInit(); + log.info("[init][配置({}) 初始化完成]", config); + } + + /** + * 自定义初始化 + */ + protected abstract void doInit(); + + public final void refresh(Config config) { + // 判断是否更新 + if (config.equals(this.config)) { + return; + } + log.info("[refresh][配置({})发生变化,重新初始化]", config); + this.config = config; + // 初始化 + this.init(); + } + + @Override + public Long getId() { + return channelId; + } + + @Override + public final PayCommonResult unifiedOrder(PayOrderUnifiedReqDTO reqDTO) { + ValidationUtil.validate(reqDTO); + // 执行短信发送 + PayCommonResult result; + try { + result = doUnifiedOrder(reqDTO); + } catch (Throwable ex) { + // 打印异常日志 + log.error("[unifiedOrder][request({}) 发起支付失败]", toJsonString(reqDTO), ex); + // 封装返回 + return PayCommonResult.error(ex); + } + return result; + } + + protected abstract PayCommonResult doUnifiedOrder(PayOrderUnifiedReqDTO reqDTO) + throws Throwable; + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/PayClientFactoryImpl.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/PayClientFactoryImpl.java new file mode 100644 index 0000000000..16cc49ed26 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/PayClientFactoryImpl.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl; + +import cn.hutool.core.lang.Assert; +import cn.iocoder.yudao.framework.pay.core.client.PayClient; +import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; +import cn.iocoder.yudao.framework.pay.core.client.PayClientFactory; +import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig; +import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayQrPayClient; +import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayWapPayClient; +import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig; +import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPubPayClient; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * 支付客户端的工厂实现类 + * + * @author 芋道源码 + */ +@Slf4j +public class PayClientFactoryImpl implements PayClientFactory { + + /** + * 支付客户端 Map + * key:渠道编号 + */ + private final ConcurrentMap> channelIdClients = new ConcurrentHashMap<>(); + + @Override + public PayClient getPayClient(Long channelId) { + AbstractPayClient client = channelIdClients.get(channelId); + if (client == null) { + log.error("[getPayClient][渠道编号({}) 找不到客户端]", channelId); + } + return client; + } + + @Override + @SuppressWarnings("unchecked") + public void createOrUpdatePayClient(Long channelId, String channelCode, + Config config) { + AbstractPayClient client = (AbstractPayClient) channelIdClients.get(channelId); + if (client == null) { + client = this.createPayClient(channelId, channelCode, config); + client.init(); + channelIdClients.put(client.getId(), client); + } else { + client.refresh(config); + } + } + + @SuppressWarnings("unchecked") + private AbstractPayClient createPayClient( + Long channelId, String channelCode, Config config) { + PayChannelEnum channelEnum = PayChannelEnum.getByCode(channelCode); + Assert.notNull(channelEnum, String.format("支付渠道(%s) 为空", channelEnum)); + // 创建客户端 + switch (channelEnum) { + case WX_PUB: return (AbstractPayClient) new WXPubPayClient(channelId, (WXPayClientConfig) config); + case ALIPAY_WAP: return (AbstractPayClient) new AlipayWapPayClient(channelId, (AlipayPayClientConfig) config); + case ALIPAY_QR: return (AbstractPayClient) new AlipayQrPayClient(channelId, (AlipayPayClientConfig) config); + } + // 创建失败,错误日志 + 抛出异常 + log.error("[createSmsClient][配置({}) 找不到合适的客户端实现]", config); + throw new IllegalArgumentException(String.format("配置(%s) 找不到合适的客户端实现", config)); + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java new file mode 100644 index 0000000000..f5106ecaad --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java @@ -0,0 +1,89 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; + +import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; +import lombok.Data; + +// TODO 芋艿:参数校验 +/** + * 支付宝的 PayClientConfig 实现类 + * 属性主要来自 {@link com.alipay.api.AlipayConfig} 的必要属性 + * + * @author 芋道源码 + */ +@Data +public class AlipayPayClientConfig implements PayClientConfig { + + /** + * 网关地址 - 线上 + */ + public static final String SERVER_URL_PROD = "https://openapi.alipay.com/gateway.do"; + /** + * 网关地址 - 沙箱 + */ + public static final String SERVER_URL_SANDBOX = "https://openapi.alipaydev.com/gateway.do"; + + /** + * 公钥类型 - 公钥模式 + */ + private static final Integer MODE_PUBLIC_KEY = 1; + /** + * 公钥类型 - 证书模式 + */ + private static final Integer MODE_CERTIFICATE = 2; + + /** + * 签名算法类型 - RSA + */ + public static final String SIGN_TYPE_DEFAULT = "RSA2"; + + /** + * 网关地址 + * 1. {@link #SERVER_URL_PROD} + * 2. {@link #SERVER_URL_SANDBOX} + */ + private String serverUrl; + + /** + * 开放平台上创建的应用的 ID + */ + private String appId; + + /** + * 签名算法类型,推荐:RSA2 + * + * {@link #SIGN_TYPE_DEFAULT} + */ + private String signType; + + /** + * 公钥类型 + * 1. {@link #MODE_PUBLIC_KEY} 情况,privateKey + alipayPublicKey + * 2. {@link #MODE_CERTIFICATE} 情况,appCertContent + alipayPublicCertContent + rootCertContent + */ + private Integer mode; + + // ========== 公钥模式 ========== + /** + * 商户私钥 + */ + private String privateKey; + /** + * 支付宝公钥字符串 + */ + private String alipayPublicKey; + + // ========== 证书模式 ========== + /** + * 指定商户公钥应用证书内容字符串 + */ + private String appCertContent; + /** + * 指定支付宝公钥证书内容字符串 + */ + private String alipayPublicCertContent; + /** + * 指定根证书内容字符串 + */ + private String rootCertContent; + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayCodeMapping.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayCodeMapping.java new file mode 100644 index 0000000000..8cafd425de --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayCodeMapping.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.iocoder.yudao.framework.pay.core.client.AbstractPayCodeMapping; + +import java.util.Objects; + +/** + * 支付宝的 PayCodeMapping 实现类 + * + * @author 芋道源码 + */ +public class AlipayPayCodeMapping extends AbstractPayCodeMapping { + + @Override + protected ErrorCode apply0(String apiCode, String apiMsg) { + if (Objects.equals(apiCode, "10000")) { + return GlobalErrorCodeConstants.SUCCESS; + } + return null; + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayQrPayClient.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayQrPayClient.java new file mode 100644 index 0000000000..e9b5245ffc --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayQrPayClient.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; + +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderNotifyRespDTO; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; +import cn.iocoder.yudao.framework.pay.core.client.impl.AbstractPayClient; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayConfig; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayTradePrecreateModel; +import com.alipay.api.request.AlipayTradePrecreateRequest; +import com.alipay.api.response.AlipayTradePrecreateResponse; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; + +import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; + +/** + * 支付宝【扫码支付】的 PayClient 实现类 + * 文档:https://opendocs.alipay.com/apis/02890k + * + * @author 芋道源码 + */ +@Slf4j +public class AlipayQrPayClient extends AbstractPayClient { + + private DefaultAlipayClient client; + + public AlipayQrPayClient(Long channelId, AlipayPayClientConfig config) { + super(channelId, PayChannelEnum.ALIPAY_QR.getCode(), config, new AlipayPayCodeMapping()); + } + + @Override + @SneakyThrows + protected void doInit() { + AlipayConfig alipayConfig = new AlipayConfig(); + BeanUtil.copyProperties(config, alipayConfig, false); + // 真实客户端 + this.client = new DefaultAlipayClient(alipayConfig); + } + + @Override + public PayCommonResult doUnifiedOrder(PayOrderUnifiedReqDTO reqDTO) { + // 构建 AlipayTradePrecreateModel 请求 + AlipayTradePrecreateModel model = new AlipayTradePrecreateModel(); + model.setOutTradeNo(reqDTO.getMerchantOrderId()); + model.setSubject(reqDTO.getSubject()); + model.setBody(reqDTO.getBody()); + model.setTotalAmount(calculateAmount(reqDTO.getAmount()).toString()); // 单位:元 + // TODO 芋艿:userIp + expireTime + // 构建 AlipayTradePrecreateRequest + AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest(); + request.setBizModel(model); + + // 执行请求 + AlipayTradePrecreateResponse response; + try { + response = client.execute(request); + } catch (AlipayApiException e) { + log.error("[unifiedOrder][request({}) 发起支付失败]", toJsonString(reqDTO), e); + return PayCommonResult.build(e.getErrCode(), e.getErrMsg(), null, codeMapping); + } + // TODO 芋艿:sub Code 需要测试下各种失败的情况 + return PayCommonResult.build(response.getCode(), response.getMsg(), response, codeMapping); + } + + @Override + public PayOrderNotifyRespDTO parseOrderNotify(String data) throws Exception { + // TODO 芋艿:待完成 + return null; + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayWapPayClient.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayWapPayClient.java new file mode 100644 index 0000000000..7f3bd5a913 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayWapPayClient.java @@ -0,0 +1,70 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl.alipay; + +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderNotifyRespDTO; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; +import cn.iocoder.yudao.framework.pay.core.client.impl.AbstractPayClient; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayConfig; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayTradeWapPayModel; +import com.alipay.api.request.AlipayTradeWapPayRequest; +import com.alipay.api.response.AlipayTradeWapPayResponse; +import lombok.SneakyThrows; + +/** + * 支付宝【手机网站】的 PayClient 实现类 + * 文档:https://opendocs.alipay.com/apis/api_1/alipay.trade.wap.pay + * + * @author 芋道源码 + */ +public class AlipayWapPayClient extends AbstractPayClient { + + private DefaultAlipayClient client; + + public AlipayWapPayClient(Long channelId, AlipayPayClientConfig config) { + super(channelId, PayChannelEnum.ALIPAY_WAP.getCode(), config, new AlipayPayCodeMapping()); + } + + @Override + @SneakyThrows + protected void doInit() { + AlipayConfig alipayConfig = new AlipayConfig(); + BeanUtil.copyProperties(config, alipayConfig, false); + this.client = new DefaultAlipayClient(alipayConfig); + } + + @Override + public PayCommonResult doUnifiedOrder(PayOrderUnifiedReqDTO reqDTO) { + // 构建 AlipayTradeWapPayModel 请求 + AlipayTradeWapPayModel model = new AlipayTradeWapPayModel(); + model.setOutTradeNo(reqDTO.getMerchantOrderId()); + model.setSubject(reqDTO.getSubject()); + model.setBody(reqDTO.getBody()); + model.setTotalAmount(calculateAmount(reqDTO.getAmount()).toString()); + model.setProductCode("QUICK_WAP_PAY"); // TODO 芋艿:这里咋整 + model.setSellerId("2088102147948060"); // TODO 芋艿:这里咋整 + // TODO 芋艿:userIp + expireTime + // 构建 AlipayTradeWapPayRequest + AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); + request.setBizModel(model); + + // 执行请求 + AlipayTradeWapPayResponse response; + try { + response = client.pageExecute(request); + } catch (AlipayApiException e) { + return PayCommonResult.build(e.getErrCode(), e.getErrMsg(), null, codeMapping); + } +// TODO 芋艿:sub Code + return PayCommonResult.build(response.getCode(), response.getMsg(), response, codeMapping); + } + + @Override + public PayOrderNotifyRespDTO parseOrderNotify(String data) throws Exception { + // TODO 芋艿:待完成 + return null; + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXCodeMapping.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXCodeMapping.java new file mode 100644 index 0000000000..cb5e872e7a --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXCodeMapping.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl.wx; + +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.iocoder.yudao.framework.pay.core.client.AbstractPayCodeMapping; + +import java.util.Objects; + +import static cn.iocoder.yudao.framework.pay.core.enums.PayFrameworkErrorCodeConstants.*; + +/** + * 微信支付 PayCodeMapping 实现类 + * + * @author 芋道源码 + */ +public class WXCodeMapping extends AbstractPayCodeMapping { + + /** + * 错误码 - 成功 + * 由于 weixin-java-pay 封装的 Result 未返回 code,所以自己定义下 + */ + public static final String CODE_SUCCESS = "SUCCESS"; + /** + * 错误提示 - 成功 + */ + public static final String MESSAGE_SUCCESS = "成功"; + + @Override + protected ErrorCode apply0(String apiCode, String apiMsg) { + if (Objects.equals(apiCode, CODE_SUCCESS)) { + return GlobalErrorCodeConstants.SUCCESS; + } + if (Objects.equals(apiCode, "FAIL")) { + if (Objects.equals(apiMsg, "AppID不存在,请检查后再试")) { + return PAY_CONFIG_APP_ID_ERROR; + } + if (Objects.equals(apiMsg, "签名错误,请检查后再试") + || Objects.equals(apiMsg, "签名错误")) { + return PAY_CONFIG_SIGN_ERROR; + } + } + if (Objects.equals(apiCode, "PARAM_ERROR")) { + if (Objects.equals(apiMsg, "无效的openid")) { + return PAY_OPENID_ERROR; + } + } + if (Objects.equals(apiCode, "CustomErrorCode")) { + if (StrUtil.contains(apiMsg, "必填字段")) { + return PAY_PARAM_MISSING; + } + } + return null; + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPayClientConfig.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPayClientConfig.java new file mode 100644 index 0000000000..27bab4c1ba --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPayClientConfig.java @@ -0,0 +1,88 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl.wx; + +import cn.hutool.core.io.IoUtil; +import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; +import lombok.Data; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +// TODO 芋艿:参数校验 +/** + * 微信支付的 PayClientConfig 实现类 + * 属性主要来自 {@link com.github.binarywang.wxpay.config.WxPayConfig} 的必要属性 + * + * @author 芋道源码 + */ +@Data +public class WXPayClientConfig implements PayClientConfig { + + // TODO 芋艿:V2 or V3 客户端 + /** + * API 版本 - V2 + * + * https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_1 + */ + public static final String API_VERSION_V2 = "v2"; + /** + * API 版本 - V3 + * + * https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay-1.shtml + */ + public static final String API_VERSION_V3 = "v3"; + + /** + * 公众号或者小程序的 appid + */ + private String appId; + /** + * 商户号 + */ + private String mchId; + /** + * API 版本 + */ + private String apiVersion; + + // ========== V2 版本的参数 ========== + + /** + * 商户密钥 + */ + private String mchKey; +// /** +// * apiclient_cert.p12 证书文件的绝对路径或者以 classpath: 开头的类路径. +// * 对应的字符串 +// * +// * 注意,可通过 {@link #main(String[])} 读取 +// */ +// private String keyContent; + + // ========== V3 版本的参数 ========== + /** + * apiclient_key.pem 证书文件的绝对路径或者以 classpath: 开头的类路径. + * 对应的字符串 + * + * 注意,可通过 {@link #main(String[])} 读取 + */ + private String privateKeyContent; + /** + * apiclient_cert.pem 证书文件的绝对路径或者以 classpath: 开头的类路径. + * 对应的字符串 + * + * 注意,可通过 {@link #main(String[])} 读取 + */ + private String privateCertContent; + /** + * apiV3 秘钥值 + */ + private String apiV3Key; + + public static void main(String[] args) throws FileNotFoundException { + String path = "/Users/yunai/Downloads/wx_pay/apiclient_cert.p12"; +// String path = "/Users/yunai/Downloads/wx_pay/apiclient_key.pem"; +// String path = "/Users/yunai/Downloads/wx_pay/apiclient_cert.pem"; + System.out.println(IoUtil.readUtf8(new FileInputStream(path))); + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPubPayClient.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPubPayClient.java new file mode 100644 index 0000000000..03e63c9f43 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/wx/WXPubPayClient.java @@ -0,0 +1,144 @@ +package cn.iocoder.yudao.framework.pay.core.client.impl.wx; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.util.io.FileUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderNotifyRespDTO; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; +import cn.iocoder.yudao.framework.pay.core.client.impl.AbstractPayClient; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; +import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request; +import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result; +import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum; +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.constant.WxPayConstants; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; +import lombok.extern.slf4j.Slf4j; + +import java.util.Objects; + +import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; +import static cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXCodeMapping.CODE_SUCCESS; +import static cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXCodeMapping.MESSAGE_SUCCESS; + +/** + * 微信支付(公众号)的 PayClient 实现类 + * + * @author 芋道源码 + */ +@Slf4j +public class WXPubPayClient extends AbstractPayClient { + + private WxPayService client; + + public WXPubPayClient(Long channelId, WXPayClientConfig config) { + super(channelId, PayChannelEnum.WX_PUB.getCode(), config, new WXCodeMapping()); + } + + @Override + protected void doInit() { + WxPayConfig payConfig = new WxPayConfig(); + BeanUtil.copyProperties(config, payConfig, "keyContent"); + payConfig.setTradeType(WxPayConstants.TradeType.JSAPI); // 设置使用 JS API 支付方式 +// if (StrUtil.isNotEmpty(config.getKeyContent())) { +// payConfig.setKeyContent(config.getKeyContent().getBytes(StandardCharsets.UTF_8)); +// } + if (StrUtil.isNotEmpty(config.getPrivateKeyContent())) { + // weixin-pay-java 存在 BUG,无法直接设置内容,所以创建临时文件来解决 + payConfig.setPrivateKeyPath(FileUtils.createTempFile(config.getPrivateKeyContent()).getPath()); + } + if (StrUtil.isNotEmpty(config.getPrivateCertContent())) { + // weixin-pay-java 存在 BUG,无法直接设置内容,所以创建临时文件来解决 + payConfig.setPrivateCertPath(FileUtils.createTempFile(config.getPrivateCertContent()).getPath()); + } + // 真实客户端 + this.client = new WxPayServiceImpl(); + client.setConfig(payConfig); + } + + @Override + public PayCommonResult doUnifiedOrder(PayOrderUnifiedReqDTO reqDTO) { + WxPayMpOrderResult response; + try { + switch (config.getApiVersion()) { + case WXPayClientConfig.API_VERSION_V2: + response = this.unifiedOrderV2(reqDTO); + break; + case WXPayClientConfig.API_VERSION_V3: + WxPayUnifiedOrderV3Result.JsapiResult responseV3 = this.unifiedOrderV3(reqDTO); + // 将 V3 的结果,统一转换成 V2。返回的字段是一致的 + response = new WxPayMpOrderResult(); + BeanUtil.copyProperties(responseV3, response, true); + break; + default: + throw new IllegalArgumentException(String.format("未知的 API 版本(%s)", config.getApiVersion())); + } + } catch (WxPayException e) { + log.error("[unifiedOrder][request({}) 发起支付失败,原因({})]", toJsonString(reqDTO), e); + return PayCommonResult.build(ObjectUtils.defaultIfNull(e.getErrCode(), e.getReturnCode(), "CustomErrorCode"), + ObjectUtils.defaultIfNull(e.getErrCodeDes(), e.getCustomErrorMsg()),null, codeMapping); + } + return PayCommonResult.build(CODE_SUCCESS, MESSAGE_SUCCESS, response, codeMapping); + } + + private WxPayMpOrderResult unifiedOrderV2(PayOrderUnifiedReqDTO reqDTO) throws WxPayException { + // 构建 WxPayUnifiedOrderRequest 对象 + WxPayUnifiedOrderRequest request = WxPayUnifiedOrderRequest.newBuilder() + .outTradeNo(reqDTO.getMerchantOrderId()) + // TODO 芋艿:貌似没 title? + .body(reqDTO.getBody()) + .totalFee(reqDTO.getAmount().intValue()) // 单位分 + .timeExpire(DateUtil.format(reqDTO.getExpireTime(), "yyyyMMddHHmmss")) + .spbillCreateIp(reqDTO.getUserIp()) + .openid(getOpenid(reqDTO)) + .notifyUrl(reqDTO.getNotifyUrl()) + .build(); + // 执行请求 + return client.createOrder(request); + } + + private WxPayUnifiedOrderV3Result.JsapiResult unifiedOrderV3(PayOrderUnifiedReqDTO reqDTO) throws WxPayException { + // 构建 WxPayUnifiedOrderRequest 对象 + WxPayUnifiedOrderV3Request request = new WxPayUnifiedOrderV3Request(); + request.setOutTradeNo(reqDTO.getMerchantOrderId()); + // TODO 芋艿:貌似没 title? + request.setDescription(reqDTO.getBody()); + request.setAmount(new WxPayUnifiedOrderV3Request.Amount().setTotal(reqDTO.getAmount().intValue())); // 单位分 + request.setTimeExpire(DateUtil.format(reqDTO.getExpireTime(), "yyyyMMddHHmmss")); + request.setPayer(new WxPayUnifiedOrderV3Request.Payer().setOpenid(getOpenid(reqDTO))); + request.setSceneInfo(new WxPayUnifiedOrderV3Request.SceneInfo().setPayerClientIp(reqDTO.getUserIp())); + request.setNotifyUrl(reqDTO.getNotifyUrl()); + // 执行请求 + return client.createOrderV3(TradeTypeEnum.JSAPI, request); + } + + private static String getOpenid(PayOrderUnifiedReqDTO reqDTO) { + String openid = MapUtil.getStr(reqDTO.getChannelExtras(), "openid"); + if (StrUtil.isEmpty(openid)) { + throw new IllegalArgumentException("支付请求的 openid 不能为空!"); + } + return openid; + } + + @Override + public PayOrderNotifyRespDTO parseOrderNotify(String data) throws WxPayException { + WxPayOrderNotifyResult notifyResult = client.parseOrderNotifyResult(data); + Assert.isTrue(Objects.equals(notifyResult.getResultCode(), "SUCCESS"), "支付结果非 SUCCESS"); + // 转换结果 + return PayOrderNotifyRespDTO.builder().orderExtensionNo(notifyResult.getOutTradeNo()) + .channelOrderNo(notifyResult.getTransactionId()).channelUserId(notifyResult.getOpenid()) + .successTime(DateUtil.parse(notifyResult.getTimeEnd(), "yyyyMMddHHmmss")) + .data(data).build(); + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/enums/PayChannelEnum.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/enums/PayChannelEnum.java new file mode 100644 index 0000000000..ed1389e0e2 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/enums/PayChannelEnum.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.framework.pay.core.enums; + +import cn.hutool.core.util.ArrayUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 支付渠道的编码的枚举 + * 枚举值 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum PayChannelEnum { + + WX_PUB("wx_pub", "微信 JSAPI 支付"), // 公众号的网页 + WX_LITE("wx_lit","微信小程序支付"), + WX_APP("wx_app", "微信 App 支付"), + + ALIPAY_PC("alipay_pc", "支付宝 PC 网站支付"), + ALIPAY_WAP("alipay_wap", "支付宝 Wap 网站支付"), + ALIPAY_APP("alipay_app", "支付宝App 支付"), + ALIPAY_QR("alipay_qr", "支付宝扫码支付"); + + /** + * 编码 + * + * 参考 https://www.pingxx.com/api/支付渠道属性值.html + */ + private String code; + /** + * 名字 + */ + private String name; + + public static PayChannelEnum getByCode(String code) { + return ArrayUtil.firstMatch(o -> o.getCode().equals(code), values()); + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/enums/PayFrameworkErrorCodeConstants.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/enums/PayFrameworkErrorCodeConstants.java new file mode 100644 index 0000000000..7046b4c6f3 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/enums/PayFrameworkErrorCodeConstants.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.framework.pay.core.enums; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; + +/** + * 支付框架的错误码枚举 + * + * 短信框架,使用 2-002-000-000 段 + * + * @author 芋道源码 + */ +public interface PayFrameworkErrorCodeConstants { + + ErrorCode PAY_UNKNOWN = new ErrorCode(2002000000, "未知错误,需要解析"); + + // ========== 配置相关相关 2002000100 ========== + ErrorCode PAY_CONFIG_APP_ID_ERROR = new ErrorCode(2002000100, "支付渠道 AppId 不正确"); + ErrorCode PAY_CONFIG_SIGN_ERROR = new ErrorCode(2002000100, "签名错误"); // 例如说,微信支付,配置错了 mchId 或者 mchKey + + + // ========== 其它相关 2002000900 开头 ========== + ErrorCode PAY_OPENID_ERROR = new ErrorCode(2002000900, "无效的 openid"); // 例如说,微信 openid 未授权过 + ErrorCode PAY_PARAM_MISSING = new ErrorCode(2002000901, "请求参数缺失"); // 例如说,支付少传了金额 + + ErrorCode EXCEPTION = new ErrorCode(2002000999, "调用异常"); + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/resources/META-INF/spring.factories b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..c135d7d795 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + cn.iocoder.yudao.framework.pay.config.YudaoPayAutoConfiguration diff --git a/yudao-framework/yudao-spring-boot-starter-biz-pay/src/test-integration/java/cn/iocoder/yudao/framework/core/client/impl/PayClientFactoryImplTest.java b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/test-integration/java/cn/iocoder/yudao/framework/core/client/impl/PayClientFactoryImplTest.java new file mode 100644 index 0000000000..d7f8e462fa --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-pay/src/test-integration/java/cn/iocoder/yudao/framework/core/client/impl/PayClientFactoryImplTest.java @@ -0,0 +1,129 @@ +package cn.iocoder.yudao.framework.core.client.impl; + +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.RandomUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import cn.iocoder.yudao.framework.pay.core.client.PayClient; +import cn.iocoder.yudao.framework.pay.core.client.dto.PayOrderUnifiedReqDTO; +import cn.iocoder.yudao.framework.pay.core.client.impl.PayClientFactoryImpl; +import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig; +import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayQrPayClient; +import cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayWapPayClient; +import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPayClientConfig; +import cn.iocoder.yudao.framework.pay.core.client.impl.wx.WXPubPayClient; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import org.junit.jupiter.api.Test; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; + +/** + * {@link PayClientFactoryImpl} 的集成测试 + * + * @author 芋道源码 + */ +public class PayClientFactoryImplTest { + + private final PayClientFactoryImpl payClientFactory = new PayClientFactoryImpl(); + + /** + * {@link WXPubPayClient} 的 V2 版本 + */ + @Test + public void testCreatePayClient_WX_PUB_V2() { + // 创建配置 + WXPayClientConfig config = new WXPayClientConfig(); + config.setAppId("wx041349c6f39b268b"); + config.setMchId("1545083881"); + config.setApiVersion(WXPayClientConfig.API_VERSION_V2); + config.setMchKey("0alL64UDQdlCwiKZ73ib7ypaIjMns06p"); + // 创建客户端 + Long channelId = RandomUtil.randomLong(); + payClientFactory.createOrUpdatePayClient(channelId, PayChannelEnum.WX_PUB.getCode(), config); + PayClient client = payClientFactory.getPayClient(channelId); + // 发起支付 + PayOrderUnifiedReqDTO reqDTO = buildPayOrderUnifiedReqDTO(); + CommonResult result = client.unifiedOrder(reqDTO); + System.out.println(result); + } + + /** + * {@link WXPubPayClient} 的 V3 版本 + */ + @Test + public void testCreatePayClient_WX_PUB_V3() throws FileNotFoundException { + // 创建配置 + WXPayClientConfig config = new WXPayClientConfig(); + config.setAppId("wx041349c6f39b268b"); + config.setMchId("1545083881"); + config.setApiVersion(WXPayClientConfig.API_VERSION_V3); + config.setPrivateKeyContent(IoUtil.readUtf8(new FileInputStream("/Users/yunai/Downloads/wx_pay/apiclient_key.pem"))); + config.setPrivateCertContent(IoUtil.readUtf8(new FileInputStream("/Users/yunai/Downloads/wx_pay/apiclient_cert.pem"))); + config.setApiV3Key("joerVi8y5DJ3o4ttA0o1uH47Xz1u2Ase"); + // 创建客户端 + Long channelId = RandomUtil.randomLong(); + payClientFactory.createOrUpdatePayClient(channelId, PayChannelEnum.WX_PUB.getCode(), config); + PayClient client = payClientFactory.getPayClient(channelId); + // 发起支付 + PayOrderUnifiedReqDTO reqDTO = buildPayOrderUnifiedReqDTO(); + CommonResult result = client.unifiedOrder(reqDTO); + System.out.println(result); + } + + /** + * {@link AlipayQrPayClient} + */ + @Test + public void testCreatePayClient_ALIPAY_QR() { + // 创建配置 + AlipayPayClientConfig config = new AlipayPayClientConfig(); + config.setAppId("2021000118634035"); + config.setServerUrl(AlipayPayClientConfig.SERVER_URL_SANDBOX); + config.setSignType(AlipayPayClientConfig.SIGN_TYPE_DEFAULT); + config.setPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCHsEV1cDupwJv890x84qbppUtRIfhaKSwSVN0thCcsDCaAsGR5MZslDkO8NCT9V4r2SVXjyY7eJUZlZd1M0C8T01Tg4UOx5LUbic0O3A1uJMy6V1n9IyYwbAW3AEZhBd5bSbPgrqvmv3NeWSTQT6Anxnllf+2iDH6zyA2fPl7cYyQtbZoDJQFGqr4F+cGh2R6akzRKNoBkAeMYwoY6es2lX8sJxCVPWUmxNUoL3tScwlSpd7Bxw0q9c/X01jMwuQ0+Va358zgFiGERTE6yD01eu40OBDXOYO3z++y+TAYHlQQ2toMO63trepo88X3xV3R44/1DH+k2pAm2IF5ixiLrAgMBAAECggEAPx3SoXcseaD7rmcGcE0p4SMfbsUDdkUSmBBbtfF0GzwnqNLkWa+mgE0rWt9SmXngTQH97vByAYmLPl1s3G82ht1V7Sk7yQMe74lhFllr8eEyTjeVx3dTK1EEM4TwN+936DTXdFsr4TELJEcJJdD0KaxcCcfBLRDs2wnitEFZ9N+GoZybVmY8w0e0MI7PLObUZ2l0X4RurQnfG9ZxjXjC7PkeMVv7cGGylpNFi3BbvkRhdhLPDC2E6wqnr9e7zk+hiENivAezXrtxtwKovzCtnWJ1r0IO14Rh47H509Ic0wFnj+o5YyUL4LdmpL7yaaH6fM7zcSLFjNZPHvZCKPwYcQKBgQDQFho98QvnL8ex4v6cry4VitGpjSXm1qP3vmMQk4rTsn8iPWtcxPjqGEqOQJjdi4Mi0VZKQOLFwlH0kl95wNrD/isJ4O1yeYfX7YAXApzHqYNINzM79HemO3Yx1qLMW3okRFJ9pPRzbQ9qkTpsaegsmyX316zOBhzGRYjKbutTYwKBgQCm7phr9XdFW5Vh+XR90mVs483nrLmMiDKg7YKxSLJ8amiDjzPejCn7i95Hah08P+2MIZLIPbh2VLacczR6ltRRzN5bg5etFuqSgfkuHyxpoDmpjbe08+Q2h8JBYqcC5Nhv1AKU4iOUhVLHo/FBAQliMcGc/J3eiYTFC7EsNx382QKBgClb20doe7cttgFTXswBvaUmfFm45kmla924B7SpvrQpDD/f+VDtDZRp05fGmxuduSjYdtA3aVtpLiTwWu22OUUvZZqHDGruYOO4Hvdz23mL5b4ayqImCwoNU4bAZIc9v18p/UNf3/55NNE3oGcf/bev9rH2OjCQ4nM+Ktwhg8CFAoGACSgvbkShzUkv0ZcIf9ppu+ZnJh1AdGgINvGwaJ8vQ0nm/8h8NOoFZ4oNoGc+wU5Ubops7dUM6FjPR5e+OjdJ4E7Xp7d5O4J1TaIZlCEbo5OpdhaTDDcQvrkFu+Z4eN0qzj+YAKjDAOOrXc4tbr5q0FsgXscwtcNfaBuzFVTUrUkCgYEAwzPnMNhWG3zOWLUs2QFA2GP4Y+J8cpUYfj6pbKKzeLwyG9qBwF1NJpN8m+q9q7V9P2LY+9Lp9e1mGsGeqt5HMEA3P6vIpcqLJLqE/4PBLLRzfccTcmqb1m71+erxTRhHBRkGS+I7dZEb3olQfnS1Y1tpMBxiwYwR3LW4oXuJwj8="); + config.setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnq90KnF4dTnlzzmxpujbI05OYqi5WxAS6cL0gnZFv2gK51HExF8v/BaP7P979PhFMgWTqmOOI+Dtno5s+yD09XTY1WkshbLk6i4g2Xlr8fyW9ODnkU88RI2w9UdPhQU4cPPwBNlrsYhKkVK2OxwM3kFqjoBBY0CZoZCsSQ3LDH5WeZqPArlsS6xa2zqJBuuoKjMrdpELl3eXSjP8K54eDJCbeetCZNKWLL3DPahTPB7LZikfYmslb0QUvCgGapD0xkS7eVq70NaL1G57MWABs4tbfWgxike4Daj3EfUrzIVspQxj7w8HEj9WozJPgL88kSJSits0pqD3n5r8HSuseQIDAQAB"); + // 创建客户端 + Long channelId = RandomUtil.randomLong(); + payClientFactory.createOrUpdatePayClient(channelId, PayChannelEnum.ALIPAY_QR.getCode(), config); + PayClient client = payClientFactory.getPayClient(channelId); + // 发起支付 + PayOrderUnifiedReqDTO reqDTO = buildPayOrderUnifiedReqDTO(); + CommonResult result = client.unifiedOrder(reqDTO); + System.out.println(JsonUtils.toJsonString(result)); + } + + /** + * {@link AlipayWapPayClient} + */ + @Test + public void testCreatePayClient_ALIPAY_WAP() { + // 创建配置 + AlipayPayClientConfig config = new AlipayPayClientConfig(); + config.setAppId("2021000118634035"); + config.setServerUrl(AlipayPayClientConfig.SERVER_URL_SANDBOX); + config.setSignType(AlipayPayClientConfig.SIGN_TYPE_DEFAULT); + config.setPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCHsEV1cDupwJv890x84qbppUtRIfhaKSwSVN0thCcsDCaAsGR5MZslDkO8NCT9V4r2SVXjyY7eJUZlZd1M0C8T01Tg4UOx5LUbic0O3A1uJMy6V1n9IyYwbAW3AEZhBd5bSbPgrqvmv3NeWSTQT6Anxnllf+2iDH6zyA2fPl7cYyQtbZoDJQFGqr4F+cGh2R6akzRKNoBkAeMYwoY6es2lX8sJxCVPWUmxNUoL3tScwlSpd7Bxw0q9c/X01jMwuQ0+Va358zgFiGERTE6yD01eu40OBDXOYO3z++y+TAYHlQQ2toMO63trepo88X3xV3R44/1DH+k2pAm2IF5ixiLrAgMBAAECggEAPx3SoXcseaD7rmcGcE0p4SMfbsUDdkUSmBBbtfF0GzwnqNLkWa+mgE0rWt9SmXngTQH97vByAYmLPl1s3G82ht1V7Sk7yQMe74lhFllr8eEyTjeVx3dTK1EEM4TwN+936DTXdFsr4TELJEcJJdD0KaxcCcfBLRDs2wnitEFZ9N+GoZybVmY8w0e0MI7PLObUZ2l0X4RurQnfG9ZxjXjC7PkeMVv7cGGylpNFi3BbvkRhdhLPDC2E6wqnr9e7zk+hiENivAezXrtxtwKovzCtnWJ1r0IO14Rh47H509Ic0wFnj+o5YyUL4LdmpL7yaaH6fM7zcSLFjNZPHvZCKPwYcQKBgQDQFho98QvnL8ex4v6cry4VitGpjSXm1qP3vmMQk4rTsn8iPWtcxPjqGEqOQJjdi4Mi0VZKQOLFwlH0kl95wNrD/isJ4O1yeYfX7YAXApzHqYNINzM79HemO3Yx1qLMW3okRFJ9pPRzbQ9qkTpsaegsmyX316zOBhzGRYjKbutTYwKBgQCm7phr9XdFW5Vh+XR90mVs483nrLmMiDKg7YKxSLJ8amiDjzPejCn7i95Hah08P+2MIZLIPbh2VLacczR6ltRRzN5bg5etFuqSgfkuHyxpoDmpjbe08+Q2h8JBYqcC5Nhv1AKU4iOUhVLHo/FBAQliMcGc/J3eiYTFC7EsNx382QKBgClb20doe7cttgFTXswBvaUmfFm45kmla924B7SpvrQpDD/f+VDtDZRp05fGmxuduSjYdtA3aVtpLiTwWu22OUUvZZqHDGruYOO4Hvdz23mL5b4ayqImCwoNU4bAZIc9v18p/UNf3/55NNE3oGcf/bev9rH2OjCQ4nM+Ktwhg8CFAoGACSgvbkShzUkv0ZcIf9ppu+ZnJh1AdGgINvGwaJ8vQ0nm/8h8NOoFZ4oNoGc+wU5Ubops7dUM6FjPR5e+OjdJ4E7Xp7d5O4J1TaIZlCEbo5OpdhaTDDcQvrkFu+Z4eN0qzj+YAKjDAOOrXc4tbr5q0FsgXscwtcNfaBuzFVTUrUkCgYEAwzPnMNhWG3zOWLUs2QFA2GP4Y+J8cpUYfj6pbKKzeLwyG9qBwF1NJpN8m+q9q7V9P2LY+9Lp9e1mGsGeqt5HMEA3P6vIpcqLJLqE/4PBLLRzfccTcmqb1m71+erxTRhHBRkGS+I7dZEb3olQfnS1Y1tpMBxiwYwR3LW4oXuJwj8="); + config.setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnq90KnF4dTnlzzmxpujbI05OYqi5WxAS6cL0gnZFv2gK51HExF8v/BaP7P979PhFMgWTqmOOI+Dtno5s+yD09XTY1WkshbLk6i4g2Xlr8fyW9ODnkU88RI2w9UdPhQU4cPPwBNlrsYhKkVK2OxwM3kFqjoBBY0CZoZCsSQ3LDH5WeZqPArlsS6xa2zqJBuuoKjMrdpELl3eXSjP8K54eDJCbeetCZNKWLL3DPahTPB7LZikfYmslb0QUvCgGapD0xkS7eVq70NaL1G57MWABs4tbfWgxike4Daj3EfUrzIVspQxj7w8HEj9WozJPgL88kSJSits0pqD3n5r8HSuseQIDAQAB"); + // 创建客户端 + Long channelId = RandomUtil.randomLong(); + payClientFactory.createOrUpdatePayClient(channelId, PayChannelEnum.ALIPAY_WAP.getCode(), config); + PayClient client = payClientFactory.getPayClient(channelId); + // 发起支付 + PayOrderUnifiedReqDTO reqDTO = buildPayOrderUnifiedReqDTO(); + CommonResult result = client.unifiedOrder(reqDTO); + System.out.println(JsonUtils.toJsonString(result)); + } + + private static PayOrderUnifiedReqDTO buildPayOrderUnifiedReqDTO() { + PayOrderUnifiedReqDTO reqDTO = new PayOrderUnifiedReqDTO(); + reqDTO.setAmount(123L); + reqDTO.setSubject("IPhone 13"); + reqDTO.setBody("biubiubiu"); + reqDTO.setMerchantOrderId(String.valueOf(System.currentTimeMillis())); + reqDTO.setUserIp("127.0.0.1"); + reqDTO.setNotifyUrl("http://127.0.0.1:8080"); + return reqDTO; + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-sms/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-sms/pom.xml index c72a63b30b..bfed26a860 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-sms/pom.xml +++ b/yudao-framework/yudao-spring-boot-starter-biz-sms/pom.xml @@ -79,4 +79,5 @@
+ diff --git a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClient.java b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClient.java index 2f936de8c9..06bcba0849 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClient.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClient.java @@ -8,7 +8,7 @@ import cn.iocoder.yudao.framework.sms.core.client.dto.SmsTemplateRespDTO; import java.util.List; /** - * 短信客户端接口 + * 短信客户端,用于对接各短信平台的 SDK,实现短信发送等功能 * * @author zzf * @date 2021/1/25 14:14 diff --git a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClientFactory.java b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClientFactory.java index d880b4ebd6..338e83f526 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClientFactory.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/SmsClientFactory.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.sms.core.client; import cn.iocoder.yudao.framework.sms.core.property.SmsChannelProperties; /** - * 短信客户端工厂接口 + * 短信客户端的工厂接口 * * @author zzf * @date 2021/1/28 14:01 diff --git a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/AbstractSmsClient.java b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/AbstractSmsClient.java index a960380591..0ef4869b41 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/AbstractSmsClient.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/AbstractSmsClient.java @@ -13,7 +13,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.List; /** - * 短信客户端抽象类 + * 短信客户端的抽象类,提供模板方法,减少子类的冗余代码 * * @author zzf * @date 2021/2/1 9:28 @@ -30,11 +30,6 @@ public abstract class AbstractSmsClient implements SmsClient { */ protected final SmsCodeMapping codeMapping; - /** - * 短信客户端有参构造函数 - * - * @param properties 短信配置 - */ public AbstractSmsClient(SmsChannelProperties properties, SmsCodeMapping codeMapping) { this.properties = properties; this.codeMapping = codeMapping; @@ -48,6 +43,11 @@ public abstract class AbstractSmsClient implements SmsClient { log.info("[init][配置({}) 初始化完成]", properties); } + /** + * 自定义初始化 + */ + protected abstract void doInit(); + public final void refresh(SmsChannelProperties properties) { // 判断是否更新 if (properties.equals(this.properties)) { @@ -59,11 +59,6 @@ public abstract class AbstractSmsClient implements SmsClient { this.init(); } - /** - * 自定义初始化 - */ - protected abstract void doInit(); - @Override public Long getId() { return properties.getId(); diff --git a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClient.java b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClient.java index 8adff8f60e..9867e08dbe 100644 --- a/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClient.java +++ b/yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/client/impl/yunpian/YunpianSmsClient.java @@ -83,7 +83,8 @@ public class YunpianSmsClient extends AbstractSmsClient { } // 参考 https://www.yunpian.com/official/document/sms/zh_cn/introduction_demos_encode_sample 格式化 StringJoiner joiner = new StringJoiner("&"); - templateParams.forEach(param -> joiner.add(String.format("#%s#=%s", param.getKey(), URLUtil.encode(String.valueOf(param.getValue()))))); + templateParams.forEach(param -> joiner.add(String.format("#%s#=%s", param.getKey(), + URLUtil.encode(String.valueOf(param.getValue()))))); return joiner.toString(); } diff --git a/yudao-framework/yudao-spring-boot-starter-biz-weixin/pom.xml b/yudao-framework/yudao-spring-boot-starter-biz-weixin/pom.xml new file mode 100644 index 0000000000..fddab18a49 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-weixin/pom.xml @@ -0,0 +1,43 @@ + + + + cn.iocoder.boot + yudao-framework + ${revision} + + 4.0.0 + yudao-spring-boot-starter-biz-weixin + jar + + ${artifactId} + 微信拓展 + 1. 基于 weixin-java-mp 库,对接微信公众号平台。目前主要解决微信公众号的支付场景。 + + https://github.com/YunaiV/ruoyi-vue-pro + + + + cn.iocoder.boot + yudao-common + + + + + cn.iocoder.boot + yudao-spring-boot-starter-test + test + + + + + com.github.binarywang + + wx-java-mp-spring-boot-starter + 4.1.9.B + + + + + diff --git a/yudao-framework/yudao-spring-boot-starter-biz-weixin/src/test-integration/java/cn/iocoder/yudao/framework/weixin/WxMpServiceTest.java b/yudao-framework/yudao-spring-boot-starter-biz-weixin/src/test-integration/java/cn/iocoder/yudao/framework/weixin/WxMpServiceTest.java new file mode 100644 index 0000000000..392e651c52 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-weixin/src/test-integration/java/cn/iocoder/yudao/framework/weixin/WxMpServiceTest.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.framework.weixin; + +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; + +@SpringBootTest(classes = WxMpServiceTest.Application.class) +public class WxMpServiceTest { + + @Resource + private WxMpService wxMpService; + + @Test + public void testGetAccessToken() throws WxErrorException { + String accessToken = wxMpService.getAccessToken(); + System.out.println(accessToken); + } + + @Test + public void testGet() throws WxErrorException { + String jsapiTicket = wxMpService.getJsapiTicket(); + System.out.println(jsapiTicket); + } + + @SpringBootApplication + public static class Application { + + } + +} diff --git a/yudao-framework/yudao-spring-boot-starter-biz-weixin/src/test-integration/resources/application.yml b/yudao-framework/yudao-spring-boot-starter-biz-weixin/src/test-integration/resources/application.yml new file mode 100644 index 0000000000..9b30060a81 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-biz-weixin/src/test-integration/resources/application.yml @@ -0,0 +1,11 @@ +--- #################### 微信公众号相关配置 #################### +wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档 + mp: + # 公众号配置(必填) + app-id: wx041349c6f39b268b + secret: 5abee519483bc9f8cb37ce280e814bd0 + # 存储配置,解决 AccessToken 的跨节点的共享 +# config-storage: +# type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取 +# key-prefix: wx # Redis Key 的前缀 TODO 芋艿:解决下 Redis key 管理的配置 +# http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 diff --git a/yudao-framework/yudao-spring-boot-starter-extension/pom.xml b/yudao-framework/yudao-spring-boot-starter-extension/pom.xml new file mode 100644 index 0000000000..bc6a36e8d5 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/pom.xml @@ -0,0 +1,68 @@ + + + + yudao-framework + cn.iocoder.boot + ${revision} + + 4.0.0 + + yudao-spring-boot-starter-extension + jar + + ${artifactId} + 扩展点组件 + https://github.com/YunaiV/ruoyi-vue-pro + + + + + + + + cn.iocoder.boot + yudao-common + + + + + org.springframework + spring-context + provided + + + + org.springframework + spring-beans + provided + + + + + org.springframework.boot + spring-boot-starter-aop + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + junit + junit + test + + + + + jakarta.validation + jakarta.validation-api + + + \ No newline at end of file diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/config/YudaoExtensionAutoConfiguration.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/config/YudaoExtensionAutoConfiguration.java new file mode 100644 index 0000000000..8b047ae1be --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/config/YudaoExtensionAutoConfiguration.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.framework.extension.config; + +import cn.iocoder.yudao.framework.extension.core.ExtensionBootstrap; +import cn.iocoder.yudao.framework.extension.core.context.ExtensionContext; +import cn.iocoder.yudao.framework.extension.core.context.ExtensionContextHolder; +import cn.iocoder.yudao.framework.extension.core.context.ExtensionExecutor; +import cn.iocoder.yudao.framework.extension.core.factory.ExtensionFactory; +import cn.iocoder.yudao.framework.extension.core.factory.ExtensionRegisterFactory; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @description 扩展点组件自动装配 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 21:50 + * @class cn.iocoder.yudao.framework.extension.config.YudaoExtensionAutoConfiguration.java + */ +@Configuration +public class YudaoExtensionAutoConfiguration { + + /** + * 组件初始化 + * @return + */ + @Bean(initMethod = "init") + @ConditionalOnMissingBean(ExtensionBootstrap.class) + public ExtensionBootstrap bootstrap() { + return new ExtensionBootstrap(); + } + + /** + * 扩展点工厂 + * @return + */ + @Bean + @ConditionalOnMissingBean({ExtensionRegisterFactory.class, ExtensionFactory.class}) + public ExtensionRegisterFactory registerFactory() { + return new ExtensionRegisterFactory(); + } + + /** + * 扩展组件上下文对象 + * @return + */ + @Bean + @ConditionalOnMissingBean({ExtensionContextHolder.class, ExtensionContext.class}) + public ExtensionContextHolder context() { + return new ExtensionContextHolder(); + } + + /** + * 扩展组件执行器 + * @return + */ + @Bean + @ConditionalOnMissingBean(ExtensionExecutor.class) + public ExtensionExecutor executor() { + return new ExtensionExecutor(); + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/BusinessScenario.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/BusinessScenario.java new file mode 100644 index 0000000000..732350c673 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/BusinessScenario.java @@ -0,0 +1,142 @@ +package cn.iocoder.yudao.framework.extension.core; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.StringJoiner; + +/** + * @description 业务场景 = businessId + useCase + scenario, 用来标识系统中唯一的一个场景
+ * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 22:19 + * @class cn.iocoder.yudao.framework.extension.core.BusinessScenario.java + */ +public class BusinessScenario implements Serializable { + + /** + * 默认业务id + */ + public final static String DEFAULT_BUSINESS_ID = "#defaultBusinessId#"; + + /** + * 默认用例 + */ + public final static String DEFAULT_USECASE = "#defaultUseCase#"; + + /** + * 默认场景 + */ + public final static String DEFAULT_SCENARIO = "#defaultScenario#"; + + /** + * 分隔符 + */ + private final static String DOT_SEPARATOR = "."; + + /** + * 业务Id + */ + private String businessId; + + /** + * 用例 + */ + private String useCase; + + /** + * 场景 + */ + private String scenario; + + public BusinessScenario() { + this.businessId = DEFAULT_BUSINESS_ID; + this.useCase = DEFAULT_USECASE; + this.scenario = DEFAULT_SCENARIO; + } + + public BusinessScenario(@NotNull String businessId, @NotNull String useCase, @NotNull String scenario) { + this.businessId = businessId; + this.useCase = useCase; + this.scenario = scenario; + } + + public BusinessScenario(@NotNull String scenario) { + this(); + this.scenario = scenario; + } + + public BusinessScenario(@NotNull String useCase, @NotNull String scenario) { + this(DEFAULT_BUSINESS_ID, useCase, scenario); + } + + public String getBusinessId() { + return businessId; + } + + public void setBusinessId(String businessId) { + this.businessId = businessId; + } + + public String getUseCase() { + return useCase; + } + + public void setUseCase(String useCase) { + this.useCase = useCase; + } + + public String getScenario() { + return scenario; + } + + public void setScenario(String scenario) { + this.scenario = scenario; + } + + /** + * 构建业务场景 + * @param businessId + * @param useCase + * @param scenario + * @return + */ + public static BusinessScenario valueOf(@NotNull String businessId, @NotNull String useCase, @NotNull String scenario) { + return new BusinessScenario(businessId, useCase, scenario); + } + + /** + * 构建业务场景 + * @param useCase + * @param scenario + * @return + */ + public static BusinessScenario valueOf(@NotNull String useCase, @NotNull String scenario) { + return new BusinessScenario(useCase, scenario); + } + + /** + * 构建业务场景 + * @param scenario + * @return + */ + public static BusinessScenario valueOf(@NotNull String scenario) { + return new BusinessScenario(scenario); + } + + /** + * 业务场景唯一标识 + * @return + */ + public String getUniqueIdentity(){ + return new StringJoiner(DOT_SEPARATOR).add(businessId).add(useCase).add(scenario).toString(); + } + + @Override + public String toString() { + return "BusinessScenario{" + + "businessId='" + businessId + '\'' + + ", useCase='" + useCase + '\'' + + ", scenario='" + scenario + '\'' + + '}'; + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/ExtensionBootstrap.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/ExtensionBootstrap.java new file mode 100644 index 0000000000..800c431be2 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/ExtensionBootstrap.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.framework.extension.core; + +import cn.iocoder.yudao.framework.extension.core.factory.ExtensionRegisterFactory; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; + +import javax.annotation.PostConstruct; + +/** + * @description + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-29 00:18 + * @class cn.iocoder.yudao.framework.extension.core.ExtensionBootstrap.java + */ +public class ExtensionBootstrap implements ApplicationContextAware { + + /** + * spring 容器 + */ + private ApplicationContext applicationContext; + + @Autowired + private ExtensionRegisterFactory registerFactory; + + /** + * 初始化 + */ + @PostConstruct + public void init() { + registerFactory.setApplicationContext(applicationContext); + registerFactory.register(null); + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/AbstractComponentExecutor.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/AbstractComponentExecutor.java new file mode 100644 index 0000000000..f46d05d900 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/AbstractComponentExecutor.java @@ -0,0 +1,131 @@ +package cn.iocoder.yudao.framework.extension.core.context; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; + +import java.util.function.Consumer; +import java.util.function.Function; + +/** + * @description 执行器通用方法 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-29 00:38 + * @class cn.iocoder.yudao.framework.extension.core.context.AbstractComponentExecutor.java + */ +public abstract class AbstractComponentExecutor { + + /** + * ("业务" + "用例" + "场景")执行扩展组件,并返回执行结果 + * @param targetClazz + * @param businessId + * @param useCase + * @param scenario + * @param function + * @param + * @param + * @return + */ + public R execute(Class targetClazz, String businessId, String useCase, String scenario, Function function) { + return execute(targetClazz, BusinessScenario.valueOf(businessId, useCase, scenario), function); + } + + + /** + * ("用例" + "场景")执行扩展组件,并返回执行结果 + * @param targetClazz + * @param useCase + * @param scenario + * @param function + * @param + * @param + * @return + */ + public R execute(Class targetClazz, String useCase, String scenario, Function function) { + return execute(targetClazz, BusinessScenario.valueOf(useCase, scenario), function); + } + + /** + * ("场景")执行扩展组件,并返回执行结果 + * @param targetClazz + * @param scenario + * @param function + * @param + * @param + * @return + */ + public R execute(Class targetClazz, String scenario, Function function) { + return execute(targetClazz, BusinessScenario.valueOf(scenario), function); + } + + /** + * 执行扩展组件,并返回执行结果 + * @param targetClazz + * @param businessScenario + * @param function + * @param Response Type + * @param Parameter Type + * @return + */ + public R execute(Class targetClazz, BusinessScenario businessScenario, Function function) { + T component = locateComponent(targetClazz, businessScenario); + return function.apply(component); + } + + /** + * ("业务" + "用例" + "场景")执行扩展组件,适用于无返回值的业务 + * @param targetClazz + * @param businessId + * @param useCase + * @param scenario + * @param consumer + * @param + */ + public void accept(Class targetClazz, String businessId, String useCase, String scenario, Consumer consumer) { + accept(targetClazz, BusinessScenario.valueOf(businessId, useCase, scenario), consumer); + } + + /** + * ("场景")执行扩展组件,适用于无返回值的业务 + * @param targetClazz + * @param useCase + * @param scenario + * @param consumer + * @param + */ + public void accept(Class targetClazz, String useCase, String scenario, Consumer consumer) { + accept(targetClazz, BusinessScenario.valueOf(useCase, scenario), consumer); + } + + /** + * ("场景")执行扩展组件,适用于无返回值的业务 + * @param targetClazz + * @param scenario + * @param consumer + * @param + */ + public void accept(Class targetClazz, String scenario, Consumer consumer) { + accept(targetClazz, BusinessScenario.valueOf(scenario), consumer); + } + + /** + * 执行扩展组件,适用于无返回值的业务 + * @param targetClazz + * @param businessScenario + * @param consumer + * @param Parameter Type + */ + public void accept(Class targetClazz, BusinessScenario businessScenario, Consumer consumer) { + T component = locateComponent(targetClazz, businessScenario); + consumer.accept(component); + } + + /** + * 获取/定位扩展点组件 + * @param targetClazz + * @param businessScenario + * @param + * @return + */ + protected abstract C locateComponent(Class targetClazz, BusinessScenario businessScenario); +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionContext.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionContext.java new file mode 100644 index 0000000000..5704cc49f4 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionContext.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.framework.extension.core.context; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; + +/** + * @description 上下文,包含各个扩展点的相关操作 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 22:15 + * @class cn.iocoder.yudao.framework.extension.core.context.ExtensionContext.java + */ +public interface ExtensionContext { + + /** + * 根据业务场景唯一标识获取扩展点组件实现类 + * @param businessId + * @param useCase + * @param scenario + * @param clazz + * @param + * @return + */ + T getPoint(String businessId, String useCase, String scenario, Class clazz); + + /** + * 根据("实例" + "场景")获取扩展点组件实现类,其中:业务id(businessId)= {@linkplain cn.iocoder.yudao.framework.extension.core.BusinessScenario.DEFAULT_BUSINESS_ID} + * @param useCase + * @param scenario + * @param clazz + * @param + * @return + */ + T getPoint(String useCase, String scenario, Class clazz); + + /** + * 根据("场景")获取扩展点组件实现类
+ * 其中: + * 业务id(businessId)= {@linkplain cn.iocoder.yudao.framework.extension.core.BusinessScenario.DEFAULT_BUSINESS_ID} + * 实例(useCase)= {@linkplain cn.iocoder.yudao.framework.extension.core.BusinessScenario.DEFAULT_USECASE} + * @param scenario + * @param clazz + * @param + * @return + */ + T getPoint(String scenario, Class clazz); + + /** + * 根据业务场景唯一标识获取扩展点组件实现类 + * @param businessScenario + * @param clazz + * @param + * @return + */ + T getPoint(BusinessScenario businessScenario, Class clazz); +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionContextHolder.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionContextHolder.java new file mode 100644 index 0000000000..6e121b70d8 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionContextHolder.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.framework.extension.core.context; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.factory.ExtensionFactory; +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.validation.constraints.NotNull; + +/** + * @description 上下文及扩展点组件工厂的持有类 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-29 00:29 + * @class cn.iocoder.yudao.framework.extension.core.context.ExtensionContextHolder.java + */ +@Component +@Slf4j +public class ExtensionContextHolder implements ExtensionContext{ + + @Autowired + private ExtensionFactory factory; + + @Override + public T getPoint(@NotNull String businessId, @NotNull String useCase, @NotNull String scenario, Class clazz) { + return getPoint(BusinessScenario.valueOf(businessId, useCase, scenario), clazz); + } + + @Override + public T getPoint(@NotNull String useCase, String scenario, Class clazz) { + return getPoint(BusinessScenario.valueOf(useCase, scenario), clazz); + } + + @Override + public T getPoint(@NotNull String scenario, Class clazz) { + return getPoint(BusinessScenario.valueOf(scenario), clazz); + } + + @Override + public T getPoint(@NotNull BusinessScenario businessScenario, Class clazz) { + return factory.get(businessScenario, clazz); + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionExecutor.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionExecutor.java new file mode 100644 index 0000000000..5f48652e5a --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/context/ExtensionExecutor.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.framework.extension.core.context; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @description 扩展组件执行器 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-29 00:32 + * @class cn.iocoder.yudao.framework.extension.core.context.ExtensionExecutor.java + */ +@Component +@Slf4j +public class ExtensionExecutor extends AbstractComponentExecutor{ + + @Autowired + private ExtensionContextHolder contextHolder; + + + @Override + protected C locateComponent(Class targetClazz, BusinessScenario businessScenario) { + return contextHolder.getPoint(businessScenario, targetClazz); + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionDefinition.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionDefinition.java new file mode 100644 index 0000000000..5feed66607 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionDefinition.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.framework.extension.core.factory; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Objects; + +/** + * @description 扩展定义(扩展坐标),标识唯一一个业务场景实现 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 23:14 + * @class cn.iocoder.yudao.framework.extension.core.factory.ExtensionDefinition.java + */ +@Setter +@Getter +public class ExtensionDefinition implements Serializable { + + /** + * 业务场景唯一标识(id) + */ + private String uniqueIdentify; + + /** + * 扩展点实现类名称 + */ + private String extensionPointName; + + /** + * 业务场景 + */ + private BusinessScenario businessScenario; + + /** + * 扩展点实现类 + */ + private ExtensionPoint extensionPoint; + + /** + * class + */ + private Class extensionPointClass; + + public ExtensionDefinition() { + } + + public ExtensionDefinition(@NotNull BusinessScenario businessScenario, @NotNull ExtensionPoint extensionPoint) { + this.businessScenario = businessScenario; + this.extensionPoint = extensionPoint; + this.uniqueIdentify = this.businessScenario.getUniqueIdentity(); + this.extensionPointClass = this.extensionPoint.getClass(); + } + + /** + * 构建definition + * @param businessScenario + * @param point + * @return + */ + public static ExtensionDefinition valueOf(@NotNull BusinessScenario businessScenario, @NotNull ExtensionPoint point) { + return new ExtensionDefinition(businessScenario, point); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ExtensionDefinition that = (ExtensionDefinition) o; + return Objects.equals(uniqueIdentify, that.uniqueIdentify) && Objects.equals(extensionPointName, that.extensionPointName); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((uniqueIdentify == null) ? 0 : uniqueIdentify.hashCode()); + result = prime * result + ((extensionPointName == null) ? 0 : extensionPointName.hashCode()); + return result; + } + + @Override + public String toString() { + return "ExtensionDefinition{" + + "uniqueIdentify='" + uniqueIdentify + '\'' + + ", extensionPointName='" + extensionPointName + '\'' + + '}'; + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionFactory.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionFactory.java new file mode 100644 index 0000000000..c03175c133 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionFactory.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.framework.extension.core.factory; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; + +/** + * @description 扩展点工厂 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 23:04 + * @class cn.iocoder.yudao.framework.extension.core.factory.ExtensionFactory.java + */ +public interface ExtensionFactory { + + /** + * 注册所有扩展点实现类 + * @param basePackage + */ + void register(String basePackage); + + /** + * 根据业务场景获取指定类型的扩展点 + * @param businessScenario + * @param clazz + * @param + * @return + */ + T get(BusinessScenario businessScenario, Class clazz); +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionRegisterFactory.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionRegisterFactory.java new file mode 100644 index 0000000000..15b802436d --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/factory/ExtensionRegisterFactory.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.framework.extension.core.factory; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; +import cn.iocoder.yudao.framework.extension.core.stereotype.Extension; +import lombok.extern.slf4j.Slf4j; +import org.springframework.aop.support.AopUtils; +import org.springframework.context.ApplicationContext; +import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.stereotype.Component; +import org.springframework.util.ClassUtils; + +import javax.validation.constraints.NotNull; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @description 注册工厂 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 23:07 + * @class cn.iocoder.yudao.framework.extension.core.factory.ExtensionRegisterFactory.java + */ +@Component +@Slf4j +public class ExtensionRegisterFactory implements ExtensionFactory { + + /** + * spring ApplicationContext + */ + private ApplicationContext applicationContext; + + /** + * 扩展点实现类集合 + */ + private Map registerExtensionBeans = new ConcurrentHashMap<>(); + + @Override + public void register(String basePackage) { + final Map beans = applicationContext.getBeansWithAnnotation(Extension.class); + if(beans == null || beans.isEmpty()) { + return; + } + + beans.values().forEach(point -> doRegister((ExtensionPoint) point)); + log.info("业务场景相关扩展点注册完成,注册数量: {}", registerExtensionBeans.size()); + } + + @Override + public T get(BusinessScenario businessScenario, Class clazz) { + + final ExtensionDefinition definition = registerExtensionBeans.get(businessScenario.getUniqueIdentity()); + if(definition == null) { + log.error("获取业务场景扩展点实现失败,失败原因:尚未定义该业务场景相关扩展点。{}", businessScenario); + throw new RuntimeException("尚未定义该业务场景相关扩展点 [" + businessScenario + "]"); + } + + return (T) definition.getExtensionPoint(); + } + + /** + * 注册扩展点 + * @param point + */ + private void doRegister(@NotNull ExtensionPoint point) { + Class extensionClazz = point.getClass(); + + if (AopUtils.isAopProxy(point)) { + extensionClazz = ClassUtils.getUserClass(point); + } + + Extension extension = AnnotationUtils.findAnnotation(extensionClazz, Extension.class); + final BusinessScenario businessScenario = BusinessScenario.valueOf(extension.businessId(), extension.useCase(), extension.scenario()); + final ExtensionDefinition definition = ExtensionDefinition.valueOf(businessScenario, point); + final ExtensionDefinition exist = registerExtensionBeans.get(businessScenario.getUniqueIdentity()); + if(exist != null && !exist.equals(definition)) { + throw new RuntimeException("相同的业务场景重复注册了不同类型的扩展点实现 :【" + definition + "】【" + exist + "】"); + } + + registerExtensionBeans.put(businessScenario.getUniqueIdentity(), definition); + } + + public void setApplicationContext(ApplicationContext applicationContext) { + this.applicationContext = applicationContext; + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/package-info.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/package-info.java new file mode 100644 index 0000000000..636491ecad --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/package-info.java @@ -0,0 +1,8 @@ +/** + * @description core 核心 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 21:54 + * @class cn.iocoder.yudao.framework.extension.core.package-info.java + */ +package cn.iocoder.yudao.framework.extension.core; \ No newline at end of file diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/point/ExtensionPoint.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/point/ExtensionPoint.java new file mode 100644 index 0000000000..e1a86d7919 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/point/ExtensionPoint.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.framework.extension.core.point; +/** + * @description 扩展点
+ * 表示一块逻辑在不同的业务有不同的实现,使用扩展点做接口申明,然后用{@linkplain cn.iocoder.yudao.framework.extension.core.stereotype.Extension}(扩展)去实现扩展点。 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 22:06 + * @class cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint.java + */ +public interface ExtensionPoint { +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/stereotype/Extension.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/stereotype/Extension.java new file mode 100644 index 0000000000..eaa9f99f84 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/core/stereotype/Extension.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.framework.extension.core.stereotype; + +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +/** + * @description 表示带注释的类是“扩展组件” + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 21:59 + * @class cn.iocoder.yudao.framework.extension.core.stereotype.Extension.java + */ +@Inherited +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +@Component +public @interface Extension { + + /** + * 业务
+ * 一个自负盈亏的财务主体,比如tmall、淘宝和零售通就是三个不同的业务 + * @return + */ + String businessId() default BusinessScenario.DEFAULT_BUSINESS_ID; + + /** + * 用例
+ * 描述了用户和系统之间的互动,每个用例提供了一个或多个场景。比如,支付订单就是一个典型的用例。 + * @return + */ + String useCase() default BusinessScenario.DEFAULT_USECASE; + + /** + * 场景
+ * 场景也被称为用例的实例(Instance),包括用例所有的可能情况(正常的和异常的)。比如对于"订单支付"这个用例,就有“支付宝支付”、“银行卡支付”、"微信支付"等多个场景 + * @return + */ + String scenario() default BusinessScenario.DEFAULT_SCENARIO; +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/package-info.java b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/package-info.java new file mode 100644 index 0000000000..1c4ae94ae5 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/java/cn/iocoder/yudao/framework/extension/package-info.java @@ -0,0 +1,8 @@ +/** + * @description 扩展点组件 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-28 14:35 + * @class cn.iocoder.yudao.framework.extension.package-info.java + */ +package cn.iocoder.yudao.framework.extension; \ No newline at end of file diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/main/resources/META-INF/spring.factories b/yudao-framework/yudao-spring-boot-starter-extension/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..82d14b8b0a --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + cn.iocoder.yudao.framework.extension.config.YudaoExtensionAutoConfiguration diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/Application.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/Application.java new file mode 100644 index 0000000000..a589affd30 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/Application.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.framework.extension; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @description Application + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:32 + * @class cn.iocoder.yudao.framework.extension.Application.java + */ +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/ExtensionTest.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/ExtensionTest.java new file mode 100644 index 0000000000..aa3b900c3e --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/ExtensionTest.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.framework.extension; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.json.JSONUtil; +import cn.iocoder.yudao.framework.extension.core.BusinessScenario; +import cn.iocoder.yudao.framework.extension.core.context.ExtensionExecutor; +import cn.iocoder.yudao.framework.extension.pay.PayExtensionPoint; +import cn.iocoder.yudao.framework.extension.pay.command.TransactionsCommand; +import cn.iocoder.yudao.framework.extension.pay.domain.TransactionsResult; +import lombok.extern.slf4j.Slf4j; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.math.BigDecimal; + +/** + * @description + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:30 + * @class cn.iocoder.yudao.framework.extension.ExtensionTest.java + */ +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = Application.class) +@Slf4j +public class ExtensionTest { + + @Autowired + private ExtensionExecutor extensionExecutor; + + @Test + public void unifiedOrder() { + final BusinessScenario scenario = BusinessScenario.valueOf("pay", "jsapi", "wechat"); + final TransactionsCommand command = new TransactionsCommand(IdUtil.objectId(), new BigDecimal(105), "Image形象店-深圳腾大-QQ公仔", "https://www.weixin.qq.com/wxpay/pay.php"); + final TransactionsResult result = extensionExecutor.execute(PayExtensionPoint.class, scenario, extension -> extension.unifiedOrder(command)); + log.info("result is: {}", JSONUtil.toJsonStr(result)); + Assert.assertSame("wechat", result.getChannel()); + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/package-info.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/package-info.java new file mode 100644 index 0000000000..d0bc63e1c8 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/package-info.java @@ -0,0 +1,8 @@ +/** + * @description + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:25 + * @class cn.iocoder.yudao.framework.extension.package-info.java + */ +package cn.iocoder.yudao.framework.extension; \ No newline at end of file diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/PayExtensionPoint.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/PayExtensionPoint.java new file mode 100644 index 0000000000..9adc56b4c9 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/PayExtensionPoint.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.framework.extension.pay; + +import cn.iocoder.yudao.framework.extension.core.point.ExtensionPoint; +import cn.iocoder.yudao.framework.extension.pay.command.TransactionsCommand; +import cn.iocoder.yudao.framework.extension.pay.domain.TransactionsResult; + +/** + * @description 支付操作接口 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:35 + * @class cn.iocoder.yudao.framework.extension.pay.PayExtensionPoint.java + */ +public interface PayExtensionPoint extends ExtensionPoint { + + /** + * 统一下单:获取"预支付交易会话标识" + * @param command + * @return + */ + TransactionsResult unifiedOrder(TransactionsCommand command); +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/command/TransactionsCommand.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/command/TransactionsCommand.java new file mode 100644 index 0000000000..0ac1908ddf --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/command/TransactionsCommand.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.framework.extension.pay.command; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @description 下单请求 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:48 + * @class cn.iocoder.yudao.framework.extension.pay.command.TransactionsCommand.java + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class TransactionsCommand implements Serializable { + /** + * 订单编号 + */ + private String orderNo; + + /** + * 支付金额 + */ + private BigDecimal amount; + + /** + * 商品描述 + */ + private String productDescription; + + /** + * 通知地址 + */ + private String notifyUrl; +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/domain/TransactionsResult.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/domain/TransactionsResult.java new file mode 100644 index 0000000000..35861bbd0a --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/domain/TransactionsResult.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.framework.extension.pay.domain; + +import lombok.*; + +import java.io.Serializable; + +/** + * @description 下单: 预支付交易单返回结果 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:43 + * @class cn.iocoder.yudao.framework.extension.pay.domain.TransactionsResult.java + */ +@Data +@AllArgsConstructor +public class TransactionsResult implements Serializable { + + /** + * 预支付交易会话标识 + */ + private String prepayId; + + /** + * 订单编号 + */ + private String orderNo; + + /** + * 系统内部支付单号 + */ + private String paymentNo; + + /** + * 支付渠道:微信 or 支付宝 + */ + private String channel; + + +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/impl/AlipayService.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/impl/AlipayService.java new file mode 100644 index 0000000000..2daac2ff6a --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/impl/AlipayService.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.framework.extension.pay.impl; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.json.JSONUtil; +import cn.iocoder.yudao.framework.extension.core.stereotype.Extension; +import cn.iocoder.yudao.framework.extension.pay.PayExtensionPoint; +import cn.iocoder.yudao.framework.extension.pay.command.TransactionsCommand; +import cn.iocoder.yudao.framework.extension.pay.domain.TransactionsResult; +import lombok.extern.slf4j.Slf4j; + +/** + * @description 微信 JSAPI 支付 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:38 + * @class cn.iocoder.yudao.framework.extension.pay.impl.AlipayService.java + */ +@Extension(businessId = "pay", useCase = "jsapi", scenario = "alipay") +@Slf4j +public class AlipayService implements PayExtensionPoint { + @Override + public TransactionsResult unifiedOrder(TransactionsCommand command) { + log.info("微信 JSAPI 支付:{}", JSONUtil.toJsonStr(command)); + return new TransactionsResult("alipay26112221580621e9b071c00d9e093b0000", command.getOrderNo(), IdUtil.objectId(), "alipay"); + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/impl/WechatPayService.java b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/impl/WechatPayService.java new file mode 100644 index 0000000000..cae2940920 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/src/test/java/cn/iocoder/yudao/framework/extension/pay/impl/WechatPayService.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.framework.extension.pay.impl; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.json.JSONUtil; +import cn.iocoder.yudao.framework.extension.core.stereotype.Extension; +import cn.iocoder.yudao.framework.extension.pay.PayExtensionPoint; +import cn.iocoder.yudao.framework.extension.pay.command.TransactionsCommand; +import cn.iocoder.yudao.framework.extension.pay.domain.TransactionsResult; +import lombok.extern.slf4j.Slf4j; + +/** + * @description 微信 JSAPI 支付 + * @author Qingchen + * @version 1.0.0 + * @date 2021-08-30 10:37 + * @class cn.iocoder.yudao.framework.extension.pay.impl.WechatPayService.java + */ +@Extension(businessId = "pay", useCase = "jsapi", scenario = "wechat") +@Slf4j +public class WechatPayService implements PayExtensionPoint { + @Override + public TransactionsResult unifiedOrder(TransactionsCommand command) { + log.info("微信 JSAPI 支付:{}", JSONUtil.toJsonStr(command)); + return new TransactionsResult("wx26112221580621e9b071c00d9e093b0000", command.getOrderNo(), IdUtil.objectId(), "wechat"); + } +} diff --git a/yudao-framework/yudao-spring-boot-starter-extension/《芋道 Spring Boot 扩展点组件》.md b/yudao-framework/yudao-spring-boot-starter-extension/《芋道 Spring Boot 扩展点组件》.md new file mode 100644 index 0000000000..59ff2dcb30 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-extension/《芋道 Spring Boot 扩展点组件》.md @@ -0,0 +1,19 @@ +### 作用 + +​ 为了解决同一个流程不同业务有不同处理逻辑而产生,减少代码中 if else 逻辑,降低代码的耦合性,通过统一的扩展形式来支撑业务的变化。 + +### 原理 + +​ https://blog.csdn.net/significantfrank/article/details/100074716 + + + +### 使用介绍 + +参考测试代码 `cn.iocoder.yudao.framework.extension.ExtensionTest` + + + + + + diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java index a80d21b688..4335577d73 100644 --- a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java +++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java @@ -28,6 +28,10 @@ public interface BaseMapperX extends BaseMapper { return selectOne(new QueryWrapper().eq(field, value)); } + default T selectOne(String field1, Object value1, String field2, Object value2) { + return selectOne(new QueryWrapper().eq(field1, value1).eq(field2, value2)); + } + default Integer selectCount(String field, Object value) { return selectCount(new QueryWrapper().eq(field, value)); } diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java index 008d6ca6a8..57133c8409 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java @@ -6,7 +6,7 @@ import cn.hutool.extra.servlet.ServletUtil; import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.apilog.core.service.ApiAccessLogFrameworkService; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateReqDTO; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.iocoder.yudao.framework.web.config.WebProperties; import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; @@ -68,7 +68,7 @@ public class ApiAccessLogFilter extends OncePerRequestFilter { private void createApiAccessLog(HttpServletRequest request, Date beginTime, Map queryString, String requestBody, Exception ex) { - ApiAccessLogCreateDTO accessLog = new ApiAccessLogCreateDTO(); + ApiAccessLogCreateReqDTO accessLog = new ApiAccessLogCreateReqDTO(); try { this.buildApiAccessLogDTO(accessLog, request, beginTime, queryString, requestBody, ex); apiAccessLogFrameworkService.createApiAccessLogAsync(accessLog); @@ -77,7 +77,7 @@ public class ApiAccessLogFilter extends OncePerRequestFilter { } } - private void buildApiAccessLogDTO(ApiAccessLogCreateDTO accessLog, HttpServletRequest request, Date beginTime, + private void buildApiAccessLogDTO(ApiAccessLogCreateReqDTO accessLog, HttpServletRequest request, Date beginTime, Map queryString, String requestBody, Exception ex) { // 处理用户信息 accessLog.setUserId(WebFrameworkUtils.getLoginUserId(request)); diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLogFrameworkService.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLogFrameworkService.java index a999e83394..71df0f6fb0 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLogFrameworkService.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLogFrameworkService.java @@ -1,9 +1,8 @@ package cn.iocoder.yudao.framework.apilog.core.service; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiAccessLogCreateReqDTO; import javax.validation.Valid; -import java.util.concurrent.Future; /** * API 访问日志 Framework Service 接口 @@ -17,6 +16,6 @@ public interface ApiAccessLogFrameworkService { * * @param createDTO 创建信息 */ - void createApiAccessLogAsync(@Valid ApiAccessLogCreateDTO createDTO); + void createApiAccessLogAsync(@Valid ApiAccessLogCreateReqDTO createDTO); } diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLogFrameworkService.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLogFrameworkService.java index 55733e95f2..9229745d7f 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLogFrameworkService.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLogFrameworkService.java @@ -1,9 +1,8 @@ package cn.iocoder.yudao.framework.apilog.core.service; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateReqDTO; import javax.validation.Valid; -import java.util.concurrent.Future; /** * API 错误日志 Framework Service 接口 @@ -17,6 +16,6 @@ public interface ApiErrorLogFrameworkService { * * @param createDTO 创建信息 */ - void createApiErrorLogAsync(@Valid ApiErrorLogCreateDTO createDTO); + void createApiErrorLogAsync(@Valid ApiErrorLogCreateReqDTO createDTO); } diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiAccessLogCreateDTO.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiAccessLogCreateReqDTO.java similarity index 97% rename from yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiAccessLogCreateDTO.java rename to yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiAccessLogCreateReqDTO.java index c665853d70..a32f7b3460 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiAccessLogCreateDTO.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiAccessLogCreateReqDTO.java @@ -11,7 +11,7 @@ import java.util.Date; * @author 芋道源码 */ @Data -public class ApiAccessLogCreateDTO { +public class ApiAccessLogCreateReqDTO { /** * 链路追踪编号 diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiErrorLogCreateDTO.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiErrorLogCreateReqDTO.java similarity index 96% rename from yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiErrorLogCreateDTO.java rename to yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiErrorLogCreateReqDTO.java index 51258d7351..70baebc5cb 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiErrorLogCreateDTO.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/dto/ApiErrorLogCreateReqDTO.java @@ -4,7 +4,6 @@ import lombok.Data; import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; -import java.io.Serializable; import java.util.Date; /** @@ -14,7 +13,7 @@ import java.util.Date; */ @Data @Accessors(chain = true) -public class ApiErrorLogCreateDTO implements Serializable { +public class ApiErrorLogCreateReqDTO { /** * 链路编号 diff --git a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java index cb0aefd8df..578ad76f98 100644 --- a/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java +++ b/yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java @@ -6,7 +6,7 @@ import cn.hutool.extra.servlet.ServletUtil; import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.apilog.core.service.ApiErrorLogFrameworkService; -import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateDTO; +import cn.iocoder.yudao.framework.apilog.core.service.dto.ApiErrorLogCreateReqDTO; import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; @@ -15,7 +15,6 @@ import io.github.resilience4j.ratelimiter.RequestNotPermitted; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.AccessDeniedException; import org.springframework.util.Assert; import org.springframework.validation.BindException; @@ -28,7 +27,6 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import org.springframework.web.servlet.NoHandlerFoundException; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; @@ -231,7 +229,7 @@ public class GlobalExceptionHandler { private void createExceptionLog(HttpServletRequest req, Throwable e) { // 插入错误日志 - ApiErrorLogCreateDTO errorLog = new ApiErrorLogCreateDTO(); + ApiErrorLogCreateReqDTO errorLog = new ApiErrorLogCreateReqDTO(); try { // 初始化 errorLog initExceptionLog(errorLog, req, e); @@ -242,7 +240,7 @@ public class GlobalExceptionHandler { } } - private void initExceptionLog(ApiErrorLogCreateDTO errorLog, HttpServletRequest request, Throwable e) { + private void initExceptionLog(ApiErrorLogCreateReqDTO errorLog, HttpServletRequest request, Throwable e) { // 处理用户信息 errorLog.setUserId(WebFrameworkUtils.getLoginUserId(request)); errorLog.setUserType(WebFrameworkUtils.getLoginUserType(request)); diff --git a/yudao-user-server/pom.xml b/yudao-user-server/pom.xml index 2aa1ee7721..e7b1cd82da 100644 --- a/yudao-user-server/pom.xml +++ b/yudao-user-server/pom.xml @@ -31,6 +31,10 @@ cn.iocoder.boot yudao-spring-boot-starter-biz-sms + + cn.iocoder.boot + yudao-spring-boot-starter-biz-weixin + diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/package-info.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/package-info.java index 4b11f981b8..2334d44bfa 100644 --- a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/package-info.java +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/member/package-info.java @@ -1,7 +1,8 @@ /** - * member 包下,我们放会员业务. - * 例如说:会员中心等等 + * weixin 包下,我们放微信相关业务. + * 例如说:微信公众号、等等 + * ps:微信支付,还是放在 pay 包下 * - * 缩写:mbr + * 缩写:wx */ -package cn.iocoder.yudao.userserver.modules.member; \ No newline at end of file +package cn.iocoder.yudao.userserver.modules.member; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayOrderController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayOrderController.java new file mode 100644 index 0000000000..74a7249a82 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/PayOrderController.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.userserver.modules.pay.controller.order; + +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayOrderCoreService; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitReqDTO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderSubmitRespDTO; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import cn.iocoder.yudao.userserver.modules.pay.controller.order.vo.PayOrderSubmitReqVO; +import cn.iocoder.yudao.userserver.modules.pay.controller.order.vo.PayOrderSubmitRespVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; + +@Api(tags = "支付订单") +@RestController +@RequestMapping("/pay/order") +@Validated +@Slf4j +public class PayOrderController { + + @Resource + private PayOrderCoreService payOrderCoreService; + + @PostMapping("/submit") + @ApiOperation("提交支付订单") +// @PreAuthenticated // TODO 暂时不加登陆验证,前端暂时没做好 + public CommonResult submitPayOrder(@RequestBody PayOrderSubmitReqVO reqVO) { + // 获得订单 + PayOrderDO payOrder = payOrderCoreService.getPayOrder(reqVO.getId()); + + // 提交支付 + PayOrderSubmitReqDTO reqDTO = new PayOrderSubmitReqDTO(); + BeanUtil.copyProperties(reqVO, reqDTO, false); + reqDTO.setUserIp(getClientIP()); + reqDTO.setAppId(payOrder.getAppId()); + PayOrderSubmitRespDTO respDTO = payOrderCoreService.submitPayOrder(reqDTO); + + // 拼接返回 + return success(PayOrderSubmitRespVO.builder().invokeResponse(respDTO.getInvokeResponse()).build()); + } + + // ========== 支付渠道的回调 ========== + + @PostMapping("/notify/wx-pub/{channelId}") + @ApiOperation("通知微信公众号的结果") + public String notifyWxPayOrder(@PathVariable("channelId") Long channelId, + @RequestBody String xmlData) throws Exception { + payOrderCoreService.notifyPayOrder(channelId, PayChannelEnum.WX_PUB.getCode(), xmlData); + return "success"; + } + +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/vo/PayOrderSubmitReqVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/vo/PayOrderSubmitReqVO.java new file mode 100644 index 0000000000..407edb1717 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/vo/PayOrderSubmitReqVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.userserver.modules.pay.controller.order.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Map; + +@ApiModel("支付订单提交 Request VO") +@Data +@Accessors(chain = true) +public class PayOrderSubmitReqVO { + + @ApiModelProperty(value = "支付单编号", required = true, example = "1024") + @NotNull(message = "支付单编号不能为空") + private Long id; + + @ApiModelProperty(value = "支付渠道", required = true, example = "wx_pub") + @NotEmpty(message = "支付渠道不能为空") + private String channelCode; + + @ApiModelProperty(value = "支付渠道的额外参数", notes = "例如说,微信公众号需要传递 openid 参数") + private Map channelExtras; + +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/vo/PayOrderSubmitRespVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/vo/PayOrderSubmitRespVO.java new file mode 100644 index 0000000000..907a979467 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/controller/order/vo/PayOrderSubmitRespVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.userserver.modules.pay.controller.order.vo; + +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +@ApiModel("支付订单提交 Response VO") +@Data +@Accessors(chain = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PayOrderSubmitRespVO { + + /** + * 调用支付渠道的响应结果 + */ + private Object invokeResponse; + +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/package-info.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/package-info.java new file mode 100644 index 0000000000..1aa11cdd26 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/pay/package-info.java @@ -0,0 +1,7 @@ +/** + * pay 包下,我们放支付业务,提供业务的支付能力。 + * 例如说:商户、应用、支付、退款等等 + * + * 缩写:pay + */ +package cn.iocoder.yudao.userserver.modules.pay; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/controller/ShopOrderController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/controller/ShopOrderController.java new file mode 100644 index 0000000000..4767c074d4 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/controller/ShopOrderController.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.userserver.modules.shop.controller; + +import cn.iocoder.yudao.coreservice.modules.pay.service.notify.vo.PayNotifyOrderReqVO; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.PayOrderCoreService; +import cn.iocoder.yudao.coreservice.modules.pay.service.order.dto.PayOrderCreateReqDTO; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.userserver.modules.shop.controller.vo.ShopOrderCreateRespVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.time.Duration; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; + +@Api(tags = "商城订单") +@RestController +@RequestMapping("/shop/order") +@Validated +@Slf4j +public class ShopOrderController { + + @Resource + private PayOrderCoreService payOrderCoreService; + + @PostMapping("/create") + @ApiOperation("创建商城订单") +// @PreAuthenticated // TODO 暂时不加登陆验证,前端暂时没做好 + public CommonResult create() { + // 假装创建商城订单 + Long shopOrderId = System.currentTimeMillis(); + + // 创建对应的支付订单 + PayOrderCreateReqDTO reqDTO = new PayOrderCreateReqDTO(); + reqDTO.setAppId(6L); + reqDTO.setUserIp(getClientIP()); + reqDTO.setMerchantOrderId(String.valueOf(System.currentTimeMillis())); + reqDTO.setSubject("标题:" + shopOrderId); + reqDTO.setBody("内容:" + shopOrderId); + reqDTO.setAmount(1); // 单位:分 + reqDTO.setExpireTime(DateUtils.addTime(Duration.ofDays(1))); + Long payOrderId = payOrderCoreService.createPayOrder(reqDTO); + + // 拼接返回 + return success(ShopOrderCreateRespVO.builder().id(shopOrderId) + .payOrderId(payOrderId).build()); + } + + @PostMapping("/pay-notify") + @ApiOperation("支付回调") + public CommonResult payNotify(@RequestBody @Valid PayNotifyOrderReqVO reqVO) { + log.info("[payNotify][回调成功]"); + return success(true); + } + +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/controller/vo/ShopOrderCreateRespVO.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/controller/vo/ShopOrderCreateRespVO.java new file mode 100644 index 0000000000..682afc4e9d --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/controller/vo/ShopOrderCreateRespVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.userserver.modules.shop.controller.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; + +@ApiModel("商城订单创建 Response VO") +@Data +@Builder +@AllArgsConstructor +public class ShopOrderCreateRespVO { + + @ApiModelProperty(value = "商城订单编号", required = true, example = "1024") + private Long id; + + @ApiModelProperty(value = "支付订单编号", required = true, example = "2048") + private Long payOrderId; + +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/package-info.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/package-info.java new file mode 100644 index 0000000000..c592130af3 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/shop/package-info.java @@ -0,0 +1,8 @@ +/** + * shop 包下,我们放商城业务 + * 例如说:商品、订单等等 + * 注意,目前仅仅作为 demo 演示,对接 pay 支付系统 + * + * 缩写:shop + */ +package cn.iocoder.yudao.userserver.modules.shop; diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/controller/mp/WxMpController.http b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/controller/mp/WxMpController.http new file mode 100644 index 0000000000..60f28c64d8 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/controller/mp/WxMpController.http @@ -0,0 +1,2 @@ +### 请求 /login 接口 => 成功 +GET {{userServerUrl}}/wx/mp/get-jsapi-ticket diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/controller/mp/WxMpController.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/controller/mp/WxMpController.java new file mode 100644 index 0000000000..decd907a0d --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/controller/mp/WxMpController.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.userserver.modules.weixin.controller.mp; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.bean.WxJsapiSignature; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Api(tags = "微信公众号") +@RestController +@RequestMapping("/wx/mp") +@Validated +@Slf4j +public class WxMpController { + + @Resource + private WxMpService mpService; + + @PostMapping("/create-jsapi-signature") + @ApiOperation(value = "创建微信 JS SDK 初始化所需的签名", + notes = "参考 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 文档") + public CommonResult createJsapiSignature(@RequestParam("url") String url) throws WxErrorException { + return success(mpService.createJsapiSignature(url)); + } + +} diff --git a/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/package-info.java b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/package-info.java new file mode 100644 index 0000000000..69d3e22212 --- /dev/null +++ b/yudao-user-server/src/main/java/cn/iocoder/yudao/userserver/modules/weixin/package-info.java @@ -0,0 +1,7 @@ +/** + * weixin 包下,我们放通用业务,支撑上层的核心业务。 + * 例如说:用户、部门、权限、数据字典等等 + * + * 缩写:wx + */ +package cn.iocoder.yudao.userserver.modules.weixin; diff --git a/yudao-user-server/src/main/resources/application-dev.yaml b/yudao-user-server/src/main/resources/application-dev.yaml index c015867afe..858e97739c 100644 --- a/yudao-user-server/src/main/resources/application-dev.yaml +++ b/yudao-user-server/src/main/resources/application-dev.yaml @@ -138,6 +138,9 @@ yudao: - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 demo: true # 开启演示模式 + pay: + pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify + refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify justauth: diff --git a/yudao-user-server/src/main/resources/application-local.yaml b/yudao-user-server/src/main/resources/application-local.yaml index c57d178084..24e6331328 100644 --- a/yudao-user-server/src/main/resources/application-local.yaml +++ b/yudao-user-server/src/main/resources/application-local.yaml @@ -121,6 +121,18 @@ logging: file: name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径 +--- #################### 微信公众号相关配置 #################### +wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档 + mp: + # 公众号配置(必填) + app-id: wx041349c6f39b268b + secret: 5abee519483bc9f8cb37ce280e814bd0 + # 存储配置,解决 AccessToken 的跨节点的共享 + config-storage: + type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取 + key-prefix: wx # Redis Key 的前缀 TODO 芋艿:解决下 Redis key 管理的配置 + http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台 + --- #################### 芋道相关配置 #################### # 芋道配置项,设置当前项目所有自定义的配置 @@ -140,6 +152,9 @@ yudao: - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 demo: false # 关闭演示模式 + pay: + pay-notify-url: http://niubi.natapp1.cc/api/pay/order/notify + refund-notify-url: http://niubi.natapp1.cc/api/pay/refund/notify justauth: diff --git a/yudao-user-server/src/main/resources/application.yaml b/yudao-user-server/src/main/resources/application.yaml index 4e1d1f2797..209543380c 100644 --- a/yudao-user-server/src/main/resources/application.yaml +++ b/yudao-user-server/src/main/resources/application.yaml @@ -20,6 +20,10 @@ spring: write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳 fail-on-empty-beans: false # 允许序列化无属性的 Bean + # 静态资源 + mvc: + static-path-pattern: /static/** + # MyBatis Plus 的配置项 mybatis-plus: configuration: @@ -33,6 +37,8 @@ mybatis-plus: mapper-locations: classpath*:mapper/*.xml type-aliases-package: ${yudao.info.base-package}.modules.*.dal.dataobject, ${yudao.core-service.base-package}.modules.*.dal.dataobject + + --- #################### 芋道相关配置 #################### yudao: diff --git a/yudao-user-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt b/yudao-user-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt new file mode 100644 index 0000000000..ee06c0a6b4 --- /dev/null +++ b/yudao-user-server/src/main/resources/static/MP_verify_DKOvVzFP7vPwwHx2.txt @@ -0,0 +1 @@ +DKOvVzFP7vPwwHx2 \ No newline at end of file diff --git a/yudao-user-server/src/main/resources/static/pay.html b/yudao-user-server/src/main/resources/static/pay.html new file mode 100644 index 0000000000..2a80e869d0 --- /dev/null +++ b/yudao-user-server/src/main/resources/static/pay.html @@ -0,0 +1,117 @@ + + + + + + 支付测试页 + + + + +
点击如下按钮,发起支付的测试
+
+ +
+ + + diff --git a/更新日志.md b/更新日志.md index 6d5ea6f951..f66a804cda 100644 --- a/更新日志.md +++ b/更新日志.md @@ -21,7 +21,7 @@ TODO * 新增管理后台的企业微信、钉钉等社交登录 * 新增用户前台(例如说,用户使用的小程序)的后端项目 `yudao-user-server` * 新增公共服务 `yudao-core-service` 项目,通过 Jar 包的方式,提供 `yudao-user-server` 和 `yudao-admin-server` 的共享逻辑的复用 -* 新增用户前台的手机登录、验证码登录 +* 新增用户前台的手机登录、验证码登录 * 修复管理后台的用户头像上传 404 的问题,原因是请求路径不对 * 修复用户导入失败的问题,原因是 Lombok 链式与 cglib 读取属性有冲突 * 修复阿里云短信发送失败的问题,原因是 Opentracing 依赖的版本太低,调整成 0.31.0 @@ -38,7 +38,7 @@ TODO ### 代码的重构 * 调整整体代码结构,将多个 Maven Module 合并为单个,使用 Java package 进行拆分隔离,如 [图](https://static.iocoder.cn/ruoyi-vue-pro-modules.jpg) 所示。原因是:随着业务逻辑的逐步复杂,多个 Maven Module 的依赖关系的管理,会是一个很大的问题。 -* 拆分 [framework](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework) 为多个 Maven Module,按照 [Web](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-web)、[Security](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-security)、[MyBatis](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-mybatis)、[Redis](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-redis) 等不同组件,进行封装与拓展。 +* 拆分 [framework](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework) 为多个 Maven Module,按照 [Web](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-web)、[Security](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-security)、[MyBatis](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-mybatis)、[Redis](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-redis) 等不同组件,进行封装与拓展。 * 基于 [JUnit5](https://junit.org/junit5/) 与 [Mockito](https://github.com/mockito/mockito),实现单元测试,保证功能的正确性,与代码的可维护性。一直自动化,一直爽! * 增加 SpringBoot 多环境的配置文件,提供完善的 [deploy.sh](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/bin/deploy.sh) 部署脚本,以及 [Jenkins 部署教程](https://juejin.cn/post/6942098287533129765)。 * 优化 [Spring Security](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-framework/yudao-spring-boot-starter-security) 实现权限的代码,提升可读性和维护性。