mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-13 07:45:41 +08:00
refactor(trade): 订单查询编排下沉到 core 并清空增量 SQL
将运营/商户端交易订单查询与详情组装迁入 payment-core,两端 Controller 共用;同步清空 iam_perm_menu.sql 与 update-datas.sql。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,193 +0,0 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 229本地服务
|
||||
Source Server Type : PostgreSQL
|
||||
Source Server Version : 160014 (160014)
|
||||
Source Host : 192.168.1.229:5432
|
||||
Source Catalog : daxpay-dev
|
||||
Source Schema : public
|
||||
|
||||
Target Server Type : PostgreSQL
|
||||
Target Server Version : 160014 (160014)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 22/07/2026 18:36:13
|
||||
*/
|
||||
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for iam_perm_menu
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS "public"."iam_perm_menu";
|
||||
CREATE TABLE "public"."iam_perm_menu" (
|
||||
"id" int8 NOT NULL,
|
||||
"pid" int8,
|
||||
"menu_code" varchar(100) COLLATE "pg_catalog"."default",
|
||||
"client_code" varchar(100) COLLATE "pg_catalog"."default",
|
||||
"name" varchar(200) COLLATE "pg_catalog"."default",
|
||||
"i18n_key" varchar(200) COLLATE "pg_catalog"."default",
|
||||
"icon" varchar(200) COLLATE "pg_catalog"."default",
|
||||
"hidden" bool DEFAULT false,
|
||||
"hide_children_menu" bool DEFAULT false,
|
||||
"component" varchar(500) COLLATE "pg_catalog"."default",
|
||||
"path" varchar(500) COLLATE "pg_catalog"."default",
|
||||
"redirect" varchar(500) COLLATE "pg_catalog"."default",
|
||||
"sort_no" float8,
|
||||
"root" bool DEFAULT false,
|
||||
"keep_alive" bool DEFAULT false,
|
||||
"affix_tab" bool DEFAULT false,
|
||||
"creator" int8,
|
||||
"last_modifier" int8,
|
||||
"version" int4 DEFAULT 0,
|
||||
"deleted" bool DEFAULT false,
|
||||
"menu_type" varchar(20) COLLATE "pg_catalog"."default",
|
||||
"active_icon" varchar(100) COLLATE "pg_catalog"."default",
|
||||
"badge" varchar(50) COLLATE "pg_catalog"."default",
|
||||
"badge_type" varchar(20) COLLATE "pg_catalog"."default",
|
||||
"badge_variants" varchar(50) COLLATE "pg_catalog"."default",
|
||||
"iframe_src" varchar(500) COLLATE "pg_catalog"."default",
|
||||
"link" varchar(500) COLLATE "pg_catalog"."default",
|
||||
"create_time" timestamptz(6),
|
||||
"last_modified_time" timestamptz(6)
|
||||
)
|
||||
;
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."id" IS '主键';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."pid" IS '父菜单ID,0表示根菜单';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."menu_code" IS '菜单编码';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."client_code" IS '关联终端code';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."name" IS '路由名称,建议唯一';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."i18n_key" IS '国际化key';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."icon" IS '菜单图标';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."hidden" IS '是否隐藏';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."hide_children_menu" IS '是否隐藏子菜单';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."component" IS '组件';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."path" IS '访问路径';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."redirect" IS '菜单跳转地址(重定向)';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."sort_no" IS '菜单排序';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."root" IS '是否是一级菜单';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."keep_alive" IS '是否开启页面缓存';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."affix_tab" IS '是否固定标签页';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."creator" IS '创建者ID';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."last_modifier" IS '最后修改ID';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."version" IS '版本号';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."deleted" IS '删除标志';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."menu_type" IS '菜单类型: catalog-目录, menu-菜单, subpage-子页面, subpage_group-子页面分组, embedded-内嵌, link-外链';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."active_icon" IS '激活状态图标';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."badge" IS '徽章显示文本';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."badge_type" IS '徽章类型: dot-圆点, normal-文本';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."badge_variants" IS '徽章样式变体';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."iframe_src" IS '内嵌页面URL地址';
|
||||
COMMENT ON COLUMN "public"."iam_perm_menu"."link" IS '外部链接URL地址';
|
||||
COMMENT ON TABLE "public"."iam_perm_menu" IS '菜单权限配置';
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of iam_perm_menu
|
||||
-- ----------------------------
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (202, 2, NULL, 'admin', 'FileUploadDemo', 'menu.demos.fileUpload', 'lucide:upload', 'f', 'f', '/demos/file-upload/FileUploadDemo', '/demos/file-upload', NULL, 2, 'f', 't', 'f', 0, NULL, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-09 16:00:00+00', '2026-04-09 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (307, 3, 'system:monitor', 'admin', 'SystemMonitor', 'menu.system.monitor', 'lucide:monitor', 'f', 'f', NULL, '/system/monitor', NULL, 50, 'f', 't', 'f', 1, 1, 1, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-10 16:00:00+00', '2026-04-12 12:53:45.790453+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (305, 3, 'iam:perm', 'admin', 'SystemPerm', 'menu.system.perm', 'lucide:shield', 'f', 'f', NULL, '/system/perm', NULL, 2, 'f', 't', 'f', 1, 1, 1, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-08 16:00:00+00', '2026-04-09 15:10:44.651238+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (302, 3, NULL, 'admin', 'SystemLog', 'menu.system.log', 'lucide:file-text', 'f', 'f', NULL, '/system/log', NULL, 99, 'f', 't', 'f', 0, 1, 1, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-04-05 08:56:11.97756+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (304, 3, 'system:config', 'admin', 'SystemConfig', 'menu.system.config', 'lucide:settings-2', 'f', 'f', NULL, '/system/config', NULL, 10, 'f', 't', 'f', 0, 1, 1, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-04 16:00:00+00', '2026-04-09 15:11:00.840153+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (401, 4, 'payment:platform', 'admin', 'PaymentPlatform', 'menu.payment.platform', 'lucide:building', 'f', 'f', NULL, '/payment/platform', NULL, 1, 'f', 't', 'f', 0, 1, 3, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-05 16:00:00+00', '2026-05-28 06:25:42.880461+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (203, 2, 'demos:region', 'admin', 'RegionCascaderDemo', 'menu.demos.region', 'lucide:map-pin', 'f', 'f', '/demos/region/RegionCascaderDemo', '/demos/region', NULL, 3, 'f', 't', 'f', 0, NULL, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-24 16:00:00+00', '2026-04-24 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (3, NULL, NULL, 'admin', 'System', 'menu.system', 'lucide:sliders-horizontal', 'f', 'f', NULL, '/system', NULL, 0, 'f', 't', 'f', 0, 1, 2, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-06-25 02:00:30.22348+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30102, 301, 'iam:menu', 'admin', 'SystemMenu', 'menu.system.perm.menu', 'lucide:panel-top', 'f', 'f', '/iam/perm/menu/MenuList', '/system/basic/menu', NULL, 0, 'f', 't', 'f', 0, 1, 3, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', '2026-03-20 03:11:13.134079+00', '2026-06-27 10:29:51.371435+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (301, 3, NULL, 'admin', 'SystemBasic', 'menu.system.basic', 'lucide:boxes', 'f', 'f', NULL, '/system/basic', NULL, 1, 'f', 't', 'f', 0, NULL, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-06-25 02:00:30.236321+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30101, 301, 'system:dict', 'admin', 'SystemDict', 'menu.system.basic.dict', 'lucide:book-open', 'f', 'f', '/system/basic/dict/DictList', '/system/basic/dict', NULL, 1, 'f', 't', 'f', 0, 1, 2, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-06-25 02:00:30.243488+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30601, 307, 'system:file', 'admin', 'StorageFile', 'menu.system.monitor.file', 'lucide:files', 'f', 'f', '/system/monitor/file/PlatformFileList', '/system/monitor/file', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-09 16:00:00+00', '2026-06-25 02:43:43.71511+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30501, 305, 'iam:user', 'admin', 'UserList', 'menu.system.perm.user', 'lucide:users-round', 'f', 'f', '/iam/user/UserList', '/iam/user', NULL, 10, 'f', 't', 'f', 1, 1, 4, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', '2026-03-31 00:23:04.37507+00', '2026-07-13 02:15:41.494775+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (2, NULL, NULL, 'admin', 'Demos', 'menu.demos', 'lucide:blocks', 'f', 'f', NULL, '/demos', NULL, 1000, 'f', 't', 'f', 0, NULL, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-06-25 02:00:30.27727+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (1, NULL, NULL, 'admin', 'Dashboard', 'menu.dashboard', 'lucide:layout-dashboard', 'f', 'f', NULL, '/dashboard', '/workspace', -1, 'f', 'f', 'f', 0, NULL, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-06-27 13:46:52.151771+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30202, 302, 'system:log:operate', 'admin', 'SystemOperateLog', 'menu.system.log.operate', 'lucide:activity', 'f', 'f', '/system/log/operate/OperateLogList', '/system/log/operate', NULL, 2, 'f', 't', 'f', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-03-30 15:24:57.076166+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4, NULL, 'payment', 'admin', 'PaymentSystem', 'menu.platform', 'lucide:credit-card', 'f', 'f', NULL, '/payment', NULL, 3, 'f', 't', 'f', 0, 1, 1, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-05 16:00:00+00', '2026-07-13 13:02:20.694464+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30401, 304, 'system:security-config', 'admin', 'SecurityManage', 'menu.system.security', 'lucide:shield-check', 'f', 'f', NULL, '/system/config/security', NULL, 2, 'f', 't', 'f', 1, 1, 1, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-05 02:00:00+00', '2026-07-16 07:31:19.436479+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30201, 302, 'system:log:login', 'admin', 'SystemLoginLog', 'menu.system.log.login', 'lucide:log-in', 'f', 'f', '/system/log/login/LoginLogList', '/system/log/login', NULL, 1, 'f', 't', 'f', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-03-20 03:11:13.134079+00', '2026-03-30 15:25:09.855555+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (102, 1, 'dashboard:workspace', 'admin', 'Workspace', 'menu.dashboard.workspace', 'lucide:panels-top-left', 'f', 'f', '/dashboard/workspace/index', '/workspace', NULL, 1, 'f', 'f', 't', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', '2026-03-20 03:11:13.134079+00', '2026-06-28 02:50:37.055128+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (101, 1, 'dashboard:analytics', 'admin', 'Analytics', 'menu.dashboard.analytics', 'lucide:area-chart', 'f', 'f', '/dashboard/analytics/index', '/analytics', NULL, 2, 'f', 'f', 'f', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', '2026-03-20 03:11:13.134079+00', '2026-06-28 02:50:43.072618+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30103, 305, 'iam:role', 'admin', 'SystemRole', 'menu.system.perm.role', 'lucide:shield-user', 'f', 'f', '/iam/perm/role/RoleList', '/iam/perm/role', NULL, 3, 'f', 't', 'f', 0, 1, 2, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', '2026-03-20 03:11:13.134079+00', '2026-06-25 02:00:30.246504+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30701, 307, 'iam:online', 'admin', 'OnlineUser', 'menu.system.monitor.online', 'lucide:users', 'f', 'f', '/system/monitor/online/OnlineUserList', '/system/monitor/online', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-11 16:00:00+00', '2026-04-11 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (6, NULL, 'trade', 'admin', 'TransactionManagement', 'menu.trade', 'lucide:arrow-left-right', 'f', 'f', NULL, '/trade', '/trade/pay-trade', 4, 'f', 't', 'f', 1, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-24 16:00:00+00', '2026-07-17 06:18:15.479497+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40401, 404, 'merchant:info', 'admin', 'MerchantInfo', 'menu.payment.merchant.list', 'lucide:shopping-bag', 'f', 'f', '/payment/merchant/info/MerchantList', '/payment/merchant/info', NULL, 1, 'f', 't', 'f', 1, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', '2026-04-13 16:00:00+00', '2026-06-25 02:00:30.290399+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30402, 304, 'system:platform-config', 'admin', 'PlatformConfig', 'menu.system.config.platform', 'lucide:settings', 'f', 'f', '/system/config/platform/PlatformConfig', '/system/config/platform', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-07 16:00:00+00', '2026-07-13 13:17:21.921261+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40104, 401, 'payment:platform:capability', 'admin', 'PayCapabilityList', 'menu.payment.platform.capability', 'lucide:zap', 'f', 'f', '/payment/masterdata/capability/PayCapabilityList', '/payment/platform/pay-capability', NULL, 3, 'f', 't', 'f', 1, 1, 4, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-26 16:00:00+00', '2026-05-28 06:43:27.505831+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040102, 4040130, 'merchant:credential', 'admin', 'MerchantCredentialConfig', 'menu.payment.merchant.credential', NULL, 't', 'f', '/payment/merchant/manage/credential/MerchantCredentialConfig', '/payment/merchant/manage/credential', NULL, 3, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-01 16:00:00+00', '2026-07-13 10:13:20.809377+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (404, NULL, 'merchant', 'admin', 'PaymentMerchant', 'menu.merchant', 'lucide:store', 'f', 'f', NULL, '/payment/merchant', NULL, 3.5, 't', 't', 'f', 0, NULL, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-05 16:00:00+00', '2026-07-13 13:12:49.514288+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (601, 610, 'trade:order', 'admin', 'NormalOrderList', 'menu.trade.normalPay', 'lucide:credit-card', 'f', 'f', '/payment/order/NormalOrderList', '/trade/pay-order/normal', NULL, 1, 'f', 'f', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-24 16:00:00+00', '2026-07-17 06:18:15.466267+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40101, 401, 'payment:platform:product', 'admin', 'ProductList', 'menu.payment.platform.product', 'lucide:package', 'f', 'f', '/payment/masterdata/product/PayProductList', '/payment/platform/product', NULL, 2, 'f', 't', 'f', 1, 1, 3, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-23 16:00:00+00', '2026-05-28 06:25:42.892396+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040101, 4040130, 'merchant:workbench', 'admin', 'MerchantManage', 'menu.payment.merchant.workbench', '', 't', 'f', '/payment/merchant/manage/workbench/MerchantManage', '/payment/merchant/manage', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-04-13 16:00:00+00', '2026-07-11 03:37:15.424776+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40103, 401, 'payment:platform:pay-channel', 'admin', 'PayChannelList', 'menu.payment.platform.channel', 'lucide:radio-tower', 'f', 'f', '/payment/masterdata/channel/PayChannelList', '/payment/platform/pay-channel', NULL, 0, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-28 16:00:00+00', '2026-06-27 13:01:24.315365+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40102, 401, 'payment:platform:pay-method', 'admin', 'PayProviderList', 'menu.payment.platform.provider', 'lucide:list-tree', 'f', 'f', '/payment/masterdata/provider/PayMethodList', '/payment/platform/pay-method', NULL, 1, 'f', 't', 'f', 1, 1, 5, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-27 20:18:01.383008+00', '2026-05-30 08:21:19.464024+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040108, 4040130, 'merchant:user', 'admin', 'MerchantUser', 'menu.payment.merchant.user', '', 't', 'f', '/payment/merchant/user/MerchantUserList', '/payment/merchant/user', NULL, 8, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-04 16:00:00+00', '2026-07-11 03:37:15.424776+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040110, 4040130, 'merchant:app', 'admin', 'MchAppInfoList', 'menu.payment.merchant.app', NULL, 't', 'f', '/payment/merchant/app/MchAppInfoList', '/payment/merchant/app', NULL, 10, 'f', 't', 'f', 1, 1, 1, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-24 16:00:00+00', '2026-07-11 03:37:15.424776+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040114, 4040132, 'channel:app', 'admin', 'AlipayMchAppManage', 'menu.payment.merchant.channelMerchant.alipayApp', NULL, 't', 'f', '/payment/channel/alipay/manage/mch/app/AlipayMchAppManage', '/payment/global/channel-merchant/alipay-app-manage', NULL, 12, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-11 22:28:11.274785+00', '2026-07-11 03:37:15.430392+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040112, 4040131, 'channel:merchant:detail', 'admin', 'ChannelMerchantDetailDispatch', 'menu.payment.merchant.channelMerchant.detail', NULL, 't', 'f', '/payment/global/channel-merchant/detail/ChannelMerchantDetailDispatch', '/payment/global/channel-merchant/detail', NULL, 10, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-07 19:48:34.936565+00', '2026-07-11 03:37:15.428444+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040113, 4040132, 'channel:app', 'admin', 'WechatMchAppManage', 'menu.payment.merchant.channelMerchant.wechatApp', NULL, 't', 'f', '/payment/channel/wechat/manage/mch/app/WechatMchAppManage', '/payment/global/channel-merchant/wechat-app-manage', NULL, 11, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-07 23:57:13.620205+00', '2026-07-11 03:37:15.430392+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040111, 4040130, 'merchant:app:route', 'admin', 'PayRouteConfig', 'menu.payment.merchant.payRoute', NULL, 't', 'f', '/payment/route/PayRouteConfig', '/payment/route', NULL, 2, 'f', 't', 'f', 1, 1, 1, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-24 22:23:46.483985+00', '2026-07-13 10:13:20.790253+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040109, 4040131, 'channel:merchant:create', 'admin', 'ChannelMerchantCreate', 'menu.payment.merchant.channelMerchant.create', NULL, 't', 'f', '/payment/global/channel-merchant/ChannelMerchantCreate', '/payment/global/channel-merchant/create', NULL, 9, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-05 16:00:00+00', '2026-07-11 03:37:15.428444+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040117, 4040130, 'merchant:store', 'admin', 'MchStoreInfoList', 'menu.payment.merchant.store', NULL, 't', 'f', '/payment/merchant/store/MchStoreInfoList', '/payment/merchant/store', NULL, 15, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-24 16:00:00+00', '2026-07-11 03:37:15.424776+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (602, 6, 'trade:fund', 'admin', 'PayTradeList', 'menu.trade.payTrade', 'lucide:arrow-left-right', 'f', 'f', '/payment/order/PayTradeList', '/trade/pay-trade', NULL, 1, 'f', 't', 'f', NULL, NULL, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 15:09:04.769906+00', '2026-07-17 06:18:15.474015+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (901, 4, 'device:qrcode', 'admin', 'DeviceQrCode', 'menu.device.qrcode', 'lucide:qr-code', 'f', 'f', '/payment/device/qrcode/DeviceQrCode', '/device/qrcode', NULL, 3, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-25 01:21:34.634639+00', '2026-07-21 06:30:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (8, NULL, 'develop', 'admin', 'Develop', 'menu.develop', 'lucide:wrench', 'f', 'f', NULL, '/develop', NULL, 5, 'f', 't', 'f', 1, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-23 16:00:00+00', '2026-06-23 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (9, NULL, 'device', 'admin', 'DeviceManagement', 'menu.device', 'lucide:qr-code', 'f', 'f', NULL, '/device', NULL, 4.2, 'f', 't', 'f', 1, 1, 1, 't', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-25 01:21:34.631155+00', '2026-07-21 06:30:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (204, 2, 'demos:artemis', 'admin', 'ArtemisDemo', 'menu.demos.artemis', 'lucide:send', 'f', 'f', '/demos/artemis/ArtemisDemo', '/demos/artemis', NULL, 4, 'f', 't', 'f', 0, NULL, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-18 00:00:00+00', '2026-06-18 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (900001, 304, 'iam:social', 'admin', 'ThirdPlatform', 'menu.system.config.thirdPlatform', 'lucide:share-2', 'f', 'f', '/system/config/third-platform/ThirdPlatform', '/system/config/third-platform', NULL, 5, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-13 02:15:41.505142+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040103, 4040130, 'merchant:profile', 'admin', 'MchInfoManage', 'menu.payment.merchant.profile', NULL, 't', 'f', '/payment/merchant/manage/info/MchInfoManage', '/payment/merchant/manage/info', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 03:37:15.424776+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (801, 8, 'develop:trade', 'admin', 'DevelopTrade', 'menu.develop.trade', 'lucide:credit-card', 'f', 'f', '/payment/develop/trade/DevelopTrade', '/develop/trade', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-23 16:00:00+00', '2026-06-23 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (802, 8, 'develop:sign', 'admin', 'DevelopSign', 'menu.develop.sign', 'lucide:file-signature', 'f', 'f', '/payment/develop/sign/DevelopSign', '/develop/sign', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-23 16:00:00+00', '2026-06-23 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040106, 4040131, 'channel:merchant', 'admin', 'ChannelMerchant', 'menu.payment.merchant.channelMerchant', NULL, 't', 'f', '/payment/global/channel-merchant/ChannelMerchantList', '/payment/global/channel-merchant', NULL, 6, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-05-03 16:00:00+00', '2026-07-11 03:37:15.428444+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040115, 4040132, 'channel:app', 'admin', 'DouyinMchAppManage', 'menu.payment.merchant.channelMerchant.douyinApp', NULL, 't', 'f', '/payment/channel/douyin/manage/app/DouyinMchAppManage', '/payment/global/channel-merchant/douyin-app-manage', NULL, 13, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-15 16:00:00+00', '2026-07-11 03:37:15.430392+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (405, 4, 'payment:config', 'admin', 'PaymentConfig', 'menu.payment.config', 'lucide:settings-2', 't', 'f', NULL, '/payment/config', NULL, 2, 'f', 't', 'f', 1, 1, 0, 't', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-14 00:00:00+00', '2026-07-15 15:24:29.325656+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40503, 40508, 'payment:isv', 'admin', 'WechatIsvAppManage', 'menu.payment.config.wechatApp', NULL, 't', 'f', '/payment/channel/wechat/manage/app/WechatIsvAppManage', '/payment/config/product/wechat-app-manage', NULL, 4, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-14 00:00:00+00', '2026-07-11 03:37:15.43231+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40105, 4, 'payment:config:product-config', 'admin', 'ProductConfig', 'menu.payment.config.productConfig', 'lucide:layout-grid', 'f', 'f', '/payment/config/product/ProductConfig', '/payment/config/product', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-13 00:00:00+00', '2026-07-13 13:02:20.703887+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040116, 401, 'payment:platform:provider', 'admin', 'PayProviderManage', 'menu.payment.platform.provider.manage', 'lucide:wallet', 'f', 'f', '/payment/masterdata/provider/PayProviderList', '/payment/platform/pay-provider', NULL, 0.5, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-17 10:00:31.640482+00', '2026-06-27 13:01:24.318649+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (603, 6, 'trade:refund', 'admin', 'RefundOrderList', 'menu.trade.refundOrder', 'lucide:rotate-ccw', 'f', 'f', '/payment/order/RefundOrderList', '/trade/refund-order', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-03 16:00:00+00', '2026-07-17 06:18:15.476169+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (309, 308, 'system:notify:notice', 'admin', 'SystemNotify', 'menu.system.notify.notice', 'lucide:megaphone', 'f', 'f', '/system/notify/notice/NoticeList', '/system/notify/notice', NULL, 20, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, '2026-06-24 16:00:00+00', '2026-06-24 16:00:00+00', NULL);
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (308, 3, 'system:notify', 'admin', 'SystemNotice', 'menu.system.notify', 'lucide:bell', 'f', 'f', NULL, '/system/notify', '/system/notify/notice', 20, 'f', 't', 'f', 1, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-01 07:16:30.927645+00', '2026-07-01 07:16:30.927645+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40502, 40508, 'payment:isv', 'admin', 'AlipayIsvAppManage', 'menu.payment.config.alipayApp', NULL, 't', 'f', '/payment/channel/alipay/manage/app/AlipayIsvAppManage', '/payment/config/product/app-manage', NULL, 3, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-14 00:00:00+00', '2026-07-11 03:37:15.43231+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040119, 4040132, 'channel:app', 'admin', 'WechatIsvMchAppManage', 'menu.payment.merchant.channelMerchant.wechatIsvApp', NULL, 't', 'f', '/payment/channel/wechat/manage/mch/isv-app/WechatIsvMchAppManage', '/payment/global/channel-merchant/wechat-isv-mch-app-manage', NULL, 14, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 01:49:32.557374+00', '2026-07-11 03:37:15.430392+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30403, 301, 'system:protocol', 'admin', 'UserProtocol', 'menu.system.basic.protocol', 'lucide:file-text', 'f', 'f', '/system/basic/protocol/UserProtocolList', '/system/basic/protocol', NULL, 2, 'f', 't', 'f', 1, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-24 10:32:13.183371+00', '2026-07-16 08:43:35.038937+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (803, 8, 'develop:auth', 'admin', 'ChannelAuth', 'menu.develop.auth', 'lucide:key-round', 'f', 'f', '/payment/develop/auth/ChannelAuth', '/develop/auth', NULL, 3, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-09 16:00:00+00', '2026-07-09 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (310, 308, 'system:notify:wechat-config', 'admin', 'WechatNotify', 'menu.system.notify.wechatConfig', 'lucide:message-circle', 'f', 'f', '/system/notify/wechat/index', '/system/notify/wechat', NULL, 30, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-09 00:00:00+00', '2026-07-09 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040121, 4040130, 'merchant:gateway-aggregate', 'admin', 'AggregateScanConfig', 'menu.payment.merchant.aggregateScan', NULL, 't', 'f', '/payment/merchant/aggregate/AggregateScanConfig', '/payment/merchant/aggregate', NULL, 3, 'f', 't', 'f', 1, 1, 1, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 03:00:13.374496+00', '2026-07-13 10:13:20.81126+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040130, 40401, NULL, 'admin', 'MchManageGroup', 'menu.payment.merchant.group.manage', 'lucide:settings-2', 't', 'f', NULL, NULL, NULL, 1, 'f', 'f', 'f', 1, 1, 0, 'f', 'subpage_group', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 03:37:15.421585+00', '2026-07-11 03:37:15.421585+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040131, 40401, NULL, 'admin', 'ChannelMerchantGroup', 'menu.payment.merchant.group.channelMerchant', 'lucide:repeat', 't', 'f', NULL, NULL, NULL, 2, 'f', 'f', 'f', 1, 1, 0, 'f', 'subpage_group', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 03:37:15.421585+00', '2026-07-11 03:37:15.421585+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040125, 4040130, 'merchant:gateway-code', 'admin', 'CodePayConfig', 'menu.payment.merchant.codePayConfig', NULL, 't', 'f', '/payment/merchant/code-config/CodePayConfig', '/payment/merchant/code-config', NULL, 4, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-15 09:03:23.606222+00', '2026-07-15 09:03:23.606222+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (3040101, 30401, 'system:security-config:system', 'admin', 'SystemSecurityConfig', 'menu.system.security.system', 'lucide:lock', 'f', 'f', '/system/config/security/SystemSecurityConfig', '/system/config/security/system', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-16 07:31:19.446929+00', '2026-07-16 07:31:19.446929+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040120, 4040130, 'merchant:wx-verify', 'admin', 'MchWxDomainVerifyList', 'menu.payment.merchant.wxVerify', NULL, 't', 'f', '/payment/merchant/manage/wx-verify/MchWxDomainVerifyList', '/payment/merchant/manage/wx-verify', NULL, 20, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-09 16:00:00+00', '2026-07-11 03:37:15.424776+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40501, 40105, 'payment:config:product-detail', 'admin', 'ProductDetailDispatch', 'menu.payment.config.detail', NULL, 't', 'f', '/payment/config/product/detail/ProductDetailDispatch', '/payment/product-detail', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-06-14 00:00:00+00', '2026-06-27 13:01:24.321883+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (3040102, 30401, 'system:security-config:pay', 'admin', 'PaySecurityConfig', 'menu.system.security.pay', 'lucide:shield-alert', 'f', 'f', '/system/config/security/PaySecurityConfig', '/system/config/security/pay', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-16 07:31:19.449836+00', '2026-07-16 07:31:19.449836+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40504, 304, 'system:config:mobile-app', 'admin', 'MobileAppConfig', 'menu.system.config.mobileApp', 'lucide:smartphone', 'f', 'f', '/system/config/mobile-app/MobileAppConfig', '/system/config/mobile-app', NULL, 6, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-10 08:54:32.213917+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40505, 40504, 'system:config:mobile-app-detail', 'admin', 'MobileAppDetail', 'menu.system.config.mobileAppDetail', NULL, 't', 'f', '/system/config/mobile-app/detail/MobileAppDetail', '/system/config/mobile-app/detail/:appType', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-10 08:54:32.222476+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040123, 4040130, 'merchant:app:workbench', 'admin', 'MchAppWorkbench', 'menu.payment.merchant.appWorkbench', NULL, 't', 'f', '/payment/merchant/app/MchAppWorkbench', '/payment/merchant/app/manage', NULL, 11, 'f', 't', 'f', 1, 1, 1, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 08:00:00+00', '2026-07-11 08:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40506, 40508, 'payment:isv', 'admin', 'LakalaManage', 'menu.payment.lakala.config', NULL, 't', 'f', '/payment/channel/lakala/manage/LakalaManage', '/payment/config/product/lakala-manage', NULL, 5, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-05 00:00:00+00', '2026-07-11 03:37:15.43231+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040132, 40401, NULL, 'admin', 'ChannelAppGroup', 'menu.payment.merchant.group.channelApp', 'lucide:layout-grid', 't', 'f', NULL, NULL, NULL, 3, 'f', 'f', 'f', 1, 1, 0, 'f', 'subpage_group', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 03:37:15.421585+00', '2026-07-13 10:13:20.804554+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40508, 40105, NULL, 'admin', 'ChannelIsvConfigGroup', 'menu.payment.config.group.channelIsv', 'lucide:server', 't', 'f', NULL, NULL, NULL, 1, 'f', 'f', 'f', 1, 1, 0, 'f', 'subpage_group', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 03:37:15.421585+00', '2026-07-13 10:13:20.806797+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040122, 4040130, 'merchant:gateway-cashier', 'admin', 'CashierConfig', 'menu.payment.merchant.cashierConfig', NULL, 't', 'f', '/payment/merchant/cashier/CashierConfig', '/payment/merchant/cashier', NULL, 5, 'f', 't', 'f', 1, 1, 1, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-11 03:00:13.374496+00', '2026-07-15 09:03:23.614722+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (4040124, 4040130, 'merchant:easypay', 'admin', 'EasyPayConfig', 'menu.payment.merchant.easypay', NULL, 't', 'f', '/payment/merchant/easypay/EasyPayConfig', '/payment/merchant/easypay', NULL, 6, 'f', 't', 'f', 1, 1, 1, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-15 00:00:00+00', '2026-07-15 09:03:23.618+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (406, 4, 'payment:risk', 'admin', 'PaymentRisk', 'menu.payment.risk', 'lucide:shield-alert', 'f', 'f', NULL, '/payment/risk', NULL, 4, 'f', 't', 'f', 0, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-15 00:00:00+00', '2026-07-15 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40601, 406, 'payment:risk:blacklist', 'admin', 'PayBlacklistList', 'menu.payment.risk.blacklist', 'lucide:ban', 'f', 'f', '/payment/risk/blacklist/PayBlacklistList', '/payment/risk/blacklist', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-15 00:00:00+00', '2026-07-15 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40602, 406, 'payment:risk:hit', 'admin', 'PayRiskHitList', 'menu.payment.risk.hit', 'lucide:triangle-alert', 'f', 'f', '/payment/risk/hit/PayRiskHitList', '/payment/risk/hit', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-15 00:00:00+00', '2026-07-15 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (311, 3, 'system:sensitive', 'admin', 'SensitiveWord', 'menu.system.sensitive', 'lucide:shield-ban', 'f', 'f', NULL, '/system/sensitive', NULL, 15, 'f', 't', 'f', 1, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-16 00:40:06.501938+00', '2026-07-16 00:40:06.501938+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (31101, 311, 'system:sensitive-word', 'admin', 'SensitiveWordList', 'menu.system.sensitive.word', 'lucide:book-x', 'f', 'f', '/system/sensitive-word/SensitiveWordList', '/system/sensitive/word', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-16 00:40:06.511319+00', '2026-07-16 00:40:06.511319+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (31102, 311, 'system:sensitive-word-hit', 'admin', 'SensitiveWordHitList', 'menu.system.sensitive.hit', 'lucide:scan-search', 'f', 'f', '/system/sensitive-word/SensitiveWordHitList', '/system/sensitive/hit', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-16 00:40:06.51532+00', '2026-07-16 00:40:06.51532+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40507, 405, 'payment:config:wx-verify', 'admin', 'PlatformWxDomainVerifyList', 'menu.payment.config.wxVerify', 'lucide:shield-check', 'f', 'f', '/payment/config/wx-verify/PlatformWxDomainVerifyList', '/payment/config/wx-verify', NULL, 3, 'f', 't', 'f', 1, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-09 16:00:00+00', '2026-07-16 08:43:35.047953+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (804, 8, 'develop:gateway', 'admin', 'DevelopGateway', 'menu.develop.gateway', 'lucide:store', 'f', 'f', '/payment/develop/gateway/DevelopGateway', '/develop/gateway', NULL, 4, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-16 16:00:00+00', '2026-07-16 16:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (40402, 404, 'channel:merchant', 'admin', 'ChannelMerchantGlobal', 'menu.payment.merchant.channelMerchant.global', 'lucide:repeat', 'f', 'f', '/payment/global/channel-merchant-global/ChannelMerchantGlobalList', '/payment/global/channel-merchants', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-13 13:12:31.180398+00', '2026-07-13 13:12:31.180398+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (610, 6, 'trade:pay-order', 'admin', 'PayOrderCatalog', 'menu.trade.payOrder', 'lucide:receipt', 'f', 'f', NULL, '/trade/pay-order', '/trade/pay-order/normal', 3, 'f', 't', 'f', 1, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-17 06:18:15.454191+00', '2026-07-17 06:18:15.463823+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (604, 610, 'trade:gateway-order', 'admin', 'GatewayOrderList', 'menu.trade.gatewayOrder', 'lucide:store', 'f', 'f', '/payment/order/GatewayOrderList', '/trade/pay-order/gateway', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-17 06:18:15.468829+00', '2026-07-17 06:18:15.47158+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (30203, 302, 'system:log:unipay', 'admin', 'SystemUnipayApiLog', 'menu.system.log.unipay', 'lucide:webhook', 'f', 'f', '/system/log/unipay/UnipayApiLogList', '/system/log/unipay', NULL, 3, 'f', 't', 'f', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-17 00:00:00+00', '2026-07-17 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (905, 4040130, 'merchant:terminal', 'admin', 'SystemTerminalList', 'menu.payment.merchant.terminal', NULL, 't', 'f', '/payment/device/terminal/system/SystemTerminalList', '/payment/device/terminal/system', NULL, 16, 'f', 't', 'f', 1, 1, 0, 'f', 'subpage', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-17 00:00:00+00', '2026-07-17 00:00:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (607, NULL, 'trade:record', 'admin', 'TradeRecordCatalog', 'menu.trade.record', 'lucide:scroll-text', 'f', 'f', NULL, '/trade/record', '/trade/record/mch-notice', 4.5, 'f', 't', 'f', 1, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-21 06:30:00+00', '2026-07-21 06:45:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (605, 607, 'trade:mch-notice', 'admin', 'MchNoticeTaskList', 'menu.trade.mchNotice', 'lucide:bell-ring', 'f', 'f', '/payment/notice/MchNoticeTaskList', '/trade/record/mch-notice', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-21 03:00:00+00', '2026-07-21 06:30:00+00');
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (606, 607, 'trade:callback-record', 'admin', 'PayCallbackRecordList', 'menu.trade.callbackRecord', 'lucide:inbox', 'f', 'f', '/payment/record/PayCallbackRecordList', '/trade/record/callback-record', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-21 06:00:00+00', '2026-07-21 06:30:00+00');
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table iam_perm_menu
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."iam_perm_menu" ADD CONSTRAINT "iam_perm_menu_pkey" PRIMARY KEY ("id");
|
||||
|
||||
-- 商户端仪表板(client_code=merchant)
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (91001, NULL, NULL, 'merchant', 'Dashboard', 'menu.dashboard', 'lucide:layout-dashboard', 'f', 'f', NULL, '/dashboard', '/workspace', -1, 'f', 'f', 'f', 0, NULL, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (91002, 91001, 'dashboard:workspace', 'merchant', 'Workspace', 'menu.dashboard.workspace', 'lucide:panels-top-left', 'f', 'f', '/dashboard/workspace/index', '/workspace', NULL, 1, 'f', 'f', 't', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (91003, 91001, 'dashboard:analytics', 'merchant', 'Analytics', 'menu.dashboard.analytics', 'lucide:area-chart', 'f', 'f', '/dashboard/analytics/index', '/analytics', NULL, 2, 'f', 'f', 'f', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
-- 增量数据脚本(PostgreSQL)
|
||||
-- 交易记录:提升为一级菜单(pid=NULL,紧挨交易管理之后)
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (607, NULL, 'trade:record', 'admin', 'TradeRecordCatalog', 'menu.trade.record', 'lucide:scroll-text', 'f', 'f', NULL, '/trade/record', '/trade/record/mch-notice', 4.5, 'f', 't', 'f', 1, 1, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-21 06:30:00+00', '2026-07-21 06:45:00+00')
|
||||
ON CONFLICT ("id") DO UPDATE SET
|
||||
"pid" = EXCLUDED."pid",
|
||||
"menu_code" = EXCLUDED."menu_code",
|
||||
"name" = EXCLUDED."name",
|
||||
"i18n_key" = EXCLUDED."i18n_key",
|
||||
"icon" = EXCLUDED."icon",
|
||||
"path" = EXCLUDED."path",
|
||||
"redirect" = EXCLUDED."redirect",
|
||||
"sort_no" = EXCLUDED."sort_no",
|
||||
"menu_type" = EXCLUDED."menu_type",
|
||||
"deleted" = false,
|
||||
"last_modified_time" = EXCLUDED."last_modified_time";
|
||||
|
||||
-- 商户出站通知菜单(挂到交易记录目录)
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (605, 607, 'trade:mch-notice', 'admin', 'MchNoticeTaskList', 'menu.trade.mchNotice', 'lucide:bell-ring', 'f', 'f', '/payment/notice/MchNoticeTaskList', '/trade/record/mch-notice', NULL, 1, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-21 03:00:00+00', '2026-07-21 06:30:00+00')
|
||||
ON CONFLICT ("id") DO UPDATE SET
|
||||
"pid" = EXCLUDED."pid",
|
||||
"path" = EXCLUDED."path",
|
||||
"sort_no" = EXCLUDED."sort_no",
|
||||
"deleted" = false,
|
||||
"last_modified_time" = EXCLUDED."last_modified_time";
|
||||
|
||||
-- 通道入站回调记录菜单(挂到交易记录目录)
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (606, 607, 'trade:callback-record', 'admin', 'PayCallbackRecordList', 'menu.trade.callbackRecord', 'lucide:inbox', 'f', 'f', '/payment/record/PayCallbackRecordList', '/trade/record/callback-record', NULL, 2, 'f', 't', 'f', 1, 1, 0, 'f', 'menu', NULL, NULL, NULL, NULL, NULL, NULL, '2026-07-21 06:00:00+00', '2026-07-21 06:30:00+00')
|
||||
ON CONFLICT ("id") DO UPDATE SET
|
||||
"pid" = EXCLUDED."pid",
|
||||
"path" = EXCLUDED."path",
|
||||
"sort_no" = EXCLUDED."sort_no",
|
||||
"deleted" = false,
|
||||
"last_modified_time" = EXCLUDED."last_modified_time";
|
||||
|
||||
-- 码牌管理迁入支付管理
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "pid" = 4,
|
||||
"sort_no" = 3,
|
||||
"last_modified_time" = '2026-07-21 06:30:00+00'
|
||||
WHERE "id" = 901;
|
||||
|
||||
-- 软删空壳设备管理目录,并清理角色菜单关联
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "deleted" = true,
|
||||
"last_modified_time" = '2026-07-21 06:30:00+00'
|
||||
WHERE "id" = 9;
|
||||
|
||||
DELETE FROM "public"."iam_role_menu" WHERE "menu_id" = 9;
|
||||
|
||||
-- ============================================================
|
||||
-- Admin 前端路径结构治理:同步 iam_perm_menu.component / path
|
||||
-- (views 迁至 device/terminal/system、payment/route、payment/global/*、
|
||||
-- system/config/mobile-app;已装库执行本段即可对齐菜单)
|
||||
-- ============================================================
|
||||
|
||||
-- 系统终端
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/payment/device/terminal/system/SystemTerminalList',
|
||||
"path" = '/payment/device/terminal/system',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 905;
|
||||
|
||||
-- 支付路由
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/payment/route/PayRouteConfig',
|
||||
"path" = '/payment/route',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040111;
|
||||
|
||||
-- 通道商户列表(商户入口)
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/payment/global/channel-merchant/ChannelMerchantList',
|
||||
"path" = '/payment/global/channel-merchant',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040106;
|
||||
|
||||
-- 通道商户创建
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/payment/global/channel-merchant/ChannelMerchantCreate',
|
||||
"path" = '/payment/global/channel-merchant/create',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040109;
|
||||
|
||||
-- 通道商户详情分发
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/payment/global/channel-merchant/detail/ChannelMerchantDetailDispatch',
|
||||
"path" = '/payment/global/channel-merchant/detail',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040112;
|
||||
|
||||
-- 通道商户全局列表
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/payment/global/channel-merchant-global/ChannelMerchantGlobalList',
|
||||
"path" = '/payment/global/channel-merchants',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 40402;
|
||||
|
||||
-- 通道应用子页:仅统一浏览器 path 前缀(component 仍指向 channel/{provider})
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "path" = '/payment/global/channel-merchant/alipay-app-manage',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040114;
|
||||
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "path" = '/payment/global/channel-merchant/wechat-app-manage',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040113;
|
||||
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "path" = '/payment/global/channel-merchant/douyin-app-manage',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040115;
|
||||
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "path" = '/payment/global/channel-merchant/wechat-isv-mch-app-manage',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 4040119;
|
||||
|
||||
-- 移动端应用配置(目录 camelCase → kebab-case)
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/system/config/mobile-app/MobileAppConfig',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 40504;
|
||||
|
||||
UPDATE "public"."iam_perm_menu"
|
||||
SET "component" = '/system/config/mobile-app/detail/MobileAppDetail',
|
||||
"last_modified_time" = CURRENT_TIMESTAMP
|
||||
WHERE "id" = 40505;
|
||||
|
||||
-- ========== 商户端仪表板菜单(client_code=merchant) ==========
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (91001, NULL, NULL, 'merchant', 'Dashboard', 'menu.dashboard', 'lucide:layout-dashboard', 'f', 'f', NULL, '/dashboard', '/workspace', -1, 'f', 'f', 'f', 0, NULL, 0, 'f', 'catalog', NULL, NULL, NULL, NULL, NULL, NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT ("id") DO NOTHING;
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (91002, 91001, 'dashboard:workspace', 'merchant', 'Workspace', 'menu.dashboard.workspace', 'lucide:panels-top-left', 'f', 'f', '/dashboard/workspace/index', '/workspace', NULL, 1, 'f', 'f', 't', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT ("id") DO NOTHING;
|
||||
INSERT INTO "public"."iam_perm_menu" VALUES (91003, 91001, 'dashboard:analytics', 'merchant', 'Analytics', 'menu.dashboard.analytics', 'lucide:area-chart', 'f', 'f', '/dashboard/analytics/index', '/analytics', NULL, 2, 'f', 'f', 'f', 0, 1, 1, 'f', 'menu', NULL, NULL, NULL, NULL, '', '', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT ("id") DO NOTHING;
|
||||
|
||||
-- 挂到所有 client_code=merchant 的角色(若尚无商户角色则无行;新建商户管理员角色时需勾选仪表板)
|
||||
INSERT INTO "public"."iam_role_menu" ("id", "role_id", "menu_id")
|
||||
SELECT ((EXTRACT(EPOCH FROM clock_timestamp()) * 1000)::bigint * 1000 + (row_number() OVER ())::bigint),
|
||||
r."id",
|
||||
m.menu_id
|
||||
FROM "public"."iam_role" r
|
||||
CROSS JOIN (VALUES (91001::bigint), (91002::bigint), (91003::bigint)) AS m(menu_id)
|
||||
WHERE r."client_code" = 'merchant'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM "public"."iam_role_menu" rm
|
||||
WHERE rm."role_id" = r."id" AND rm."menu_id" = m.menu_id
|
||||
);
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<artifactId>service-notify</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- 管理端 MapStruct Convert(PayTradeAdminConvert 等) -->
|
||||
<!-- 管理端 MapStruct Convert -->
|
||||
<dependency>
|
||||
<groupId>org.mapstruct</groupId>
|
||||
<artifactId>mapstruct</artifactId>
|
||||
|
||||
@@ -8,7 +8,7 @@ import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.core.rest.result.Result;
|
||||
import cn.daxpay.open.payment.trade.order.param.NormalPayOrderQuery;
|
||||
import cn.daxpay.open.payment.trade.order.result.NormalPayOrderResult;
|
||||
import cn.daxpay.open.payment.admin.service.trade.NormalPayOrderAdminService;
|
||||
import cn.daxpay.open.payment.trade.order.service.NormalPayOrderService;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/// # 普通支付业务单(管理)
|
||||
///
|
||||
/// 面向运营/商户后台的业务订单(容器)管理: 分页查询、详情、状态同步、关闭/撤销
|
||||
/// 面向运营后台的业务订单(容器)管理。业务编排委托 core [NormalPayOrderService]。
|
||||
@PermCode(menuCode = PermCodes.Trade.Order.MENU)
|
||||
@Validated
|
||||
@Tag(name = "普通支付业务单(管理)")
|
||||
@@ -32,13 +32,13 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequiredArgsConstructor
|
||||
public class NormalPayOrderAdminController {
|
||||
|
||||
private final NormalPayOrderAdminService normalPayOrderAdminService;
|
||||
private final NormalPayOrderService normalPayOrderService;
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "普通支付业务单分页")
|
||||
@GetMapping("/page")
|
||||
public Result<PageResult<NormalPayOrderResult>> page(PageParam pageParam, NormalPayOrderQuery query) {
|
||||
return Res.ok(normalPayOrderAdminService.page(pageParam, query));
|
||||
return Res.ok(normalPayOrderService.page(pageParam, query));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@@ -46,7 +46,7 @@ public class NormalPayOrderAdminController {
|
||||
@GetMapping("/get-by-id")
|
||||
public Result<NormalPayOrderResult> findById(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(normalPayOrderAdminService.findById(id));
|
||||
return Res.ok(normalPayOrderService.findById(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@@ -54,7 +54,7 @@ public class NormalPayOrderAdminController {
|
||||
@PostMapping("/sync")
|
||||
public Result<NormalPaySyncResult> sync(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(normalPayOrderAdminService.sync(id));
|
||||
return Res.ok(normalPayOrderService.sync(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@@ -63,7 +63,7 @@ public class NormalPayOrderAdminController {
|
||||
public Result<Void> close(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id,
|
||||
@RequestParam(defaultValue = "false") boolean useCancel) {
|
||||
normalPayOrderAdminService.close(id, useCancel);
|
||||
normalPayOrderService.close(id, useCancel);
|
||||
return Res.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.core.rest.result.Result;
|
||||
import cn.daxpay.open.payment.trade.order.param.PayTradeQuery;
|
||||
import cn.daxpay.open.payment.trade.order.result.PayTradeResult;
|
||||
import cn.daxpay.open.payment.admin.service.trade.PayTradeAdminService;
|
||||
import cn.daxpay.open.payment.trade.order.service.PayTradeService;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -23,7 +23,8 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/// # 资金交易凭证(管理)
|
||||
///
|
||||
/// 面向运营/商户后台的资金交易(凭证)管理: 分页查询、详情、状态同步、关闭/撤销
|
||||
/// 面向运营后台的资金交易(凭证)管理: 分页查询、详情、状态同步、关闭/撤销。
|
||||
/// 业务编排委托 core [PayTradeService]。
|
||||
@PermCode(menuCode = PermCodes.Trade.Fund.MENU)
|
||||
@Validated
|
||||
@Tag(name = "资金交易凭证(管理)")
|
||||
@@ -32,13 +33,13 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequiredArgsConstructor
|
||||
public class PayTradeAdminController {
|
||||
|
||||
private final PayTradeAdminService payTradeAdminService;
|
||||
private final PayTradeService payTradeService;
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "资金交易凭证分页")
|
||||
@GetMapping("/page")
|
||||
public Result<PageResult<PayTradeResult>> page(PageParam pageParam, PayTradeQuery query) {
|
||||
return Res.ok(payTradeAdminService.page(pageParam, query));
|
||||
return Res.ok(payTradeService.page(pageParam, query));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@@ -46,7 +47,7 @@ public class PayTradeAdminController {
|
||||
@GetMapping("/get-by-id")
|
||||
public Result<PayTradeResult> findById(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(payTradeAdminService.findById(id));
|
||||
return Res.ok(payTradeService.findById(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@@ -54,7 +55,7 @@ public class PayTradeAdminController {
|
||||
@PostMapping("/sync")
|
||||
public Result<NormalPaySyncResult> sync(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(payTradeAdminService.sync(id));
|
||||
return Res.ok(payTradeService.sync(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@@ -63,7 +64,7 @@ public class PayTradeAdminController {
|
||||
public Result<Void> close(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id,
|
||||
@RequestParam(defaultValue = "false") boolean useCancel) {
|
||||
payTradeAdminService.close(id, useCancel);
|
||||
payTradeService.close(id, useCancel);
|
||||
return Res.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,9 +7,9 @@ import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.core.rest.result.Result;
|
||||
import cn.daxpay.open.payment.trade.order.param.RefundOrderQuery;
|
||||
import cn.daxpay.open.payment.trade.runtime.param.RefundParam;
|
||||
import cn.daxpay.open.payment.trade.order.result.RefundOrderResult;
|
||||
import cn.daxpay.open.payment.admin.service.trade.RefundOrderAdminService;
|
||||
import cn.daxpay.open.payment.trade.order.service.RefundOrderService;
|
||||
import cn.daxpay.open.payment.trade.runtime.param.RefundParam;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/// # 退款订单(管理)
|
||||
///
|
||||
/// 面向运营/商户后台的退款订单管理: 分页查询、详情、发起退款、退款状态同步
|
||||
/// 面向运营后台的退款订单管理。业务编排委托 core [RefundOrderService]。
|
||||
@PermCode(menuCode = PermCodes.Trade.Refund.MENU)
|
||||
@Validated
|
||||
@Tag(name = "退款订单(管理)")
|
||||
@@ -33,13 +33,13 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequiredArgsConstructor
|
||||
public class RefundOrderAdminController {
|
||||
|
||||
private final RefundOrderAdminService refundOrderAdminService;
|
||||
private final RefundOrderService refundOrderService;
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "退款订单分页")
|
||||
@GetMapping("/page")
|
||||
public Result<PageResult<RefundOrderResult>> page(PageParam pageParam, RefundOrderQuery query) {
|
||||
return Res.ok(refundOrderAdminService.page(pageParam, query));
|
||||
return Res.ok(refundOrderService.page(pageParam, query));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@@ -47,14 +47,14 @@ public class RefundOrderAdminController {
|
||||
@GetMapping("/get-by-id")
|
||||
public Result<RefundOrderResult> findById(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(refundOrderAdminService.findById(id));
|
||||
return Res.ok(refundOrderService.findById(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@Operation(summary = "发起退款")
|
||||
@PostMapping("/refund")
|
||||
public Result<RefundOrderResult> refund(@Valid @RequestBody RefundParam param) {
|
||||
return Res.ok(refundOrderAdminService.refund(param));
|
||||
return Res.ok(refundOrderService.refund(param));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@@ -62,6 +62,6 @@ public class RefundOrderAdminController {
|
||||
@PostMapping("/sync")
|
||||
public Result<RefundOrderResult> sync(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(refundOrderAdminService.sync(id));
|
||||
return Res.ok(refundOrderService.sync(id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package cn.daxpay.open.payment.admin.convert.trade;
|
||||
|
||||
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.trade.order.result.PayTradeResult;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import org.mapstruct.ReportingPolicy;
|
||||
|
||||
/// # 资金交易凭证转换器(管理)
|
||||
///
|
||||
/// 仅做凭证(PayTrade)到列表 Result 的映射;
|
||||
/// 详情场景的容器(NormalPayOrder)字段由 Service 层手动补充, 避免多参数源同名字段歧义
|
||||
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
public interface PayTradeAdminConvert {
|
||||
|
||||
PayTradeAdminConvert CONVERT = Mappers.getMapper(PayTradeAdminConvert.class);
|
||||
|
||||
/// PayTrade → Result (列表用, 不含容器字段)
|
||||
PayTradeResult toResult(PayTrade entity);
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import cn.daxpay.open.payment.trade.order.entity.GatewayPayOrder;
|
||||
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.trade.order.param.GatewayPayOrderQuery;
|
||||
import cn.daxpay.open.payment.trade.order.result.GatewayPayOrderResult;
|
||||
import cn.daxpay.open.payment.trade.order.service.TradeOrderDetailAssembler;
|
||||
import cn.daxpay.open.payment.trade.runtime.service.close.PayCloseService;
|
||||
import cn.daxpay.open.payment.trade.runtime.service.sync.PaySyncService;
|
||||
import cn.daxpay.open.payment.trade.runtime.service.pay.common.PayUniHandleService;
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package cn.daxpay.open.payment.trade.order.convert;
|
||||
|
||||
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.trade.order.result.PayTradeResult;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.ReportingPolicy;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/// # 资金交易凭证 → 管理端 Result 转换器
|
||||
///
|
||||
/// 仅做凭证(PayTrade)到列表 Result 的同名映射;
|
||||
/// 详情场景的容器字段由 [TradeOrderDetailAssembler] 补充, 避免多参数源同名字段歧义
|
||||
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
public interface PayTradeResultConvert {
|
||||
|
||||
PayTradeResultConvert CONVERT = Mappers.getMapper(PayTradeResultConvert.class);
|
||||
|
||||
/// PayTrade → Result (列表用, 不含容器字段)
|
||||
PayTradeResult toResult(PayTrade entity);
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package cn.daxpay.open.payment.admin.service.trade;
|
||||
package cn.daxpay.open.payment.trade.order.service;
|
||||
|
||||
import cn.daxpay.open.platform.common.translate.service.TransService;
|
||||
import cn.daxpay.open.platform.core.enums.client.ClientEnum;
|
||||
import cn.daxpay.open.platform.core.exception.DataNotExistException;
|
||||
import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.iam.service.client.ClientCodeService;
|
||||
import cn.daxpay.open.payment.trade.enums.PayTradeTypeEnum;
|
||||
import cn.daxpay.open.payment.trade.order.convert.NormalPayOrderConvert;
|
||||
import cn.daxpay.open.payment.trade.order.dao.NormalPayOrderManager;
|
||||
@@ -20,14 +22,13 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/// # 普通支付业务单管理服务(管理端)
|
||||
/// # 普通支付业务单共享服务
|
||||
///
|
||||
/// 提供业务订单(容器)的分页/详情查询, 以及状态同步、关闭/撤销管理操作。
|
||||
/// 详情场景由 [TradeOrderDetailAssembler] 联表资金凭证补充交易字段。
|
||||
/// 运营端 / 商户端共用。勿与 unipay 的 NormalPayOrderQueryService(对外开放查单)混淆。
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class NormalPayOrderAdminService {
|
||||
public class NormalPayOrderService {
|
||||
|
||||
private final NormalPayOrderManager normalPayOrderManager;
|
||||
private final PayTradeManager payTradeManager;
|
||||
@@ -35,9 +36,11 @@ public class NormalPayOrderAdminService {
|
||||
private final PayCloseService payCloseService;
|
||||
private final TransService transService;
|
||||
private final TradeOrderDetailAssembler tradeOrderDetailAssembler;
|
||||
private final ClientCodeService clientCodeService;
|
||||
|
||||
/// 分页查询
|
||||
public PageResult<NormalPayOrderResult> page(PageParam pageParam, NormalPayOrderQuery query) {
|
||||
sanitizeQuery(query);
|
||||
Page<NormalPayOrder> page = normalPayOrderManager.page(pageParam, query);
|
||||
var records = page.getRecords().stream()
|
||||
.map(NormalPayOrderConvert.CONVERT::toResult)
|
||||
@@ -47,8 +50,7 @@ public class NormalPayOrderAdminService {
|
||||
.setTotal(page.getTotal())
|
||||
.setSize(page.getSize())
|
||||
.setCurrent(page.getCurrent());
|
||||
// 翻译商户名称(mchNo -> mchName)
|
||||
transService.translate(pageResult);
|
||||
translateIfAdmin(pageResult);
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
@@ -58,8 +60,7 @@ public class NormalPayOrderAdminService {
|
||||
.orElseThrow(() -> new DataNotExistException("pay.error.payOrderNotExist"));
|
||||
NormalPayOrderResult result = NormalPayOrderConvert.CONVERT.toResult(entity);
|
||||
tradeOrderDetailAssembler.fillFundOnNormal(result, id);
|
||||
// 翻译商户名称
|
||||
transService.translate(result);
|
||||
translateIfAdmin(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -76,4 +77,20 @@ public class NormalPayOrderAdminService {
|
||||
.orElseThrow(() -> new DataNotExistException("pay.error.payOrderNotExist"));
|
||||
payCloseService.closeOrder(trade, useCancel);
|
||||
}
|
||||
|
||||
private void sanitizeQuery(NormalPayOrderQuery query) {
|
||||
if (query == null) {
|
||||
return;
|
||||
}
|
||||
if (ClientEnum.MERCHANT.getCode().equals(clientCodeService.getClientCode())) {
|
||||
query.setMchNo(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void translateIfAdmin(Object target) {
|
||||
if (ClientEnum.ADMIN.getCode().equals(clientCodeService.getClientCode())) {
|
||||
// 翻译商户名称(mchNo -> mchName)
|
||||
transService.translate(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
package cn.daxpay.open.payment.admin.service.trade;
|
||||
package cn.daxpay.open.payment.trade.order.service;
|
||||
|
||||
import cn.daxpay.open.platform.common.translate.service.TransService;
|
||||
import cn.daxpay.open.platform.core.enums.client.ClientEnum;
|
||||
import cn.daxpay.open.platform.core.exception.DataNotExistException;
|
||||
import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.payment.admin.convert.trade.PayTradeAdminConvert;
|
||||
import cn.daxpay.open.platform.iam.service.client.ClientCodeService;
|
||||
import cn.daxpay.open.payment.trade.order.convert.PayTradeResultConvert;
|
||||
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
|
||||
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.trade.order.param.PayTradeQuery;
|
||||
@@ -17,34 +19,35 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/// # 资金交易凭证管理服务(管理端)
|
||||
/// # 资金交易凭证共享服务
|
||||
///
|
||||
/// 提供资金交易(凭证)的分页/详情查询, 以及状态同步、关闭/撤销管理操作。
|
||||
/// 详情场景由 [TradeOrderDetailAssembler] 按 tradeType 联表容器补充业务字段。
|
||||
/// 运营端 / 商户端共用:分页、详情、同步、关闭。
|
||||
/// 商户端强制清空入参 mchNo(行级隔离依赖 TenantLine);运营端保留跨商户筛选并 translate mchName。
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class PayTradeAdminService {
|
||||
public class PayTradeService {
|
||||
|
||||
private final PayTradeManager payTradeManager;
|
||||
private final PaySyncService paySyncService;
|
||||
private final PayCloseService payCloseService;
|
||||
private final TransService transService;
|
||||
private final TradeOrderDetailAssembler tradeOrderDetailAssembler;
|
||||
private final ClientCodeService clientCodeService;
|
||||
|
||||
/// 分页查询
|
||||
public PageResult<PayTradeResult> page(PageParam pageParam, PayTradeQuery query) {
|
||||
sanitizeQuery(query);
|
||||
Page<PayTrade> page = payTradeManager.page(pageParam, query);
|
||||
var records = page.getRecords().stream()
|
||||
.map(PayTradeAdminConvert.CONVERT::toResult)
|
||||
.map(PayTradeResultConvert.CONVERT::toResult)
|
||||
.toList();
|
||||
PageResult<PayTradeResult> pageResult = new PageResult<PayTradeResult>()
|
||||
.setRecords(records)
|
||||
.setTotal(page.getTotal())
|
||||
.setSize(page.getSize())
|
||||
.setCurrent(page.getCurrent());
|
||||
// 翻译商户名称(mchNo -> mchName)
|
||||
transService.translate(pageResult);
|
||||
translateIfAdmin(pageResult);
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
@@ -52,10 +55,9 @@ public class PayTradeAdminService {
|
||||
public PayTradeResult findById(Long id) {
|
||||
PayTrade entity = payTradeManager.findById(id)
|
||||
.orElseThrow(() -> new DataNotExistException("pay.error.payOrderNotExist"));
|
||||
PayTradeResult result = PayTradeAdminConvert.CONVERT.toResult(entity);
|
||||
PayTradeResult result = PayTradeResultConvert.CONVERT.toResult(entity);
|
||||
tradeOrderDetailAssembler.fillContainerOnTrade(result, entity);
|
||||
// 翻译商户名称
|
||||
transService.translate(result);
|
||||
translateIfAdmin(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -72,4 +74,21 @@ public class PayTradeAdminService {
|
||||
.orElseThrow(() -> new DataNotExistException("pay.error.payOrderNotExist"));
|
||||
payCloseService.closeOrder(trade, useCancel);
|
||||
}
|
||||
|
||||
/// 商户端忽略入参 mchNo,避免越权指定他商户
|
||||
private void sanitizeQuery(PayTradeQuery query) {
|
||||
if (query == null) {
|
||||
return;
|
||||
}
|
||||
if (ClientEnum.MERCHANT.getCode().equals(clientCodeService.getClientCode())) {
|
||||
query.setMchNo(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void translateIfAdmin(Object target) {
|
||||
if (ClientEnum.ADMIN.getCode().equals(clientCodeService.getClientCode())) {
|
||||
// 翻译商户名称(mchNo -> mchName)
|
||||
transService.translate(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,17 @@
|
||||
package cn.daxpay.open.payment.admin.service.trade;
|
||||
package cn.daxpay.open.payment.trade.order.service;
|
||||
|
||||
import cn.daxpay.open.platform.common.translate.service.TransService;
|
||||
import cn.daxpay.open.platform.core.enums.client.ClientEnum;
|
||||
import cn.daxpay.open.platform.core.exception.DataNotExistException;
|
||||
import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.iam.service.client.ClientCodeService;
|
||||
import cn.daxpay.open.payment.trade.order.convert.RefundOrderConvert;
|
||||
import cn.daxpay.open.payment.trade.order.dao.RefundOrderManager;
|
||||
import cn.daxpay.open.payment.trade.order.entity.RefundOrder;
|
||||
import cn.daxpay.open.payment.trade.order.param.RefundOrderQuery;
|
||||
import cn.daxpay.open.payment.trade.runtime.param.RefundParam;
|
||||
import cn.daxpay.open.payment.trade.order.result.RefundOrderResult;
|
||||
import cn.daxpay.open.payment.trade.runtime.param.RefundParam;
|
||||
import cn.daxpay.open.payment.trade.runtime.service.refund.RefundService;
|
||||
import cn.daxpay.open.payment.trade.runtime.service.refund.RefundSyncService;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -17,21 +19,23 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/// # 退款订单管理服务(管理端)
|
||||
/// # 退款订单共享服务(管理端查询/编排)
|
||||
///
|
||||
/// 提供退款订单的分页/详情查询, 以及发起退款、退款状态同步操作。
|
||||
/// 运营端 / 商户端共用。与 runtime [RefundService](退款引擎)职责不同。
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RefundOrderAdminService {
|
||||
public class RefundOrderService {
|
||||
|
||||
private final RefundOrderManager refundOrderManager;
|
||||
private final RefundService refundService;
|
||||
private final RefundSyncService refundSyncService;
|
||||
private final TransService transService;
|
||||
private final ClientCodeService clientCodeService;
|
||||
|
||||
/// 分页查询
|
||||
public PageResult<RefundOrderResult> page(PageParam pageParam, RefundOrderQuery query) {
|
||||
sanitizeQuery(query);
|
||||
Page<RefundOrder> page = refundOrderManager.page(pageParam, query);
|
||||
var records = page.getRecords().stream()
|
||||
.map(RefundOrderConvert.CONVERT::toResult)
|
||||
@@ -41,8 +45,7 @@ public class RefundOrderAdminService {
|
||||
.setTotal(page.getTotal())
|
||||
.setSize(page.getSize())
|
||||
.setCurrent(page.getCurrent());
|
||||
// 翻译商户名称(mchNo -> mchName)
|
||||
transService.translate(pageResult);
|
||||
translateIfAdmin(pageResult);
|
||||
return pageResult;
|
||||
}
|
||||
|
||||
@@ -51,8 +54,7 @@ public class RefundOrderAdminService {
|
||||
RefundOrder entity = refundOrderManager.findById(id)
|
||||
.orElseThrow(() -> new DataNotExistException("pay.error.refund.orderNotFound"));
|
||||
RefundOrderResult result = RefundOrderConvert.CONVERT.toResult(entity);
|
||||
// 翻译商户名称
|
||||
transService.translate(result);
|
||||
translateIfAdmin(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -60,8 +62,7 @@ public class RefundOrderAdminService {
|
||||
public RefundOrderResult refund(RefundParam param) {
|
||||
RefundOrder refundOrder = refundService.refund(param);
|
||||
RefundOrderResult result = RefundOrderConvert.CONVERT.toResult(refundOrder);
|
||||
// 翻译商户名称
|
||||
transService.translate(result);
|
||||
translateIfAdmin(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -69,8 +70,23 @@ public class RefundOrderAdminService {
|
||||
public RefundOrderResult sync(Long id) {
|
||||
RefundOrder refundOrder = refundSyncService.syncById(id);
|
||||
RefundOrderResult result = RefundOrderConvert.CONVERT.toResult(refundOrder);
|
||||
// 翻译商户名称
|
||||
transService.translate(result);
|
||||
translateIfAdmin(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void sanitizeQuery(RefundOrderQuery query) {
|
||||
if (query == null) {
|
||||
return;
|
||||
}
|
||||
if (ClientEnum.MERCHANT.getCode().equals(clientCodeService.getClientCode())) {
|
||||
query.setMchNo(null);
|
||||
}
|
||||
}
|
||||
|
||||
private void translateIfAdmin(Object target) {
|
||||
if (ClientEnum.ADMIN.getCode().equals(clientCodeService.getClientCode())) {
|
||||
// 翻译商户名称(mchNo -> mchName)
|
||||
transService.translate(target);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.daxpay.open.payment.admin.service.trade;
|
||||
package cn.daxpay.open.payment.trade.order.service;
|
||||
|
||||
import cn.daxpay.open.payment.trade.enums.PayTradeTypeEnum;
|
||||
import cn.daxpay.open.payment.trade.order.dao.GatewayPayOrderManager;
|
||||
@@ -17,9 +17,11 @@ import java.util.Objects;
|
||||
|
||||
/// # 交易订单详情组装器
|
||||
///
|
||||
/// 列表场景仅单表 Convert;详情场景在此按 tradeType 补对侧字段,避免 AdminService 重复手写 setter。
|
||||
/// 列表场景仅单表 Convert;详情场景在此按 tradeType 补对侧字段。
|
||||
/// - 容器详情 → 补资金凭证字段
|
||||
/// - 资金详情 → 按 [PayTrade#getTradeType] 加载容器补业务字段
|
||||
///
|
||||
/// 供运营端 / 商户端共享(下沉自 payment-admin)
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TradeOrderDetailAssembler {
|
||||
@@ -0,0 +1,69 @@
|
||||
package cn.daxpay.open.payment.merchant.controller.trade;
|
||||
|
||||
import cn.daxpay.open.platform.core.annotation.PermCode;
|
||||
import cn.daxpay.open.platform.core.code.PermCodes;
|
||||
import cn.daxpay.open.platform.core.rest.Res;
|
||||
import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.core.rest.result.Result;
|
||||
import cn.daxpay.open.payment.trade.order.param.NormalPayOrderQuery;
|
||||
import cn.daxpay.open.payment.trade.order.result.NormalPayOrderResult;
|
||||
import cn.daxpay.open.payment.trade.order.service.NormalPayOrderService;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/// # 普通支付业务单(商户端)
|
||||
///
|
||||
/// 业务编排委托 core [NormalPayOrderService]。
|
||||
@PermCode(menuCode = PermCodes.Trade.Order.MENU)
|
||||
@Validated
|
||||
@Tag(name = "普通支付业务单(商户端)")
|
||||
@RestController
|
||||
@RequestMapping("/mch/order/normal-pay")
|
||||
@RequiredArgsConstructor
|
||||
public class MchNormalPayOrderController {
|
||||
|
||||
private final NormalPayOrderService normalPayOrderService;
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "普通支付业务单分页")
|
||||
@GetMapping("/page")
|
||||
public Result<PageResult<NormalPayOrderResult>> page(PageParam pageParam, NormalPayOrderQuery query) {
|
||||
return Res.ok(normalPayOrderService.page(pageParam, query));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "根据ID查询普通支付业务单详情")
|
||||
@GetMapping("/get-by-id")
|
||||
public Result<NormalPayOrderResult> findById(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(normalPayOrderService.findById(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@Operation(summary = "同步支付状态")
|
||||
@PostMapping("/sync")
|
||||
public Result<NormalPaySyncResult> sync(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(normalPayOrderService.sync(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@Operation(summary = "关闭/撤销订单")
|
||||
@PostMapping("/close")
|
||||
public Result<Void> close(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id,
|
||||
@RequestParam(defaultValue = "false") boolean useCancel) {
|
||||
normalPayOrderService.close(id, useCancel);
|
||||
return Res.ok();
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,30 @@
|
||||
package cn.daxpay.open.payment.merchant.controller.trade;
|
||||
|
||||
import cn.daxpay.open.platform.core.annotation.PermCode;
|
||||
import cn.daxpay.open.platform.core.code.PermCodes;
|
||||
import cn.daxpay.open.platform.core.rest.Res;
|
||||
import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.core.rest.result.Result;
|
||||
import cn.daxpay.open.payment.merchant.service.trade.MchPayTradeService;
|
||||
import cn.daxpay.open.payment.trade.order.param.PayTradeQuery;
|
||||
import cn.daxpay.open.payment.trade.order.result.PayTradeResult;
|
||||
import cn.daxpay.open.payment.trade.order.service.PayTradeService;
|
||||
import cn.daxpay.open.payment.unipay.result.trade.pay.NormalPaySyncResult;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/// # 资金交易凭证(商户端)
|
||||
///
|
||||
/// 工作台「最近资金交易」等只读列表;完整订单管理页后续再挂菜单。
|
||||
/// 业务编排委托 core [PayTradeService];行级隔离依赖 TenantLine。
|
||||
@PermCode(menuCode = PermCodes.Trade.Fund.MENU)
|
||||
@Validated
|
||||
@Tag(name = "资金交易凭证(商户端)")
|
||||
@RestController
|
||||
@@ -25,11 +32,38 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequiredArgsConstructor
|
||||
public class MchPayTradeController {
|
||||
|
||||
private final MchPayTradeService mchPayTradeService;
|
||||
private final PayTradeService payTradeService;
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "资金交易凭证分页")
|
||||
@GetMapping("/page")
|
||||
public Result<PageResult<PayTradeResult>> page(PageParam pageParam, PayTradeQuery query) {
|
||||
return Res.ok(mchPayTradeService.page(pageParam, query));
|
||||
return Res.ok(payTradeService.page(pageParam, query));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "根据ID查询资金交易凭证详情")
|
||||
@GetMapping("/get-by-id")
|
||||
public Result<PayTradeResult> findById(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(payTradeService.findById(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@Operation(summary = "同步支付状态")
|
||||
@PostMapping("/sync")
|
||||
public Result<NormalPaySyncResult> sync(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(payTradeService.sync(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@Operation(summary = "关闭/撤销订单")
|
||||
@PostMapping("/close")
|
||||
public Result<Void> close(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id,
|
||||
@RequestParam(defaultValue = "false") boolean useCancel) {
|
||||
payTradeService.close(id, useCancel);
|
||||
return Res.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package cn.daxpay.open.payment.merchant.controller.trade;
|
||||
|
||||
import cn.daxpay.open.platform.core.annotation.PermCode;
|
||||
import cn.daxpay.open.platform.core.code.PermCodes;
|
||||
import cn.daxpay.open.platform.core.rest.Res;
|
||||
import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.platform.core.rest.result.Result;
|
||||
import cn.daxpay.open.payment.trade.order.param.RefundOrderQuery;
|
||||
import cn.daxpay.open.payment.trade.order.result.RefundOrderResult;
|
||||
import cn.daxpay.open.payment.trade.order.service.RefundOrderService;
|
||||
import cn.daxpay.open.payment.trade.runtime.param.RefundParam;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/// # 退款订单(商户端)
|
||||
///
|
||||
/// 业务编排委托 core [RefundOrderService]。
|
||||
@PermCode(menuCode = PermCodes.Trade.Refund.MENU)
|
||||
@Validated
|
||||
@Tag(name = "退款订单(商户端)")
|
||||
@RestController
|
||||
@RequestMapping("/mch/order/refund")
|
||||
@RequiredArgsConstructor
|
||||
public class MchRefundOrderController {
|
||||
|
||||
private final RefundOrderService refundOrderService;
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "退款订单分页")
|
||||
@GetMapping("/page")
|
||||
public Result<PageResult<RefundOrderResult>> page(PageParam pageParam, RefundOrderQuery query) {
|
||||
return Res.ok(refundOrderService.page(pageParam, query));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.VIEW)
|
||||
@Operation(summary = "根据ID查询退款订单详情")
|
||||
@GetMapping("/get-by-id")
|
||||
public Result<RefundOrderResult> findById(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(refundOrderService.findById(id));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@Operation(summary = "发起退款")
|
||||
@PostMapping("/refund")
|
||||
public Result<RefundOrderResult> refund(@Valid @RequestBody RefundParam param) {
|
||||
return Res.ok(refundOrderService.refund(param));
|
||||
}
|
||||
|
||||
@PermCode(code = PermCodes.Action.MANAGE)
|
||||
@Operation(summary = "同步退款状态")
|
||||
@PostMapping("/sync")
|
||||
public Result<RefundOrderResult> sync(
|
||||
@NotNull(message = "{validation.field.id.notNull}") Long id) {
|
||||
return Res.ok(refundOrderService.sync(id));
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package cn.daxpay.open.payment.merchant.convert.trade;
|
||||
|
||||
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.trade.order.result.PayTradeResult;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.ReportingPolicy;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/// # 资金交易凭证转换器(商户端)
|
||||
///
|
||||
/// 列表页同名映射;详情联表由后续订单页再补
|
||||
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||
public interface MchPayTradeConvert {
|
||||
|
||||
MchPayTradeConvert CONVERT = Mappers.getMapper(MchPayTradeConvert.class);
|
||||
|
||||
/// PayTrade → Result(工作台最近交易列表)
|
||||
PayTradeResult toResult(PayTrade entity);
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
package cn.daxpay.open.payment.merchant.service.trade;
|
||||
|
||||
import cn.daxpay.open.platform.core.rest.param.PageParam;
|
||||
import cn.daxpay.open.platform.core.rest.result.PageResult;
|
||||
import cn.daxpay.open.payment.merchant.convert.trade.MchPayTradeConvert;
|
||||
import cn.daxpay.open.payment.trade.order.dao.PayTradeManager;
|
||||
import cn.daxpay.open.payment.trade.order.entity.PayTrade;
|
||||
import cn.daxpay.open.payment.trade.order.param.PayTradeQuery;
|
||||
import cn.daxpay.open.payment.trade.order.result.PayTradeResult;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/// # 资金交易凭证查询(商户端)
|
||||
///
|
||||
/// 仅分页列表;行级隔离依赖 [MchBaseEntity] + 商户端 PaymentContext / TenantLine。
|
||||
/// 禁止信任请求体中的 mchNo(查询条件亦不作为跨商户入口)。
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class MchPayTradeService {
|
||||
|
||||
private final PayTradeManager payTradeManager;
|
||||
|
||||
/// 分页查询本商户资金交易
|
||||
public PageResult<PayTradeResult> page(PageParam pageParam, PayTradeQuery query) {
|
||||
// 忽略入参 mchNo,避免越权指定他商户
|
||||
if (query != null) {
|
||||
query.setMchNo(null);
|
||||
}
|
||||
Page<PayTrade> page = payTradeManager.page(pageParam, query);
|
||||
var records = page.getRecords().stream()
|
||||
.map(MchPayTradeConvert.CONVERT::toResult)
|
||||
.toList();
|
||||
return new PageResult<PayTradeResult>()
|
||||
.setRecords(records)
|
||||
.setTotal(page.getTotal())
|
||||
.setSize(page.getSize())
|
||||
.setCurrent(page.getCurrent());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user