refactor: 调整自增 ID 为分布式 ID

使用 CosId 提供的雪花算法实现
This commit is contained in:
Charles7c 2024-02-13 22:06:34 +08:00
parent 56f67d9089
commit 4779887751
7 changed files with 84 additions and 25 deletions

View File

@ -13,6 +13,16 @@
<description>公共模块(存放公共工具类,公共配置等)</description>
<dependencies>
<!-- CosId通用、灵活、高性能的分布式 ID 生成器) -->
<dependency>
<groupId>me.ahoo.cosid</groupId>
<artifactId>cosid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>me.ahoo.cosid</groupId>
<artifactId>cosid-spring-redis</artifactId>
</dependency>
<!-- SMS4J短信聚合框架轻松集成多家短信服务解决接入多个短信 SDK 的繁琐流程) -->
<dependency>
<groupId>org.dromara.sms4j</groupId>

View File

@ -141,7 +141,7 @@ mybatis-plus:
db-config:
# 主键类型(默认 assign_id表示自行赋值
# auto 代表使用数据库自增策略(需要在表中设置好自增约束)
id-type: AUTO
id-type: ASSIGN_ID
# 逻辑删除字段
logic-delete-field: isDeleted
# 逻辑删除全局值(默认 1表示已删除
@ -153,6 +153,9 @@ mybatis-plus:
enabled: true
# Mapper 接口扫描包配置
mapper-package: ${project.base-package}.**.mapper
# ID 生成器配置
id-generator:
type: COSID
# 数据权限配置
data-permission:
enabled: true
@ -161,6 +164,30 @@ mybatis-plus:
enabled: true
db-type: MYSQL
--- ### CosId 配置
cosid:
namespace: ${spring.application.name}
machine:
enabled: true
# 机器号分配器
distributor:
type: REDIS
guarder:
# 开启机器号守护
enabled: true
snowflake:
enabled: true
zone-id: Asia/Shanghai
epoch: 1577203200000
share:
# 开启时钟回拨同步
clock-sync: true
friendly: true
provider:
safe-js:
machine-bit: 3
sequence-bit: 9
--- ### 服务器配置
server:
servlet:

View File

