create database jqjy; use jqjy; create table user ( username varchar(256) null comment '用户昵称', id bigint auto_increment comment 'id' primary key, unionId varchar(256) null comment '支付宝开放平台id', openId varchar(256) null comment 'openId', userAccount varchar(256) null comment '账号', avatarUrl varchar(256) null comment '用户头像', gender tinyint null comment '性别', userPassword varchar(512) not null comment '密码', phone varchar(128) null comment '电话', email varchar(512) null comment '邮箱', userStatus int default 0 not null comment '状态 0 -正常', createTime datetime default CURRENT_TIMESTAMP null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP, isDelete tinyint default 0 not null comment '是否删除', userRole int default 0 not null comment '用户角色 0 - 普通用户 1 - 管理员 2 - 商家 3 - 美甲师', index idx_openId (openId) ) comment '用户' collate = utf8mb4_unicode_ci; -- 商品表 create table if not exists commodities ( id bigint auto_increment comment 'id' primary key, businessId bigint not null comment '商家id', commoditiesGroupId bigint not null comment '商品分组id', commoditiesName varchar(128) not null comment '商品名称', commoditiesImage varchar(1024) null comment '商品图片', commoditiesPrice double not null comment '商品价格', inventoryStatus int not null comment '库存数量', status varchar(20) default '上架' not null comment '商品状态:上架,下架', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', isDelete tinyint default 0 not null comment '是否删除', index idx_businessId (businessId) ) comment '商品表' collate = utf8mb4_unicode_ci; -- 商品分组表 create table if not exists commodities_group ( id bigint auto_increment comment 'id' primary key, businessId bigint not null comment '商家id', groupName varchar(128) not null comment '商品分组名称', isTopping tinyint default 0 not null comment '是否置顶:0不置顶,1置顶', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', isDelete tinyint default 0 not null comment '是否删除', index idx_businessId (businessId) ) comment '商品分组表' collate = utf8mb4_unicode_ci; -- 商家表 create table if not exists business ( id bigint auto_increment comment 'id' primary key, userId bigint not null comment '用户id', businessName varchar(512) not null comment '门店名称', businessAvatar varchar(1024) not null comment '门店头像', businessPhone varchar(64) not null comment '门店手机号', address varchar(512) not null comment '店铺详细地址', businessProfile varchar(512) null comment '门店简介', businessImages varchar(1024) null comment '商家相册', categoryId bigint null comment '分类id', startBusiness varchar(64) not null comment '开始营业时间', endBusiness varchar(64) not null comment '结束营业时间', serviceMode tinyint not null comment '服务方式:服务方式:0 - 可到店可上门 1 - 不可上门', state tinyint default 0 not null comment '状态:0审核中,1启用,2禁用', storeStatus tinyint default 0 not null comment '店铺状态:0休业,1营业', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', isDelete tinyint default 0 not null comment '是否删除', index idx_businessId (id), index idx_userId (userId) ) comment '商家' collate = utf8mb4_unicode_ci; -- 商家认证表 create table if not exists business_auth ( id bigint auto_increment comment 'id' primary key, businessId bigint not null comment '店铺id', shopkeeper varchar(64) not null comment '店主名', license varchar(1024) not null comment '营业执照', frontIdCard varchar(1024) not null comment '身份证正面', backIdCard varchar(1024) not null comment '身份证反面', bankCard varchar(64) not null comment '银行卡号', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', isDelete tinyint default 0 not null comment '是否删除', index idx_businessId (businessId) ) comment '商家认证' collate = utf8mb4_unicode_ci; -- 商品和规格的中间表 create table if not exists specifications_commodities ( id bigint auto_increment comment 'id' primary key, commoditiesId bigint not null comment '商品id', specificationsId bigint not null comment '规格id', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', isDelete tinyint default 0 not null comment '是否删除', index idx_dishesId (commoditiesId), index idx_specificationsId (specificationsId) ) comment '商品和规格的中间表' collate = utf8mb4_unicode_ci; -- 规格表 create table if not exists specifications ( id bigint auto_increment comment 'id' primary key, businessId bigint not null comment '商家id', specificationsName varchar(128) not null comment '规格名称', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', isDelete tinyint default 0 not null comment '是否删除', index idx_businessId (businessId) ) comment '规格表' collate = utf8mb4_unicode_ci; -- 属性表 create table if not exists attribute ( id bigint auto_increment comment 'id' primary key, businessId bigint not null comment '商家id', specificationsId bigint not null comment '规格id', attributeName varchar(128) not null comment '属性名称', attributeStatus tinyint default 0 not null comment '属性状态:0在售,1停售', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', index idx_businessId (businessId) ) comment '属性表' collate = utf8mb4_unicode_ci; -- 购物车表 create table if not exists cart ( id bigint auto_increment comment 'id' primary key, userId bigint not null comment '用户id', businessId bigint not null comment '商家id', createTime datetime default CURRENT_TIMESTAMP not null comment '加入购物车时间', updateTime datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间', commoditiesId bigint null comment '商品id', quantity int default 1 not null comment '商品数量', price decimal(10, 2) not null comment '当前选择规格的价格', subtotal decimal(10, 2) as ((`price` * `quantity`)) stored comment '小计(单价 * 数量)', selectedOptions varchar(512) default '' not null comment '已选规格属性列表', isDelete tinyint default 0 not null comment '是否删除', index idx_userId (userId), index idx_businessId (businessId) ) comment '购物车表' collate = utf8mb4_unicode_ci; create table if not exists manicurist ( id BIGINT AUTO_INCREMENT COMMENT '美甲师唯一标识(主键,自增)' PRIMARY KEY, userId BIGINT not null comment '用户ID(关联用户表)', businessId bigint null comment '商家id', manicuristName VARCHAR(100) not null comment '美甲师姓名', gender tinyint null comment '性别', manicuristAvatar VARCHAR(255) COMMENT '美甲师头像文件的存储路径或链接', phone VARCHAR(20) COMMENT '美甲师联系电话', email VARCHAR(100) COMMENT '美甲师电子邮件', employment_date DATE COMMENT '美甲师入职日期', specialties VARCHAR(255) comment '美甲师的专长(如法式美甲、彩绘等)', rating DECIMAL(3, 2) comment '美甲师的服务评分', salary DECIMAL(10, 2) comment '美甲师的基本薪资', manStatus int DEFAULT 0 comment '美甲师状态 0 表示正常 1 表示禁用', isDelete TINYINT DEFAULT 0 comment '逻辑删除标志,0 表示未删除,1 表示已删除', auditStatus TINYINT DEFAULT 0 comment '审核状态,0-待审核,1-审核通过,2-审核不通过', createTime DATETIME DEFAULT CURRENT_TIMESTAMP not null comment '记录创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '记录更新时间', INDEX idx_userId (userId) ) comment ='美甲师表' COLLATE = utf8mb4_unicode_ci; create table if not exists manicuristSign ( id BIGINT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) not null comment '姓名', manicuristId BIGINT NOT NULL COMMENT '美甲师ID(关联美甲师表)', businessName varchar(512) not null comment '门店名称', phone VARCHAR(20) COMMENT '联系电话', salary DECIMAL(10, 2) comment '期望工资薪资', signTime VARCHAR(100) not null comment '签约时长', tenure VARCHAR(100) not null comment '工龄', manicuristLv VARCHAR(100) not null comment '美甲师等级', auditStatus TINYINT DEFAULT 0 comment '审核状态,0-待审核,1-审核通过,2-审核不通过', isDelete TINYINT DEFAULT 0 comment '逻辑删除标志,0 表示未删除,1 表示已删除', createTime DATETIME DEFAULT CURRENT_TIMESTAMP not null comment '记录创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '记录更新时间' ) comment ='美甲师签约表' COLLATE = utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS manicurist_auth ( id BIGINT AUTO_INCREMENT COMMENT '认证唯一标识(主键,自增)' PRIMARY KEY, artistId BIGINT NOT NULL COMMENT '美甲师ID(关联美甲师表)', name VARCHAR(100) COMMENT '美甲师名称', certification_number VARCHAR(100) COMMENT '认证编号', issuing_authority VARCHAR(100) COMMENT '发证机构', certificate_path VARCHAR(255) COMMENT '证书文件的存储路径或链接', createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '记录创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间', isDelete TINYINT DEFAULT 0 COMMENT '逻辑删除标志,0 表示未删除,1 表示已删除', INDEX idx_artistId (artistId) ) COMMENT ='美甲师认证表' COLLATE = utf8mb4_unicode_ci; -- 预约表 CREATE TABLE IF NOT EXISTS appointments ( id bigint auto_increment comment '预约ID' primary key, userId bigint not null comment '用户ID(关联用户表)', userName varchar(100) not null comment '用户姓名', phone varchar(64) not null comment '手机号', businessId bigint not null comment '商家ID(关联商家表)', businessName varchar(512) null comment '商家名称', manicuristId bigint null comment '美甲师ID, 如果为空到店分配', manicuristName varchar(100) null comment '美甲师姓名', appointmentTime datetime not null comment '预约时间', serviceMode tinyint default 1 not null comment '服务方式(0 - 到店, 1 - 上门)', notes varchar(128) null comment '备注', status tinyint default 0 not null comment '预约状态(0 - 已确认, 1 - 已完成, 2 - 已取消)', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间', updateTime datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间', isDelete tinyint default 0 not null comment '是否删除', orderId bigint null comment '订单ID(关联订单表)', INDEX idx_userId (userId), INDEX idx_businessId (businessId), INDEX idx_manicuristId (manicuristId), INDEX idx_orderId (orderId) ) COMMENT '预约表' COLLATE = utf8mb4_unicode_ci; -- 订单表 CREATE TABLE IF NOT EXISTS orders ( id BIGINT AUTO_INCREMENT COMMENT '订单ID' PRIMARY KEY, orderNumber VARCHAR(50) NOT NULL UNIQUE COMMENT '订单号', userId BIGINT NOT NULL COMMENT '用户ID(关联用户表)', businessId bigint not null comment '商家id', manicuristId bigint null comment '美甲师ID', userName VARCHAR(100) NOT NULL COMMENT '用户姓名', phone varchar(64) not null comment '手机号', payMethod TINYINT NOT NULL COMMENT '支付方式:0微信支付', appointmentId BIGINT NULL COMMENT '预约ID(关联预约表)', totalPrice DECIMAL(10, 2) NOT NULL COMMENT '订单总金额', paymentStatus TINYINT DEFAULT 0 NOT NULL COMMENT '支付状态(0 - 未支付, 1 - 已支付, 2 - 退款中, 3 - 已退款)', claimStatus TINYINT DEFAULT 0 NOT NULL COMMENT '抢单状态(0 - 未抢单, 1 - 已抢单)', serviceMode tinyint default 1 not null comment '服务方式(0 - 到店, 1 - 上门)', notes varchar(128) null comment '备注', createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', INDEX idx_userId (userId), INDEX idx_appointmentId (appointmentId) ) COMMENT '订单表' COLLATE = utf8mb4_unicode_ci; -- 订单详情表 CREATE TABLE IF NOT EXISTS order_items ( id BIGINT AUTO_INCREMENT COMMENT '详细订单ID' PRIMARY KEY, orderId BIGINT NOT NULL COMMENT '订单ID(关联订单表)', commoditiesId BIGINT NOT NULL COMMENT '商品ID(美甲款式)', quantity INT NOT NULL COMMENT '商品数量', price DECIMAL(10, 2) NOT NULL COMMENT '商品单价', subtotal decimal(10, 2) not null comment '小计(单价 * 数量)', attributeNames varchar(512) null comment '规格属性列表', createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', INDEX idx_orderId (orderId), INDEX idx_commoditiesId (commoditiesId) ) COMMENT '详细订单表' COLLATE = utf8mb4_unicode_ci; -- 抢单记录表 CREATE TABLE IF NOT EXISTS order_claim ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '抢单记录ID', orderId BIGINT NOT NULL COMMENT '订单ID(关联订单表)', manicuristId BIGINT NOT NULL COMMENT '美甲师ID(关联美甲师表)', claimStatus TINYINT DEFAULT 0 NOT NULL COMMENT '抢单状态(0 - 待抢单, 1 - 已抢单, 2 - 已分配, 3 - 放弃)', claimTime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '抢单时间', isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', INDEX idx_orderId (orderId), INDEX idx_manicuristId (manicuristId) ) COMMENT '抢单记录表' COLLATE = utf8mb4_unicode_ci; -- 收藏表 create table collect ( id bigint auto_increment comment 'id' primary key, userId bigint not null comment '用户id', businessId bigint not null comment '商家id' ) comment '收藏'; -- 用户评分表 create table user_rating ( id bigint auto_increment primary key comment 'id', businessId bigint not null comment '商家id', userId bigint not null comment '用户id', manicuristId bigint not null comment '美甲师id', orderId bigint not null comment '订单id', rating tinyint not null comment '评分', manicuristRating tinyint not null comment '美甲师评分', review varchar(512) null comment '评论', picture VARCHAR(512) COMMENT '评论图片', businessReview varchar(512) null comment '商家回复', createTime datetime default CURRENT_TIMESTAMP not null comment '创建时间' ) comment '用户评分' collate = utf8mb4_unicode_ci; -- 商家等级表 create table business_level ( id bigint auto_increment primary key comment 'id', businessId bigint not null comment '商家id', averageScore DECIMAL(3, 2) not null default 0 comment '综合评分', level tinyint not null comment '等级', createTime DATETIME default CURRENT_TIMESTAMP comment '创建时间', updateTime DATETIME default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '更新时间' ); create table recruitment ( id bigint auto_increment primary key comment '主键id', businessId bigint not null comment '商家id,关联business表', businessName varchar(512) not null comment '门店名称', requirements text not null comment '对美甲师的要求', salary varchar(50) not null comment '美甲师薪资,示例: 5k-10k/月', quantity int not null comment '招聘美甲师数量', createTime DATETIME default CURRENT_TIMESTAMP comment '创建时间', updateTime DATETIME default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP comment '更新时间' ) comment ='美甲师招聘信息表';