第一次提交

This commit is contained in:
尹舟 2025-02-12 17:03:12 +08:00
commit 9b75bb925e
37 changed files with 434 additions and 0 deletions

14
.env Normal file
View File

@ -0,0 +1,14 @@
DINKY_VERSION=1.0.3
FLINK_VERSION=1.17
# 自定义其他依赖路径会挂载到dinky和flink容器中
CUSTOM_JAR_PATH=/opt/dinky/extends/
FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager"
TZ=Asia/Shanghai
DB_ACTIVE=mysql
# ip是容器ip
MYSQL_ADDR=mysql57:3306
MYSQL_DATABASE=dinky
MYSQL_USERNAME=root
MYSQL_PASSWORD=mysql57

91
README.md Normal file
View File

@ -0,0 +1,91 @@
# 启动 Docker 容器
1. **启动容器**
在根目录下执行以下命令以启动Docker容器
```bash
docker-compose up -d
```
2. **查看容器状态**
使用以下命令检查容器是否正常运行:
```bash
docker ps
```
3. **配置 MySQL Binlog (仅适用于 windos)**
执行以下命令以确保MySQL配置文件权限正确
```bash
chmod 644 /etc/mysql/conf.d/my.cnf
```
这一步是为了启用binlog功能。
![dinky图标](./image/PixPin_2025-01-10_16-14-58.png "dinky")
修改配置文件后,重启容器使更改生效:
```bash
docker-compose restart
```
4. **验证 Binlog 是否开启**
进入MySQL容器并执行以下SQL语句来确认binlog是否已成功开启
```sql
SHOW VARIABLES LIKE 'log_bin';
```
如果显示 `ON` 则表示binlog已成功开启。
![dinky图标](./image/PixPin_2025-01-10_16-17-59.png "dinky")
可以看到我建的测试数据库demo(有表有数据)和数据同步(空表无数据)
![dinky图标](./image/PixPin_2025-01-10_16-21-27.png "dinky")
### 访问 Dinky 平台
打开浏览器访问 [http://localhost:8888/](http://localhost:8888/) 进入Dinky平台。
![dinky图标](./image/PixPin_2025-01-10_16-26-06.png "dinky")
#### 注册中心配置集群
在平台上进行注册中心的配置,设置集群信息。
#### 新建整库同步 Flink SQL 任务并运行
按照界面提示新建一个整库同步Flink SQL任务并开始运行该任务。
![dinky图标](./image/PixPin_2025-01-10_16-28-40.png "dinky")
```sql
-- 整库同步
SET 'execution.checkpointing.interval' = '10s';
SET 'execution.checkpointing.externalized-checkpoint-retention' = 'RETAIN_ON_CANCELLATION';
EXECUTE CDCSOURCE cdc_mysql WITH (
'connector' = 'mysql-cdc',
'hostname' = '10.23.0.209',
'port' = '3336',
'username' = 'root',
'password' = 'mysql57',
'checkpoint' = '3000',
'scan.startup.mode' = 'initial',
'parallelism' = '1',
'server-time-zone' = 'Asia/Shanghai',
'table-name' = 'demo\.admin_menu,demo\.admin_role',
'sink.connector' = 'jdbc',
'sink.url' = 'jdbc:mysql://10.23.0.209:3336/to_demo?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai',
'sink.username' = 'root',
'sink.password' = 'mysql57',
'sink.sink.db' = 'to_demo',
'sink.table.prefix' = 'ods_',
'sink.table.lower' = 'true',
'sink.table-name' = '#{tableName}',
'sink.driver' = 'com.mysql.jdbc.Driver',
'sink.sink.buffer-flush.interval' = '2s',
'sink.sink.buffer-flush.max-rows' = '100',
'sink.sink.max-retries' = '5',
'sink.auto.create' = 'true'
);
```

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

91
dinky_sql.sql Normal file
View File

@ -0,0 +1,91 @@
-- 单表同步
DROP TABLE IF EXISTS cdc_dinky_flink_document;
CREATE TABLE IF NOT EXISTS cdc_dinky_flink_document (
`id` INT NOT NULL COMMENT 'id',
`category` STRING COMMENT 'document category',
`type` STRING COMMENT 'document type',
`subtype` STRING COMMENT 'document subtype',
`name` STRING COMMENT 'document name',
`description` STRING,
`fill_value` STRING COMMENT 'fill value',
`version` STRING COMMENT 'document version such as:(flink1.12,flink1.13,flink1.14,flink1.15,flink1.16,flink1.17,flink1.18)',
`like_num` INT COMMENT 'like number',
`enabled` BOOLEAN NOT NULL COMMENT 'is enable',
`create_time` TIMESTAMP COMMENT 'create time',
`update_time` TIMESTAMP COMMENT 'update time',
`creator` INT COMMENT 'creator user id',
`updater` INT COMMENT 'updater user id',
PRIMARY KEY (`menu_id`) NOT ENFORCED
)
WITH
(
'connector' = 'mysql-cdc',
'hostname' = 'mysql57',
'port' = '3306',
'username' = 'root',
'password' = 'mysql57',
'server-time-zone' = 'Asia/Shanghai',
'scan.incremental.snapshot.enabled' = 'true',
'debezium.snapshot.mode' = 'initial',
'database-name' = 'dinky',
'table-name' = 'dinky_flink_document'
);
CREATE TABLE IF NOT EXISTS mysql_dinky_flink_document (
`id` INT NOT NULL COMMENT 'id',
`category` STRING COMMENT 'document category',
`type` STRING COMMENT 'document type',
`subtype` STRING COMMENT 'document subtype',
`name` STRING COMMENT 'document name',
`description` STRING,
`fill_value` STRING COMMENT 'fill value',
`version` STRING COMMENT 'document version such as:(flink1.12,flink1.13,flink1.14,flink1.15,flink1.16,flink1.17,flink1.18)',
`like_num` INT COMMENT 'like number',
`enabled` BOOLEAN NOT NULL COMMENT 'is enable',
`create_time` TIMESTAMP COMMENT 'create time',
`update_time` TIMESTAMP COMMENT 'update time',
`creator` INT COMMENT 'creator user id',
`updater` INT COMMENT 'updater user id',
PRIMARY KEY (`menu_id`) NOT ENFORCED
) WITH (
'connector' = 'jdbc'
,'url' = 'jdbc:mysql://mysql57:3306/demo'
,'username' = 'root'
,'password' = 'mysql57'
,'table-name' = 'dinky_flink_document'
);
INSERT INTO mysql_dinky_flink_document
SELECT * FROM cdc_dinky_flink_document
;
-- 整库同步
SET 'execution.checkpointing.interval' = '10s';
EXECUTE CDCSOURCE cdc_mysql WITH (
'connector' = 'mysql-cdc',
'hostname' = 'mysql57',
'port' = '3306',
'username' = 'root',
'password' = 'mysql57',
'checkpoint' = '3000',
'scan.startup.mode' = 'initial',
'parallelism' = '1',
'server-time-zone' = 'Asia/Shanghai',
'table-name' = 'demo\.admin_menu,demo\.admin_role',
'sink.connector' = 'jdbc',
'sink.url' = 'jdbc:mysql://mysql57:3306/to_demo?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai',
'sink.username' = 'root',
'sink.password' = 'mysql57',
'sink.sink.db' = 'to_demo',
'sink.table.prefix' = 'ods_',
'sink.table.lower' = 'true',
'sink.table-name' = '#{tableName}',
'sink.driver' = 'com.mysql.jdbc.Driver',
'sink.sink.buffer-flush.interval' = '2s',
'sink.sink.buffer-flush.max-rows' = '100',
'sink.sink.max-retries' = '5',
'sink.auto.create' = 'true'
);

76
docker-compose.yml Normal file
View File

@ -0,0 +1,76 @@
version: "3.9"
services:
mysql57:
container_name: mysql57
image: registry.cn-hangzhou.aliyuncs.com/yinzhou_docker_hub/mysql:5.7
restart: always
ports:
- 3336:3306
privileged: true
volumes:
- ./mysql57/conf/my.cnf:/etc/mysql/conf.d/my.cnf
- ./mysql57/data:/var/lib/mysql
- ./mysql57/initdb:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: "mysql57"
LANG: "C.UTF-8"
TZ: "Asia/Shanghai"
networks:
- dinky
dinky:
image: dinkydocker/dinky-standalone-server:1.2.1-flink1.19
restart: always
ports:
- "8888:8888"
env_file: .env
networks:
- dinky
volumes:
- ./customJar:/opt/dinky/customJar
jobmanager:
image: registry.cn-hangzhou.aliyuncs.com/yinzhou_docker_hub/flink:1.19.1-scala_2.12-java8
ports:
- "8081:8081"
command: jobmanager
env_file: .env
volumes:
- ./flinklib:/opt/flink/lib
- ./flinklib:/opt/flink/lib
- ./checkpoints:/opt/flink/ck # 挂载本地 checkpoints
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
state.savepoints.dir: file:///opt/flink/ck/savepoints
state.checkpoints.dir: file:///opt/flink/ck/checkpoints
state.backend: filesystem
execution.checkpointing.interval: 3min
state.checkpoints.num-retained: 20
execution.checkpointing.mode: EXACTLY_ONCE
execution.checkpointing.externalized-checkpoint-retention: RETAIN_ON_CANCELLATION
networks:
- dinky
taskmanager:
image: registry.cn-hangzhou.aliyuncs.com/yinzhou_docker_hub/flink:1.19.1-scala_2.12-java8
command: taskmanager
env_file: .env
volumes:
- ./flinklib:/opt/flink/lib
environment:
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 5
networks:
- dinky
networks:
dinky:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

22
mysql57/conf/my.cnf Normal file
View File

@ -0,0 +1,22 @@
[mysqld]
lower_case_table_names=1
bind-address= 0.0.0.0
default-time_zone=Asia/Shanghai
# 启用二进制日志
log-bin=mysql-bin
# 设置二进制日志格式(推荐 ROW 格式)
binlog-format=ROW
# 设置server-id
server-id=1
# 更改字符集 如果想Mysql在后续的操作中文不出现乱码,则需要修改配置文件内容
symbolic-links=0
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4

140
mysql57/initdb/init_db.sql Normal file
View File

@ -0,0 +1,140 @@
CREATE DATABASE IF NOT EXISTS demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS to_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS dinky;
CREATE TABLE IF NOT EXISTS demo.`admin_menu` (
`menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_menu_id` int(10) unsigned NOT NULL,
`menu_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1:菜单 2:页面 3:操作按钮',
`menu_title` varchar(100) NOT NULL DEFAULT '',
`menu_name` varchar(100) NOT NULL DEFAULT '',
`menu_path` varchar(100) NOT NULL DEFAULT '',
`menu_icon` varchar(100) NOT NULL DEFAULT '',
`menu_server_uri` varchar(100) NOT NULL DEFAULT '',
`sort_index` int(10) NOT NULL DEFAULT '0',
`create_time` int(10) unsigned NOT NULL DEFAULT '0',
`update_time` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`menu_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS demo.`admin_role` (
`role_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`role_name` varchar(20) NOT NULL DEFAULT '',
`menu_ids` varchar(1024) NOT NULL DEFAULT '',
`operator_uid` int(10) unsigned NOT NULL DEFAULT '0',
`create_time` int(10) unsigned NOT NULL DEFAULT '0',
`update_time` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`role_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS demo.`admin_user` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`realname` varchar(20) NOT NULL DEFAULT '',
`phone` char(11) NOT NULL DEFAULT '',
`role_id` int(10) unsigned NOT NULL DEFAULT '0',
`operator_uid` int(10) unsigned NOT NULL DEFAULT '0',
`create_time` int(10) unsigned NOT NULL DEFAULT '0',
`update_time` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`) USING BTREE,
UNIQUE KEY `phone` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS to_demo.`admin_user` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`realname` varchar(20) NOT NULL DEFAULT '',
`phone` char(11) NOT NULL DEFAULT '',
`role_id` int(10) unsigned NOT NULL DEFAULT '0',
`operator_uid` int(10) unsigned NOT NULL DEFAULT '0',
`create_time` int(10) unsigned NOT NULL DEFAULT '0',
`update_time` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`uid`) USING BTREE,
UNIQUE KEY `phone` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (1, 0, 1, '数据管理', 'DataManagement', '', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (2, 1, 1, '数据中心', 'DataCenter', '', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (3, 2, 2, '数据总览', 'DataCenterSummary', '/dataCenter/summary', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (4, 2, 2, '投放数据', 'DataCenterPutIn', '/dataCenter/putIn', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (5, 2, 2, '对账数据', 'DataCenterRefund', '/dataCenter/refund', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (6, 2, 2, '对账管理', 'DataCenterBillManage', '/dataCenter/billManage', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (7, 1, 1, 'OA管理', 'OACenter', '', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (10, 7, 2, '商户管理', 'OACenterOutBusiness', '/conpanyManage/outBusiness', '', '/backend/merchant/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (12, 7, 2, '平台管理', 'OACenterPlatform', '/conpanyManage/platform', '', '/backend/platform/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (13, 7, 2, '工作室管理', 'OACenterStudioManage', '/OACenter/studioManage', '', '/backend/studio/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (14, 7, 2, '项目管理', 'OACenterTeamManage', '/OACenter/teamManage', '', '/backend/project/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (15, 7, 2, '版号管理', 'OACenterVersionManage', '/OACenter/versionManage', '', '/backend/isbn/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (16, 7, 2, '产品管理', 'OACenterProductManage', '/OACenter/productManage', '', '/backend/product/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (17, 7, 2, 'IP管理', 'OACenterIpManage', '/OACenter/ipManage', '', '/backend/ip/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (18, 1, 1, '权限管理', 'setup', '', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (19, 18, 2, '角色管理', 'role', '/setup/role', '', '/backend/role/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (20, 18, 2, '用户管理', 'user', '/setup/user', '', '/backend/user/listPaging', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (21, 6, 3, '新增', 'DataCenterBillManageCreate', '', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (22, 6, 3, '更新', 'DataCenterBillManageUpdate', '', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (23, 6, 3, '删除', 'DataCenterBillManageDelete', '', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (24, 9, 3, '新增', 'OACenterConpanySubjectCreate', '', '', '/backend/entity/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (25, 9, 3, '更新', 'OACenterConpanySubjectUpdate', '', '', '/backend/entity/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (26, 9, 3, '删除', 'OACenterConpanySubjectDelete', '', '', '/backend/entity/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (27, 10, 3, '新增', 'OACenterOutBusinessCreate', '', '', '/backend/merchant/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (28, 10, 3, '更新', 'OACenterOutBusinessUpdate', '', '', '/backend/merchant/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (29, 10, 3, '删除', 'OACenterOutBusinessDelete', '', '', '/backend/merchant/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (30, 11, 3, '新增', 'OACenterOutSubjectCreate', '', '', '/backend/entity/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (31, 11, 3, '更新', 'OACenterOutSubjectUpdate', '', '', '/backend/entity/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (32, 11, 3, '删除', 'OACenterOutSubjectDelete', '', '', '/backend/entity/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (33, 12, 3, '新增', 'OACenterPlatformCreate', '', '', '/backend/platform/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (34, 12, 3, '更新', 'OACenterPlatformUpdate', '', '', '/backend/platform/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (35, 12, 3, '删除', 'OACenterPlatformDelete', '', '', '/backend/platform/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (36, 13, 3, '新增', 'OACenterStudioManageCreate', '', '', '/backend/studio/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (37, 13, 3, '更新', 'OACenterStudioManageUpdate', '', '', '/backend/studio/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (38, 13, 3, '删除', 'OACenterStudioManageDelete', '', '', '/backend/studio/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (39, 14, 3, '新增', 'OACenterTeamManageCreate', '', '', '/backend/project/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (40, 14, 3, '更新', 'OACenterTeamManageUpdate', '', '', '/backend/project/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (41, 14, 3, '删除', 'OACenterTeamManageDelete', '', '', '/backend/project/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (42, 15, 3, '新增', 'OACenterVersionManageCreate', '', '', '/backend/isbn/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (43, 15, 3, '更新', 'OACenterVersionManageUpdate', '', '', '/backend/isbn/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (44, 15, 3, '删除', 'OACenterVersionManageDelete', '', '', '/backend/isbn/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (45, 16, 3, '新增', 'OACenterProductManageCreate', '', '', '/backend/product/create', 0, 1726166800, 1726166800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (46, 16, 3, '更新', 'OACenterProductManageUpdate', '', '', '/backend/product/update', 0, 1726166800, 1726166800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (47, 16, 3, '删除', 'OACenterProductManageDelete', '', '', '/backend/product/delete', 0, 1726166800, 1726166800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (48, 17, 3, '新增', 'OACenterIpManageCreate', '', '', '/backend/ip/create', 0, 1726176800, 1726176800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (49, 17, 3, '更新', 'OACenterIpManageUpdate', '', '', '/backend/ip/update', 0, 1726176800, 1726176800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (50, 17, 3, '删除', 'OACenterIpManageDelete', '', '', '/backend/ip/delete', 0, 1726176800, 1726176800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (51, 19, 3, '新增', 'roleCreate', '', '', '/backend/role/create', 0, 1926196800, 1926196800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (52, 19, 3, '更新', 'roleUpdate', '', '', '/backend/role/update', 0, 1926196800, 1926196800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (53, 19, 3, '删除', 'roleDelete', '', '', '/backend/role/delete', 0, 1926196800, 1926196800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (54, 20, 3, '新增', 'userCreate', '', '', '/backend/user/create', 0, 2026206800, 2026206800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (55, 20, 3, '更新', 'userUpdate', '', '', '/backend/user/update', 0, 2026206800, 2026206800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (56, 20, 3, '删除', 'userDelete', '', '', '/backend/user/delete', 0, 2026206800, 2026206800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (57, 7, 2, '体系管理', 'OACenterSystem', '/OACenter/system', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (58, 57, 3, '新增', 'channelTypeCreate', '', '', '/backend/system/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (59, 57, 3, '更新', 'channelTypeUpdate', '', '', '/backend/system/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (60, 57, 3, '删除', 'channelTypeDelete', '', '', '/backend/system/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (61, 7, 2, '渠道类型', 'OACenterChannelType', '/OACenter/channelType', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (62, 61, 3, '新增', 'systemCreate', '', '', '/backend/channel/create', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (63, 61, 3, '更新', 'systemUpdate', '', '', '/backend/channel/update', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (64, 61, 3, '删除', 'systemDelete', '', '', '/backend/channel/delete', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (65, 7, 2, '主体管理', 'OACenterSubject', '/OACenter/subject', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (66, 65, 3, '新增', 'OACenterSubjectCreate', '', '', '/backend/entity/create', 0, 1726556800, 1726556800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (67, 65, 3, '更新', 'OACenterSubjectUpdate', '', '', '/backend/entity/update', 0, 1726556800, 1726556800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (68, 65, 3, '删除', 'OACenterSubjectDelete', '', '', '/backend/entity/delete', 0, 1726556800, 1726556800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (69, 7, 2, '关系管理', 'OACenterRelation', '/OACenter/relation', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (70, 69, 3, '新增', 'OACenterRelationCreate', '', '', '/backend/product/create', 0, 1726556800, 1726556800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (71, 69, 3, '更新', 'OACenterRelationUpdate', '', '', '/backend/product/update', 0, 1726556800, 1726556800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (72, 69, 3, '删除', 'OACenterRelationDelete', '', '', '/backend/product/delete', 0, 1726556800, 1726556800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (73, 7, 2, '游戏列表', 'OACenterGameList', '/OACenter/gameList', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (74, 7, 2, '主体列表', 'OACenterSubjectList', '/OACenter/subjectList', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (75, 73, 3, '更新', 'OACenterGameUpdate', '/OACenter/gameUpdate', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_menu`(`menu_id`, `parent_menu_id`, `menu_type`, `menu_title`, `menu_name`, `menu_path`, `menu_icon`, `menu_server_uri`, `sort_index`, `create_time`, `update_time`) VALUES (76, 74, 3, '更新', 'OACenterSubjectUpdate', '/OACenter/subjectUpdate', '', '', 0, 1726156800, 1726156800);
INSERT INTO demo.`admin_role`(`role_id`, `role_name`, `menu_ids`, `operator_uid`, `create_time`, `update_time`) VALUES (1, '系统管理员', '', 0, 1726156800, 1726284595);
INSERT INTO demo.`admin_role`(`role_id`, `role_name`, `menu_ids`, `operator_uid`, `create_time`, `update_time`) VALUES (4, '测试角色12', '3,4,9,24,25,26,27,31,35,1,2,7,8,10,11,12', 2, 1726281570, 1726635877);
INSERT INTO `demo`.`admin_user`(`uid`, `realname`, `phone`, `role_id`, `operator_uid`, `create_time`, `update_time`) VALUES (2, '高山11', '18258462564', 1, 1, 1726230756, 1726294489);
INSERT INTO `demo`.`admin_user`(`uid`, `realname`, `phone`, `role_id`, `operator_uid`, `create_time`, `update_time`) VALUES (5, '测试二', '15555555555', 4, 2, 1726285599, 1726298236);
INSERT INTO `demo`.`admin_user`(`uid`, `realname`, `phone`, `role_id`, `operator_uid`, `create_time`, `update_time`) VALUES (7, '李春雨', '15565340236', 1, 2, 1726299012, 1726299012);
INSERT INTO `demo`.`admin_user`(`uid`, `realname`, `phone`, `role_id`, `operator_uid`, `create_time`, `update_time`) VALUES (8, '测试三', '15735218221', 1, 7, 1726710652, 1726710652);
FLUSH PRIVILEGES;