@ -43,45 +43,45 @@ INSERT IGNORE INTO `sys_dept`
(`id`, `name`, `parent_id`, `ancestors`, `description`, `sort`, `status`, `is_system`, `create_user`, `create_time`, `update_user`, `update_time`)
VALUES
(1, 'Xxx科技有限公司', 0, '0', '系统初始部门', 1, 1, b'1', 1, NOW(), NULL, NULL),
(2, '天津总部', 1, '0,1', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
(3, '研发部', 2, '0,1,2', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
(4, 'UI部', 2, '0,1,2', NULL, 2, 1, b'0', 1, NOW(), NULL, NULL),
(5, '测试部', 2, '0,1,2', NULL, 3, 1, b'0', 1, NOW(), NULL, NULL),
(6, '运维部', 2, '0,1,2', NULL, 4, 1, b'0', 1, NOW(), NULL, NULL),
(7, '研发一组', 3, '0,1,2,3', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
(8, '研发二组', 3, '0,1,2,3', NULL, 2, 2, b'0', 1, NOW(), NULL, NULL);
(547887852587843590, '天津总部', 1, '0,1', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
(547888008188133385, '研发部', 547887852587843590, '0,1,2', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
(547888460711591948, 'UI部', 547887852587843590, '0,1,2', NULL, 2, 1, b'0', 1, NOW(), NULL, NULL),
(547888483713155087, '测试部', 547887852587843590, '0,1,2', NULL, 3, 1, b'0', 1, NOW(), NULL, NULL),
(547888505959743506, '运维部', 547887852587843590, '0,1,2', NULL, 4, 1, b'0', 1, NOW(), NULL, NULL),
(547888556819873814, '研发一组', 547888008188133385, '0,1,2,3', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
(547888580614160409, '研发二组', 547888008188133385, '0,1,2,3', NULL, 2, 2, b'0', 1, NOW(), NULL, NULL);
-- 初始化默认角色
INSERT IGNORE INTO `sys_role`
(`id`, `name`, `code`, `data_scope`, `description`, `sort`, `status`, `is_system`, `create_user`, `create_time`, `update_user`, `update_time`)
VALUES
(1, '超级管理员', 'admin', 1, '系统初始角色', 1, 1, b'1', 1, NOW(), NULL, NULL),
(2, '测试人员', 'test', 5, NULL, 2, 1, b'0', 1, NOW(), NULL, NULL);
(547888897925840928, '测试人员', 'test', 5, NULL, 2, 1, b'0', 1, NOW(), NULL, NULL);
-- 初始化默认用户admin/admin123test/123456
INSERT IGNORE INTO `sys_user`
(`id`, `username`, `nickname`, `password`, `gender`, `email`, `phone`, `avatar`, `description`, `status`, `is_system`, `pwd_reset_time`, `dept_id`, `create_user`, `create_time`, `update_user`, `update_time`)
VALUES
(1, 'admin', '超级管理员', '9802815bcc5baae7feb1ae0d0566baf2', 1, 'charles7c@126.com', '18888888888', NULL, '系统初始用户', 1, b'1', NOW(), 1, 1, NOW(), NULL, NULL),
(2, 'test', '测试员', '8e114197e1b33783a00542ad67e80516', 2, NULL, NULL, NULL, NULL, 2, b'0', NOW(), 5, 1, NOW(), NULL, NULL);
(547889293968801831, 'test', '测试员', '8e114197e1b33783a00542ad67e80516', 2, NULL, NULL, NULL, NULL, 2, b'0', NOW(), 547888483713155087, 1, NOW(), NULL, NULL);
-- 初始化默认角色和菜单关联数据
INSERT IGNORE INTO `sys_role_menu`
(`role_id`, `menu_id`)
VALUES
(2, 1000),
(2, 1010),
(2, 1011),
(2, 1012),
(2, 1013),
(2, 1014);
(547889293968801831, 1000),
(547889293968801831, 1010),
(547889293968801831, 1011),
(547889293968801831, 1012),
(547889293968801831, 1013),
(547889293968801831, 1014);
-- 初始化默认角色和部门关联数据
INSERT IGNORE INTO `sys_role_dept` (`role_id`, `dept_id`) VALUES (2, 5);
INSERT IGNORE INTO `sys_role_dept` (`role_id`, `dept_id`) VALUES (547888897925840928, 547888483713155087);
-- 初始化默认用户和角色关联数据
INSERT IGNORE INTO `sys_user_role`
(`user_id`, `role_id`)
VALUES
(1, 1),
(2, 2);
(547889293968801831, 547888897925840928);

View File

@ -2,7 +2,7 @@
-- changeset Charles7c:1
CREATE TABLE IF NOT EXISTS `gen_config` (
`table_name` varchar(64) COMMENT '表名称',
`table_name` varchar(64) NOT NULL COMMENT '表名称',
`module_name` varchar(60) NOT NULL COMMENT '模块名称',
`package_name` varchar(60) NOT NULL COMMENT '包名称',
`frontend_path` varchar(255) DEFAULT NULL COMMENT '前端路径',

View File

@ -18,13 +18,13 @@ VALUES
INSERT IGNORE INTO `sys_dict`
(`id`, `name`, `code`, `description`, `is_system`, `create_user`, `create_time`, `update_user`, `update_time`)
VALUES
(1, '公告类型', 'announcement_type', NULL, b'1', 1, NOW(), NULL, NULL);
(547889614262632491, '公告类型', 'announcement_type', NULL, b'1', 1, NOW(), NULL, NULL);
INSERT IGNORE INTO `sys_dict_item`
(`id`, `label`, `value`, `color`, `sort`, `description`, `dict_id`, `create_user`, `create_time`, `update_user`, `update_time`)
VALUES
(1, '通知', '1', 'blue', 1, NULL, 1, 1, NOW(), NULL, NULL),
(2, '活动', '2', 'orangered', 2, NULL, 1, 1, NOW(), NULL, NULL);
(547889649658363951, '通知', '1', 'blue', 1, NULL, 547889614262632491, 1, NOW(), NULL, NULL),
(547890124537462835, '活动', '2', 'orangered', 2, NULL, 547889614262632491, 1, NOW(), NULL, NULL);
-- 初始化默认参数
INSERT IGNORE INTO `sys_option`

View File

@ -20,5 +20,5 @@ VALUES
INSERT IGNORE INTO `sys_storage`
(`id`, `name`, `code`, `type`, `access_key`, `secret_key`, `endpoint`, `bucket_name`, `domain`, `description`, `is_default`, `sort`, `status`, `create_user`, `create_time`, `update_user`, `update_time`)
VALUES
(1, '开发环境', 'local_dev', 2, NULL, NULL, NULL, 'C:/continew-admin/data/file/', 'http://localhost:8000/file', '本地存储', b'1', 1, 1, 1, NOW(), NULL, NULL),
(2, '生产环境', 'local_prod', 2, NULL, NULL, NULL, '../data/file/', 'http://api.charles7c.top/file', '本地存储', b'0', 2, 2, 1, NOW(), NULL, NULL);
(547890346239983671, '开发环境', 'local_dev', 2, NULL, NULL, NULL, 'C:/continew-admin/data/file/', 'http://localhost:8000/file', '本地存储', b'1', 1, 1, 1, NOW(), NULL, NULL),
(547890366586552377, '生产环境', 'local_prod', 2, NULL, NULL, NULL, '../data/file/', 'http://api.charles7c.top/file', '本地存储', b'0', 2, 2, 1, NOW(), NULL, NULL);

View File

@ -9,4 +9,26 @@ ALTER TABLE `sys_user`
-- changeset Charles7c:3
ALTER TABLE `sys_user`
MODIFY COLUMN `phone` varchar(255) DEFAULT NULL COMMENT '手机号码' AFTER `email`;
MODIFY COLUMN `phone` varchar(255) DEFAULT NULL COMMENT '手机号码' AFTER `email`;
-- changeset Charles7c:4
ALTER TABLE `sys_menu`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_dept`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_role`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_user`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_log`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_announcement`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_dict`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_dict_item`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_message`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;
ALTER TABLE `sys_storage`
MODIFY COLUMN `id` bigint NOT NULL COMMENT 'ID' FIRST;