-- ============================================================ -- 物业人员管理系统 - 数据库建表SQL -- 适用数据库: MySQL 5.7+ -- 功能: 定位轨迹、上下班打卡、保安巡更、保洁作业、维修工单 -- ============================================================ CREATE DATABASE IF NOT EXISTS property_staff DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE property_staff; -- ============================================================ -- 1. 用户表(扩展物业人员信息) -- ============================================================ DROP TABLE IF EXISTS `property_user`; CREATE TABLE `property_user` ( `user_id` VARCHAR(32) NOT NULL COMMENT '用户ID', `name` VARCHAR(64) NOT NULL COMMENT '姓名', `tel` VARCHAR(20) NOT NULL COMMENT '手机号', `work_type` VARCHAR(16) NOT NULL COMMENT '工种: CLEANING=保洁 SECURITY=保安 ENGINEERING=工程维修', `role` VARCHAR(16) NOT NULL DEFAULT 'STAFF' COMMENT '角色: ADMIN=管理员 STAFF=员工', `status` VARCHAR(8) NOT NULL DEFAULT 'ON' COMMENT '状态: ON=在职 OFF=离职', `device_id` VARCHAR(128) DEFAULT NULL COMMENT '绑定设备ID', `store_id` VARCHAR(32) DEFAULT NULL COMMENT '商户ID', `community_id` VARCHAR(32) DEFAULT NULL COMMENT '所属项目ID', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`user_id`), KEY `idx_work_type` (`work_type`), KEY `idx_tel` (`tel`), KEY `idx_store_id` (`store_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物业人员表'; -- ============================================================ -- 2. 定位轨迹表 -- ============================================================ DROP TABLE IF EXISTS `location_track`; CREATE TABLE `location_track` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` VARCHAR(32) NOT NULL COMMENT '用户ID', `longitude` DECIMAL(10,7) NOT NULL COMMENT '经度', `latitude` DECIMAL(10,7) NOT NULL COMMENT '纬度', `report_time` DATETIME NOT NULL COMMENT '上报时间', `bind_relation` VARCHAR(32) DEFAULT NULL COMMENT '绑定关系(工单ID/巡更ID/作业ID)', `loc_status` VARCHAR(8) NOT NULL DEFAULT 'NORMAL' COMMENT '定位状态: NORMAL=正常 ABNORMAL=异常', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_report_time` (`report_time`), KEY `idx_user_time` (`user_id`, `report_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='定位轨迹表'; -- ============================================================ -- 3. 上下班打卡表 -- ============================================================ DROP TABLE IF EXISTS `attendance_record`; CREATE TABLE `attendance_record` ( `id` VARCHAR(32) NOT NULL COMMENT '打卡记录ID', `user_id` VARCHAR(32) NOT NULL COMMENT '用户ID', `user_name` VARCHAR(64) NOT NULL COMMENT '用户姓名', `work_type` VARCHAR(16) NOT NULL COMMENT '工种', `punch_type` VARCHAR(8) NOT NULL COMMENT '打卡类型: ON=上班 OFF=下班', `punch_time` DATETIME NOT NULL COMMENT '打卡时间', `punch_address` VARCHAR(256) DEFAULT NULL COMMENT '打卡地点描述', `longitude` DECIMAL(10,7) NOT NULL COMMENT '打卡经度', `latitude` DECIMAL(10,7) NOT NULL COMMENT '打卡纬度', `store_id` VARCHAR(32) DEFAULT NULL COMMENT '商户ID', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_punch_time` (`punch_time`), KEY `idx_work_type` (`work_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='上下班打卡记录表'; -- ============================================================ -- 4. 保安巡更记录表 -- ============================================================ DROP TABLE IF EXISTS `patrol_record`; CREATE TABLE `patrol_record` ( `id` VARCHAR(32) NOT NULL COMMENT '巡更记录ID', `user_id` VARCHAR(32) NOT NULL COMMENT '巡更人ID', `user_name` VARCHAR(64) NOT NULL COMMENT '巡更人姓名', `patrol_location` VARCHAR(256) NOT NULL COMMENT '巡更地点', `patrol_content` TEXT DEFAULT NULL COMMENT '巡更内容', `patrol_time` DATETIME NOT NULL COMMENT '巡更时间', `longitude` DECIMAL(10,7) NOT NULL COMMENT '巡更经度', `latitude` DECIMAL(10,7) NOT NULL COMMENT '巡更纬度', `images` TEXT DEFAULT NULL COMMENT '图片URL列表(JSON数组)', `remark` VARCHAR(512) DEFAULT NULL COMMENT '备注', `store_id` VARCHAR(32) DEFAULT NULL COMMENT '商户ID', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_patrol_time` (`patrol_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='保安巡更记录表'; -- ============================================================ -- 5. 保洁作业记录表 -- ============================================================ DROP TABLE IF EXISTS `cleaning_record`; CREATE TABLE `cleaning_record` ( `id` VARCHAR(32) NOT NULL COMMENT '作业记录ID', `user_id` VARCHAR(32) NOT NULL COMMENT '作业人ID', `user_name` VARCHAR(64) NOT NULL COMMENT '作业人姓名', `work_area` VARCHAR(256) NOT NULL COMMENT '作业区域', `work_content` TEXT DEFAULT NULL COMMENT '作业内容', `work_time` DATETIME NOT NULL COMMENT '作业时间', `longitude` DECIMAL(10,7) NOT NULL COMMENT '作业经度', `latitude` DECIMAL(10,7) NOT NULL COMMENT '作业纬度', `images` TEXT DEFAULT NULL COMMENT '图片URL列表(JSON数组)', `remark` VARCHAR(512) DEFAULT NULL COMMENT '备注', `store_id` VARCHAR(32) DEFAULT NULL COMMENT '商户ID', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_work_time` (`work_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='保洁作业记录表'; -- ============================================================ -- 6. 维修工单表 -- ============================================================ DROP TABLE IF EXISTS `repair_order`; CREATE TABLE `repair_order` ( `id` VARCHAR(32) NOT NULL COMMENT '工单ID', `submitter_id` VARCHAR(32) NOT NULL COMMENT '提交人ID', `submitter_name` VARCHAR(64) NOT NULL COMMENT '提交人姓名', `title` VARCHAR(256) NOT NULL COMMENT '工单标题', `description` TEXT DEFAULT NULL COMMENT '工单描述', `repair_location` VARCHAR(256) NOT NULL COMMENT '报修位置', `longitude` DECIMAL(10,7) NOT NULL COMMENT '报修经度', `latitude` DECIMAL(10,7) NOT NULL COMMENT '报修纬度', `repairer_id` VARCHAR(32) DEFAULT NULL COMMENT '维修人ID(工程维修人员)', `repairer_name` VARCHAR(64) DEFAULT NULL COMMENT '维修人姓名', `status` VARCHAR(16) NOT NULL DEFAULT 'PENDING' COMMENT '工单状态: PENDING=待接单 REPAIRING=维修中 COMPLETED=已完成 CANCELLED=已取消', `images` TEXT DEFAULT NULL COMMENT '报修图片URL列表(JSON数组)', `repair_result` TEXT DEFAULT NULL COMMENT '维修结果', `result_images` TEXT DEFAULT NULL COMMENT '维修结果图片(JSON数组)', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `accept_time` DATETIME DEFAULT NULL COMMENT '接单时间', `complete_time` DATETIME DEFAULT NULL COMMENT '完成时间', `store_id` VARCHAR(32) DEFAULT NULL COMMENT '商户ID', PRIMARY KEY (`id`), KEY `idx_submitter_id` (`submitter_id`), KEY `idx_repairer_id` (`repairer_id`), KEY `idx_status` (`status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='维修工单表'; -- ============================================================ -- 7. 消息通知表 -- ============================================================ DROP TABLE IF EXISTS `message_notify`; CREATE TABLE `message_notify` ( `id` VARCHAR(32) NOT NULL COMMENT '通知ID', `user_id` VARCHAR(32) NOT NULL COMMENT '接收人ID', `title` VARCHAR(256) NOT NULL COMMENT '通知标题', `content` TEXT DEFAULT NULL COMMENT '通知内容', `msg_type` VARCHAR(32) NOT NULL COMMENT '通知类型: REPAIR_STATUS=工单状态 REPAIR_COMPLETE=维修完成', `relate_id` VARCHAR(32) DEFAULT NULL COMMENT '关联业务ID', `is_read` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已读: 0=未读 1=已读', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_is_read` (`is_read`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='消息通知表';