hejianhao
2026-09-01 dfb0f8d5a4bf44168dbbfeb6959a5737ec71baa2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
SET @db_name = DATABASE();
 
CREATE TABLE IF NOT EXISTS `tcm_payment_flow` (
  `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `flow_no` VARCHAR(64) NOT NULL COMMENT '平台流水号',
  `business_type` VARCHAR(32) NOT NULL COMMENT '业务类型:COURSE_PURCHASE课程购买 MEMBER_PURCHASE会员购买',
  `business_order_id` BIGINT UNSIGNED NOT NULL COMMENT '业务订单ID',
  `business_order_no` VARCHAR(32) NOT NULL COMMENT '业务订单编号',
  `flow_type` VARCHAR(32) NOT NULL COMMENT '流水类型:PAYMENT支付 REFUND退款',
  `trade_status` VARCHAR(32) NOT NULL COMMENT '交易状态:SUCCESS成功 REFUNDED已退款',
  `app_user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
  `user_nickname` VARCHAR(64) DEFAULT NULL COMMENT '用户昵称快照',
  `user_phone` VARCHAR(20) DEFAULT NULL COMMENT '用户手机号快照',
  `product_name_snapshot` VARCHAR(255) NOT NULL COMMENT '商品名称快照',
  `payment_method` VARCHAR(32) NOT NULL COMMENT '支付方式:WECHAT微信 ALIPAY支付宝',
  `transaction_amount` DECIMAL(10,2) NOT NULL COMMENT '交易金额',
  `third_party_trade_no` VARCHAR(64) DEFAULT NULL COMMENT '第三方支付单号',
  `third_party_refund_no` VARCHAR(64) DEFAULT NULL COMMENT '第三方退款单号',
  `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
  `trade_time` DATETIME NOT NULL COMMENT '交易时间',
  `source_type` VARCHAR(32) NOT NULL COMMENT '来源类型:COURSE_PAYMENT课程支付 COURSE_REFUND课程退款 MEMBER_PAYMENT会员支付 MEMBER_REFUND会员退款',
  `source_id` BIGINT UNSIGNED NOT NULL COMMENT '来源记录ID',
  `deleted` TINYINT(1) NOT NULL DEFAULT 0,
  `created_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '创建人',
  `updated_by` VARCHAR(64) NOT NULL DEFAULT '系统初始化' COMMENT '更新人',
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_payment_flow_no` (`flow_no`),
  UNIQUE KEY `uk_payment_flow_source` (`source_type`, `source_id`),
  KEY `idx_payment_flow_business_order` (`business_type`, `business_order_id`),
  KEY `idx_payment_flow_business_order_no` (`business_order_no`),
  KEY `idx_payment_flow_user` (`app_user_id`),
  KEY `idx_payment_flow_flow_type` (`flow_type`),
  KEY `idx_payment_flow_trade_status` (`trade_status`),
  KEY `idx_payment_flow_payment_method` (`payment_method`),
  KEY `idx_payment_flow_trade_time` (`trade_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付流水表';
 
INSERT INTO `sys_menu`
(`id`, `parent_id`, `name`, `menu_code`, `type`, `path`, `component`, `icon`, `sort`, `status`, `visible`, `permission_key`, `remark`, `deleted`)
SELECT
  4220, 4200, '支付流水', 'trade_payment_flow', 'C', '/trade/flow/payment-flow', 'Trade/PaymentFlow', NULL, 10, 1, 1, 'payment:flow:view', '支付流水菜单', 0
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 4220 OR `menu_code` = 'trade_payment_flow');
 
INSERT INTO `sys_menu`
(`id`, `parent_id`, `name`, `menu_code`, `type`, `path`, `component`, `icon`, `sort`, `status`, `visible`, `permission_key`, `remark`, `deleted`)
SELECT
  4221, 4220, '导出支付流水', 'trade_payment_flow_export', 'B', NULL, NULL, NULL, 1, 1, 1, 'payment:flow:export', '支付流水导出按钮', 0
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 4221 OR `menu_code` = 'trade_payment_flow_export');
 
INSERT INTO `sys_menu`
(`id`, `parent_id`, `name`, `menu_code`, `type`, `path`, `component`, `icon`, `sort`, `status`, `visible`, `permission_key`, `remark`, `deleted`)
SELECT
  4230, 4200, '退费流水', 'trade_refund_flow', 'C', '/trade/flow/refund-flow', 'Trade/RefundFlow', NULL, 20, 1, 1, 'refund:flow:view', '退费流水菜单', 0
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 4230 OR `menu_code` = 'trade_refund_flow');
 
INSERT INTO `sys_menu`
(`id`, `parent_id`, `name`, `menu_code`, `type`, `path`, `component`, `icon`, `sort`, `status`, `visible`, `permission_key`, `remark`, `deleted`)
SELECT
  4231, 4230, '导出退费流水', 'trade_refund_flow_export', 'B', NULL, NULL, NULL, 1, 1, 1, 'refund:flow:export', '退费流水导出按钮', 0
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 4231 OR `menu_code` = 'trade_refund_flow_export');
 
UPDATE `sys_menu`
SET `sort` = 30
WHERE `id` = 4210
  AND `parent_id` = 4200;
 
INSERT IGNORE INTO `sys_role_menu` (`role_id`, `menu_id`)
SELECT sr.id, sm.id
FROM `sys_role` sr
JOIN `sys_menu` sm ON sm.id IN (4220, 4221, 4230, 4231)
WHERE sr.deleted = 0
  AND sr.status = 1
  AND EXISTS (
    SELECT 1
    FROM `sys_role_menu` rm
    WHERE rm.role_id = sr.id
      AND rm.menu_id IN (4200, 4210, 4220)
  );