后端: - 工作日志表增加title字段 - 新增按日期查询日志接口 - 修复逻辑删除时updated_by为null的问题 移动端: - 日历月份切换功能 - 日期点击弹窗(有日志显示详情,无日志显示新建表单) - 登录页面居中及样式调整 - 日志列表卡片样式优化(标题加粗、内容去边框) - 新增"我的"页面(用户信息+退出登录) - 操作按钮使用|分隔符 构建脚本: - 自动复制构建产物到deploy目录
208 lines
9.7 KiB
SQL
208 lines
9.7 KiB
SQL
-- ====================================================
|
||
-- 工作日志服务平台 - 数据库初始化脚本
|
||
-- ====================================================
|
||
-- 版本: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;
|
||
|
||
-- ====================================================
|
||
-- 脚本执行完成
|
||
-- ====================================================
|