spa/docs/sql/01_core_tables.sql

264 lines
12 KiB
SQL

-- =====================================================
-- SPA管理系统 - 核心业务表
-- 版本: 1.0
-- 创建时间: 2025-12-30
-- =====================================================
-- 设置字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- =====================================================
-- 1. 技师信息表
-- =====================================================
DROP TABLE IF EXISTS `spa_technician`;
CREATE TABLE `spa_technician` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`created_at` datetime(3) DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime(3) DEFAULT NULL COMMENT '更新时间',
`deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间',
-- 基本信息
`user_id` bigint unsigned DEFAULT NULL COMMENT '关联系统用户ID',
`technician_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(18) DEFAULT NULL COMMENT '身份证号',
`avatar` varchar(500) DEFAULT NULL COMMENT '头像URL',
`birthday` date DEFAULT NULL COMMENT '生日',
`address` varchar(500) DEFAULT NULL COMMENT '居住地址',
-- 专业信息
`level` tinyint DEFAULT 1 COMMENT '技师等级 1初级 2中级 3高级 4首席 5金牌',
`specialties` json DEFAULT NULL COMMENT '擅长项目JSON数组',
`certificates` json DEFAULT NULL COMMENT '资格证书JSON',
`service_years` int DEFAULT 0 COMMENT '服务年限(月)',
`introduction` text COMMENT '个人简介',
-- 在职状态
`status` tinyint DEFAULT 1 COMMENT '在职状态 1在职 2休假 3离职 4停职',
`entry_date` date DEFAULT NULL COMMENT '入职日期',
`leave_date` date DEFAULT NULL COMMENT '离职日期',
`contract_start` date DEFAULT NULL COMMENT '合同开始日期',
`contract_end` date DEFAULT NULL COMMENT '合同结束日期',
-- 薪资信息
`salary_type` tinyint DEFAULT 1 COMMENT '薪资类型 1纯提成 2底薪+提成 3固定工资',
`base_salary` decimal(10,2) DEFAULT 0.00 COMMENT '基本工资',
`commission_rate` decimal(5,2) DEFAULT 0.00 COMMENT '默认提成比例%',
-- 代理关联
`agent_id` bigint unsigned DEFAULT NULL COMMENT '推荐代理ID',
`agent_commission_rate` decimal(5,2) DEFAULT 0.00 COMMENT '代理抽成比例%',
`bind_time` datetime DEFAULT NULL COMMENT '绑定代理时间',
-- 统计数据
`rating` decimal(3,2) DEFAULT 5.00 COMMENT '综合评分',
`total_orders` int DEFAULT 0 COMMENT '累计服务单数',
`total_income` decimal(12,2) DEFAULT 0.00 COMMENT '累计收入',
`total_customers` int DEFAULT 0 COMMENT '累计服务客户数',
-- 其他
`is_recommended` tinyint DEFAULT 0 COMMENT '是否推荐技师 0否 1是',
`sort` int DEFAULT 0 COMMENT '排序',
`remark` text COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_technician_no` (`technician_no`),
KEY `idx_user_id` (`user_id`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_status` (`status`),
KEY `idx_level` (`level`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='技师信息表';
-- =====================================================
-- 2. 代理信息表
-- =====================================================
DROP TABLE IF EXISTS `spa_agent`;
CREATE TABLE `spa_agent` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`created_at` datetime(3) DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime(3) DEFAULT NULL COMMENT '更新时间',
`deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间',
-- 基本信息
`user_id` bigint unsigned DEFAULT NULL COMMENT '关联系统用户ID',
`agent_no` varchar(50) NOT NULL COMMENT '代理编号',
`name` varchar(100) NOT NULL COMMENT '代理姓名',
`phone` varchar(20) NOT NULL COMMENT '联系电话',
`avatar` varchar(500) DEFAULT NULL COMMENT '头像URL',
-- 代理等级
`level` tinyint DEFAULT 1 COMMENT '代理等级 1普通 2银牌 3金牌 4钻石 5皇冠',
`parent_agent_id` bigint unsigned DEFAULT NULL COMMENT '上级代理ID',
`agent_path` varchar(500) DEFAULT NULL COMMENT '代理路径 如: 1/2/3/',
-- 分佣比例
`technician_commission_rate` decimal(5,2) DEFAULT 0.00 COMMENT '技师订单抽成比例%',
`customer_commission_rate` decimal(5,2) DEFAULT 0.00 COMMENT '客户订单抽成比例%',
`sub_agent_commission_rate` decimal(5,2) DEFAULT 0.00 COMMENT '下级代理抽成比例%',
-- 状态
`status` tinyint DEFAULT 1 COMMENT '状态 1正常 2冻结 3注销',
`join_date` date DEFAULT NULL COMMENT '加入日期',
-- 统计数据
`total_technicians` int DEFAULT 0 COMMENT '累计推荐技师数',
`active_technicians` int DEFAULT 0 COMMENT '活跃技师数',
`total_customers` int DEFAULT 0 COMMENT '累计推荐客户数',
`active_customers` int DEFAULT 0 COMMENT '活跃客户数',
`total_sub_agents` int DEFAULT 0 COMMENT '累计下级代理数',
`total_income` decimal(12,2) DEFAULT 0.00 COMMENT '累计收入',
`total_orders` int DEFAULT 0 COMMENT '累计关联订单数',
-- 结算信息
`bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
`bank_account` varchar(50) DEFAULT NULL COMMENT '银行账号',
`account_name` varchar(100) DEFAULT NULL COMMENT '账户名',
`alipay_account` varchar(100) DEFAULT NULL COMMENT '支付宝账号',
`wechat_account` varchar(100) DEFAULT NULL COMMENT '微信账号',
`remark` text COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_agent_no` (`agent_no`),
KEY `idx_user_id` (`user_id`),
KEY `idx_parent_agent_id` (`parent_agent_id`),
KEY `idx_level` (`level`),
KEY `idx_status` (`status`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='代理信息表';
-- =====================================================
-- 3. 客户信息表
-- =====================================================
DROP TABLE IF EXISTS `spa_customer`;
CREATE TABLE `spa_customer` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`created_at` datetime(3) DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime(3) DEFAULT NULL COMMENT '更新时间',
`deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间',
-- 基本信息
`user_id` bigint unsigned DEFAULT NULL COMMENT '关联系统用户ID',
`customer_no` varchar(50) NOT NULL COMMENT '客户编号',
`nickname` varchar(100) DEFAULT NULL COMMENT '昵称',
`real_name` varchar(100) DEFAULT NULL COMMENT '真实姓名',
`gender` tinyint DEFAULT 0 COMMENT '性别 0未知 1男 2女',
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
`avatar` varchar(500) DEFAULT NULL COMMENT '头像URL',
`birthday` date DEFAULT NULL COMMENT '生日',
-- 会员信息
`member_level` tinyint DEFAULT 0 COMMENT '会员等级 0普通 1银卡 2金卡 3钻石 4黑金',
`member_expire_time` datetime DEFAULT NULL COMMENT '会员到期时间',
`points` int DEFAULT 0 COMMENT '积分',
-- 推荐关系
`referrer_type` tinyint DEFAULT 0 COMMENT '推荐人类型 0无 1客户 2代理',
`referrer_id` bigint unsigned DEFAULT NULL COMMENT '推荐人ID',
`agent_id` bigint unsigned DEFAULT NULL COMMENT '绑定代理ID',
`agent_commission_rate` decimal(5,2) DEFAULT 0.00 COMMENT '代理抽成比例%',
`bind_time` datetime DEFAULT NULL COMMENT '绑定时间',
-- 统计数据
`total_orders` int DEFAULT 0 COMMENT '累计订单数',
`total_amount` decimal(12,2) DEFAULT 0.00 COMMENT '累计消费金额',
`total_referrals` int DEFAULT 0 COMMENT '累计推荐客户数',
`last_order_time` datetime DEFAULT NULL COMMENT '最后下单时间',
`avg_rating` decimal(3,2) DEFAULT NULL COMMENT '平均评分',
-- 状态
`status` tinyint DEFAULT 1 COMMENT '状态 1正常 2黑名单 3注销',
`source` varchar(50) DEFAULT NULL COMMENT '来源渠道',
`remark` text COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_customer_no` (`customer_no`),
KEY `idx_user_id` (`user_id`),
KEY `idx_phone` (`phone`),
KEY `idx_referrer` (`referrer_type`, `referrer_id`),
KEY `idx_agent_id` (`agent_id`),
KEY `idx_member_level` (`member_level`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户信息表';
-- =====================================================
-- 4. 服务分类表
-- =====================================================
DROP TABLE IF EXISTS `spa_service_category`;
CREATE TABLE `spa_service_category` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`created_at` datetime(3) DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime(3) DEFAULT NULL COMMENT '更新时间',
`deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间',
`parent_id` bigint unsigned DEFAULT 0 COMMENT '父分类ID',
`name` varchar(100) NOT NULL COMMENT '分类名称',
`icon` varchar(500) DEFAULT NULL COMMENT '图标',
`description` text COMMENT '描述',
`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 COLLATE=utf8mb4_unicode_ci COMMENT='服务分类表';
-- =====================================================
-- 5. 服务项目表
-- =====================================================
DROP TABLE IF EXISTS `spa_service_item`;
CREATE TABLE `spa_service_item` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`created_at` datetime(3) DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime(3) DEFAULT NULL COMMENT '更新时间',
`deleted_at` datetime(3) DEFAULT NULL COMMENT '删除时间',
-- 基本信息
`category_id` bigint unsigned DEFAULT NULL COMMENT '服务分类ID',
`item_no` varchar(50) NOT NULL COMMENT '项目编号',
`name` varchar(100) NOT NULL COMMENT '项目名称',
`sub_title` varchar(200) DEFAULT NULL COMMENT '副标题',
`description` text COMMENT '项目描述',
`cover_image` varchar(500) DEFAULT NULL COMMENT '封面图',
`images` json DEFAULT NULL COMMENT '详情图片JSON数组',
-- 价格信息
`duration` int NOT NULL COMMENT '标准时长(分钟)',
`price` decimal(10,2) NOT NULL COMMENT '标准价格',
`vip_price` decimal(10,2) DEFAULT NULL COMMENT '会员价',
`cost_price` decimal(10,2) DEFAULT 0.00 COMMENT '成本价',
-- 技师要求
`required_level` tinyint DEFAULT 1 COMMENT '要求技师等级',
`required_gender` tinyint DEFAULT 0 COMMENT '要求技师性别 0不限 1男 2女',
-- 提成设置
`commission_type` tinyint DEFAULT 1 COMMENT '提成类型 1按比例 2固定金额',
`commission_value` decimal(10,2) DEFAULT 0.00 COMMENT '提成值',
-- 服务详情
`service_steps` json DEFAULT NULL COMMENT '服务流程JSON',
`required_products` json DEFAULT NULL COMMENT '所需产品JSON',
`precautions` text COMMENT '注意事项',
-- 销售信息
`sales_count` int DEFAULT 0 COMMENT '销量',
`stock` int DEFAULT -1 COMMENT '库存 -1不限',
`status` tinyint DEFAULT 1 COMMENT '状态 1上架 2下架',
`is_hot` tinyint DEFAULT 0 COMMENT '是否热门 0否 1是',
`is_new` tinyint DEFAULT 0 COMMENT '是否新品 0否 1是',
`sort` int DEFAULT 0 COMMENT '排序',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_item_no` (`item_no`),
KEY `idx_category_id` (`category_id`),
KEY `idx_status` (`status`),
KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='服务项目表';
SET FOREIGN_KEY_CHECKS = 1;