diff --git a/sql/pay-dict.sql b/sql/pay-dict.sql index 9aa504d19..3d490fece 100644 --- a/sql/pay-dict.sql +++ b/sql/pay-dict.sql @@ -1,40 +1,174 @@ - -- 商户状态 status -INSERT INTO `sys_dict_type` ( `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( '商户状态', 'pay_merchant_status', 0, '商户的启用于停用状态', '1', '2021-11-03 11:29:04', '1', '2021-11-03 11:29:04', b'0'); +INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('商户状态', 'pay_merchant_status', 0, '商户的启用于停用状态', '1', '2021-11-03 11:29:04', '1', '2021-11-03 11:29:04', b'0'); -INSERT INTO `sys_dict_data` ( `sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( 1, '启用', '0', 'pay_merchant_status', 0, '商户启用', '1', '2021-11-03 11:30:52', '1', '2021-11-03 11:31:15', b'0'); -INSERT INTO `sys_dict_data` ( `sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( 2, '停用', '1', 'pay_merchant_status', 0, '商户停用', '1', '2021-11-03 11:31:05', '1', '2021-11-03 11:31:05', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '启用', '0', 'pay_merchant_status', 0, '商户启用', '1', '2021-11-03 11:30:52', '1', '2021-11-03 11:31:15', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '停用', '1', 'pay_merchant_status', 0, '商户停用', '1', '2021-11-03 11:31:05', '1', '2021-11-03 11:31:05', b'0'); -- 支付应用状态 status -INSERT INTO `sys_dict_type` ( `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ('支付应用状态', 'pay_app_status', 0, '支付应用的启停状态', '1', '2021-11-06 19:41:50', '1', '2021-11-06 19:41:50', b'0'); +INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付应用状态', 'pay_app_status', 0, '支付应用的启停状态', '1', '2021-11-06 19:41:50', '1', '2021-11-06 19:41:50', b'0'); -INSERT INTO `sys_dict_data` ( `sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( 1, '开启', '0', 'pay_app_status', 0, NULL, '1', '2021-11-06 19:42:10', '1', '2021-11-06 19:42:10', b'0'); -INSERT INTO `sys_dict_data` ( `sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( 2, '关闭', '1', 'pay_app_status', 0, NULL, '1', '2021-11-06 19:42:17', '1', '2021-11-06 19:42:17', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '开启', '0', 'pay_app_status', 0, NULL, '1', '2021-11-06 19:42:10', '1', '2021-11-06 19:42:10', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '关闭', '1', 'pay_app_status', 0, NULL, '1', '2021-11-06 19:42:17', '1', '2021-11-06 19:42:17', b'0'); -- 支付渠道状态 status -INSERT INTO `sys_dict_type` ( `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( '支付渠道状态', 'pay_channel_status', 0, '支付渠道的启停状态', '1', '2021-11-08 16:47:21', '1', '2021-11-08 16:47:21', b'0'); +INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付渠道状态', 'pay_channel_status', 0, '支付渠道的启停状态', '1', '2021-11-08 16:47:21', '1', '2021-11-08 16:47:21', b'0'); -INSERT INTO `sys_dict_data` ( `sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( 1, '开启', '0', 'pay_channel_status', 0, '开启', '1', '2021-11-08 16:47:45', '1', '2021-11-08 16:47:45', b'0'); -INSERT INTO `sys_dict_data` ( `sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ( 2, '关闭', '1', 'pay_channel_status', 0, '关闭', '1', '2021-11-08 16:47:52', '1', '2021-11-08 16:47:52', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '开启', '0', 'pay_channel_status', 0, '开启', '1', '2021-11-08 16:47:45', '1', '2021-11-08 16:47:45', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '关闭', '1', 'pay_channel_status', 0, '关闭', '1', '2021-11-08 16:47:52', '1', '2021-11-08 16:47:52', b'0'); -- 微信渠道版本控制 -INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ('支付渠道微信版本', 'pay_channel_wechat_version', 0, '支付渠道微信版本', '1', '2021-11-08 17:00:26', '1', '2021-11-08 17:00:26', b'0'); +INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付渠道微信版本', 'pay_channel_wechat_version', 0, '支付渠道微信版本', '1', '2021-11-08 17:00:26', '1', '2021-11-08 17:00:26', + b'0'); -INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 'v2', 'v2', 'pay_channel_wechat_version', 0, 'v2版本', '1', '2021-11-08 17:00:58', '1', '2021-11-08 17:00:58', b'0'); -INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2, 'v3', 'v3', 'pay_channel_wechat_version', 0, 'v3版本', '1', '2021-11-08 17:01:07', '1', '2021-11-08 17:01:07', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, 'v2', 'v2', 'pay_channel_wechat_version', 0, 'v2版本', '1', '2021-11-08 17:00:58', '1', '2021-11-08 17:00:58', + b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, 'v3', 'v3', 'pay_channel_wechat_version', 0, 'v3版本', '1', '2021-11-08 17:01:07', '1', '2021-11-08 17:01:07', + b'0'); -- 支付渠道支付宝算法类型 -INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ('支付渠道支付宝算法类型', 'pay_channel_alipay_sign_type', 0, '支付渠道支付宝算法类型', '1', '2021-11-18 15:39:09', '1', '2021-11-18 15:39:09', b'0'); -INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, 'RSA2', 'RSA2', 'pay_channel_alipay_sign_type', 0, 'RSA2', '1', '2021-11-18 15:39:29', '1', '2021-11-18 15:39:29', b'0'); +INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付渠道支付宝算法类型', 'pay_channel_alipay_sign_type', 0, '支付渠道支付宝算法类型', '1', '2021-11-18 15:39:09', '1', + '2021-11-18 15:39:09', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, 'RSA2', 'RSA2', 'pay_channel_alipay_sign_type', 0, 'RSA2', '1', '2021-11-18 15:39:29', '1', + '2021-11-18 15:39:29', b'0'); -- 支付渠道支付宝公钥类型 -INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ('支付渠道支付宝公钥类型', 'pay_channel_alipay_mode', 0, '支付渠道支付宝公钥类型', '1', '2021-11-18 15:44:28', '1', '2021-11-18 15:44:28', b'0'); -INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '公钥模式', '1', 'pay_channel_alipay_mode', 0, '公钥模式:privateKey + alipayPublicKey', '1', '2021-11-18 15:45:23', '1', '2021-11-18 15:45:23', b'0'); -INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2, '证书模式', '2', 'pay_channel_alipay_mode', 0, '证书模式:appCertContent + alipayPublicCertContent + rootCertContent', '1', '2021-11-18 15:45:40', '1', '2021-11-18 15:45:40', b'0'); +INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付渠道支付宝公钥类型', 'pay_channel_alipay_mode', 0, '支付渠道支付宝公钥类型', '1', '2021-11-18 15:44:28', '1', + '2021-11-18 15:44:28', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '公钥模式', '1', 'pay_channel_alipay_mode', 0, '公钥模式:privateKey + alipayPublicKey', '1', '2021-11-18 15:45:23', + '1', '2021-11-18 15:45:23', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '证书模式', '2', 'pay_channel_alipay_mode', 0, '证书模式:appCertContent + alipayPublicCertContent + rootCertContent', + '1', '2021-11-18 15:45:40', '1', '2021-11-18 15:45:40', b'0'); -- 支付宝网关地址 -INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES ('支付宝网关地址', 'pay_channel_alipay_server_type', 0, '支付宝网关地址', '1', '2021-11-18 16:58:55', '1', '2021-11-18 17:01:34', b'0'); -INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1, '线上', 'https://openapi.alipay.com/gateway.do', 'pay_channel_alipay_server_type', 0, '网关地址 - 线上', '1', '2021-11-18 16:59:32', '1', '2021-11-21 17:37:29', b'0'); -INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (2, '沙箱', 'https://openapi.alipaydev.com/gateway.do', 'pay_channel_alipay_server_type', 0, '网关地址 - 沙箱', '1', '2021-11-18 16:59:48', '1', '2021-11-21 17:37:39', b'0'); +INSERT INTO `sys_dict_type` (`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付宝网关地址', 'pay_channel_alipay_server_type', 0, '支付宝网关地址', '1', '2021-11-18 16:58:55', '1', + '2021-11-18 17:01:34', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '线上', 'https://openapi.alipay.com/gateway.do', 'pay_channel_alipay_server_type', 0, '网关地址 - 线上', '1', + '2021-11-18 16:59:32', '1', '2021-11-21 17:37:29', b'0'); +INSERT INTO `sys_dict_data` (`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '沙箱', 'https://openapi.alipaydev.com/gateway.do', 'pay_channel_alipay_server_type', 0, '网关地址 - 沙箱', '1', + '2021-11-18 16:59:48', '1', '2021-11-21 17:37:39', b'0'); + +-- 支付渠道编码类型 +INSERT INTO `sys_dict_type`(`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付渠道编码类型', 'pay_channel_code_type', 0, '支付渠道的编码', '1', '2021-12-03 10:35:08', '1', '2021-12-03 10:35:08', + b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '微信 JSAPI 支付', 'wx_pub', 'pay_channel_code_type', 0, '微信 JSAPI(公众号) 支付', '1', '2021-12-03 10:40:24', '1', + '2021-12-04 16:41:00', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '微信小程序支付', 'wx_lite', 'pay_channel_code_type', 0, '微信小程序支付', '1', '2021-12-03 10:41:06', '1', + '2021-12-03 10:41:06', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (3, '微信 App 支付', 'wx_app', 'pay_channel_code_type', 0, '微信 App 支付', '1', '2021-12-03 10:41:20', '1', + '2021-12-03 10:41:20', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (4, '支付宝 PC 网站支付', 'alipay_pc', 'pay_channel_code_type', 0, '支付宝 PC 网站支付', '1', '2021-12-03 10:42:09', '1', + '2021-12-03 10:42:09', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (5, '支付宝 Wap 网站支付', 'alipay_wap', 'pay_channel_code_type', 0, '支付宝 Wap 网站支付', '1', '2021-12-03 10:42:26', '1', + '2021-12-03 10:42:26', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (6, '支付宝App 支付', 'alipay_app', 'pay_channel_code_type', 0, '支付宝App 支付', '1', '2021-12-03 10:42:55', '1', + '2021-12-03 10:42:55', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (7, '支付宝扫码支付', 'alipay_qr', 'pay_channel_code_type', 0, '支付宝扫码支付', '1', '2021-12-03 10:43:10', '1', + '2021-12-03 10:43:10', b'0'); + +-- 支付订单回调状态 +INSERT INTO `sys_dict_type`(`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付订单回调状态', 'pay_order_notify_status', 0, '支付订单回调状态', '1', '2021-12-03 10:53:29', '1', '2021-12-03 10:53:29', + b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '通知成功', '10', 'pay_order_notify_status', 0, '通知成功', '1', '2021-12-03 11:02:41', '1', '2021-12-03 11:02:41', + b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '通知失败', '20', 'pay_order_notify_status', 0, '通知失败', '1', '2021-12-03 11:02:59', '1', '2021-12-03 11:02:59', + b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (3, '未通知', '0', 'pay_order_notify_status', 0, '未通知', '1', '2021-12-03 11:03:10', '1', '2021-12-03 11:03:10', + b'0'); + +-- 支付订单状态 +INSERT INTO `sys_dict_type`(`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付订单状态', 'pay_order_status', 0, '支付订单状态', '1', '2021-12-03 11:17:50', '1', '2021-12-03 11:17:50', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '支付成功', '10', 'pay_order_status', 0, '支付成功', '1', '2021-12-03 11:18:29', '1', '2021-12-03 11:28:32', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '支付关闭', '20', 'pay_order_status', 0, '支付关闭', '1', '2021-12-03 11:18:42', '1', '2021-12-03 11:28:34', b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (3, '未支付', '0', 'pay_order_status', 0, '未支付', '1', '2021-12-03 11:18:18', '1', '2021-12-03 11:28:36', b'0'); + +-- 支付订单退款状态 +INSERT INTO `sys_dict_type`(`name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, + `deleted`) +VALUES ('支付订单退款状态', 'pay_order_refund_status', 0, '支付订单退款状态', '1', '2021-12-03 11:27:31', '1', '2021-12-03 11:27:31', + b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (1, '未退款', '0', 'pay_order_refund_status', 0, '未退款', '1', '2021-12-03 11:30:35', '1', '2021-12-03 11:34:05', + b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (2, '部分退款', '10', 'pay_order_refund_status', 0, '部分退款', '1', '2021-12-03 11:30:44', '1', '2021-12-03 11:34:10', + b'0'); +INSERT INTO `sys_dict_data`(`sort`, `label`, `value`, `dict_type`, `status`, `remark`, `creator`, `create_time`, + `updater`, `update_time`, `deleted`) +VALUES (3, '全部退款', '20', 'pay_order_refund_status', 0, '全部退款', '1', '2021-12-03 11:30:52', '1', '2021-12-03 11:34:14', + b'0'); \ No newline at end of file diff --git a/sql/pay-order-menu.sql b/sql/pay-order-menu.sql new file mode 100644 index 000000000..6a1260c2c --- /dev/null +++ b/sql/pay-order-menu.sql @@ -0,0 +1,30 @@ +-- 菜单 SQL +INSERT INTO `sys_menu`(`name`, `permission`, `menu_type`, `sort`, `parent_id`, + `path`, `icon`, `component`, `status`) +VALUES ('支付订单管理', '', 2, 0, ${table.parentMenuId}, + 'order', '', 'pay/order/index', 0); + +-- 按钮父菜单ID +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +INSERT INTO `sys_menu`(`name`, `permission`, `menu_type`, `sort`, `parent_id`, + `path`, `icon`, `component`, `status`) +VALUES ('支付订单查询', 'pay:order:query', 3, 1, @parentId, '', '', '', 0); + +INSERT INTO `sys_menu`(`name`, `permission`, `menu_type`, `sort`, `parent_id`, + `path`, `icon`, `component`, `status`) +VALUES ('支付订单创建', 'pay:order:create', 3, 2, @parentId, + '', '', '', 0); +INSERT INTO `sys_menu`(`name`, `permission`, `menu_type`, `sort`, `parent_id`, + `path`, `icon`, `component`, `status`) +VALUES ('支付订单更新', 'pay:order:update', 3, 3, @parentId, + '', '', '', 0); +INSERT INTO `sys_menu`(`name`, `permission`, `menu_type`, `sort`, `parent_id`, + `path`, `icon`, `component`, `status`) +VALUES ('支付订单删除', 'pay:order:delete', 3, 4, @parentId, + '', '', '', 0); +INSERT INTO `sys_menu`(`name`, `permission`, `menu_type`, `sort`, `parent_id`, + `path`, `icon`, `component`, `status`) +VALUES ('支付订单导出', 'pay:order:export', 3, 5, @parentId, + '', '', '', 0); diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/app/PayAppController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/app/PayAppController.java index 196666430..a517676de 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/app/PayAppController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/app/PayAppController.java @@ -18,13 +18,11 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; @@ -170,6 +168,14 @@ public class PayAppController { ExcelUtils.write(response, "支付应用信息.xls", "数据", PayAppExcelVO.class, datas); } + @GetMapping("/list-merchant-id") + @ApiOperation("根据商户 ID 查询支付应用信息") + @ApiImplicitParam(name = "merchantId", value = "商户ID", required = true, example = "1", dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('pay:merchant:query')") + public CommonResult> getMerchantListByName(@RequestParam String merchantId) { + List appListDO = appService.getListByMerchantId(merchantId); + return success(PayAppConvert.INSTANCE.convertList(appListDO)); + } } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/PayMerchantController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/PayMerchantController.java index f93960962..984533412 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/PayMerchantController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/PayMerchantController.java @@ -77,9 +77,9 @@ public class PayMerchantController { @GetMapping("/list-name") @ApiOperation("根据商户名称获得支付商户信息列表") - @ApiImplicitParam(name = "name", value = "商户名称", required = true, example = "芋道", dataTypeClass = Long.class) + @ApiImplicitParam(name = "name", value = "商户名称", example = "芋道", dataTypeClass = Long.class) @PreAuthorize("@ss.hasPermission('pay:merchant:query')") - public CommonResult> getMerchantListByName(@RequestParam("name") String name) { + public CommonResult> getMerchantListByName(@RequestParam(required = false) String name) { List merchantListDO = merchantService.getMerchantListByName(name); return success(PayMerchantConvert.INSTANCE.convertList(merchantListDO)); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/vo/PayMerchantRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/vo/PayMerchantRespVO.java index ba55458eb..d5b194359 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/vo/PayMerchantRespVO.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/merchant/vo/PayMerchantRespVO.java @@ -1,8 +1,12 @@ package cn.iocoder.yudao.adminserver.modules.pay.controller.merchant.vo; -import lombok.*; -import java.util.*; -import io.swagger.annotations.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; @ApiModel("支付商户信息 Response VO") @Data @@ -16,4 +20,11 @@ public class PayMerchantRespVO extends PayMerchantBaseVO { @ApiModelProperty(value = "创建时间", required = true) private Date createTime; + /** + * 商户号 + * 例如说,M233666999 + * 只有新增时插入,不允许修改 + */ + private String no; + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/PayOrderController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/PayOrderController.java new file mode 100755 index 000000000..fc0ae16b4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/PayOrderController.java @@ -0,0 +1,187 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.*; +import cn.iocoder.yudao.adminserver.modules.pay.convert.order.PayOrderConvert; +import cn.iocoder.yudao.adminserver.modules.pay.service.app.PayAppService; +import cn.iocoder.yudao.adminserver.modules.pay.service.merchant.PayMerchantService; +import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderExtensionService; +import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderService; +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.PayOrderExtensionDO; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +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 javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +/** + * 支付订单 controller 组件 + * + * @author aquan + */ +@Api(tags = "支付订单") +@RestController +@RequestMapping("/pay/order") +@Validated +public class PayOrderController { + + /** + * 订单 service 组件 + */ + @Resource + private PayOrderService orderService; + + /** + * 订单扩展 service 组件 + */ + @Resource + private PayOrderExtensionService orderExtensionService; + + /** + * 商户 service 组件 + */ + @Resource + private PayMerchantService merchantService; + + /** + * 应用 service 组件 + */ + @Resource + private PayAppService appService; + + @GetMapping("/get") + @ApiOperation("获得支付订单") + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) + @PreAuthorize("@ss.hasPermission('pay:order:query')") + public CommonResult getOrder(@RequestParam("id") Long id) { + PayOrderDO order = orderService.getOrder(id); + if (ObjectUtil.isNull(order)) { + return success(new PayOrderDetailsRespVO()); + } + + PayMerchantDO merchantDO = merchantService.getMerchant(order.getMerchantId()); + PayAppDO appDO = appService.getApp(order.getAppId()); + PayChannelEnum channelEnum = PayChannelEnum.getByCode(order.getChannelCode()); + + PayOrderDetailsRespVO respVO = PayOrderConvert.INSTANCE.orderDetailConvert(order); + respVO.setMerchantName(ObjectUtil.isNotNull(merchantDO) ? merchantDO.getName() : "未知商户"); + respVO.setAppName(ObjectUtil.isNotNull(appDO) ? appDO.getName() : "未知应用"); + respVO.setChannelCodeName(ObjectUtil.isNotNull(channelEnum) ? channelEnum.getName() : "未知渠道"); + + PayOrderExtensionDO extensionDO = orderExtensionService.getOrderExtension(order.getSuccessExtensionId()); + if (ObjectUtil.isNotNull(extensionDO)) { + respVO.setPayOrderExtension(PayOrderConvert.INSTANCE.orderDetailExtensionConvert(extensionDO)); + } + + return success(respVO); + } + + @GetMapping("/list") + @ApiOperation("获得支付订单列表") + @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) + @PreAuthorize("@ss.hasPermission('pay:order:query')") + public CommonResult> getOrderList(@RequestParam("ids") Collection ids) { + List list = orderService.getOrderList(ids); + return success(PayOrderConvert.INSTANCE.convertList(list)); + } + + @GetMapping("/page") + @ApiOperation("获得支付订单分页") + @PreAuthorize("@ss.hasPermission('pay:order:query')") + public CommonResult> getOrderPage(@Valid PayOrderPageReqVO pageVO) { + PageResult pageResult = orderService.getOrderPage(pageVO); + if (CollectionUtil.isEmpty(pageResult.getList())) { + return success(new PageResult<>(pageResult.getTotal())); + } + + // 处理商户ID数据 + Map merchantMap = merchantService.getMerchantMap( + CollectionUtils.convertList(pageResult.getList(), PayOrderDO::getMerchantId)); + // 处理应用ID数据 + Map appMap = appService.getAppMap( + CollectionUtils.convertList(pageResult.getList(), PayOrderDO::getAppId)); + + List pageList = new ArrayList<>(pageResult.getList().size()); + pageResult.getList().forEach(c -> { + PayMerchantDO merchantDO = merchantMap.get(c.getMerchantId()); + PayAppDO appDO = appMap.get(c.getAppId()); + PayChannelEnum channelEnum = PayChannelEnum.getByCode(c.getChannelCode()); + + PayOrderPageItemRespVO orderItem = PayOrderConvert.INSTANCE.pageConvertItemPage(c); + orderItem.setMerchantName(ObjectUtil.isNotNull(merchantDO) ? merchantDO.getName() : "未知商户"); + orderItem.setAppName(ObjectUtil.isNotNull(appDO) ? appDO.getName() : "未知应用"); + orderItem.setChannelCodeName(ObjectUtil.isNotNull(channelEnum) ? channelEnum.getName() : "未知渠道"); + pageList.add(orderItem); + }); + return success(new PageResult<>(pageList, pageResult.getTotal())); + } + + @GetMapping("/export-excel") + @ApiOperation("导出支付订单Excel") + @PreAuthorize("@ss.hasPermission('pay:order:export')") + @OperateLog(type = EXPORT) + public void exportOrderExcel(@Valid PayOrderExportReqVO exportReqVO, + HttpServletResponse response) throws IOException { + + List list = orderService.getOrderList(exportReqVO); + if (CollectionUtil.isEmpty(list)) { + ExcelUtils.write(response, "支付订单.xls", "数据", + PayOrderExcelVO.class, new ArrayList<>()); + } + + // 处理商户ID数据 + Map merchantMap = merchantService.getMerchantMap( + CollectionUtils.convertList(list, PayOrderDO::getMerchantId)); + // 处理应用ID数据 + Map appMap = appService.getAppMap( + CollectionUtils.convertList(list, PayOrderDO::getAppId)); + // 处理扩展订单数据 + Map orderExtensionMap = orderExtensionService + .getOrderExtensionMap(CollectionUtils.convertList(list, PayOrderDO::getSuccessExtensionId)); + + List excelDatum = new ArrayList<>(list.size()); + list.forEach(c -> { + PayMerchantDO merchantDO = merchantMap.get(c.getMerchantId()); + PayAppDO appDO = appMap.get(c.getAppId()); + PayChannelEnum channelEnum = PayChannelEnum.getByCode(c.getChannelCode()); + PayOrderExtensionDO orderExtensionDO = orderExtensionMap.get(c.getSuccessExtensionId()); + + PayOrderExcelVO excelItem = PayOrderConvert.INSTANCE.excelConvert(c); + excelItem.setMerchantName(ObjectUtil.isNotNull(merchantDO) ? merchantDO.getName() : "未知商户"); + excelItem.setAppName(ObjectUtil.isNotNull(appDO) ? appDO.getName() : "未知应用"); + excelItem.setChannelCodeName(ObjectUtil.isNotNull(channelEnum) ? channelEnum.getName() : "未知渠道"); + excelItem.setNo(ObjectUtil.isNotNull(orderExtensionDO) ? orderExtensionDO.getNo() : ""); + excelDatum.add(excelItem); + }); + + // 导出 Excel + ExcelUtils.write(response, "支付订单.xls", "数据", PayOrderExcelVO.class, excelDatum); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderBaseVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderBaseVO.java new file mode 100755 index 000000000..fb9c7e3db --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderBaseVO.java @@ -0,0 +1,108 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 支付订单 + * Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + * + * @author aquan + */ +@Data +public class PayOrderBaseVO { + + @ApiModelProperty(value = "商户编号", required = true) + @NotNull(message = "商户编号不能为空") + private Long merchantId; + + @ApiModelProperty(value = "应用编号", required = true) + @NotNull(message = "应用编号不能为空") + private Long appId; + + @ApiModelProperty(value = "渠道编号") + private Long channelId; + + @ApiModelProperty(value = "渠道编码") + private String channelCode; + + @ApiModelProperty(value = "商户订单编号", required = true) + @NotNull(message = "商户订单编号不能为空") + private String merchantOrderId; + + @ApiModelProperty(value = "商品标题", required = true) + @NotNull(message = "商品标题不能为空") + private String subject; + + @ApiModelProperty(value = "商品描述", required = true) + @NotNull(message = "商品描述不能为空") + private String body; + + @ApiModelProperty(value = "异步通知地址", required = true) + @NotNull(message = "异步通知地址不能为空") + private String notifyUrl; + + @ApiModelProperty(value = "通知商户支付结果的回调状态", required = true) + @NotNull(message = "通知商户支付结果的回调状态不能为空") + private Integer notifyStatus; + + @ApiModelProperty(value = "支付金额,单位:分", required = true) + @NotNull(message = "支付金额,单位:分不能为空") + private Long amount; + + @ApiModelProperty(value = "渠道手续费,单位:百分比") + private Double channelFeeRate; + + @ApiModelProperty(value = "渠道手续金额,单位:分") + private Long channelFeeAmount; + + @ApiModelProperty(value = "支付状态", required = true) + @NotNull(message = "支付状态不能为空") + private Integer status; + + @ApiModelProperty(value = "用户 IP", required = true) + @NotNull(message = "用户 IP不能为空") + private String userIp; + + @ApiModelProperty(value = "订单失效时间", required = true) + @NotNull(message = "订单失效时间不能为空") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date expireTime; + + @ApiModelProperty(value = "订单支付成功时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date successTime; + + @ApiModelProperty(value = "订单支付通知时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private Date notifyTime; + + @ApiModelProperty(value = "支付成功的订单拓展单编号") + private Long successExtensionId; + + @ApiModelProperty(value = "退款状态", required = true) + @NotNull(message = "退款状态不能为空") + private Integer refundStatus; + + @ApiModelProperty(value = "退款次数", required = true) + @NotNull(message = "退款次数不能为空") + private Integer refundTimes; + + @ApiModelProperty(value = "退款总金额,单位:分", required = true) + @NotNull(message = "退款总金额,单位:分不能为空") + private Long refundAmount; + + @ApiModelProperty(value = "渠道用户编号") + private String channelUserId; + + @ApiModelProperty(value = "渠道订单号") + private String channelOrderNo; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderDetailsRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderDetailsRespVO.java new file mode 100644 index 000000000..0a56ea510 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderDetailsRespVO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +/** + * 支付订单详细信息,由支付订单和支付订单扩展信息组成 + * + * @author aquan + */ +@ApiModel("支付订单详细信息 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PayOrderDetailsRespVO extends PayOrderBaseVO { + + @ApiModelProperty(value = "支付订单编号") + private Long id; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "渠道编号名称") + private String channelCodeName; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + /** + * 支付订单扩展 + */ + private PayOrderExtension payOrderExtension; + + @Data + @ApiModel("支付订单扩展") + public static class PayOrderExtension { + + @ApiModelProperty(value = "支付订单号") + private String no; + + @ApiModelProperty(value = "支付渠道的额外参数") + private String channelExtras; + + @ApiModelProperty(value = "支付异步通知的内容") + private String channelNotifyData; + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderExcelVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderExcelVO.java new file mode 100755 index 000000000..e06de94ab --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderExcelVO.java @@ -0,0 +1,91 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo; + +import cn.iocoder.yudao.adminserver.modules.system.enums.SysDictTypeConstants; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 支付订单Excel VO + * + * @author aquan + */ +@Data +public class PayOrderExcelVO { + + @ExcelProperty("支付订单编号") + private Long id; + + @ExcelProperty(value = "商户名称") + private String merchantName; + + @ExcelProperty(value = "应用名称") + private String appName; + + @ExcelProperty("商品标题") + private String subject; + + @ExcelProperty("商户订单编号") + private String merchantOrderId; + + @ExcelProperty("渠道订单号") + private String channelOrderNo; + + @ExcelProperty(value = "支付订单号") + private String no; + + @ExcelProperty("支付金额,单位:元") + private String amount; + + @ExcelProperty("渠道手续金额,单位:元") + private String channelFeeAmount; + + @ExcelProperty("渠道手续费,单位:百分比") + private String channelFeeRate; + + @DictFormat(SysDictTypeConstants.PAY_ORDER_STATUS) + @ExcelProperty(value = "支付状态", converter = DictConvert.class) + private Integer status; + + @DictFormat(SysDictTypeConstants.PAY_ORDER_NOTIFY_STATUS) + @ExcelProperty(value = "通知商户支付结果的回调状态", converter = DictConvert.class) + private Integer notifyStatus; + + @ExcelProperty("异步通知地址") + private String notifyUrl; + + @ExcelProperty("创建时间") + private Date createTime; + + @ExcelProperty("订单支付成功时间") + private Date successTime; + + @ExcelProperty("订单失效时间") + private Date expireTime; + + @ExcelProperty("订单支付通知时间") + private Date notifyTime; + + @ExcelProperty(value = "渠道编号名称") + private String channelCodeName; + + @ExcelProperty("用户 IP") + private String userIp; + + @DictFormat(SysDictTypeConstants.PAY_ORDER_REFUND_STATUS) + @ExcelProperty(value = "退款状态", converter = DictConvert.class) + private Integer refundStatus; + + @ExcelProperty("退款次数") + private Integer refundTimes; + + @ExcelProperty("退款总金额,单位:元") + private String refundAmount; + + @ExcelProperty("商品描述") + private String body; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderExportReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderExportReqVO.java new file mode 100755 index 000000000..ee0cfd326 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderExportReqVO.java @@ -0,0 +1,112 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 支付订单 Excel 导出 Request VO + * @author aquan + */ +@ApiModel(value = "支付订单 Excel 导出 Request VO", description = "参数和 PayOrderPageReqVO 是一致的") +@Data +public class PayOrderExportReqVO { + + @ApiModelProperty(value = "商户编号") + private Long merchantId; + + @ApiModelProperty(value = "应用编号") + private Long appId; + + @ApiModelProperty(value = "渠道编号") + private Long channelId; + + @ApiModelProperty(value = "渠道编码") + private String channelCode; + + @ApiModelProperty(value = "商户订单编号") + private String merchantOrderId; + + @ApiModelProperty(value = "商品标题") + private String subject; + + @ApiModelProperty(value = "商品描述") + private String body; + + @ApiModelProperty(value = "异步通知地址") + private String notifyUrl; + + @ApiModelProperty(value = "通知商户支付结果的回调状态") + private Integer notifyStatus; + + @ApiModelProperty(value = "支付金额,单位:分") + private Long amount; + + @ApiModelProperty(value = "渠道手续费,单位:百分比") + private Double channelFeeRate; + + @ApiModelProperty(value = "渠道手续金额,单位:分") + private Long channelFeeAmount; + + @ApiModelProperty(value = "支付状态") + private Integer status; + + @ApiModelProperty(value = "用户 IP") + private String userIp; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始订单失效时间") + private Date beginExpireTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束订单失效时间") + private Date endExpireTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始订单支付成功时间") + private Date beginSuccessTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束订单支付成功时间") + private Date endSuccessTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始订单支付通知时间") + private Date beginNotifyTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束订单支付通知时间") + private Date endNotifyTime; + + @ApiModelProperty(value = "支付成功的订单拓展单编号") + private Long successExtensionId; + + @ApiModelProperty(value = "退款状态") + private Integer refundStatus; + + @ApiModelProperty(value = "退款次数") + private Integer refundTimes; + + @ApiModelProperty(value = "退款总金额,单位:分") + private Long refundAmount; + + @ApiModelProperty(value = "渠道用户编号") + private String channelUserId; + + @ApiModelProperty(value = "渠道订单号") + private String channelOrderNo; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderPageItemRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderPageItemRespVO.java new file mode 100755 index 000000000..4ecdb1830 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderPageItemRespVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +/** + * 支付订单分页 Request VO + * + * @author aquan + */ +@ApiModel("支付订单分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PayOrderPageItemRespVO extends PayOrderBaseVO { + + @ApiModelProperty(value = "支付订单编号", required = true) + private Long id; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "渠道名称") + private String channelCodeName; + + @ApiModelProperty(value = "支付订单号") + private String no; + + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderPageReqVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderPageReqVO.java new file mode 100755 index 000000000..9d493f519 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderPageReqVO.java @@ -0,0 +1,118 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * 支付订单分页 Request VO + * + * @author aquan + */ +@ApiModel("支付订单分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PayOrderPageReqVO extends PageParam { + + @ApiModelProperty(value = "商户编号") + private Long merchantId; + + @ApiModelProperty(value = "应用编号") + private Long appId; + + @ApiModelProperty(value = "渠道编号") + private Long channelId; + + @ApiModelProperty(value = "渠道编码") + private String channelCode; + + @ApiModelProperty(value = "商户订单编号") + private String merchantOrderId; + + @ApiModelProperty(value = "商品标题") + private String subject; + + @ApiModelProperty(value = "商品描述") + private String body; + + @ApiModelProperty(value = "异步通知地址") + private String notifyUrl; + + @ApiModelProperty(value = "通知商户支付结果的回调状态") + private Integer notifyStatus; + + @ApiModelProperty(value = "支付金额,单位:分") + private Long amount; + + @ApiModelProperty(value = "渠道手续费,单位:百分比") + private Double channelFeeRate; + + @ApiModelProperty(value = "渠道手续金额,单位:分") + private Long channelFeeAmount; + + @ApiModelProperty(value = "支付状态") + private Integer status; + + @ApiModelProperty(value = "用户 IP") + private String userIp; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始订单失效时间") + private Date beginExpireTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束订单失效时间") + private Date endExpireTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始订单支付成功时间") + private Date beginSuccessTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束订单支付成功时间") + private Date endSuccessTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始订单支付通知时间") + private Date beginNotifyTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束订单支付通知时间") + private Date endNotifyTime; + + @ApiModelProperty(value = "支付成功的订单拓展单编号") + private Long successExtensionId; + + @ApiModelProperty(value = "退款状态") + private Integer refundStatus; + + @ApiModelProperty(value = "退款次数") + private Integer refundTimes; + + @ApiModelProperty(value = "退款总金额,单位:分") + private Long refundAmount; + + @ApiModelProperty(value = "渠道用户编号") + private String channelUserId; + + @ApiModelProperty(value = "渠道订单号") + private String channelOrderNo; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "开始创建时间") + private Date beginCreateTime; + + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @ApiModelProperty(value = "结束创建时间") + private Date endCreateTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderRespVO.java new file mode 100755 index 000000000..0ad0004c9 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/controller/order/vo/PayOrderRespVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +/** + * 支付订单 Response VO + * + * @author aquan + */ +@ApiModel("支付订单 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class PayOrderRespVO extends PayOrderBaseVO { + + @ApiModelProperty(value = "支付订单编号", required = true) + private Long id; + + @ApiModelProperty(value = "创建时间", required = true) + private Date createTime; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/order/PayOrderConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/order/PayOrderConvert.java new file mode 100755 index 000000000..08d0e73f1 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/order/PayOrderConvert.java @@ -0,0 +1,107 @@ +package cn.iocoder.yudao.adminserver.modules.pay.convert.order; + +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.*; +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.common.pojo.PageResult; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Mappings; +import org.mapstruct.factory.Mappers; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; + +/** + * 支付订单 Convert + * + * @author aquan + */ +@Mapper +public interface PayOrderConvert { + + PayOrderConvert INSTANCE = Mappers.getMapper(PayOrderConvert.class); + + + + PayOrderRespVO convert(PayOrderDO bean); + + /** + * 订单DO 转换为 详细订单 RespVO + * + * @param bean 订单DO + * @return 详细订单 RespVO + */ + PayOrderDetailsRespVO orderDetailConvert(PayOrderDO bean); + + /** + * 订单扩展DO 转换为 详细订单扩展 RespVO + * + * @param bean 订单扩展DO + * @return 详细订单扩展 RespVO + */ + @Mappings({ + @Mapping(target = "channelExtras" + , expression = "java(bean.getChannelExtras() != null ? bean.getChannelExtras().toString():null)") + }) + PayOrderDetailsRespVO.PayOrderExtension orderDetailExtensionConvert(PayOrderExtensionDO bean); + + List convertList(List list); + + PageResult convertPage(PageResult page); + + List convertList02(List list); + + /** + * 订单DO转自定义分页对象 + * + * @param bean 订单DO + * @return 分页对象 + */ + PayOrderPageItemRespVO pageConvertItemPage(PayOrderDO bean); + + /** + * 订单DO 转 订单导出excel VO + * + * @param bean 订单 DO + * @return 订单导出excel VO + */ + default PayOrderExcelVO excelConvert(PayOrderDO bean) { + if (bean == null) { + return null; + } + + PayOrderExcelVO payOrderExcelVO = new PayOrderExcelVO(); + + payOrderExcelVO.setId(bean.getId()); + payOrderExcelVO.setSubject(bean.getSubject()); + payOrderExcelVO.setMerchantOrderId(bean.getMerchantOrderId()); + payOrderExcelVO.setChannelOrderNo(bean.getChannelOrderNo()); + payOrderExcelVO.setStatus(bean.getStatus()); + payOrderExcelVO.setNotifyStatus(bean.getNotifyStatus()); + payOrderExcelVO.setNotifyUrl(bean.getNotifyUrl()); + payOrderExcelVO.setCreateTime(bean.getCreateTime()); + payOrderExcelVO.setSuccessTime(bean.getSuccessTime()); + payOrderExcelVO.setExpireTime(bean.getExpireTime()); + payOrderExcelVO.setNotifyTime(bean.getNotifyTime()); + payOrderExcelVO.setUserIp(bean.getUserIp()); + payOrderExcelVO.setRefundStatus(bean.getRefundStatus()); + payOrderExcelVO.setRefundTimes(bean.getRefundTimes()); + payOrderExcelVO.setBody(bean.getBody()); + + BigDecimal multiple = new BigDecimal(100); + + payOrderExcelVO.setAmount(BigDecimal.valueOf(bean.getAmount()) + .divide(multiple, 2, RoundingMode.HALF_UP).toString()); + + payOrderExcelVO.setChannelFeeAmount(BigDecimal.valueOf(bean.getChannelFeeAmount()) + .divide(multiple, 2, RoundingMode.HALF_UP).toString()); + payOrderExcelVO.setChannelFeeRate(java.math.BigDecimal.valueOf(bean.getChannelFeeRate()) + .multiply(multiple).toString()); + payOrderExcelVO.setRefundAmount(BigDecimal.valueOf(bean.getRefundAmount()) + .divide(multiple, 2, RoundingMode.HALF_UP).toString()); + + return payOrderExcelVO; + } +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/app/PayAppMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/app/PayAppMapper.java index 4335b4649..c73490f35 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/app/PayAppMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/app/PayAppMapper.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; @@ -14,11 +15,18 @@ import java.util.List; /** * 支付应用信息 Mapper * - * @author 芋艿 + * @author aquan */ @Mapper public interface PayAppMapper extends BaseMapperX { + /** + * 分页查询 + * + * @param reqVO 支付应用信息分页查询条件 + * @param merchantIds 商户 ID 集合 + * @return 支付应用信息 + */ default PageResult selectPage(PayAppPageReqVO reqVO, Collection merchantIds) { return selectPage(reqVO, new QueryWrapperX() .likeIfPresent("name", reqVO.getName()) @@ -31,6 +39,13 @@ public interface PayAppMapper extends BaseMapperX { .orderByDesc("id")); } + /** + * 列表查询 + * + * @param reqVO 支付应用信息 Excel 导出查询条件 + * @param merchantIds 商户 ID 集合 + * @return 支付应用信息 + */ default List selectList(PayAppExportReqVO reqVO, Collection merchantIds) { return selectList(new QueryWrapperX() .likeIfPresent("name", reqVO.getName()) @@ -43,4 +58,14 @@ public interface PayAppMapper extends BaseMapperX { .orderByDesc("id")); } + /** + * 根据 商户 ID 查询支付应用信息 + * @param merchantId 商户 ID + * @return 支付应用信息列表 + */ + default List getListByMerchantId(String merchantId){ + return selectList(new LambdaQueryWrapper() + .select(PayAppDO::getId, PayAppDO::getName) + .eq(PayAppDO::getMerchantId, merchantId)); + } } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/merchant/PayMerchantMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/merchant/PayMerchantMapper.java index c718edb91..f143b1857 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/merchant/PayMerchantMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/merchant/PayMerchantMapper.java @@ -6,8 +6,6 @@ import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayMerch import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -49,6 +47,7 @@ public interface PayMerchantMapper extends BaseMapperX { * @return 商户集合 */ default List getMerchantListByName(String merchantName) { - return this.selectList(new LambdaQueryWrapper().like(PayMerchantDO::getName, merchantName)); + return this.selectList(new QueryWrapperX() + .likeIfPresent("name", merchantName)); } } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/order/PayOrderExtensionMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/order/PayOrderExtensionMapper.java new file mode 100755 index 000000000..47baabb31 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/order/PayOrderExtensionMapper.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.adminserver.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 org.apache.ibatis.annotations.Mapper; + +/** + * 支付订单 Mapper + * + * @author aquan + */ +@Mapper +public interface PayOrderExtensionMapper extends BaseMapperX { + + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/order/PayOrderMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/order/PayOrderMapper.java new file mode 100755 index 000000000..cb7c6ae0d --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/mysql/order/PayOrderMapper.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order; + +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 支付订单 + * Mapper + * + * @author 芋艿 + */ +@Mapper +public interface PayOrderMapper extends BaseMapperX { + + default PageResult selectPage(PayOrderPageReqVO reqVO) { + return selectPage(reqVO, new QueryWrapperX() + .eqIfPresent("merchant_id", reqVO.getMerchantId()) + .eqIfPresent("app_id", reqVO.getAppId()) + .eqIfPresent("channel_id", reqVO.getChannelId()) + .eqIfPresent("channel_code", reqVO.getChannelCode()) + .likeIfPresent("merchant_order_id", reqVO.getMerchantOrderId()) + .eqIfPresent("notify_status", reqVO.getNotifyStatus()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("refund_status", reqVO.getRefundStatus()) + .likeIfPresent("channel_order_no", reqVO.getChannelOrderNo()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc("id")); + } + + default List selectList(PayOrderExportReqVO reqVO) { + return selectList(new QueryWrapperX() + .eqIfPresent("merchant_id", reqVO.getMerchantId()) + .eqIfPresent("app_id", reqVO.getAppId()) + .eqIfPresent("channel_id", reqVO.getChannelId()) + .eqIfPresent("channel_code", reqVO.getChannelCode()) + .likeIfPresent("merchant_order_id", reqVO.getMerchantOrderId()) + .eqIfPresent("notify_status", reqVO.getNotifyStatus()) + .eqIfPresent("status", reqVO.getStatus()) + .eqIfPresent("refund_status", reqVO.getRefundStatus()) + .likeIfPresent("channel_order_no", reqVO.getChannelOrderNo()) + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) + .orderByDesc("id")); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/PayAppService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/PayAppService.java index 8baa6516d..da83ca825 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/PayAppService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/PayAppService.java @@ -1,12 +1,17 @@ package cn.iocoder.yudao.adminserver.modules.pay.service.app; -import java.util.*; -import javax.validation.*; - -import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.*; +import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppCreateReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppExportReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppPageReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.controller.app.vo.PayAppUpdateReqVO; import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.merchant.PayAppDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import org.springframework.web.multipart.MultipartFile; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; +import java.util.Map; /** * 支付应用信息 Service 接口 @@ -77,5 +82,22 @@ public interface PayAppService { */ void updateAppStatus(Long id, Integer status); + /** + * 根据商户 ID 获得支付应用信息列表, + * + * @param merchantId 商户 ID + * @return 支付应用信息列表 + */ + List getListByMerchantId(String merchantId); + /** + * 获得指定编号的商户 Map + * + * @param appIdList 应用编号集合 + * @return 商户 Map + */ + default Map getAppMap(Collection appIdList) { + List list = this.getAppList(appIdList); + return CollectionUtils.convertMap(list, PayAppDO::getId); + } } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/impl/PayAppServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/impl/PayAppServiceImpl.java index d74508480..e631ae040 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/impl/PayAppServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/app/impl/PayAppServiceImpl.java @@ -10,7 +10,6 @@ import cn.iocoder.yudao.adminserver.modules.pay.convert.app.PayAppConvert; import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.app.PayAppMapper; import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.merchant.PayMerchantMapper; import cn.iocoder.yudao.adminserver.modules.pay.service.app.PayAppService; -import cn.iocoder.yudao.adminserver.modules.pay.service.merchant.PayMerchantService; 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.framework.common.enums.CommonStatusEnum; @@ -22,7 +21,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.*; -import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.*; +import static cn.iocoder.yudao.coreservice.modules.pay.enums.PayErrorCodeCoreConstants.PAY_APP_NOT_FOUND; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; @@ -134,6 +133,16 @@ public class PayAppServiceImpl implements PayAppService { appMapper.updateById(app); } + /** + * 根据商户 ID 获得支付应用信息列表, + * + * @param merchantId 商户 ID + * @return 支付应用信息列表 + */ + @Override + public List getListByMerchantId(String merchantId) { + return appMapper.getListByMerchantId(merchantId); + } /** * 检查商户是否存在 diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderExtensionService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderExtensionService.java new file mode 100755 index 000000000..a139956b4 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderExtensionService.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver.modules.pay.service.order; + +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 支付订单 Service 接口 + * + * @author aquan + */ +public interface PayOrderExtensionService { + + /** + * 获得支付订单 + * + * @param id 编号 + * @return 支付订单 + */ + PayOrderExtensionDO getOrderExtension(Long id); + + /** + * 获得支付订单 + * 列表 + * + * @param ids 编号 + * @return 支付订单 + * 列表 + */ + List getOrderExtensionList(Collection ids); + + + /** + * 根据订单成功的 扩展订单ID 查询所有的扩展订单转 成 map 返回 + * + * @param successExtensionIdList 订单 ID 集合 + * @return 订单扩展 map 集合 + */ + default Map getOrderExtensionMap(Collection successExtensionIdList) { + List list = this.getOrderExtensionList(successExtensionIdList); + return CollectionUtils.convertMap(list, PayOrderExtensionDO::getId); + } + + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderService.java new file mode 100755 index 000000000..6ea6b4793 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderService.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.adminserver.modules.pay.service.order; + +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; + +import java.util.Collection; +import java.util.List; + +/** + * 支付订单 + * Service 接口 + * + * @author aquan + */ +public interface PayOrderService { + + /** + * 获得支付订单 + * + * @param id 编号 + * @return 支付订单 + */ + PayOrderDO getOrder(Long id); + + /** + * 获得支付订单 + * 列表 + * + * @param ids 编号 + * @return 支付订单 + * 列表 + */ + List getOrderList(Collection ids); + + /** + * 获得支付订单 + * 分页 + * + * @param pageReqVO 分页查询 + * @return 支付订单 + * 分页 + */ + PageResult getOrderPage(PayOrderPageReqVO pageReqVO); + + /** + * 获得支付订单 + * 列表, 用于 Excel 导出 + * + * @param exportReqVO 查询条件 + * @return 支付订单 + * 列表 + */ + List getOrderList(PayOrderExportReqVO exportReqVO); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/impl/PayOrderExtensionServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/impl/PayOrderExtensionServiceImpl.java new file mode 100755 index 000000000..197275657 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/impl/PayOrderExtensionServiceImpl.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.adminserver.modules.pay.service.order.impl; + +import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order.PayOrderExtensionMapper; +import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderExtensionService; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderExtensionDO; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +/** + * 支付订单 Service 实现类 + * + * @author aquan + */ +@Service +@Validated +public class PayOrderExtensionServiceImpl implements PayOrderExtensionService { + + @Resource + private PayOrderExtensionMapper orderExtensionMapper; + + @Override + public PayOrderExtensionDO getOrderExtension(Long id) { + return orderExtensionMapper.selectById(id); + } + + @Override + public List getOrderExtensionList(Collection ids) { + return orderExtensionMapper.selectBatchIds(ids); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/impl/PayOrderServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/impl/PayOrderServiceImpl.java new file mode 100755 index 000000000..dd914e109 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/impl/PayOrderServiceImpl.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.adminserver.modules.pay.service.order.impl; + +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order.PayOrderMapper; +import cn.iocoder.yudao.adminserver.modules.pay.service.order.PayOrderService; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; + +/** + * 支付订单 Service 实现类 + * + * @author aquan + */ +@Service +@Validated +public class PayOrderServiceImpl implements PayOrderService { + + @Resource + private PayOrderMapper orderMapper; + + @Override + public PayOrderDO getOrder(Long id) { + return orderMapper.selectById(id); + } + + @Override + public List getOrderList(Collection ids) { + return orderMapper.selectBatchIds(ids); + } + + @Override + public PageResult getOrderPage(PayOrderPageReqVO pageReqVO) { + return orderMapper.selectPage(pageReqVO); + } + + @Override + public List getOrderList(PayOrderExportReqVO exportReqVO) { + return orderMapper.selectList(exportReqVO); + } + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysDictTypeConstants.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysDictTypeConstants.java index 64c1b5e81..357f966d9 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysDictTypeConstants.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/enums/SysDictTypeConstants.java @@ -22,4 +22,19 @@ public interface SysDictTypeConstants { String SMS_SEND_STATUS = "sys_sms_send_status"; // 短信发送状态 String SMS_RECEIVE_STATUS = "sys_sms_receive_status"; // 短信接收状态 + /** + * 支付-订单-订单状态 + */ + String PAY_ORDER_STATUS = "pay_order_status"; + + /** + * 支付-订单-订单回调商户状态 + */ + String PAY_ORDER_NOTIFY_STATUS = "pay_order_notify_status"; + + /** + * 支付-订单-订单退款状态 + */ + String PAY_ORDER_REFUND_STATUS = "pay_order_refund_status"; + } diff --git a/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderServiceTest.java b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderServiceTest.java new file mode 100755 index 000000000..21cbdc584 --- /dev/null +++ b/yudao-admin-server/src/test/java/cn/iocoder/yudao/adminserver/modules/pay/service/order/PayOrderServiceTest.java @@ -0,0 +1,196 @@ +package cn.iocoder.yudao.adminserver.modules.pay.service.order; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; +import cn.iocoder.yudao.adminserver.BaseDbUnitTest; +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderExportReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.controller.order.vo.PayOrderPageReqVO; +import cn.iocoder.yudao.adminserver.modules.pay.dal.mysql.order.PayOrderMapper; +import cn.iocoder.yudao.adminserver.modules.pay.service.order.impl.PayOrderServiceImpl; +import cn.iocoder.yudao.coreservice.modules.pay.dal.dataobject.order.PayOrderDO; +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.enums.order.PayRefundTypeEnum; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.date.DateUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +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.util.Date; +import java.util.List; + +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * {@link PayOrderServiceImpl} 的单元测试类 + * + * @author 芋艿 + */ +@Import(PayOrderServiceImpl.class) +public class PayOrderServiceTest extends BaseDbUnitTest { + + @Resource + private PayOrderServiceImpl orderService; + + @Resource + private PayOrderMapper orderMapper; + + public String generateNo() { + return DateUtil.format(new Date(), "yyyyMMddHHmmss") + RandomUtil.randomInt(100000, 999999); + } + + @Test // TODO 请修改 null 为需要的值 + public void testGetOrderPage() { + + String merchantOrderId = generateNo(); + String channelOrderId = generateNo(); + + // mock 数据 + PayOrderDO dbOrder = randomPojo(PayOrderDO.class, o -> { // 等会查询到 + o.setMerchantId(1L); + o.setAppId(1L); + o.setChannelId(1L); + o.setChannelCode(PayChannelEnum.WX_PUB.getCode()); + o.setMerchantOrderId(merchantOrderId); + o.setSubject("灿灿子的炸弹猫"); + o.setBody("斌斌子送给灿灿子的炸弹猫"); + o.setNotifyUrl("https://hc.com/lbh"); + o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus()); + o.setAmount(10000L); + o.setChannelFeeRate(0.01); + o.setChannelFeeAmount(1L); + o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()); + o.setUserIp("127.0.0.1"); + o.setCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0)); + o.setExpireTime(DateUtils.buildTime(2018, 1, 1, 10, 30, 0)); + o.setSuccessTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 2)); + o.setNotifyTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15)); + o.setSuccessExtensionId(1L); + o.setRefundStatus(PayRefundTypeEnum.NO.getStatus()); + o.setRefundTimes(0); + o.setRefundAmount(0L); + o.setChannelUserId("1008611"); + o.setChannelOrderNo(channelOrderId); + o.setUpdateTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15)); + }); + orderMapper.insert(dbOrder); + // 测试 merchantId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantId(2L))); + // 测试 appId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setAppId(2L))); + // 测试 channelId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelId(2L))); + // 测试 channelCode 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelCode(PayChannelEnum.ALIPAY_APP.getCode()))); + // 测试 merchantOrderId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantOrderId(generateNo()))); + // 测试 notifyStatus 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setNotifyStatus(PayOrderNotifyStatusEnum.FAILURE.getStatus()))); + // 测试 status 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus()))); + // 测试 refundStatus 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setRefundStatus(PayRefundTypeEnum.ALL.getStatus()))); + // 测试 createTime 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setCreateTime(DateUtils.buildTime(2019, 1, 1, 10, 10, + 1)))); + // 准备参数 + PayOrderPageReqVO reqVO = new PayOrderPageReqVO(); + reqVO.setMerchantId(1L); + reqVO.setAppId(1L); + reqVO.setChannelId(1L); + reqVO.setChannelCode(PayChannelEnum.WX_PUB.getCode()); + reqVO.setMerchantOrderId(merchantOrderId); + reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus()); + reqVO.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()); + reqVO.setRefundStatus(PayRefundTypeEnum.NO.getStatus()); + reqVO.setBeginCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0)); + reqVO.setEndCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0)); + + // 调用 + PageResult pageResult = orderService.getOrderPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbOrder, pageResult.getList().get(0)); + // assertEquals(0, dbOrder.getUpdateTime().compareTo(pageResult.getList().get(0).getUpdateTime())); + } + + @Test // TODO 请修改 null 为需要的值 + public void testGetOrderList() { + // mock 数据 + String merchantOrderId = generateNo(); + String channelOrderId = generateNo(); + PayOrderDO dbOrder = randomPojo(PayOrderDO.class, o -> { // 等会查询到 + o.setMerchantId(1L); + o.setAppId(1L); + o.setChannelId(1L); + o.setChannelCode(PayChannelEnum.WX_PUB.getCode()); + o.setMerchantOrderId(merchantOrderId); + o.setSubject("灿灿子的炸弹猫"); + o.setBody("斌斌子送给灿灿子的炸弹猫"); + o.setNotifyUrl("https://hc.com/lbh"); + o.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus()); + o.setAmount(10000L); + o.setChannelFeeRate(0.01); + o.setChannelFeeAmount(1L); + o.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()); + o.setUserIp("127.0.0.1"); + o.setCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0)); + o.setExpireTime(DateUtils.buildTime(2018, 1, 1, 10, 30, 0)); + o.setSuccessTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 2)); + o.setNotifyTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15)); + o.setSuccessExtensionId(1L); + o.setRefundStatus(PayRefundTypeEnum.NO.getStatus()); + o.setRefundTimes(0); + o.setRefundAmount(0L); + o.setChannelUserId("1008611"); + o.setChannelOrderNo(channelOrderId); + o.setUpdateTime(DateUtils.buildTime(2018, 1, 1, 10, 10, 15)); + + }); + orderMapper.insert(dbOrder); + // 测试 merchantId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantId(2L))); + // 测试 appId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setAppId(2L))); + // 测试 channelId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelId(2L))); + // 测试 channelCode 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setChannelCode(PayChannelEnum.ALIPAY_APP.getCode()))); + // 测试 merchantOrderId 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setMerchantOrderId(generateNo()))); + // 测试 notifyStatus 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setNotifyStatus(PayOrderNotifyStatusEnum.FAILURE.getStatus()))); + // 测试 status 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setStatus(PayOrderStatusEnum.CLOSED.getStatus()))); + // 测试 refundStatus 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setRefundStatus(PayRefundTypeEnum.ALL.getStatus()))); + // 测试 createTime 不匹配 + orderMapper.insert(ObjectUtils.clone(dbOrder, o -> o.setCreateTime(DateUtils.buildTime(2019, 1, 1, 10, 10, + 1)))); + // 准备参数 + PayOrderExportReqVO reqVO = new PayOrderExportReqVO(); + reqVO.setMerchantId(1L); + reqVO.setAppId(1L); + reqVO.setChannelId(1L); + reqVO.setChannelCode(PayChannelEnum.WX_PUB.getCode()); + reqVO.setMerchantOrderId(merchantOrderId); + reqVO.setNotifyStatus(PayOrderNotifyStatusEnum.SUCCESS.getStatus()); + reqVO.setStatus(PayOrderStatusEnum.SUCCESS.getStatus()); + reqVO.setRefundStatus(PayRefundTypeEnum.NO.getStatus()); + reqVO.setBeginCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0)); + reqVO.setEndCreateTime(DateUtils.buildTime(2018, 1, 1, 10, 1, 0)); + + // 调用 + List list = orderService.getOrderList(reqVO); + // 断言 + assertEquals(1, list.size()); + assertPojoEquals(dbOrder, list.get(0)); + } + +} diff --git a/yudao-admin-server/src/test/resources/sql/clean.sql b/yudao-admin-server/src/test/resources/sql/clean.sql index 130a9904a..f6d6f8a2d 100644 --- a/yudao-admin-server/src/test/resources/sql/clean.sql +++ b/yudao-admin-server/src/test/resources/sql/clean.sql @@ -28,4 +28,5 @@ DELETE FROM "sys_social_user"; -- pay 开头的 DB DELETE FROM pay_merchant; DELETE FROM pay_app; -DELETE FROM pay_channel +DELETE FROM pay_channel; +delete from pay_order; diff --git a/yudao-admin-server/src/test/resources/sql/create_tables.sql b/yudao-admin-server/src/test/resources/sql/create_tables.sql index 5abf697ab..b74a015eb 100644 --- a/yudao-admin-server/src/test/resources/sql/create_tables.sql +++ b/yudao-admin-server/src/test/resources/sql/create_tables.sql @@ -1,198 +1,211 @@ -- inf 开头的 DB -CREATE TABLE IF NOT EXISTS "inf_config" ( - "id" int NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "group" varchar(50) NOT NULL, - "type" tinyint NOT NULL, - "name" varchar(100) NOT NULL DEFAULT '', - "key" varchar(100) NOT NULL DEFAULT '', - "value" varchar(500) NOT NULL DEFAULT '', - "sensitive" bit NOT NULL, - "remark" varchar(500) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS "inf_config" +( + "id" int NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "group" varchar(50) NOT NULL, + "type" tinyint NOT NULL, + "name" varchar(100) NOT NULL DEFAULT '', + "key" varchar(100) NOT NULL DEFAULT '', + "value" varchar(500) NOT NULL DEFAULT '', + "sensitive" bit NOT NULL, + "remark" varchar(500) DEFAULT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '参数配置表'; -CREATE TABLE IF NOT EXISTS "inf_file" ( - "id" varchar(188) NOT NULL, - "type" varchar(63) DEFAULT NULL, - "content" blob NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS "inf_file" +( + "id" varchar(188) NOT NULL, + "type" varchar(63) DEFAULT NULL, + "content" blob NOT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '文件表'; -CREATE TABLE IF NOT EXISTS "inf_job" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '任务编号', - "name" varchar(32) NOT NULL COMMENT '任务名称', - "status" tinyint(4) NOT NULL COMMENT '任务状态', - "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', - "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', +CREATE TABLE IF NOT EXISTS "inf_job" +( + "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '任务编号', + "name" varchar(32) NOT NULL COMMENT '任务名称', + "status" tinyint(4) NOT NULL COMMENT '任务状态', + "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', + "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', "cron_expression" varchar(32) NOT NULL COMMENT 'CRON 表达式', - "retry_count" int(11) NOT NULL DEFAULT '0' COMMENT '重试次数', - "retry_interval" int(11) NOT NULL DEFAULT '0' COMMENT '重试间隔', - "monitor_timeout" int(11) NOT NULL DEFAULT '0' 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 NOT NULL DEFAULT FALSE COMMENT '是否删除', + "retry_count" int(11) NOT NULL DEFAULT '0' COMMENT '重试次数', + "retry_interval" int(11) NOT NULL DEFAULT '0' COMMENT '重试间隔', + "monitor_timeout" int(11) NOT NULL DEFAULT '0' 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 NOT NULL DEFAULT FALSE COMMENT '是否删除', PRIMARY KEY ("id") -) COMMENT='定时任务表'; +) COMMENT ='定时任务表'; -CREATE TABLE IF NOT EXISTS "inf_job_log" ( - "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '日志编号', - "job_id" bigint(20) NOT NULL COMMENT '任务编号', - "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', - "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', - "execute_index" tinyint(4) NOT NULL DEFAULT '1' COMMENT '第几次执行', - "begin_time" datetime NOT NULL COMMENT '开始执行时间', - "end_time" datetime DEFAULT NULL COMMENT '结束执行时间', - "duration" int(11) DEFAULT NULL COMMENT '执行时长', - "status" tinyint(4) NOT NULL COMMENT '任务状态', - "result" varchar(4000) DEFAULT '' 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 FALSE COMMENT '是否删除', +CREATE TABLE IF NOT EXISTS "inf_job_log" +( + "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '日志编号', + "job_id" bigint(20) NOT NULL COMMENT '任务编号', + "handler_name" varchar(64) NOT NULL COMMENT '处理器的名字', + "handler_param" varchar(255) DEFAULT NULL COMMENT '处理器的参数', + "execute_index" tinyint(4) NOT NULL DEFAULT '1' COMMENT '第几次执行', + "begin_time" datetime NOT NULL COMMENT '开始执行时间', + "end_time" datetime DEFAULT NULL COMMENT '结束执行时间', + "duration" int(11) DEFAULT NULL COMMENT '执行时长', + "status" tinyint(4) NOT NULL COMMENT '任务状态', + "result" varchar(4000) DEFAULT '' 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 FALSE COMMENT '是否删除', PRIMARY KEY ("id") -)COMMENT='定时任务日志表'; +) COMMENT ='定时任务日志表'; -- sys 开头的 DB -CREATE TABLE IF NOT EXISTS "sys_dept" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(30) NOT NULL DEFAULT '', - "parent_id" bigint NOT NULL DEFAULT '0', - "sort" int NOT NULL DEFAULT '0', - "leader" varchar(20) DEFAULT NULL, - "phone" varchar(11) DEFAULT NULL, - "email" varchar(50) DEFAULT NULL, - "status" tinyint NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS "sys_dept" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "name" varchar(30) NOT NULL DEFAULT '', + "parent_id" bigint NOT NULL DEFAULT '0', + "sort" int NOT NULL DEFAULT '0', + "leader" varchar(20) DEFAULT NULL, + "phone" varchar(11) DEFAULT NULL, + "email" varchar(50) DEFAULT NULL, + "status" tinyint NOT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '部门表'; -CREATE TABLE IF NOT EXISTS "sys_dict_data" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "sort" int NOT NULL DEFAULT '0', - "label" varchar(100) NOT NULL DEFAULT '', - "value" varchar(100) NOT NULL DEFAULT '', - "dict_type" varchar(100) NOT NULL DEFAULT '', - "status" tinyint NOT NULL DEFAULT '0', - "remark" varchar(500) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS "sys_dict_data" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "sort" int NOT NULL DEFAULT '0', + "label" varchar(100) NOT NULL DEFAULT '', + "value" varchar(100) NOT NULL DEFAULT '', + "dict_type" varchar(100) NOT NULL DEFAULT '', + "status" tinyint NOT NULL DEFAULT '0', + "remark" varchar(500) DEFAULT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '字典数据表'; -CREATE TABLE IF NOT EXISTS "sys_role" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(30) NOT NULL, - "code" varchar(100) NOT NULL, - "sort" int NOT NULL, - "data_scope" tinyint NOT NULL DEFAULT '1', +CREATE TABLE IF NOT EXISTS "sys_role" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "name" varchar(30) NOT NULL, + "code" varchar(100) NOT NULL, + "sort" int NOT NULL, + "data_scope" tinyint NOT NULL DEFAULT '1', "data_scope_dept_ids" varchar(500) NOT NULL DEFAULT '', - "status" tinyint NOT NULL, - "type" tinyint NOT NULL, - "remark" varchar(500) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, + "status" tinyint NOT NULL, + "type" tinyint NOT NULL, + "remark" varchar(500) DEFAULT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '角色信息表'; -CREATE TABLE IF NOT EXISTS "sys_role_menu" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "role_id" bigint NOT NULL, - "menu_id" bigint NOT NULL, - "creator" varchar(64) DEFAULT '', +CREATE TABLE IF NOT EXISTS "sys_role_menu" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "role_id" bigint NOT NULL, + "menu_id" bigint NOT NULL, + "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', + "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '角色和菜单关联表'; -CREATE TABLE IF NOT EXISTS "sys_menu" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(50) NOT NULL, - "permission" varchar(100) NOT NULL DEFAULT '', - "menu_type" tinyint NOT NULL, - "sort" int NOT NULL DEFAULT '0', - "parent_id" bigint NOT NULL DEFAULT '0', - "path" varchar(200) DEFAULT '', - "icon" varchar(100) DEFAULT '#', - "component" varchar(255) DEFAULT NULL, - "status" tinyint NOT NULL DEFAULT '0', - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS "sys_menu" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "name" varchar(50) NOT NULL, + "permission" varchar(100) NOT NULL DEFAULT '', + "menu_type" tinyint NOT NULL, + "sort" int NOT NULL DEFAULT '0', + "parent_id" bigint NOT NULL DEFAULT '0', + "path" varchar(200) DEFAULT '', + "icon" varchar(100) DEFAULT '#', + "component" varchar(255) DEFAULT NULL, + "status" tinyint NOT NULL DEFAULT '0', + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '菜单权限表'; -CREATE TABLE IF NOT EXISTS "sys_user_role" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "user_id" bigint NOT NULL, - "role_id" bigint NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp DEFAULT NULL, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp DEFAULT NULL, - "deleted" bit DEFAULT FALSE, - PRIMARY KEY ("id") +CREATE TABLE IF NOT EXISTS "sys_user_role" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "user_id" bigint NOT NULL, + "role_id" bigint NOT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp DEFAULT NULL, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp DEFAULT NULL, + "deleted" bit DEFAULT FALSE, + PRIMARY KEY ("id") ) COMMENT '用户和角色关联表'; -CREATE TABLE IF NOT EXISTS "sys_dict_type" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(100) NOT NULL DEFAULT '', - "type" varchar(100) NOT NULL DEFAULT '', - "status" tinyint NOT NULL DEFAULT '0', - "remark" varchar(500) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS "sys_dict_type" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "name" varchar(100) NOT NULL DEFAULT '', + "type" varchar(100) NOT NULL DEFAULT '', + "status" tinyint NOT NULL DEFAULT '0', + "remark" varchar(500) DEFAULT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '字典类型表'; -CREATE TABLE IF NOT EXISTS `sys_user_session` ( - `id` varchar(32) NOT NULL, - `user_id` bigint DEFAULT NULL, - "user_type" tinyint NOT NULL, - `username` varchar(50) NOT NULL DEFAULT '', - `user_ip` varchar(50) DEFAULT NULL, - `user_agent` varchar(512) DEFAULT NULL, - `session_timeout` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updater` varchar(64) DEFAULT '' , - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS `sys_user_session` +( + `id` varchar(32) NOT NULL, + `user_id` bigint DEFAULT NULL, + "user_type" tinyint NOT NULL, + `username` varchar(50) NOT NULL DEFAULT '', + `user_ip` varchar(50) DEFAULT NULL, + `user_agent` varchar(512) DEFAULT NULL, + `session_timeout` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updater` varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY (`id`) ) COMMENT '用户在线 Session'; -CREATE TABLE IF NOT EXISTS "sys_post" ( +CREATE TABLE IF NOT EXISTS "sys_post" +( "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, "code" varchar(64) NOT NULL, "name" varchar(50) NOT NULL, @@ -207,39 +220,42 @@ CREATE TABLE IF NOT EXISTS "sys_post" ( PRIMARY KEY ("id") ) COMMENT '岗位信息表'; -CREATE TABLE IF NOT EXISTS "sys_notice" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "title" varchar(50) NOT NULL COMMENT '公告标题', - "content" text NOT NULL COMMENT '公告内容', - "notice_type" tinyint NOT NULL COMMENT '公告类型(1通知 2公告)', - "status" tinyint NOT NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)', - "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 NOT NULL DEFAULT 0 COMMENT '是否删除', - PRIMARY KEY("id") +CREATE TABLE IF NOT EXISTS "sys_notice" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "title" varchar(50) NOT NULL COMMENT '公告标题', + "content" text NOT NULL COMMENT '公告内容', + "notice_type" tinyint NOT NULL COMMENT '公告类型(1通知 2公告)', + "status" tinyint NOT NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)', + "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 NOT NULL DEFAULT 0 COMMENT '是否删除', + PRIMARY KEY ("id") ) COMMENT '通知公告表'; -CREATE TABLE IF NOT EXISTS `sys_login_log` ( +CREATE TABLE IF NOT EXISTS `sys_login_log` +( `id` bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY, `log_type` bigint(4) NOT NULL, - "user_id" bigint not null default '0', - "user_type" tinyint NOT NULL, + "user_id" bigint not null default '0', + "user_type" tinyint NOT NULL, `trace_id` varchar(64) NOT NULL DEFAULT '', `username` varchar(50) NOT NULL DEFAULT '', `result` tinyint(4) NOT NULL, `user_ip` varchar(50) NOT NULL, `user_agent` varchar(512) NOT NULL, - `creator` varchar(64) DEFAULT '', + `creator` varchar(64) DEFAULT '', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updater` varchar(64) DEFAULT '', + `updater` varchar(64) DEFAULT '', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted` bit(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) COMMENT ='系统访问记录'; -CREATE TABLE IF NOT EXISTS `sys_operate_log` ( +CREATE TABLE IF NOT EXISTS `sys_operate_log` +( `id` bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY, `trace_id` varchar(64) NOT NULL DEFAULT '', `user_id` bigint(20) NOT NULL, @@ -259,242 +275,290 @@ CREATE TABLE IF NOT EXISTS `sys_operate_log` ( `result_code` int(11) NOT NULL DEFAULT '0', `result_msg` varchar(512) DEFAULT '', `result_data` varchar(4000) DEFAULT '', - `creator` varchar(64) DEFAULT '', + `creator` varchar(64) DEFAULT '', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `updater` varchar(64) DEFAULT '', + `updater` varchar(64) DEFAULT '', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `deleted` bit(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) COMMENT ='操作日志记录'; -CREATE TABLE IF NOT EXISTS "sys_user" ( - "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, - "username" varchar(30) not null, - "password" varchar(100) not null default '', - "nickname" varchar(30) not null, - "remark" varchar(500) default null, - "dept_id" bigint default null, - "post_ids" varchar(255) default null, - "email" varchar(50) default '', - "mobile" varchar(11) default '', - "sex" tinyint default '0', - "avatar" varchar(100) default '', - "status" tinyint not null default '0', - "login_ip" varchar(50) default '', - "login_date" timestamp default null, - "creator" varchar(64) default '', - "create_time" timestamp not null default current_timestamp, - "updater" varchar(64) default '', - "update_time" timestamp not null default current_timestamp, - "deleted" bit not null default false, +CREATE TABLE IF NOT EXISTS "sys_user" +( + "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, + "username" varchar(30) not null, + "password" varchar(100) not null default '', + "nickname" varchar(30) not null, + "remark" varchar(500) default null, + "dept_id" bigint default null, + "post_ids" varchar(255) default null, + "email" varchar(50) default '', + "mobile" varchar(11) default '', + "sex" tinyint default '0', + "avatar" varchar(100) default '', + "status" tinyint not null default '0', + "login_ip" varchar(50) default '', + "login_date" timestamp default null, + "creator" varchar(64) default '', + "create_time" timestamp not null default current_timestamp, + "updater" varchar(64) default '', + "update_time" timestamp not null default current_timestamp, + "deleted" bit not null default false, primary key ("id") ) comment '用户信息表'; -CREATE TABLE IF NOT EXISTS "inf_api_access_log" ( - "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, - "trace_id" varchar(64) not null default '', - "user_id" bigint not null default '0', - "user_type" tinyint not null default '0', - "application_name" varchar(50) not null, - "request_method" varchar(16) not null default '', - "request_url" varchar(255) not null default '', - "request_params" varchar(8000) not null default '', - "user_ip" varchar(50) not null, - "user_agent" varchar(512) not null, - "begin_time" timestamp not null, - "end_time" timestamp not null, - "duration" integer not null, - "result_code" integer not null default '0', - "result_msg" varchar(512) default '', - "creator" varchar(64) default '', - "create_time" timestamp not null default current_timestamp, - "updater" varchar(64) default '', - "update_time" timestamp not null default current_timestamp, - "deleted" bit not null default false, - primary key ("id") +CREATE TABLE IF NOT EXISTS "inf_api_access_log" +( + "id" bigint not null GENERATED BY DEFAULT AS IDENTITY, + "trace_id" varchar(64) not null default '', + "user_id" bigint not null default '0', + "user_type" tinyint not null default '0', + "application_name" varchar(50) not null, + "request_method" varchar(16) not null default '', + "request_url" varchar(255) not null default '', + "request_params" varchar(8000) not null default '', + "user_ip" varchar(50) not null, + "user_agent" varchar(512) not null, + "begin_time" timestamp not null, + "end_time" timestamp not null, + "duration" integer not null, + "result_code" integer not null default '0', + "result_msg" varchar(512) default '', + "creator" varchar(64) default '', + "create_time" timestamp not null default current_timestamp, + "updater" varchar(64) default '', + "update_time" timestamp not null default current_timestamp, + "deleted" bit not null default false, + primary key ("id") ) COMMENT 'API 访问日志表'; -CREATE TABLE IF NOT EXISTS "inf_api_error_log" ( - "id" integer not null GENERATED BY DEFAULT AS IDENTITY, - "trace_id" varchar(64) not null, - "user_id" bigint not null default '0', - "user_type" tinyint not null default '0', - "application_name" varchar(50) not null, - "request_method" varchar(16) not null, - "request_url" varchar(255) not null, - "request_params" varchar(8000) not null, - "user_ip" varchar(50) not null, - "user_agent" varchar(512) not null, - "exception_time" timestamp not null, - "exception_name" varchar(128) not null default '', - "exception_message" clob not null, - "exception_root_cause_message" clob not null, - "exception_stack_trace" clob not null, - "exception_class_name" varchar(512) not null, - "exception_file_name" varchar(512) not null, - "exception_method_name" varchar(512) not null, - "exception_line_number" integer not null, - "process_status" tinyint not null, - "process_time" timestamp default null, - "process_user_id" bigint default '0', - "creator" varchar(64) default '', - "create_time" timestamp not null default current_timestamp, - "updater" varchar(64) default '', - "update_time" timestamp not null default current_timestamp, - "deleted" bit not null default false, - primary key ("id") +CREATE TABLE IF NOT EXISTS "inf_api_error_log" +( + "id" integer not null GENERATED BY DEFAULT AS IDENTITY, + "trace_id" varchar(64) not null, + "user_id" bigint not null default '0', + "user_type" tinyint not null default '0', + "application_name" varchar(50) not null, + "request_method" varchar(16) not null, + "request_url" varchar(255) not null, + "request_params" varchar(8000) not null, + "user_ip" varchar(50) not null, + "user_agent" varchar(512) not null, + "exception_time" timestamp not null, + "exception_name" varchar(128) not null default '', + "exception_message" clob not null, + "exception_root_cause_message" clob not null, + "exception_stack_trace" clob not null, + "exception_class_name" varchar(512) not null, + "exception_file_name" varchar(512) not null, + "exception_method_name" varchar(512) not null, + "exception_line_number" integer not null, + "process_status" tinyint not null, + "process_time" timestamp default null, + "process_user_id" bigint default '0', + "creator" varchar(64) default '', + "create_time" timestamp not null default current_timestamp, + "updater" varchar(64) default '', + "update_time" timestamp not null default current_timestamp, + "deleted" bit not null default false, + primary key ("id") ) COMMENT '系统异常日志'; -CREATE TABLE IF NOT EXISTS "sys_sms_channel" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "signature" varchar(10) NOT NULL, - "code" varchar(63) NOT NULL, - "status" tinyint NOT NULL, - "remark" varchar(255) DEFAULT NULL, - "api_key" varchar(63) NOT NULL, - "api_secret" varchar(63) DEFAULT NULL, - "callback_url" varchar(255) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") +CREATE TABLE IF NOT EXISTS "sys_sms_channel" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "signature" varchar(10) NOT NULL, + "code" varchar(63) NOT NULL, + "status" tinyint NOT NULL, + "remark" varchar(255) DEFAULT NULL, + "api_key" varchar(63) NOT NULL, + "api_secret" varchar(63) DEFAULT NULL, + "callback_url" varchar(255) DEFAULT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") ) COMMENT '短信渠道'; -CREATE TABLE IF NOT EXISTS "sys_sms_template" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "type" tinyint NOT NULL, - "status" tinyint NOT NULL, - "code" varchar(63) NOT NULL, - "name" varchar(63) NOT NULL, - "content" varchar(255) NOT NULL, - "params" varchar(255) NOT NULL, - "remark" varchar(255) DEFAULT NULL, - "api_template_id" varchar(63) NOT NULL, - "channel_id" bigint NOT NULL, - "channel_code" varchar(63) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, +CREATE TABLE IF NOT EXISTS "sys_sms_template" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "type" tinyint NOT NULL, + "status" tinyint NOT NULL, + "code" varchar(63) NOT NULL, + "name" varchar(63) NOT NULL, + "content" varchar(255) NOT NULL, + "params" varchar(255) NOT NULL, + "remark" varchar(255) DEFAULT NULL, + "api_template_id" varchar(63) NOT NULL, + "channel_id" bigint NOT NULL, + "channel_code" varchar(63) NOT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '短信模板'; -CREATE TABLE IF NOT EXISTS "sys_sms_log" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "channel_id" bigint NOT NULL, - "channel_code" varchar(63) NOT NULL, - "template_id" bigint NOT NULL, - "template_code" varchar(63) NOT NULL, - "template_type" tinyint NOT NULL, - "template_content" varchar(255) NOT NULL, - "template_params" varchar(255) NOT NULL, - "api_template_id" varchar(63) NOT NULL, - "mobile" varchar(11) NOT NULL, - "user_id" bigint DEFAULT '0', - "user_type" tinyint DEFAULT '0', - "send_status" tinyint NOT NULL DEFAULT '0', - "send_time" timestamp DEFAULT NULL, - "send_code" int DEFAULT NULL, - "send_msg" varchar(255) DEFAULT NULL, - "api_send_code" varchar(63) DEFAULT NULL, - "api_send_msg" varchar(255) DEFAULT NULL, - "api_request_id" varchar(255) DEFAULT NULL, - "api_serial_no" varchar(255) DEFAULT NULL, - "receive_status" tinyint NOT NULL DEFAULT '0', - "receive_time" timestamp DEFAULT NULL, - "api_receive_code" varchar(63) DEFAULT NULL, - "api_receive_msg" varchar(255) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") +CREATE TABLE IF NOT EXISTS "sys_sms_log" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "channel_id" bigint NOT NULL, + "channel_code" varchar(63) NOT NULL, + "template_id" bigint NOT NULL, + "template_code" varchar(63) NOT NULL, + "template_type" tinyint NOT NULL, + "template_content" varchar(255) NOT NULL, + "template_params" varchar(255) NOT NULL, + "api_template_id" varchar(63) NOT NULL, + "mobile" varchar(11) NOT NULL, + "user_id" bigint DEFAULT '0', + "user_type" tinyint DEFAULT '0', + "send_status" tinyint NOT NULL DEFAULT '0', + "send_time" timestamp DEFAULT NULL, + "send_code" int DEFAULT NULL, + "send_msg" varchar(255) DEFAULT NULL, + "api_send_code" varchar(63) DEFAULT NULL, + "api_send_msg" varchar(255) DEFAULT NULL, + "api_request_id" varchar(255) DEFAULT NULL, + "api_serial_no" varchar(255) DEFAULT NULL, + "receive_status" tinyint NOT NULL DEFAULT '0', + "receive_time" timestamp DEFAULT NULL, + "api_receive_code" varchar(63) DEFAULT NULL, + "api_receive_msg" varchar(255) DEFAULT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") ) COMMENT '短信日志'; -CREATE TABLE IF NOT EXISTS "sys_error_code" ( - "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "type" tinyint NOT NULL DEFAULT '0', - "application_name" varchar(50) NOT NULL, - "code" int NOT NULL DEFAULT '0', - "message" varchar(512) NOT NULL DEFAULT '', - "memo" varchar(512) DEFAULT '', - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") +CREATE TABLE IF NOT EXISTS "sys_error_code" +( + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "type" tinyint NOT NULL DEFAULT '0', + "application_name" varchar(50) NOT NULL, + "code" int NOT NULL DEFAULT '0', + "message" varchar(512) NOT NULL DEFAULT '', + "memo" varchar(512) DEFAULT '', + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") ) COMMENT '错误码表'; -CREATE TABLE IF NOT EXISTS "sys_social_user" ( - "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "user_id" bigint NOT NULL, - "user_type" tinyint NOT NULL DEFAULT '0', - "type" tinyint NOT NULL, - "openid" varchar(32) NOT NULL, - "token" varchar(256) DEFAULT NULL, - "union_id" varchar(32) NOT NULL, - "raw_token_info" varchar(1024) NOT NULL, - "nickname" varchar(32) NOT NULL, - "avatar" varchar(255) DEFAULT NULL, - "raw_user_info" varchar(1024) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updater" varchar(64) DEFAULT '', - "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - "deleted" bit NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") +CREATE TABLE IF NOT EXISTS "sys_social_user" +( + "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "user_id" bigint NOT NULL, + "user_type" tinyint NOT NULL DEFAULT '0', + "type" tinyint NOT NULL, + "openid" varchar(32) NOT NULL, + "token" varchar(256) DEFAULT NULL, + "union_id" varchar(32) NOT NULL, + "raw_token_info" varchar(1024) NOT NULL, + "nickname" varchar(32) NOT NULL, + "avatar" varchar(255) DEFAULT NULL, + "raw_user_info" varchar(1024) NOT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + "deleted" bit NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") ) COMMENT '社交用户'; -CREATE TABLE IF NOT EXISTS "pay_merchant" ( +CREATE TABLE IF NOT EXISTS "pay_merchant" +( "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "no" varchar(32) NOT NULL, - "name" varchar(64) NOT NULL, - "short_name" varchar(64) NOT NULL, - "status" tinyint NOT NULL, - "remark" varchar(255) DEFAULT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP , - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit(1) NOT NULL DEFAULT FALSE, + "no" varchar(32) NOT NULL, + "name" varchar(64) NOT NULL, + "short_name" varchar(64) NOT NULL, + "status" tinyint NOT NULL, + "remark" varchar(255) DEFAULT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit(1) NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") -) COMMENT '支付商户信息'; +) COMMENT '支付商户信息'; -CREATE TABLE IF NOT EXISTS "pay_app" ( - "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "name" varchar(64) NOT NULL, - "status" tinyint NOT NULL, - "remark" varchar(255) DEFAULT NULL, - `pay_notify_url` varchar(1024) NOT NULL, - `refund_notify_url`varchar(1024) NOT NULL, - `merchant_id`bigint(20) NOT NULL, - "creator" varchar(64) DEFAULT '', - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP , - "updater" varchar(64) DEFAULT '', - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit(1) NOT NULL DEFAULT FALSE, - PRIMARY KEY ("id") +CREATE TABLE IF NOT EXISTS "pay_app" +( + "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, + "name" varchar(64) NOT NULL, + "status" tinyint NOT NULL, + "remark" varchar(255) DEFAULT NULL, + `pay_notify_url` varchar(1024) NOT NULL, + `refund_notify_url` varchar(1024) NOT NULL, + `merchant_id` bigint(20) NOT NULL, + "creator" varchar(64) DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit(1) NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") ) COMMENT = '支付应用信息'; -CREATE TABLE "pay_channel" ( +CREATE TABLE "pay_channel" +( "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, - "code" varchar(32) NOT NULL , - "status" tinyint(4) NOT NULL , - "remark" varchar(255) DEFAULT NULL , - "fee_rate" double NOT NULL DEFAULT 0 , - "merchant_id" bigint(20) NOT NULL , - "app_id" bigint(20) NOT NULL , - "config" varchar(10240) NOT NULL , - "creator" varchar(64) NULL DEFAULT '' , - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP , - "updater" varchar(64) NULL DEFAULT '' , - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - "deleted" bit(1) NOT NULL DEFAULT FALSE, + "code" varchar(32) NOT NULL, + "status" tinyint(4) NOT NULL, + "remark" varchar(255) DEFAULT NULL, + "fee_rate" double NOT NULL DEFAULT 0, + "merchant_id" bigint(20) NOT NULL, + "app_id" bigint(20) NOT NULL, + "config" varchar(10240) NOT NULL, + "creator" varchar(64) NULL DEFAULT '', + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updater" varchar(64) NULL DEFAULT '', + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + "deleted" bit(1) NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT = '支付渠道'; +CREATE TABLE `pay_order` +( + "id" number NOT NULL GENERATED BY DEFAULT AS IDENTITY, + `merchant_id` bigint(20) NOT NULL, + `app_id` bigint(20) NOT NULL, + `channel_id` bigint(20) DEFAULT NULL, + `channel_code` varchar(32) DEFAULT NULL, + `merchant_order_id` varchar(64) NOT NULL, + `subject` varchar(32) NOT NULL, + `body` varchar(128) NOT NULL, + `notify_url` varchar(1024) NOT NULL, + `notify_status` tinyint(4) NOT NULL, + `amount` bigint(20) NOT NULL, + `channel_fee_rate` double DEFAULT 0, + `channel_fee_amount` bigint(20) DEFAULT 0, + `status` tinyint(4) NOT NULL, + `user_ip` varchar(50) NOT NULL, + `expire_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, + `success_time` datetime(0) DEFAULT CURRENT_TIMESTAMP, + `notify_time` datetime(0) DEFAULT CURRENT_TIMESTAMP, + `success_extension_id` bigint(20) DEFAULT NULL COMMENT '支付成功的订单拓展单编号', + `refund_status` tinyint(4) NOT NULL, + `refund_times` tinyint(4) NOT NULL, + `refund_amount` bigint(20) NOT NULL, + `channel_user_id` varchar(255) DEFAULT NULL, + `channel_order_no` varchar(64) DEFAULT NULL, + `creator` varchar(64) DEFAULT '', + `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP, + `updater` varchar(64) DEFAULT '' , + `update_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `deleted` bit(1) NOT NULL DEFAULT FALSE, + PRIMARY KEY ("id") +) COMMENT = '支付订单'; + + + + diff --git a/yudao-admin-ui/package.json b/yudao-admin-ui/package.json index 3acd6dbaf..3443332f3 100644 --- a/yudao-admin-ui/package.json +++ b/yudao-admin-ui/package.json @@ -42,7 +42,7 @@ "clipboard": "2.0.6", "core-js": "3.8.1", "echarts": "4.9.0", - "element-ui": "2.15.0", + "element-ui": "^2.15.6", "file-saver": "2.0.4", "fuse.js": "6.4.3", "highlight.js": "9.18.5", diff --git a/yudao-admin-ui/src/api/pay/app.js b/yudao-admin-ui/src/api/pay/app.js index 788a959ee..b8deeb1a7 100644 --- a/yudao-admin-ui/src/api/pay/app.js +++ b/yudao-admin-ui/src/api/pay/app.js @@ -65,3 +65,14 @@ export function exportAppExcel(query) { responseType: 'blob' }) } + +// 根据商ID称搜索应用列表 +export function getAppListByMerchantId(merchantId) { + return request({ + url: '/pay/app/list-merchant-id', + params:{ + merchantId:merchantId + }, + method: 'get' + }) +} diff --git a/yudao-admin-ui/src/api/pay/order.js b/yudao-admin-ui/src/api/pay/order.js new file mode 100755 index 000000000..bff95bca7 --- /dev/null +++ b/yudao-admin-ui/src/api/pay/order.js @@ -0,0 +1,54 @@ +import request from '@/utils/request' + +// 创建支付订单 +export function createOrder(data) { + return request({ + url: '/pay/order/create', + method: 'post', + data: data + }) +} + +// 更新支付订单 +export function updateOrder(data) { + return request({ + url: '/pay/order/update', + method: 'put', + data: data + }) +} + +// 删除支付订单 +export function deleteOrder(id) { + return request({ + url: '/pay/order/delete?id=' + id, + method: 'delete' + }) +} + +// 获得支付订单 +export function getOrder(id) { + return request({ + url: '/pay/order/get?id=' + id, + method: 'get' + }) +} + +// 获得支付订单分页 +export function getOrderPage(query) { + return request({ + url: '/pay/order/page', + method: 'get', + params: query + }) +} + +// 导出支付订单 Excel +export function exportOrderExcel(query) { + return request({ + url: '/pay/order/export-excel', + method: 'get', + params: query, + responseType: 'blob' + }) +} diff --git a/yudao-admin-ui/src/assets/icons/svg/Mockitt-win32-x64-zh-1.1.7.exe b/yudao-admin-ui/src/assets/icons/svg/Mockitt-win32-x64-zh-1.1.7.exe deleted file mode 100644 index 0f2d4a27d..000000000 Binary files a/yudao-admin-ui/src/assets/icons/svg/Mockitt-win32-x64-zh-1.1.7.exe and /dev/null differ diff --git a/yudao-admin-ui/src/assets/icons/svg/order.svg b/yudao-admin-ui/src/assets/icons/svg/order.svg new file mode 100644 index 000000000..676ce3c59 --- /dev/null +++ b/yudao-admin-ui/src/assets/icons/svg/order.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/yudao-admin-ui/src/utils/constants.js b/yudao-admin-ui/src/utils/constants.js index a22f9e063..80411ea13 100644 --- a/yudao-admin-ui/src/utils/constants.js +++ b/yudao-admin-ui/src/utils/constants.js @@ -91,6 +91,9 @@ export const SysUserSocialTypeEnum = { } } +/** + * 支付渠道枚举 + */ export const PayChannelEnum = { WX_PUB: { "code": "wx_pub", @@ -122,7 +125,65 @@ export const PayChannelEnum = { }, } +/** + * 支付类型枚举 + */ export const PayType = { WECHAT: "WECHAT", ALIPAY: "ALIPAY" } + +/** + * 支付订单状态枚举 + */ +export const payOrderStatusEnum = { + WAITING: { + status: 0, + name: '未支付' + }, + SUCCESS: { + status: 10, + name: '已支付' + }, + CLOSED: { + status: 20, + name: '未支付' + } +} + +/** + * 支付订单回调状态枚举 + */ +export const payOrderNotifyStatusEnum = { + NO: { + status: 0, + name: '未通知' + }, + SUCCESS: { + status: 10, + name: '通知成功' + }, + FAILURE: { + status: 20, + name: '通知失败' + } +} + +/** + * 支付订单退款状态枚举 + */ +export const payOrderRefundStatusEnum = { + NO: { + status: 0, + name: '未退款' + }, + SOME: { + status: 10, + name: '部分退款' + }, + ALL: { + status: 20, + name: '全部退款' + } +} + diff --git a/yudao-admin-ui/src/utils/dict.js b/yudao-admin-ui/src/utils/dict.js index 112fae669..1e00c1167 100644 --- a/yudao-admin-ui/src/utils/dict.js +++ b/yudao-admin-ui/src/utils/dict.js @@ -45,6 +45,14 @@ export const DICT_TYPE = { PAY_CHANNEL_ALIPAY_MODE:'pay_channel_alipay_mode', // 支付宝网关地址 PAY_CHANNEL_ALIPAY_SERVER_TYPE:'pay_channel_alipay_server_type', + // 支付渠道编码类型 + PAY_CHANNEL_CODE_TYPE: 'pay_channel_code_type', + // 商户支付订单回调状态 + PAY_ORDER_NOTIFY_STATUS: 'pay_order_notify_status', + // 商户支付订单状态 + PAY_ORDER_STATUS: 'pay_order_status', + // 商户支付订单退款状态 + PAY_ORDER_REFUND_STATUS: 'pay_order_refund_status', } /** diff --git a/yudao-admin-ui/src/utils/ruoyi.js b/yudao-admin-ui/src/utils/ruoyi.js index 82f8aecc5..b25bb755e 100644 --- a/yudao-admin-ui/src/utils/ruoyi.js +++ b/yudao-admin-ui/src/utils/ruoyi.js @@ -7,66 +7,68 @@ const baseURL = process.env.VUE_APP_BASE_API // 日期格式化 export function parseTime(time, pattern) { - if (arguments.length === 0 || !time) { - return null - } - const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' - let date - if (typeof time === 'object') { - date = time - } else { - if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { - time = parseInt(time) - } else if (typeof time === 'string') { - time = time.replace(new RegExp(/-/gm), '/'); - } - if ((typeof time === 'number') && (time.toString().length === 10)) { - time = time * 1000 - } - date = new Date(time) - } - const formatObj = { - y: date.getFullYear(), - m: date.getMonth() + 1, - d: date.getDate(), - h: date.getHours(), - i: date.getMinutes(), - s: date.getSeconds(), - a: date.getDay() - } - const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { - let value = formatObj[key] - // Note: getDay() returns 0 on Sunday - if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } - if (result.length > 0 && value < 10) { - value = '0' + value - } - return value || 0 - }) - return time_str + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/'); + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { + return ['日', '一', '二', '三', '四', '五', '六'][value] + } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str } // 表单重置 export function resetForm(refName) { - if (this.$refs[refName]) { - this.$refs[refName].resetFields(); - } + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } } // 添加日期范围 export function addDateRange(params, dateRange, propName) { const search = params; search.params = {}; - if (null != dateRange && '' !== dateRange) { - if (typeof(propName) === "undefined") { - search["beginTime"] = dateRange[0]; - search["endTime"] = dateRange[1]; - } else { - search["begin" + propName] = dateRange[0]; - search["end" + propName] = dateRange[1]; - } - } - return search; + if (null != dateRange && '' !== dateRange) { + if (typeof (propName) === "undefined") { + search["beginTime"] = dateRange[0]; + search["endTime"] = dateRange[1]; + } else { + search["begin" + propName] = dateRange[0]; + search["end" + propName] = dateRange[1]; + } + } + return search; } /** @@ -98,21 +100,21 @@ export function addBeginAndEndTime(params, dateRange, propName) { return params; } -// 回显数据字典 +// 回显数据字典 原若依所保留,请使用 dict.js 中的新方法 export function selectDictLabel(datas, value) { - var actions = []; - Object.keys(datas).some((key) => { - if (datas[key].dictValue == ('' + value)) { - actions.push(datas[key].dictLabel); - return true; - } - }) - return actions.join(''); + var actions = []; + Object.keys(datas).some((key) => { + if (datas[key].dictValue == ('' + value)) { + actions.push(datas[key].dictLabel); + return true; + } + }) + return actions.join(''); } // 通用下载方法 export function download(fileName) { - window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true; + window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true; } // 下载 Excel 方法 @@ -147,7 +149,7 @@ function download0(data, fileName, mineType) { window.URL = window.URL || window.webkitURL; let href = URL.createObjectURL(blob); let downA = document.createElement("a"); - downA.href = href; + downA.href = href; downA.download = fileName; downA.click(); // 销毁超连接 @@ -156,24 +158,24 @@ function download0(data, fileName, mineType) { // 字符串格式化(%s ) export function sprintf(str) { - var args = arguments, flag = true, i = 1; - str = str.replace(/%s/g, function () { - var arg = args[i++]; - if (typeof arg === 'undefined') { - flag = false; - return ''; - } - return arg; - }); - return flag ? str : ''; + var args = arguments, flag = true, i = 1; + str = str.replace(/%s/g, function () { + var arg = args[i++]; + if (typeof arg === 'undefined') { + flag = false; + return ''; + } + return arg; + }); + return flag ? str : ''; } // 转换字符串,undefined,null等转化为"" export function praseStrEmpty(str) { - if (!str || str == "undefined" || str == "null") { - return ""; - } - return str; + if (!str || str == "undefined" || str == "null") { + return ""; + } + return str; } /** @@ -185,21 +187,42 @@ export function praseStrEmpty(str) { * @param {*} rootId 根Id 默认 0 */ export function handleTree(data, id, parentId, children, rootId) { - id = id || 'id' - parentId = parentId || 'parentId' - children = children || 'children' - rootId = rootId || Math.min.apply(Math, data.map(item => { return item[parentId] })) || 0 - //对源数据深度克隆 - const cloneData = JSON.parse(JSON.stringify(data)) - //循环所有项 - const treeData = cloneData.filter(father => { - let branchArr = cloneData.filter(child => { - //返回每一项的子级数组 - return father[id] === child[parentId] - }); - branchArr.length > 0 ? father.children = branchArr : ''; - //返回第一层 - return father[parentId] === rootId; - }); - return treeData !== '' ? treeData : data; + id = id || 'id' + parentId = parentId || 'parentId' + children = children || 'children' + rootId = rootId || Math.min.apply(Math, data.map(item => { + return item[parentId] + })) || 0 + //对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + //循环所有项 + const treeData = cloneData.filter(father => { + let branchArr = cloneData.filter(child => { + //返回每一项的子级数组 + return father[id] === child[parentId] + }); + branchArr.length > 0 ? father.children = branchArr : ''; + //返回第一层 + return father[parentId] === rootId; + }); + return treeData !== '' ? treeData : data; +} + +/** + * 获取当前时间 + * @param timeStr 时分秒 字符串 格式为 xx:xx:xx + */ +export function getNowDateTime(timeStr) { + let now = new Date(); + let year = now.getFullYear(); //得到年份 + let month = (now.getMonth() + 1).toString().padStart(2, "0"); //得到月份 + let day = now.getDate().toString().padStart(2, "0"); //得到日期 + + if (timeStr != null) { + return `${year}-${month}-${day} ${timeStr}`; + } + let hours = now.getHours().toString().padStart(2, "0") // 得到小时; + let minutes = now.getMinutes().toString().padStart(2, "0") // 得到分钟; + let seconds = now.getSeconds().toString().padStart(2, "0") // 得到秒; + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } diff --git a/yudao-admin-ui/src/views/pay/app/index.vue b/yudao-admin-ui/src/views/pay/app/index.vue index 67f7f3b6f..03c6f043d 100644 --- a/yudao-admin-ui/src/views/pay/app/index.vue +++ b/yudao-admin-ui/src/views/pay/app/index.vue @@ -195,7 +195,6 @@ :value="item.id"> - @@ -221,7 +220,6 @@ 取 消 - @@ -312,6 +310,7 @@ export default { }, created() { this.getList(); + this.handleGetMerchantListByName(null); }, methods: { /** 查询列表 */ diff --git a/yudao-admin-ui/src/views/pay/merchant/index.vue b/yudao-admin-ui/src/views/pay/merchant/index.vue index f57b59f96..bd05f965f 100644 --- a/yudao-admin-ui/src/views/pay/merchant/index.vue +++ b/yudao-admin-ui/src/views/pay/merchant/index.vue @@ -170,6 +170,7 @@ export default { this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); // 执行查询 getMerchantPage(params).then(response => { + console.log(response.data); this.list = response.data.list; this.total = response.data.total; this.loading = false; diff --git a/yudao-admin-ui/src/views/pay/order/index.vue b/yudao-admin-ui/src/views/pay/order/index.vue new file mode 100755 index 000000000..9d7fd23e7 --- /dev/null +++ b/yudao-admin-ui/src/views/pay/order/index.vue @@ -0,0 +1,518 @@ + + + + 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 index 92347647a..5a6b8431a 100644 --- 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 @@ -16,7 +16,7 @@ import java.util.Map; * * @author 芋道源码 */ -@TableName("pay_order_extension") +@TableName(value = "pay_order_extension",autoResultMap = true) @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) 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 index dea1a5c0c..50229b140 100644 --- 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 @@ -2,7 +2,6 @@ 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; @@ -18,7 +17,6 @@ import cn.iocoder.yudao.coreservice.modules.pay.service.merchant.PayChannelCoreS 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; @@ -98,6 +96,7 @@ public class PayOrderCoreServiceImpl implements PayOrderCoreService { // 订单相关字段 order.setStatus(PayOrderStatusEnum.WAITING.getStatus()); // 退款相关字段 + // todo @芋艿 创建支付的订单的退款状态枚举是不是有问题,应该是 PayRefundTypeEnum 吧 您这填写的是 PayOrderNotifyStatusEnum 回调状态枚举 order.setRefundStatus(PayOrderNotifyStatusEnum.NO.getStatus()) .setRefundTimes(0).setRefundAmount(0L); payOrderCoreMapper.insert(order);