spa/database/spa_store_employee.sql

194 lines
8.7 KiB
SQL

-- ============================================
-- SPA管理系统 - 店铺员工管理SQL
-- ============================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- 1. 店铺信息表
DROP TABLE IF EXISTS `spa_store`;
CREATE TABLE `spa_store` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`deleted_at` datetime(3) DEFAULT NULL,
`store_no` varchar(50) NOT NULL COMMENT '店铺编号',
`store_name` varchar(100) NOT NULL COMMENT '店铺名称',
`store_type` tinyint DEFAULT 1 COMMENT '店铺类型 1直营 2加盟',
`province` varchar(50) DEFAULT NULL COMMENT '省份',
`city` varchar(50) DEFAULT NULL COMMENT '城市',
`district` varchar(50) DEFAULT NULL COMMENT '区县',
`address` varchar(500) DEFAULT NULL COMMENT '详细地址',
`longitude` decimal(10,6) DEFAULT NULL COMMENT '经度',
`latitude` decimal(10,6) DEFAULT NULL COMMENT '纬度',
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`business_hours` varchar(100) DEFAULT NULL COMMENT '营业时间',
`images` json DEFAULT NULL COMMENT '店铺图片JSON',
`facilities` json DEFAULT NULL COMMENT '设施JSON',
`manager_id` bigint unsigned DEFAULT NULL COMMENT '店长ID',
`status` tinyint DEFAULT 1 COMMENT '状态 1营业中 2休息中 3已关闭',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_store_no` (`store_no`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='店铺信息表';
-- 2. 房间信息表
DROP TABLE IF EXISTS `spa_room`;
CREATE TABLE `spa_room` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`deleted_at` datetime(3) DEFAULT NULL,
`store_id` bigint unsigned NOT NULL COMMENT '店铺ID',
`room_no` varchar(50) NOT NULL COMMENT '房间编号',
`room_name` varchar(100) NOT NULL COMMENT '房间名称',
`room_type` tinyint DEFAULT 1 COMMENT '房间类型 1单人 2双人 3VIP',
`capacity` int DEFAULT 1 COMMENT '容纳人数',
`facilities` json DEFAULT NULL COMMENT '设施JSON',
`status` tinyint DEFAULT 1 COMMENT '状态 1空闲 2使用中 3维护中',
PRIMARY KEY (`id`),
KEY `idx_store_id` (`store_id`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间信息表';
-- 3. 房间预约表
DROP TABLE IF EXISTS `spa_room_booking`;
CREATE TABLE `spa_room_booking` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`room_id` bigint unsigned NOT NULL COMMENT '房间ID',
`order_id` bigint unsigned NOT NULL COMMENT '订单ID',
`booking_date` date NOT NULL COMMENT '预约日期',
`start_time` time NOT NULL COMMENT '开始时间',
`end_time` time NOT NULL COMMENT '结束时间',
`status` tinyint DEFAULT 1 COMMENT '状态 1已预约 2使用中 3已完成 4已取消',
PRIMARY KEY (`id`),
KEY `idx_room_id` (`room_id`),
KEY `idx_order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='房间预约表';
-- 4. 部门表
DROP TABLE IF EXISTS `spa_department`;
CREATE TABLE `spa_department` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`deleted_at` datetime(3) DEFAULT NULL,
`parent_id` bigint unsigned DEFAULT 0 COMMENT '父部门ID',
`dept_name` varchar(100) NOT NULL COMMENT '部门名称',
`dept_code` varchar(50) DEFAULT NULL COMMENT '部门编码',
`leader_id` bigint unsigned DEFAULT NULL COMMENT '负责人ID',
`sort` int DEFAULT 0 COMMENT '排序',
`status` tinyint DEFAULT 1 COMMENT '状态 1正常 2停用',
PRIMARY KEY (`id`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
-- 5. 职位表
DROP TABLE IF EXISTS `spa_position`;
CREATE TABLE `spa_position` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`deleted_at` datetime(3) DEFAULT NULL,
`position_name` varchar(100) NOT NULL COMMENT '职位名称',
`position_code` varchar(50) DEFAULT NULL COMMENT '职位编码',
`position_level` tinyint DEFAULT 1 COMMENT '职位级别',
`base_salary` decimal(10,2) DEFAULT 0.00 COMMENT '基本工资',
`sort` int DEFAULT 0 COMMENT '排序',
`status` tinyint DEFAULT 1 COMMENT '状态 1正常 2停用',
PRIMARY KEY (`id`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='职位表';
-- 6. 员工信息表
DROP TABLE IF EXISTS `spa_employee`;
CREATE TABLE `spa_employee` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`deleted_at` datetime(3) DEFAULT NULL,
`user_id` bigint unsigned DEFAULT NULL COMMENT '关联用户ID',
`employee_no` varchar(50) NOT NULL COMMENT '员工工号',
`name` varchar(100) NOT NULL COMMENT '姓名',
`gender` tinyint DEFAULT 0 COMMENT '性别 0未知 1男 2女',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`id_card` varchar(20) DEFAULT NULL COMMENT '身份证号',
`avatar` varchar(500) DEFAULT NULL COMMENT '头像',
`store_id` bigint unsigned DEFAULT NULL COMMENT '所属店铺ID',
`dept_id` bigint unsigned DEFAULT NULL COMMENT '所属部门ID',
`position_id` bigint unsigned DEFAULT NULL COMMENT '职位ID',
`entry_date` date DEFAULT NULL COMMENT '入职日期',
`leave_date` date DEFAULT NULL COMMENT '离职日期',
`status` tinyint DEFAULT 1 COMMENT '状态 1在职 2离职',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_employee_no` (`employee_no`),
KEY `idx_store_id` (`store_id`),
KEY `idx_dept_id` (`dept_id`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表';
-- 7. 考勤记录表
DROP TABLE IF EXISTS `spa_attendance`;
CREATE TABLE `spa_attendance` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`employee_id` bigint unsigned NOT NULL COMMENT '员工ID',
`attendance_date` date NOT NULL COMMENT '考勤日期',
`clock_in_time` datetime DEFAULT NULL COMMENT '上班打卡时间',
`clock_out_time` datetime DEFAULT NULL COMMENT '下班打卡时间',
`work_hours` decimal(5,2) DEFAULT 0.00 COMMENT '工作时长',
`status` tinyint DEFAULT 1 COMMENT '状态 1正常 2迟到 3早退 4旷工 5请假',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_employee_id` (`employee_id`),
KEY `idx_attendance_date` (`attendance_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考勤记录表';
-- 8. 请假记录表
DROP TABLE IF EXISTS `spa_leave`;
CREATE TABLE `spa_leave` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`employee_id` bigint unsigned NOT NULL COMMENT '员工ID',
`leave_type` tinyint NOT NULL COMMENT '请假类型 1事假 2病假 3年假 4调休',
`start_date` date NOT NULL COMMENT '开始日期',
`end_date` date NOT NULL COMMENT '结束日期',
`days` decimal(5,1) NOT NULL COMMENT '请假天数',
`reason` text COMMENT '请假原因',
`status` tinyint DEFAULT 1 COMMENT '状态 1待审核 2已批准 3已拒绝 4已取消',
`audit_user_id` bigint unsigned DEFAULT NULL COMMENT '审核人ID',
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
`audit_remark` varchar(500) DEFAULT NULL COMMENT '审核备注',
PRIMARY KEY (`id`),
KEY `idx_employee_id` (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='请假记录表';
-- 9. 工资记录表
DROP TABLE IF EXISTS `spa_salary`;
CREATE TABLE `spa_salary` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`created_at` datetime(3) DEFAULT NULL,
`updated_at` datetime(3) DEFAULT NULL,
`employee_id` bigint unsigned NOT NULL COMMENT '员工ID',
`salary_month` varchar(7) NOT NULL COMMENT '工资月份 YYYY-MM',
`base_salary` decimal(10,2) DEFAULT 0.00 COMMENT '基本工资',
`performance_bonus` decimal(10,2) DEFAULT 0.00 COMMENT '绩效奖金',
`commission` decimal(10,2) DEFAULT 0.00 COMMENT '提成',
`allowance` decimal(10,2) DEFAULT 0.00 COMMENT '补贴',
`deduction` decimal(10,2) DEFAULT 0.00 COMMENT '扣款',
`total_salary` decimal(10,2) NOT NULL COMMENT '应发工资',
`actual_salary` decimal(10,2) NOT NULL COMMENT '实发工资',
`status` tinyint DEFAULT 1 COMMENT '状态 1待发放 2已发放',
`pay_time` datetime DEFAULT NULL COMMENT '发放时间',
`remark` text COMMENT '备注',
PRIMARY KEY (`id`),
KEY `idx_employee_id` (`employee_id`),
KEY `idx_salary_month` (`salary_month`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工资记录表';
SET FOREIGN_KEY_CHECKS = 1;