-- ==================================================== -- 工作日志服务平台 - 数据库初始化脚本 -- ==================================================== -- 版本:V1.0 -- 创建日期:2026-02-24 -- 说明:本脚本用于创建工作日志平台所需的数据库表结构 -- ==================================================== -- 设置字符集 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ==================================================== -- 1. 创建数据库(如果不存在) -- ==================================================== CREATE DATABASE IF NOT EXISTS `worklog` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci; USE `worklog`; -- ==================================================== -- 2. 创建数据库用户(如果需要) -- ==================================================== -- 注意:需要以 root 用户或具有用户管理权限的用户执行以下语句 -- 创建数据库用户 -- CREATE USER IF NOT EXISTS 'worklog'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Wlog@123'; -- CREATE USER IF NOT EXISTS 'worklog'@'%' IDENTIFIED WITH caching_sha2_password BY 'Wlog@123'; -- 授予权限 -- GRANT ALL PRIVILEGES ON worklog.* TO 'worklog'@'localhost'; -- GRANT ALL PRIVILEGES ON worklog.* TO 'worklog'@'%'; -- 刷新权限 -- FLUSH PRIVILEGES; -- ==================================================== -- 3. 系统用户表 (sys_user) -- ==================================================== -- 功能:存储系统用户基础信息,包括登录凭证、个人信息、角色权限等 -- 主键策略:VARCHAR(20) 存储雪花算法生成的19位数字ID DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `id` VARCHAR(20) NOT NULL COMMENT '用户ID(雪花算法生成)', `username` VARCHAR(50) NOT NULL COMMENT '登录账号', `password` VARCHAR(100) NOT NULL COMMENT '登录密码(BCrypt加密)', `name` VARCHAR(50) NOT NULL COMMENT '姓名', `phone` VARCHAR(20) DEFAULT NULL COMMENT '联系方式', `email` VARCHAR(100) DEFAULT NULL COMMENT '电子邮箱', `position` VARCHAR(50) DEFAULT NULL COMMENT '职位', `description` VARCHAR(500) DEFAULT NULL COMMENT '描述', `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态(0-禁用,1-启用)', `role` VARCHAR(20) NOT NULL DEFAULT 'USER' COMMENT '角色(USER-普通用户,ADMIN-管理员)', `created_by` VARCHAR(20) NOT NULL COMMENT '创建人ID', `created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` VARCHAR(20) NOT NULL COMMENT '更新人ID', `updated_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-未删除,1-已删除)', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), KEY `idx_status` (`status`), KEY `idx_deleted` (`deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统用户表'; -- ==================================================== -- 4. 日志模板表 (log_template) -- ==================================================== -- 功能:存储工作日志模板,提供标准化的日志格式 DROP TABLE IF EXISTS `log_template`; CREATE TABLE `log_template` ( `id` VARCHAR(20) NOT NULL COMMENT '模板ID(雪花算法生成)', `template_name` VARCHAR(100) NOT NULL COMMENT '模板名称', `template_content` TEXT NOT NULL COMMENT '模板内容(Markdown格式)', `instruction` VARCHAR(500) DEFAULT NULL COMMENT '使用说明', `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态(0-禁用,1-启用)', `created_by` VARCHAR(20) NOT NULL COMMENT '创建人ID', `created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` VARCHAR(20) NOT NULL COMMENT '更新人ID', `updated_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-未删除,1-已删除)', PRIMARY KEY (`id`), UNIQUE KEY `uk_template_name` (`template_name`), KEY `idx_status` (`status`), KEY `idx_deleted` (`deleted`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='日志模板表'; -- ==================================================== -- 5. 工作日志表 (work_log) -- ==================================================== -- 功能:存储员工每日工作日志记录 DROP TABLE IF EXISTS `work_log`; CREATE TABLE `work_log` ( `id` VARCHAR(20) NOT NULL COMMENT '日志ID(雪花算法生成)', `user_id` VARCHAR(20) NOT NULL COMMENT '记录人ID', `log_date` DATE NOT NULL COMMENT '日志日期', `title` VARCHAR(200) DEFAULT NULL COMMENT '日志标题', `record_time` DATETIME NOT NULL COMMENT '记录时间', `content` TEXT NOT NULL COMMENT '日志内容(Markdown格式,最大2000汉字)', `template_id` VARCHAR(20) DEFAULT NULL COMMENT '使用模板ID', `created_by` VARCHAR(20) NOT NULL COMMENT '创建人ID', `created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` VARCHAR(20) NOT NULL COMMENT '更新人ID', `updated_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-未删除,1-已删除)', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_log_date` (`log_date`), KEY `idx_deleted` (`deleted`), KEY `idx_user_date` (`user_id`, `log_date`), CONSTRAINT `fk_work_log_user` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`id`), CONSTRAINT `fk_work_log_template` FOREIGN KEY (`template_id`) REFERENCES `log_template` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工作日志表'; -- ==================================================== -- 6. 初始化数据 -- ==================================================== -- 6.1 创建默认管理员账号 -- 密码:admin123(BCrypt加密后的值,实际使用时需要通过程序生成) -- 注意:以下密码哈希值仅为示例,实际部署时应通过程序生成 INSERT INTO `sys_user` ( `id`, `username`, `password`, `name`, `phone`, `email`, `position`, `description`, `status`, `role`, `created_by`, `updated_by` ) VALUES ( '1000000000000000001', 'admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '系统管理员', NULL, 'admin@example.com', '系统管理员', '系统默认管理员账号', 1, 'ADMIN', '1000000000000000001', '1000000000000000001' ); -- 6.2 创建默认日志模板 INSERT INTO `log_template` ( `id`, `template_name`, `template_content`, `instruction`, `status`, `created_by`, `updated_by` ) VALUES ( '2000000000000000001', '每日工作日志', '## 今日工作内容\n\n### 1. 已完成工作\n- \n\n### 2. 进行中工作\n- \n\n### 3. 遇到的问题\n- \n\n### 4. 明日计划\n- ', '适用于记录每日工作内容、进度和计划', 1, '1000000000000000001', '1000000000000000001' ), ( '2000000000000000002', '研发日报', '## 研发日报\n\n### 开发任务\n- **任务名称**:\n- **完成进度**:\n- **技术方案**:\n\n### 代码提交\n- **提交次数**:\n- **主要功能**:\n\n### Bug修复\n- **问题描述**:\n- **解决方案**:\n\n### 技术难点\n- \n\n### 明日计划\n- ', '适用于研发人员记录每日开发工作', 1, '1000000000000000001', '1000000000000000001' ), ( '2000000000000000003', '周报模板', '## 本周工作总结\n\n### 本周完成工作\n1. \n\n### 工作亮点\n- \n\n### 存在问题\n- \n\n### 下周工作计划\n1. \n\n### 需要协调的资源\n- ', '适用于周度工作总结和计划', 1, '1000000000000000001', '1000000000000000001' ); -- ==================================================== -- 7. 数据库说明 -- ==================================================== -- -- 数据库配置: -- - 数据库名:worklog -- - 数据库用户:worklog -- - 数据库密码:Wlog@123 -- - 字符集:utf8mb4 -- - 排序规则:utf8mb4_general_ci -- -- 设计原则: -- 1. 主键策略:所有表主键使用 VARCHAR(20) 存储雪花算法生成的19位数字ID -- 2. 审计字段:统一包含 created_by、created_time、updated_by、updated_time、deleted -- 3. 逻辑删除:使用 deleted 字段实现软删除,保留历史数据 -- 4. 索引设计:为常用查询字段建立索引,提升查询性能 -- 5. 字符集:统一使用 utf8mb4,支持 emoji 等特殊字符 -- 6. 唯一性约束:username 和 template_name 建立唯一索引 -- -- 外键关系: -- - work_log.user_id -> sys_user.id -- - work_log.template_id -> log_template.id -- -- 注意事项: -- 1. 默认管理员密码需要在实际部署时通过程序使用 BCrypt 算法重新生成 -- 2. 雪花算法ID需要在应用层实现,数据库仅存储 -- 3. 日志内容限制为2000汉字,需在应用层进行校验 -- SET FOREIGN_KEY_CHECKS = 1; -- ==================================================== -- 脚本执行完成 -- ====================================================