-- 客户满意度评价功能数据库表结构
-- 创建时间: 2025-01-27

-- 1. 评价维度配置表
DROP TABLE IF EXISTS `evaluation_dimension`;
CREATE TABLE `evaluation_dimension` (
  `dimension_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '维度ID',
  `dimension_name` varchar(100) NOT NULL COMMENT '维度名称',
  `dimension_desc` varchar(500) DEFAULT NULL COMMENT '维度描述',
  `dimension_type` varchar(20) NOT NULL DEFAULT 'star' COMMENT '维度类型：star-星级评价，select-选择评价，text-文本评价',
  `options` text COMMENT '选项配置（JSON格式，用于选择类型）',
  `sort_order` int(11) DEFAULT 0 COMMENT '排序',
  `is_required` char(1) DEFAULT '1' COMMENT '是否必填（0否 1是）',
  `status` char(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`dimension_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评价维度配置表';

-- 2. 客户评价表
DROP TABLE IF EXISTS `customer_evaluation`;
CREATE TABLE `customer_evaluation` (
  `evaluation_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '评价ID',
  `vehicle_no` varchar(20) NOT NULL COMMENT '车牌号',
  `customer_name` varchar(50) NOT NULL COMMENT '客户姓名',
  `customer_phone` varchar(20) NOT NULL COMMENT '客户手机号',
  `wechat_openid` varchar(100) DEFAULT NULL COMMENT '微信OpenID',
  `wechat_nickname` varchar(100) DEFAULT NULL COMMENT '微信昵称',
  `wechat_avatar` varchar(500) DEFAULT NULL COMMENT '微信头像',
  `wechat_phone` varchar(20) DEFAULT NULL COMMENT '微信绑定手机号',
  `total_score` decimal(3,1) DEFAULT NULL COMMENT '总评分',
  `evaluation_status` char(1) DEFAULT '0' COMMENT '评价状态（0待评价 1已评价）',
  `evaluation_time` datetime DEFAULT NULL COMMENT '评价时间',
  `ip_address` varchar(128) DEFAULT NULL COMMENT 'IP地址',
  `user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`evaluation_id`),
  KEY `idx_vehicle_no` (`vehicle_no`),
  KEY `idx_customer_phone` (`customer_phone`),
  KEY `idx_wechat_openid` (`wechat_openid`),
  KEY `idx_evaluation_time` (`evaluation_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户评价表';

-- 3. 评价详情表
DROP TABLE IF EXISTS `evaluation_detail`;
CREATE TABLE `evaluation_detail` (
  `detail_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '详情ID',
  `evaluation_id` bigint(20) NOT NULL COMMENT '评价ID',
  `dimension_id` bigint(20) NOT NULL COMMENT '维度ID',
  `score` int(11) DEFAULT NULL COMMENT '评分（1-5星）',
  `option_value` varchar(100) DEFAULT NULL COMMENT '选项值（选择类型时使用）',
  `text_content` text COMMENT '文本内容（文本类型时使用）',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`detail_id`),
  KEY `idx_evaluation_id` (`evaluation_id`),
  KEY `idx_dimension_id` (`dimension_id`),
  CONSTRAINT `fk_evaluation_detail_evaluation` FOREIGN KEY (`evaluation_id`) REFERENCES `customer_evaluation` (`evaluation_id`) ON DELETE CASCADE,
  CONSTRAINT `fk_evaluation_detail_dimension` FOREIGN KEY (`dimension_id`) REFERENCES `evaluation_dimension` (`dimension_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评价详情表';

-- 4. 车辆评价二维码表
DROP TABLE IF EXISTS `vehicle_evaluation_qrcode`;
CREATE TABLE `vehicle_evaluation_qrcode` (
  `qrcode_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '二维码ID',
  `vehicle_no` varchar(20) NOT NULL COMMENT '车牌号',
  `qrcode_url` varchar(500) NOT NULL COMMENT '二维码URL',
  `qrcode_content` varchar(500) NOT NULL COMMENT '二维码内容',
  `qrcode_image` varchar(8000) DEFAULT NULL COMMENT '二维码图片(base64格式)',
  `status` char(1) DEFAULT '0' COMMENT '状态（0正常 1停用）',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`qrcode_id`),
  UNIQUE KEY `uk_vehicle_no` (`vehicle_no`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆评价二维码表';

-- 插入默认评价维度数据
INSERT INTO `evaluation_dimension` (`dimension_name`, `dimension_desc`, `dimension_type`, `sort_order`, `is_required`, `status`, `create_by`, `create_time`, `remark`) VALUES
('服务态度', '司机服务态度评价', 'star', 1, '1', '0', 'admin', NOW(), '司机服务态度是否友好、专业'),
('收费情况', '收费是否合理透明', 'star', 2, '1', '0', 'admin', NOW(), '收费是否合理、透明，有无乱收费现象'),
('车辆卫生状况', '车辆内部卫生情况', 'star', 3, '1', '0', 'admin', NOW(), '车辆内部是否干净整洁'),
('整体满意度', '整体服务满意度', 'star', 4, '1', '0', 'admin', NOW(), '对整体服务的满意度评价'),
('其他建议', '其他意见或建议', 'text', 5, '0', '0', 'admin', NOW(), '客户的其他意见或建议');

-- 为现有车辆生成评价二维码（示例数据）
-- 注意：实际使用时需要根据真实的车辆数据来生成
-- INSERT INTO `vehicle_evaluation_qrcode` (`vehicle_no`, `qrcode_url`, `qrcode_content`, `status`, `create_by`, `create_time`) 
-- SELECT vehicle_no, CONCAT('https://yourdomain.com/evaluation?vehicle=', vehicle_no), CONCAT('EVAL:', vehicle_no), '0', 'admin', NOW() 
-- FROM tb_vehicle_info WHERE status = '0';

-- 修改qrcode_image字段长度以支持base64格式存储
ALTER TABLE `vehicle_evaluation_qrcode` MODIFY COLUMN `qrcode_image` varchar(8000) DEFAULT NULL COMMENT '二维码图片(base64格式)';
