Files
freedom-admin/sql/delta_todo.sql
T
zhangjiaxun e37c13d541
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Successful in 12m23s
feat(todo): 新增多人待办清单后端
- 新增 t_todo 表(user_id 隔离 + 逻辑删除),增量脚本 sql/delta_todo.sql
- entity/mapper/service/controller 四层,复用 MyBatis-Plus 与 Result
- /todo/** 纳入 JWT 认证,user_id 一律由 token 解析,禁止前端传入
2026-10-16 23:27:35 +08:00

56 lines
3.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 待办清单模块(t_todo)
-- 数据库: freedom_db
-- 用途: 多人待办清单,数据按 user_id 隔离,每个登录用户只能管理自己的待办
-- 说明: 可重复执行(CREATE TABLE IF NOT EXISTS / 幂等 INSERT 判断)
-- 执行后需重新登录系统(或退出登录)刷新菜单缓存方可看到新菜单
-- ============================================================
USE `freedom_db`;
-- 1. 待办清单数据表
CREATE TABLE IF NOT EXISTS `t_todo` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` BIGINT NOT NULL COMMENT '所属用户ID(关联 t_sys_user.id)',
`title` VARCHAR(200) NOT NULL COMMENT '标题',
`status` TINYINT DEFAULT 0 COMMENT '状态:0未完成 1已完成',
`priority` TINYINT DEFAULT 2 COMMENT '优先级:1低 2中 3高',
`due_date` DATE DEFAULT NULL COMMENT '截止日期',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`create_by` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
`create_date` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
`update_date` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` TINYINT DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (`id`),
KEY `idx_todo_user_status` (`user_id`, `status`, `del_flag`),
KEY `idx_todo_user_due` (`user_id`, `due_date`)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8mb4 COMMENT='待办清单表';
-- 2. 菜单权限:一级菜单「待办」
INSERT INTO `t_sys_permission`
(`parent_id`, `permission_code`, `permission_name`, `permission_desc`, `level`, `icon`, `url`, `component`, `sort`, `create_by`, `create_date`, `del_flag`)
SELECT 0, 'todo', '待办', '多人待办清单', 1, 'md-checkmark-circle', '', '', 10, 'admin', NOW(), 0
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_sys_permission` WHERE `permission_code` = 'todo' AND `del_flag` = 0);
-- 3. 菜单权限:二级菜单「待办清单」
SET @todo_parent_id = (SELECT `id` FROM `t_sys_permission` WHERE `permission_code` = 'todo' AND `del_flag` = 0 ORDER BY `id` LIMIT 1);
INSERT INTO `t_sys_permission`
(`parent_id`, `permission_code`, `permission_name`, `permission_desc`, `level`, `icon`, `url`, `component`, `sort`, `create_by`, `create_date`, `del_flag`)
SELECT @todo_parent_id, 'todo:list', '待办清单', '个人待办事项的增删改与完成状态维护', 2, 'md-list-box', '/todo/list', '/todo/todo-list', 1, 'admin', NOW(), 0
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM `t_sys_permission` WHERE `permission_code` = 'todo:list' AND `del_flag` = 0);
-- 4. 角色授权:给所有现有角色挂上新菜单(幂等)
INSERT INTO `t_sys_role_permission` (`role_id`, `permission_id`, `create_by`, `create_date`)
SELECT r.`id`, p.`id`, 'admin', NOW()
FROM `t_sys_role` r
JOIN `t_sys_permission` p ON p.`permission_code` IN ('todo', 'todo:list') AND p.`del_flag` = 0
WHERE r.`del_flag` = 0
AND NOT EXISTS (
SELECT 1 FROM `t_sys_role_permission` rp
WHERE rp.`role_id` = r.`id` AND rp.`permission_id` = p.`id`
);