449 lines
24 KiB
SQL
449 lines
24 KiB
SQL
-- DesignHub 设计师任务抢单管理系统 数据库Schema
|
||
-- 版本: v1.7
|
||
-- 创建时间: 2025-11-07
|
||
|
||
-- 创建数据库
|
||
CREATE DATABASE IF NOT EXISTS `designhub` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||
|
||
USE `designhub`;
|
||
|
||
-- ==============================
|
||
-- 一、用户与组织架构模块
|
||
-- ==============================
|
||
|
||
-- 1. 用户表
|
||
CREATE TABLE `sys_user` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
|
||
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
|
||
`password` VARCHAR(255) NULL COMMENT '密码(如果使用Casdoor可为空)',
|
||
`real_name` VARCHAR(50) NOT NULL COMMENT '真实姓名',
|
||
`email` VARCHAR(100) NULL COMMENT '邮箱',
|
||
`phone` VARCHAR(20) NULL COMMENT '手机号',
|
||
`avatar` VARCHAR(255) NULL COMMENT '头像URL',
|
||
`ding_user_id` VARCHAR(100) NULL COMMENT '钉钉用户ID',
|
||
`dept_id` BIGINT NULL COMMENT '部门ID',
|
||
`role_ids` VARCHAR(255) NULL COMMENT '角色ID列表(逗号分隔)',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_username` (`username`),
|
||
UNIQUE KEY `uk_ding_user_id` (`ding_user_id`),
|
||
KEY `idx_dept_id` (`dept_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
|
||
|
||
-- 2. 部门表
|
||
CREATE TABLE `sys_dept` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '部门ID',
|
||
`parent_id` BIGINT DEFAULT 0 COMMENT '父部门ID',
|
||
`dept_name` VARCHAR(100) NOT NULL COMMENT '部门名称',
|
||
`dept_code` VARCHAR(50) NULL COMMENT '部门编码',
|
||
`dept_type` VARCHAR(20) DEFAULT 'receiving' COMMENT '部门类型:demand-需求部门 receiving-接单部门',
|
||
`ding_dept_id` VARCHAR(100) NULL COMMENT '钉钉部门ID',
|
||
`leader_id` BIGINT NULL COMMENT '部门负责人ID',
|
||
`score_balance` INT DEFAULT 0 COMMENT '部门积分余额',
|
||
`limit_enabled` TINYINT DEFAULT 0 COMMENT '是否启用消耗限制:0-否 1-是',
|
||
`limit_period` VARCHAR(20) DEFAULT 'month' COMMENT '限制周期:day-每日 week-每周 month-每月',
|
||
`period_limit` INT DEFAULT 0 COMMENT '周期限额',
|
||
`alert_threshold` INT DEFAULT 80 COMMENT '预警阈值(百分比)',
|
||
`over_limit_action` VARCHAR(20) DEFAULT 'alert' COMMENT '超限操作:alert-仅提醒 block-禁止发起',
|
||
`allowed_demand_types` VARCHAR(255) NULL COMMENT '允许的需求类型(逗号分隔)',
|
||
`sort_order` INT DEFAULT 0 COMMENT '排序',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_parent_id` (`parent_id`),
|
||
KEY `idx_dept_type` (`dept_type`),
|
||
KEY `idx_leader_id` (`leader_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门表';
|
||
|
||
-- 3. 角色表
|
||
CREATE TABLE `sys_role` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '角色ID',
|
||
`role_name` VARCHAR(50) NOT NULL COMMENT '角色名称',
|
||
`role_code` VARCHAR(50) NOT NULL COMMENT '角色编码',
|
||
`description` VARCHAR(255) NULL COMMENT '角色描述',
|
||
`permissions` TEXT NULL COMMENT '权限列表(JSON)',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_role_code` (`role_code`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';
|
||
|
||
-- 4. 部门消耗限制记录表
|
||
CREATE TABLE `dept_limit_record` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`dept_id` BIGINT NOT NULL COMMENT '部门ID',
|
||
`period_type` VARCHAR(20) NOT NULL COMMENT '周期类型:day/week/month',
|
||
`period_start` DATE NOT NULL COMMENT '周期开始日期',
|
||
`period_end` DATE NOT NULL COMMENT '周期结束日期',
|
||
`period_limit` INT NOT NULL COMMENT '周期限额',
|
||
`consumed` INT DEFAULT 0 COMMENT '已消耗积分',
|
||
`remaining` INT DEFAULT 0 COMMENT '剩余积分',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_dept_period` (`dept_id`, `period_type`, `period_start`),
|
||
KEY `idx_period` (`period_start`, `period_end`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='部门消耗限制记录表';
|
||
|
||
-- ==============================
|
||
-- 二、任务管理模块
|
||
-- ==============================
|
||
|
||
-- 5. 任务表
|
||
CREATE TABLE `task` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '任务ID',
|
||
`task_no` VARCHAR(50) NOT NULL COMMENT '任务编号',
|
||
`title` VARCHAR(200) NOT NULL COMMENT '任务标题',
|
||
`task_type_id` BIGINT NOT NULL COMMENT '任务类型ID',
|
||
`task_sub_type` VARCHAR(50) NULL COMMENT '任务子类型:new-新品 optimize-优化 redesign-改图 other-其他',
|
||
`quantity` INT DEFAULT 1 COMMENT '数量',
|
||
`score` INT NOT NULL COMMENT '预估积分',
|
||
`estimated_hours` DECIMAL(5,2) NULL COMMENT '预估工时(小时)',
|
||
`brand_id` BIGINT NULL COMMENT '品牌ID',
|
||
`category_id` BIGINT NULL COMMENT '叶子类目ID',
|
||
`spu_info` VARCHAR(255) NULL COMMENT 'SPU信息',
|
||
`platform_id` BIGINT NULL COMMENT '平台ID',
|
||
`attachment_url` TEXT NULL COMMENT '附件URL(多个用逗号分隔)',
|
||
`delivery_path` TEXT NULL COMMENT '交付路径',
|
||
`publisher_id` BIGINT NOT NULL COMMENT '发布人ID',
|
||
`publisher_dept_id` BIGINT NOT NULL COMMENT '发布人部门ID',
|
||
`receiver_id` BIGINT NULL COMMENT '接收人ID',
|
||
`receiver_dept_id` BIGINT NULL COMMENT '接收人部门ID',
|
||
`release_type` VARCHAR(20) NOT NULL COMMENT '发布类型:assigned-指定 recruitment-招募 default-默认',
|
||
`status` VARCHAR(20) DEFAULT 'pending' COMMENT '状态:pending-待接单 in_progress-进行中 review-待审核 rejected-已驳回 completed-已完成 cancelled-已取消',
|
||
`progress` INT DEFAULT 0 COMMENT '完成进度(0-100)',
|
||
`start_time` DATETIME NULL COMMENT '开始时间',
|
||
`deadline` DATETIME NULL COMMENT '截止时间',
|
||
`complete_time` DATETIME NULL COMMENT '完成时间',
|
||
`rating` INT NULL COMMENT '评分(1-5星)',
|
||
`review_comment` TEXT NULL COMMENT '审核评论',
|
||
`reject_reason` TEXT NULL COMMENT '驳回原因',
|
||
`reject_deadline` DATETIME NULL COMMENT '驳回后的最晚交付时间',
|
||
`is_urgent` TINYINT DEFAULT 0 COMMENT '是否紧急:0-否 1-是',
|
||
`is_delayed` TINYINT DEFAULT 0 COMMENT '是否延误:0-否 1-是',
|
||
`delay_days` INT DEFAULT 0 COMMENT '延误天数',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_task_no` (`task_no`),
|
||
KEY `idx_publisher_id` (`publisher_id`),
|
||
KEY `idx_receiver_id` (`receiver_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务表';
|
||
|
||
-- 6. 任务类型表
|
||
CREATE TABLE `task_type` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '类型ID',
|
||
`type_name` VARCHAR(50) NOT NULL COMMENT '类型名称',
|
||
`unit_score` INT NOT NULL COMMENT '单价积分',
|
||
`estimated_hours` DECIMAL(5,2) NULL COMMENT '预估工时(小时)',
|
||
`description` VARCHAR(255) NULL COMMENT '描述',
|
||
`sort_order` INT DEFAULT 0 COMMENT '排序',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务类型表';
|
||
|
||
-- 7. 任务调配记录表
|
||
CREATE TABLE `task_transfer_log` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`task_id` BIGINT NOT NULL COMMENT '任务ID',
|
||
`transfer_type` VARCHAR(20) NOT NULL COMMENT '调配类型:transfer-转移 assign-指定 withdraw-撤回 priority-优先级调整 promote-推广',
|
||
`from_user_id` BIGINT NULL COMMENT '原接收人ID',
|
||
`to_user_id` BIGINT NULL COMMENT '新接收人ID',
|
||
`operator_id` BIGINT NOT NULL COMMENT '操作人ID',
|
||
`reason` VARCHAR(500) NULL COMMENT '调配原因',
|
||
`old_deadline` DATETIME NULL COMMENT '原截止时间',
|
||
`new_deadline` DATETIME NULL COMMENT '新截止时间',
|
||
`old_priority` INT NULL COMMENT '原优先级',
|
||
`new_priority` INT NULL COMMENT '新优先级',
|
||
`delay_days` INT NULL COMMENT '延误天数',
|
||
`penalty_score` INT NULL COMMENT '扣除积分',
|
||
`remark` TEXT NULL COMMENT '备注',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_task_id` (`task_id`),
|
||
KEY `idx_from_user` (`from_user_id`),
|
||
KEY `idx_to_user` (`to_user_id`),
|
||
KEY `idx_operator` (`operator_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务调配记录表';
|
||
|
||
-- ==============================
|
||
-- 三、积分管理模块
|
||
-- ==============================
|
||
|
||
-- 8. 积分记录表
|
||
CREATE TABLE `score_record` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`user_id` BIGINT NULL COMMENT '用户ID',
|
||
`dept_id` BIGINT NULL COMMENT '部门ID',
|
||
`task_id` BIGINT NULL COMMENT '关联任务ID',
|
||
`change_type` VARCHAR(50) NOT NULL COMMENT '变动类型:task_consume-任务消耗 task_reward-任务奖励 manual_adjust-手动调整 delay_penalty-延误扣分 incentive_reward-激励奖励 appeal_return-申诉返还',
|
||
`change_amount` INT NOT NULL COMMENT '变动积分(正数为增加,负数为减少)',
|
||
`before_amount` INT NULL COMMENT '变动前积分',
|
||
`after_amount` INT NULL COMMENT '变动后积分',
|
||
`reason` VARCHAR(500) NULL COMMENT '变动原因',
|
||
`operator_id` BIGINT NULL COMMENT '操作人ID',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_dept_id` (`dept_id`),
|
||
KEY `idx_task_id` (`task_id`),
|
||
KEY `idx_change_type` (`change_type`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='积分记录表';
|
||
|
||
-- ==============================
|
||
-- 四、延误扣分模块
|
||
-- ==============================
|
||
|
||
-- 9. 延误扣分记录表
|
||
CREATE TABLE `delay_penalty_record` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`task_id` BIGINT NOT NULL COMMENT '任务ID',
|
||
`designer_id` BIGINT NOT NULL COMMENT '设计师ID',
|
||
`delay_days` INT NOT NULL COMMENT '延误天数',
|
||
`delay_level` VARCHAR(20) NOT NULL COMMENT '延误等级:light-轻微 general-一般 severe-严重 major-重大',
|
||
`penalty_score` INT NOT NULL COMMENT '扣除积分',
|
||
`original_deadline` DATETIME NOT NULL COMMENT '原截止时间',
|
||
`actual_time` DATETIME NOT NULL COMMENT '实际完成/转移时间',
|
||
`status` VARCHAR(20) DEFAULT 'confirmed' COMMENT '状态:confirmed-已确认 appealed-已申诉 approved-申诉通过 rejected-申诉驳回',
|
||
`appeal_reason` TEXT NULL COMMENT '申诉原因',
|
||
`appeal_time` DATETIME NULL COMMENT '申诉时间',
|
||
`appeal_result` VARCHAR(255) NULL COMMENT '申诉结果',
|
||
`approver_id` BIGINT NULL COMMENT '审批人ID',
|
||
`approve_time` DATETIME NULL COMMENT '审批时间',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_task_id` (`task_id`),
|
||
KEY `idx_designer_id` (`designer_id`),
|
||
KEY `idx_delay_level` (`delay_level`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='延误扣分记录表';
|
||
|
||
-- 10. 延误扣分规则表
|
||
CREATE TABLE `delay_penalty_rule` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '规则ID',
|
||
`level_name` VARCHAR(20) NOT NULL COMMENT '等级名称:light-轻微 general-一般 severe-严重 major-重大',
|
||
`min_days` INT NOT NULL COMMENT '最小延误天数',
|
||
`max_days` INT NULL COMMENT '最大延误天数(NULL表示无上限)',
|
||
`base_score` INT NOT NULL COMMENT '基础扣分',
|
||
`per_day_score` INT NOT NULL COMMENT '每天递增扣分',
|
||
`description` VARCHAR(255) NULL COMMENT '规则描述',
|
||
`enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_level_name` (`level_name`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='延误扣分规则表';
|
||
|
||
-- ==============================
|
||
-- 五、激励系统模块
|
||
-- ==============================
|
||
|
||
-- 11. 成就勋章表
|
||
CREATE TABLE `achievement` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '成就ID',
|
||
`name` VARCHAR(100) NOT NULL COMMENT '成就名称',
|
||
`category` VARCHAR(50) NOT NULL COMMENT '成就类别:quantity-数量 quality-质量 efficiency-效率 special-特殊',
|
||
`icon` VARCHAR(255) NULL COMMENT '图标',
|
||
`description` VARCHAR(500) NULL COMMENT '描述',
|
||
`condition_json` TEXT NULL COMMENT '达成条件(JSON)',
|
||
`reward_score` INT DEFAULT 0 COMMENT '奖励积分',
|
||
`level` INT DEFAULT 1 COMMENT '成就等级',
|
||
`sort_order` INT DEFAULT 0 COMMENT '排序',
|
||
`enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_category` (`category`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='成就勋章表';
|
||
|
||
-- 12. 用户成就记录表
|
||
CREATE TABLE `user_achievement` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`user_id` BIGINT NOT NULL COMMENT '用户ID',
|
||
`achievement_id` BIGINT NOT NULL COMMENT '成就ID',
|
||
`achieved_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '获得时间',
|
||
`is_displayed` TINYINT DEFAULT 1 COMMENT '是否展示:0-否 1-是',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_achievement` (`user_id`, `achievement_id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_achievement_id` (`achievement_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户成就记录表';
|
||
|
||
-- 13. 用户目标表
|
||
CREATE TABLE `user_goal` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '目标ID',
|
||
`user_id` BIGINT NOT NULL COMMENT '用户ID',
|
||
`goal_type` VARCHAR(50) NOT NULL COMMENT '目标类型:daily-每日 weekly-每周 monthly-每月 custom-自定义',
|
||
`target_value` INT NOT NULL COMMENT '目标值',
|
||
`current_value` INT DEFAULT 0 COMMENT '当前值',
|
||
`start_date` DATE NOT NULL COMMENT '开始日期',
|
||
`end_date` DATE NOT NULL COMMENT '结束日期',
|
||
`status` VARCHAR(20) DEFAULT 'active' COMMENT '状态:active-进行中 completed-已完成 failed-未完成',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_user_id` (`user_id`),
|
||
KEY `idx_status` (`status`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户目标表';
|
||
|
||
-- 14. 用户签到记录表
|
||
CREATE TABLE `user_check_in` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '记录ID',
|
||
`user_id` BIGINT NOT NULL COMMENT '用户ID',
|
||
`check_in_date` DATE NOT NULL COMMENT '签到日期',
|
||
`continuous_days` INT DEFAULT 1 COMMENT '连续天数',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_date` (`user_id`, `check_in_date`),
|
||
KEY `idx_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户签到记录表';
|
||
|
||
-- 15. 激励配置表
|
||
CREATE TABLE `incentive_config` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '配置ID',
|
||
`config_key` VARCHAR(100) NOT NULL COMMENT '配置键',
|
||
`config_value` TEXT NULL COMMENT '配置值(JSON)',
|
||
`description` VARCHAR(500) NULL COMMENT '描述',
|
||
`enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_config_key` (`config_key`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='激励配置表';
|
||
|
||
-- 16. 自动奖励规则表
|
||
CREATE TABLE `auto_reward_rule` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '规则ID',
|
||
`rule_name` VARCHAR(100) NOT NULL COMMENT '规则名称',
|
||
`reward_period` VARCHAR(20) NOT NULL COMMENT '奖励周期:daily-每日 weekly-每周 monthly-每月 quarterly-季度 yearly-年度',
|
||
`rank_limit` INT NULL COMMENT '排名限制(前N名)',
|
||
`task_threshold` INT NULL COMMENT '任务数量阈值',
|
||
`rating_threshold` DECIMAL(3,2) NULL COMMENT '评分阈值',
|
||
`no_delay_required` TINYINT DEFAULT 0 COMMENT '是否要求零延误:0-否 1-是',
|
||
`reward_score` INT NOT NULL COMMENT '奖励积分',
|
||
`auto_issue` TINYINT DEFAULT 1 COMMENT '是否自动发放:0-否 1-是',
|
||
`enabled` TINYINT DEFAULT 1 COMMENT '是否启用:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='自动奖励规则表';
|
||
|
||
-- ==============================
|
||
-- 六、系统配置模块
|
||
-- ==============================
|
||
|
||
-- 17. 品牌表
|
||
CREATE TABLE `brand` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '品牌ID',
|
||
`brand_name` VARCHAR(100) NOT NULL COMMENT '品牌名称',
|
||
`brand_code` VARCHAR(50) NULL COMMENT '品牌编码',
|
||
`logo` VARCHAR(255) NULL COMMENT '品牌Logo',
|
||
`description` VARCHAR(500) NULL COMMENT '描述',
|
||
`sort_order` INT DEFAULT 0 COMMENT '排序',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='品牌表';
|
||
|
||
-- 18. 类目表
|
||
CREATE TABLE `category` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '类目ID',
|
||
`parent_id` BIGINT DEFAULT 0 COMMENT '父类目ID',
|
||
`category_name` VARCHAR(100) NOT NULL COMMENT '类目名称',
|
||
`category_code` VARCHAR(50) NULL COMMENT '类目编码',
|
||
`level` INT DEFAULT 1 COMMENT '层级',
|
||
`is_leaf` TINYINT DEFAULT 1 COMMENT '是否叶子节点:0-否 1-是',
|
||
`sort_order` INT DEFAULT 0 COMMENT '排序',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_parent_id` (`parent_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='类目表';
|
||
|
||
-- 19. 平台表
|
||
CREATE TABLE `platform` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '平台ID',
|
||
`platform_name` VARCHAR(100) NOT NULL COMMENT '平台名称',
|
||
`platform_code` VARCHAR(50) NULL COMMENT '平台编码',
|
||
`icon` VARCHAR(255) NULL COMMENT '图标',
|
||
`description` VARCHAR(500) NULL COMMENT '描述',
|
||
`sort_order` INT DEFAULT 0 COMMENT '排序',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用 1-启用',
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-否 1-是',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='平台表';
|
||
|
||
-- ==============================
|
||
-- 七、通知模块
|
||
-- ==============================
|
||
|
||
-- 20. 通知表
|
||
CREATE TABLE `sys_notification` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '通知ID',
|
||
`receiver_id` BIGINT NOT NULL COMMENT '接收人ID',
|
||
`receiver_ding_user_id` VARCHAR(100) NULL COMMENT '接收人钉钉ID',
|
||
`type` VARCHAR(50) NOT NULL COMMENT '通知类型',
|
||
`title` VARCHAR(200) NOT NULL COMMENT '通知标题',
|
||
`content` TEXT NOT NULL COMMENT '通知内容',
|
||
`link` VARCHAR(500) NULL COMMENT '链接地址',
|
||
`mobile_link` VARCHAR(500) NULL COMMENT '移动端链接',
|
||
`related_task_id` BIGINT NULL COMMENT '关联任务ID',
|
||
`is_read` TINYINT DEFAULT 0 COMMENT '是否已读:0-否 1-是',
|
||
`read_time` DATETIME NULL COMMENT '阅读时间',
|
||
`ding_enabled` TINYINT DEFAULT 1 COMMENT '是否发送钉钉:0-否 1-是',
|
||
`ding_message_type` VARCHAR(20) DEFAULT 'text' COMMENT '钉钉消息类型:text/markdown/oa/actionCard',
|
||
`ding_priority` INT DEFAULT 0 COMMENT '钉钉优先级',
|
||
`ding_pushed` TINYINT DEFAULT 0 COMMENT '钉钉是否已推送:0-否 1-是',
|
||
`ding_push_time` DATETIME NULL COMMENT '钉钉推送时间',
|
||
`ding_push_result` TEXT NULL COMMENT '钉钉推送结果(JSON)',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_receiver_id` (`receiver_id`),
|
||
KEY `idx_is_read` (`is_read`),
|
||
KEY `idx_type` (`type`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知表';
|
||
|
||
-- 创建索引以优化查询性能
|
||
CREATE INDEX idx_task_status_time ON `task` (`status`, `create_time`);
|
||
CREATE INDEX idx_score_record_time ON `score_record` (`create_time`, `change_type`);
|
||
CREATE INDEX idx_user_dept ON `sys_user` (`dept_id`, `status`);
|
||
|
||
|
||
-- Task progress snapshot table
|
||
DROP TABLE IF EXISTS `task_progress_snapshot`;
|
||
CREATE TABLE `task_progress_snapshot` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||
`snapshot_time` DATETIME NOT NULL,
|
||
`metrics_json` TEXT,
|
||
`status_distribution_json` TEXT,
|
||
`trend_json` TEXT,
|
||
`stage_segments_json` TEXT,
|
||
`department_load_json` MEDIUMTEXT,
|
||
`risk_tasks_json` MEDIUMTEXT,
|
||
`task_points_json` MEDIUMTEXT,
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|