-- ========================================== -- 流量看板V2 数据表和菜单配置 -- ========================================== -- ---------------------------- -- 1. 数据表创建 -- ---------------------------- -- 客户统计数据表V2(支持标签级成本,行列转换存储) DROP TABLE IF EXISTS `customer_statistics_data_v2`; CREATE TABLE `customer_statistics_data_v2` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `corp_id` VARCHAR(100) NOT NULL COMMENT '企业ID', `cur_date` DATE NOT NULL COMMENT '统计日期', -- 维度信息 `group_name` VARCHAR(50) NOT NULL COMMENT '组名(N组、O组等)', `tag_name` VARCHAR(100) DEFAULT NULL COMMENT '标签名(NULL表示组级汇总)', `tag_group_id` VARCHAR(100) DEFAULT NULL COMMENT '标签组ID(关联wecom_tag_group)', `tag_id` VARCHAR(100) DEFAULT NULL COMMENT '标签ID(关联wecom_tag)', -- 层级关系 `data_level` TINYINT DEFAULT 1 COMMENT '数据级别:1-组级汇总,2-标签级明细', `parent_id` BIGINT(20) DEFAULT NULL COMMENT '父记录ID(标签级数据对应组级记录的ID)', -- 成本数据(支持标签级成本) `total_cost` DECIMAL(12,2) DEFAULT NULL COMMENT '总成本(手工录入)', `single_cost` DECIMAL(12,2) DEFAULT NULL COMMENT '单条成本(计算得出)', `order_cost` DECIMAL(12,2) DEFAULT NULL COMMENT '成单成本(计算得出)', `cost_input_type` VARCHAR(20) DEFAULT NULL COMMENT '成本录入类型:total-总成本,single-单条成本', -- 数量指标 `order_count` INT DEFAULT 0 COMMENT '成单数', `customer_count` INT DEFAULT 0 COMMENT '进粉数', `timely_order_count` INT DEFAULT 0 COMMENT '及时单数', `non_timely_order_count` INT DEFAULT 0 COMMENT '非及时单数', -- 比率指标 `conversion_rate` VARCHAR(10) DEFAULT '0%' COMMENT '转化率', `timely_rate` VARCHAR(10) DEFAULT '0%' COMMENT '及时单占比', `non_timely_rate` VARCHAR(10) DEFAULT '0%' COMMENT '非及时单占比', -- 客户属性指标 `customer_attr_count` INT DEFAULT 0 COMMENT '客户属性数量', `parent_count` INT DEFAULT 0 COMMENT '家长数量', `student_count` INT DEFAULT 0 COMMENT '学生数量', `teacher_count` INT DEFAULT 0 COMMENT '老师数量', `unknown_attr_count` INT DEFAULT 0 COMMENT '未知属性数量', `parent_rate` VARCHAR(10) DEFAULT '0%' COMMENT '家长占比', `student_rate` VARCHAR(10) DEFAULT '0%' COMMENT '学生占比', `teacher_rate` VARCHAR(10) DEFAULT '0%' COMMENT '老师占比', `unknown_rate` VARCHAR(10) DEFAULT '0%' COMMENT '未知占比', -- 出单率指标 `parent_order_count` INT DEFAULT 0 COMMENT '家长出单数量', `student_order_count` INT DEFAULT 0 COMMENT '学生出单数量', `teacher_order_count` INT DEFAULT 0 COMMENT '老师出单数量', `unknown_order_count` INT DEFAULT 0 COMMENT '未知出单数量', `parent_daily_count` INT DEFAULT 0 COMMENT '家长当日数量', `student_daily_count` INT DEFAULT 0 COMMENT '学生当日数量', `teacher_daily_count` INT DEFAULT 0 COMMENT '老师当日数量', `unknown_daily_count` INT DEFAULT 0 COMMENT '未知当日数量', `parent_daily_order_count` INT DEFAULT 0 COMMENT '家长当日出单数量', `student_daily_order_count` INT DEFAULT 0 COMMENT '学生当日出单数量', `teacher_daily_order_count` INT DEFAULT 0 COMMENT '老师当日出单数量', `unknown_daily_order_count` INT DEFAULT 0 COMMENT '未知当日出单数量', `parent_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '家长出单率', `student_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '学生出单率', `teacher_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '老师出单率', `unknown_order_rate` VARCHAR(10) DEFAULT '0%' COMMENT '未知出单率', -- 意向度指标 `intention_count` INT DEFAULT 0 COMMENT '意向度数量', `active_quote_count` INT DEFAULT 0 COMMENT '主动报价数量', `passive_quote_count` INT DEFAULT 0 COMMENT '被动报价数量', `no_quote_count` INT DEFAULT 0 COMMENT '未开口报价数量', `deleted_quote_count` INT DEFAULT 0 COMMENT '已删除报价数量', `active_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '主动报价占比', `passive_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '被动报价占比', `no_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '未开口报价占比', `deleted_quote_rate` VARCHAR(10) DEFAULT '0%' COMMENT '已删除报价占比', -- 年级指标 `grade_count` INT DEFAULT 0 COMMENT '年级数量', `primary_count` INT DEFAULT 0 COMMENT '小学数量', `middle_count` INT DEFAULT 0 COMMENT '初中数量', `high_count` INT DEFAULT 0 COMMENT '高中数量', `primary_rate` VARCHAR(10) DEFAULT '0%' COMMENT '小学占比', `middle_rate` VARCHAR(10) DEFAULT '0%' COMMENT '初中占比', `high_rate` VARCHAR(10) DEFAULT '0%' COMMENT '高中占比', `sort_no` INT DEFAULT 0 COMMENT '排序号', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_corp_date_group_tag` (`corp_id`, `cur_date`, `group_name`, `tag_name`), INDEX `idx_corp_date` (`corp_id`, `cur_date`), INDEX `idx_group_name` (`group_name`), INDEX `idx_data_level` (`data_level`), INDEX `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户统计数据表V2(支持标签级成本,行列转换)'; -- 成本录入记录表(用于追溯) DROP TABLE IF EXISTS `cost_input_record_v2`; CREATE TABLE `cost_input_record_v2` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `corp_id` VARCHAR(100) NOT NULL COMMENT '企业ID', `cur_date` DATE NOT NULL COMMENT '统计日期', `group_name` VARCHAR(50) NOT NULL COMMENT '组名', `tag_name` VARCHAR(100) DEFAULT NULL COMMENT '标签名(NULL表示组级)', `cost_type` VARCHAR(20) NOT NULL COMMENT 'total-总成本,single-单条成本', `input_value` DECIMAL(12,2) NOT NULL COMMENT '录入值', `actual_total_cost` DECIMAL(12,2) NOT NULL COMMENT '实际总成本', `input_by` VARCHAR(50) DEFAULT NULL COMMENT '录入人', `input_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '录入时间', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), INDEX `idx_corp_date_group` (`corp_id`, `cur_date`, `group_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成本录入记录表V2'; -- ---------------------------- -- 2. 菜单配置 -- 父菜单ID: 2000 (企业微信统计) -- 新菜单ID从 2100 开始 -- ---------------------------- -- 流量看板V2 菜单(主菜单) INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2100, '流量看板V2', 2000, 0, 'customerStatisticsV2', 'wecom/customerStatisticsV2/index', NULL, 'CustomerStatisticsV2', 1, 0, 'C', '0', '0', 'wecom:customerStatisticsV2:list', 'chart', 'admin', NOW(), '', NULL, '流量看板V2菜单(支持标签级成本)'); -- 流量看板V2 - 查询按钮 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2101, '流量看板V2查询', 2100, 1, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:query', '#', 'admin', NOW(), '', NULL, ''); -- 流量看板V2 - 新增按钮 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2102, '流量看板V2新增', 2100, 2, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:add', '#', 'admin', NOW(), '', NULL, ''); -- 流量看板V2 - 修改按钮 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2103, '流量看板V2修改', 2100, 3, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:edit', '#', 'admin', NOW(), '', NULL, ''); -- 流量看板V2 - 删除按钮 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2104, '流量看板V2删除', 2100, 4, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:remove', '#', 'admin', NOW(), '', NULL, ''); -- 流量看板V2 - 导出按钮 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2105, '流量看板V2导出', 2100, 5, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:export', '#', 'admin', NOW(), '', NULL, ''); -- 流量看板V2 - 成本录入按钮 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2106, '流量看板V2成本录入', 2100, 6, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:cost', '#', 'admin', NOW(), '', NULL, ''); -- 流量看板V2 - 重新计算按钮 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2107, '流量看板V2重新计算', 2100, 7, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:recalculate', '#', 'admin', NOW(), '', NULL, ''); -- 流量看板V2 - 树状数据查询 INSERT INTO `sys_menu` (`menu_id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (2108, '流量看板V2树状查询', 2100, 8, '#', '', NULL, '', 1, 0, 'F', '0', '0', 'wecom:customerStatisticsV2:tree', '#', 'admin', NOW(), '', NULL, ''); -- ---------------------------- -- 3. 菜单说明 -- ---------------------------- -- 菜单类型说明: -- M: 目录 -- C: 菜单 -- F: 按钮 -- -- 菜单层级结构: -- 2000 企业微信统计 (目录) -- ├── 2001 客户列表数据 -- ├── 2002 客户联系统计 -- ├── 2003 流量看板数据 (原V1版本) -- ├── 2004 销售看板数据 -- ├── 2100 流量看板V2 (新增,支持标签级成本) -- │ ├── 2101 查询 -- │ ├── 2102 新增 -- │ ├── 2103 修改 -- │ ├── 2104 删除 -- │ ├── 2105 导出 -- │ ├── 2106 成本录入 -- │ ├── 2107 重新计算 -- │ └── 2108 树状查询 -- └── 3000 企业信息