diff --git a/_config/sql/2.0.2/2.0.2.update.data.sql b/_config/sql/2.0.2/2.0.2.update.data.sql new file mode 100644 index 000000000..f2548343e --- /dev/null +++ b/_config/sql/2.0.2/2.0.2.update.data.sql @@ -0,0 +1,69 @@ +SET FOREIGN_KEY_CHECKS = 0; + +INSERT INTO `base_dict`(`id`, `code`, `name`, `enable`, `group_tag`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1763588034467713024, 'ReconcileDiffType', '对账差异类型', b'1', '支付', '', 1399985191002447872, '2024-03-01 23:32:08', 1399985191002447872, '2024-03-01 23:32:08', 0, 0); + +UPDATE `base_dict` SET `code` = 'ReconcileTrade', `name` = '支付对账交易类型', `enable` = b'1', `group_tag` = '支付', `remark` = '', `creator` = 1399985191002447872, `create_time` = '2024-01-23 09:59:00', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-03-01 23:31:32', `deleted` = 0, `version` = 1 WHERE `id` = 1749612665392541696; + +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1763588081838182400, 1763588034467713024, 'ReconcileDiffType', 'local_not_exists', '本地订单不存在', b'1', 0.00, '', 1399985191002447872, '2024-03-01 23:32:19', 1399985191002447872, '2024-03-01 23:32:19', 0, 0); + +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1763588123143688192, 1763588034467713024, 'ReconcileDiffType', 'remote_not_exists', '远程订单不存在', b'1', 1.00, '', 1399985191002447872, '2024-03-01 23:32:29', 1399985191002447872, '2024-03-01 23:32:29', 0, 0); + +INSERT INTO `base_dict_item`(`id`, `dict_id`, `dict_code`, `code`, `name`, `enable`, `sort_no`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1763588174695878656, 1763588034467713024, 'ReconcileDiffType', 'not_match', '订单信息不一致', b'1', 2.00, '', 1399985191002447872, '2024-03-01 23:32:41', 1399985191002447872, '2024-03-01 23:32:48', 0, 1); + +UPDATE `base_dict_item` SET `dict_id` = 1749612665392541696, `dict_code` = 'ReconcileTrade', `code` = 'pay', `name` = '支付', `enable` = b'1', `sort_no` = 1.00, `remark` = '', `creator` = 1399985191002447872, `create_time` = '2024-01-23 09:59:11', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-01-23 09:59:11', `deleted` = 0, `version` = 0 WHERE `id` = 1749612708363186176; + +UPDATE `base_dict_item` SET `dict_id` = 1749612665392541696, `dict_code` = 'ReconcileTrade', `code` = 'refund', `name` = '退款', `enable` = b'1', `sort_no` = 2.00, `remark` = '', `creator` = 1399985191002447872, `create_time` = '2024-01-23 09:59:23', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-01-23 09:59:23', `deleted` = 0, `version` = 0 WHERE `id` = 1749612758531256320; + +UPDATE `base_dict_item` SET `dict_id` = 1749612665392541696, `dict_code` = 'ReconcileTrade', `code` = 'revoked', `name` = '撤销', `enable` = b'1', `sort_no` = 3.00, `remark` = '', `creator` = 1399985191002447872, `create_time` = '2024-01-23 09:59:32', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-01-23 09:59:32', `deleted` = 0, `version` = 0 WHERE `id` = 1749612797680889856; + +INSERT INTO `iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1764638353289027584, 'dax-pay', 1749262518385082368, '对账单', 'ReconcileOrderList', NULL, b'0', '', b'0', b'0', 'payment/order/reconcile/order/ReconcileOrderList.vue', NULL, '/pay/order/reconcile/list', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:05:43', 1399985191002447872, '2024-03-04 21:07:14', 1, 0); + +INSERT INTO `iam_perm_menu`(`id`, `client_code`, `parent_id`, `title`, `name`, `perm_code`, `effect`, `icon`, `hidden`, `hide_children_in_menu`, `component`, `component_name`, `path`, `redirect`, `sort_no`, `menu_type`, `leaf`, `keep_alive`, `target_outside`, `hidden_header_content`, `admin`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1764638678821543936, 'dax-pay', 1749262518385082368, '差异单', 'ReconcileDiffList', NULL, b'0', '', b'1', b'0', 'payment/order/reconcile/diff/ReconcileDiffList.vue', NULL, '/pay/order/reconcile/diff', '', 0, 1, NULL, b'1', b'0', b'0', b'0', NULL, 1399985191002447872, '2024-03-04 21:07:01', 1399985191002447872, '2024-03-05 12:49:19', 2, 0); + +UPDATE `iam_perm_menu` SET `client_code` = 'dax-pay', `parent_id` = 1744642856348520448, `title` = '对账订单', `name` = 'ReconcileOrder', `perm_code` = NULL, `effect` = b'0', `icon` = '', `hidden` = b'0', `hide_children_in_menu` = b'0', `component` = 'Layout', `component_name` = NULL, `path` = '/pay/order/reconcile', `redirect` = '', `sort_no` = 0, `menu_type` = 1, `leaf` = NULL, `keep_alive` = b'1', `target_outside` = b'0', `hidden_header_content` = b'0', `admin` = b'0', `remark` = NULL, `creator` = 1399985191002447872, `create_time` = '2024-01-22 10:47:39', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-03-04 21:06:18', `version` = 1, `deleted` = 0 WHERE `id` = 1749262518385082368; + +DELETE FROM `iam_perm_path` WHERE `id` = 1757297527147974657; + +DELETE FROM `iam_perm_path` WHERE `id` = 1757297527147974712; + +DELETE FROM `iam_perm_path` WHERE `id` = 1757297527152169074; + +DELETE FROM `iam_perm_path` WHERE `id` = 1757297527152169137; + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1764663810424303616, 'ReconcileOrderController#pageDiff', '对账差异分页', 'GET', '/order/reconcile/diff/page', '对账控制器', b'1', b'1', '对账控制器 对账差异分页', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1764663810424303617, 'ReconcileOrderController#findDiffById', '对账差异详情', 'GET', '/order/reconcile/diff/findById', '对账控制器', b'1', b'1', '对账控制器 对账差异详情', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1764663810424303618, 'ReconcileOrderController#findDetailById', '对账明细详情', 'GET', '/order/reconcile/detail/findById', '对账控制器', b'1', b'1', '对账控制器 对账明细详情', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1764663810424303619, 'ReconcileOrderController#compare', '手动触发对账单比对', 'POST', '/order/reconcile/compare', '对账控制器', b'1', b'1', '对账控制器 手动触发对账单比对', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); + +INSERT INTO `iam_perm_path`(`id`, `code`, `name`, `request_type`, `path`, `group_name`, `enable`, `generate`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `deleted`, `version`) VALUES (1764663810424303620, 'ReconcileOrderController#pageDetail', '对账明细分页', 'GET', '/order/reconcile/detail/page', '对账控制器', b'1', b'1', '对账控制器 对账明细分页', 1399985191002447872, '2024-03-04 22:46:52.930000', 1399985191002447872, '2024-03-04 22:46:52.930000', b'0', 0); + +UPDATE `iam_perm_path` SET `code` = 'PayReconcileOrderController#findById', `name` = '订单详情', `request_type` = 'GET', `path` = '/order/reconcile/findById', `group_name` = '对账控制器', `enable` = b'1', `generate` = b'1', `remark` = '对账控制器 订单详情', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.139000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-02-13 14:55:54.139000', `deleted` = b'0', `version` = 0 WHERE `id` = 1757297527152169016; + +UPDATE `iam_perm_path` SET `code` = 'PayReconcileOrderController#downAndSave', `name` = '手动触发对账文件下载', `request_type` = 'POST', `path` = '/order/reconcile/downAndSave', `group_name` = '对账控制器', `enable` = b'1', `generate` = b'1', `remark` = '对账控制器 手动触发对账文件下载', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.139000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-02-13 14:55:54.139000', `deleted` = b'0', `version` = 0 WHERE `id` = 1757297527152169041; + +UPDATE `iam_perm_path` SET `code` = 'PayReconcileOrderController#create', `name` = '手动创建对账订单', `request_type` = 'POST', `path` = '/order/reconcile/create', `group_name` = '对账控制器', `enable` = b'1', `generate` = b'1', `remark` = '对账控制器 手动创建支付订单', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.139000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-02-13 14:55:54.139000', `deleted` = b'0', `version` = 0 WHERE `id` = 1757297527152169054; + +UPDATE `iam_perm_path` SET `code` = 'PayReconcileOrderController#page', `name` = '订单分页', `request_type` = 'GET', `path` = '/order/reconcile/page', `group_name` = '对账控制器', `enable` = b'1', `generate` = b'1', `remark` = '对账控制器 订单分页', `creator` = 1399985191002447872, `create_time` = '2024-02-13 14:55:54.139000', `last_modifier` = 1399985191002447872, `last_modified_time` = '2024-02-13 14:55:54.139000', `deleted` = b'0', `version` = 0 WHERE `id` = 1757297527152169098; + +DELETE FROM `iam_role_path` WHERE `id` = 1757299898544541715; + +DELETE FROM `iam_role_path` WHERE `id` = 1757299898544541716; + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1764931648924622848, 1757297023118462976, 1764663810424303620); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1764931648924622849, 1757297023118462976, 1764663810424303619); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1764931648924622850, 1757297023118462976, 1764663810424303618); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1764931648924622851, 1757297023118462976, 1764663810424303617); + +INSERT INTO `iam_role_path`(`id`, `role_id`, `permission_id`) VALUES (1764931648924622852, 1757297023118462976, 1764663810424303616); + +INSERT INTO `starter_quartz_job`(`id`, `name`, `job_class_name`, `cron`, `parameter`, `state`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1764664552203743232, '支付宝定时对账', 'cn.bootx.platform.daxpay.service.task.ReconcileTask', '* * 11 * * ? *', '{\"channel\":\"ali_pay\",\"n\":1}', 0, '', 1399985191002447872, '2024-03-04 22:49:50', 1399985191002447872, '2024-03-04 22:49:50', 0, 0); + +INSERT INTO `starter_quartz_job`(`id`, `name`, `job_class_name`, `cron`, `parameter`, `state`, `remark`, `creator`, `create_time`, `last_modifier`, `last_modified_time`, `version`, `deleted`) VALUES (1764667388106887168, '微信支付定时对账', 'cn.bootx.platform.daxpay.service.task.ReconcileTask', '* * 11 * * ? *', '{\"channel\":\"wechat_pay\",\"n\":1}', 0, '', 1399985191002447872, '2024-03-04 23:01:06', 1399985191002447872, '2024-03-04 23:01:06', 0, 0); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/_config/sql/2.0.2/2.0.2.update.table.sql b/_config/sql/2.0.2/2.0.2.update.table.sql new file mode 100644 index 000000000..c97ef8672 --- /dev/null +++ b/_config/sql/2.0.2/2.0.2.update.table.sql @@ -0,0 +1,54 @@ +SET FOREIGN_KEY_CHECKS=0; + +ALTER TABLE `pay_alipay_reconcile_bill_detail` MODIFY COLUMN `create_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建时间' AFTER `subject`; + +ALTER TABLE `pay_alipay_record` ADD COLUMN `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间' AFTER `create_time`; + +ALTER TABLE `pay_client_notice_record` ADD COLUMN `send_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '发送类型' AFTER `create_time`; + +ALTER TABLE `pay_client_notice_record` DROP COLUMN `type`; + +ALTER TABLE `pay_client_notice_task` ADD COLUMN `notice_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '消息类型' AFTER `deleted`; + +ALTER TABLE `pay_client_notice_task` ADD COLUMN `order_status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单类型' AFTER `notice_type`; + +ALTER TABLE `pay_client_notice_task` DROP COLUMN `type`; + +ALTER TABLE `pay_order` MODIFY COLUMN `close_time` datetime(0) NULL DEFAULT NULL COMMENT '关闭时间' AFTER `pay_time`; + +ALTER TABLE `pay_platform_config` MODIFY COLUMN `order_timeout` int(11) NULL DEFAULT NULL COMMENT '订单默认超时时间(分钟)' AFTER `return_url`; + +ALTER TABLE `pay_reconcile_detail` ADD COLUMN `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '本地订单ID' AFTER `type`; + +ALTER TABLE `pay_reconcile_detail` ADD COLUMN `order_time` datetime(0) NULL DEFAULT NULL COMMENT '订单时间' AFTER `gateway_order_no`; + +ALTER TABLE `pay_reconcile_detail` DROP COLUMN `payment_id`; + +ALTER TABLE `pay_reconcile_detail` DROP COLUMN `refund_id`; + +CREATE TABLE `pay_reconcile_diff_record` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `record_id` bigint(20) NULL DEFAULT NULL COMMENT '对账单ID', + `detail_id` bigint(20) NULL DEFAULT NULL COMMENT '对账单明细ID', + `order_id` bigint(20) NULL DEFAULT NULL COMMENT '本地订单id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单标题', + `order_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单类型', + `diff_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '差异类型', + `diffs` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '差异内容', + `gateway_order_no` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '网关订单号', + `amount` int(11) NULL DEFAULT NULL COMMENT '交易金额', + `order_time` datetime(0) NULL DEFAULT NULL COMMENT '订单时间', + `creator` bigint(20) NULL DEFAULT NULL COMMENT '创建者ID', + `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `last_modifier` bigint(20) NULL DEFAULT NULL COMMENT '最后修者ID', + `last_modified_time` datetime(0) NULL DEFAULT NULL COMMENT '最后修改时间', + `version` int(11) NOT NULL COMMENT '乐观锁', + `deleted` bit(1) NOT NULL COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '对账差异单' ROW_FORMAT = Dynamic; + +ALTER TABLE `pay_wechat_pay_config` MODIFY COLUMN `api_version` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接口版本' AFTER `return_url`; + +ALTER TABLE `pay_wechat_pay_record` ADD COLUMN `gateway_time` datetime(0) NULL DEFAULT NULL COMMENT '网关完成时间' AFTER `create_time`; + +SET FOREIGN_KEY_CHECKS=1; diff --git a/_doc/Task.md b/_doc/Task.md index 730156cff..b42cbb6ae 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,16 +1,17 @@ - 2.0.2: -- [ ] 对账功能补全账单比对功能 -- [ ] 数据库表进行规则, 字段设置长度, 增加索引 -- [ ] 退款操作支持重试 -- [x] 支付对账的序列化生成器有问题,待platform更新 +- [x] 对账功能补全账单比对功能 +- [x] 支付对账的序列化生成器有问题, 可以生成重复的序号 -2.0.x 版本内容 +2.0.3: - [ ] 云闪付接入 + +2.0.x 版本内容 - [ ] 增加各类日志记录,例如钱包的各项操作 - [ ] 支付流程也改为先落库后支付情况, 避免极端情况导致掉单 - [ ] 支付流程涉及异步支付时, 更换支付方式需要控制预防客户重复付款 - [ ] 增加撤销功能,用于处理线下支付订单的情况 +- [ ] 数据库表进行规则, 字段设置长度, 增加索引 +- [ ] 退款操作支持重试 **任务池** - [x] 支付SDK编写 diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java index dc1a04a7a..17dc54172 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/ReconcileOrderController.java @@ -25,7 +25,7 @@ * @author xxm * @since 2024/1/18 */ -@Tag(name = "支付对账控制器") +@Tag(name = "对账控制器") @RestController @RequestMapping("/order/reconcile") @RequiredArgsConstructor @@ -34,7 +34,7 @@ public class ReconcileOrderController { private final ReconcileQueryService reconcileQueryService; private final ReconcileDiffService reconcileDiffService; - @Operation(summary = "手动创建支付对账订单") + @Operation(summary = "手动创建对账订单") @PostMapping("/create") public ResResult create(@RequestBody ReconcileOrderCreate param){ ValidationUtil.validateParam(param);