feat(todo): 新增多人待办清单后端
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Successful in 12m23s

- 新增 t_todo 表(user_id 隔离 + 逻辑删除),增量脚本 sql/delta_todo.sql
- entity/mapper/service/controller 四层,复用 MyBatis-Plus 与 Result
- /todo/** 纳入 JWT 认证,user_id 一律由 token 解析,禁止前端传入
This commit is contained in:
zhangjiaxun
2026-10-16 23:27:35 +08:00
parent 65a844d5bd
commit e37c13d541
7 changed files with 345 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
-- ============================================================
-- 待办清单模块(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`
);