-- =====================================================
-- CRM 销售目标（销售计划）功能初始化脚本
-- 1. 建表 crm_sales_target
-- 2. 数据字典（周期类型 / 目标维度 / 状态）
-- 3. 菜单与按钮权限（营销管理 -> 销售计划 / 达成分析）
-- =====================================================

-- 1. 建表
CREATE TABLE IF NOT EXISTS `crm_sales_target` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(128) NOT NULL COMMENT '目标名称',
  `period_type` int NOT NULL COMMENT '周期类型(字典 crm_sales_target_period_type: 1年/2季度/3月)',
  `period_value` varchar(32) NOT NULL COMMENT '周期值，如 2026 / 2026-Q1 / 2026-07',
  `start_time` datetime NOT NULL COMMENT '周期开始时间(保存时由周期计算写入)',
  `end_time` datetime NOT NULL COMMENT '周期结束时间(保存时由周期计算写入)',
  `target_dimension` int NOT NULL COMMENT '目标维度(字典 crm_sales_target_dimension: 1个人/2部门/3产品)',
  `target_user_id` bigint DEFAULT NULL COMMENT '目标用户编号(维度=个人)',
  `target_dept_id` bigint DEFAULT NULL COMMENT '目标部门编号(维度=部门)',
  `target_item_id` bigint DEFAULT NULL COMMENT '目标物料编号(维度=产品，关联 MDM)',
  `contract_target` decimal(18,2) DEFAULT NULL COMMENT '合同金额目标(元)',
  `receivable_target` decimal(18,2) DEFAULT NULL COMMENT '回款金额目标(元)',
  `business_target` decimal(18,2) DEFAULT NULL COMMENT '商机金额目标(元)',
  `customer_target` int DEFAULT NULL COMMENT '新增客户数目标',
  `contract_count_target` int DEFAULT NULL COMMENT '新增合同数目标',
  `status` int NOT NULL DEFAULT 0 COMMENT '状态(字典 crm_sales_target_status: 0未生效/1已生效/2已结束/3已作废)',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `creator` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
  `deleted` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`),
  KEY `idx_period` (`period_type`,`period_value`),
  KEY `idx_dimension` (`target_dimension`,`target_user_id`,`target_dept_id`,`target_item_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM 销售目标';

-- 2. 数据字典类型
INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`)
VALUES (1065300, '销售目标周期类型', 'crm_sales_target_period_type', 0, '销售目标的计划周期类型', '1', NOW(), '1', NOW(), b'0', NULL),
       (1065301, '销售目标维度', 'crm_sales_target_dimension', 0, '销售目标按什么维度设定', '1', NOW(), '1', NOW(), b'0', NULL),
       (1065302, '销售目标状态', 'crm_sales_target_status', 0, '销售目标的生命周期状态', '1', NOW(), '1', NOW(), b'0', NULL);

-- 2.1 数据字典数据
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
  -- 周期类型
  (1065310, 1, '年度', '1', 'crm_sales_target_period_type', 0, 'primary', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1065311, 2, '季度', '2', 'crm_sales_target_period_type', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1065312, 3, '月度', '3', 'crm_sales_target_period_type', 0, 'warning', '', '', '1', NOW(), '1', NOW(), b'0'),
  -- 目标维度
  (1065320, 1, '个人', '1', 'crm_sales_target_dimension', 0, 'primary', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1065321, 2, '部门', '2', 'crm_sales_target_dimension', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1065322, 3, '产品', '3', 'crm_sales_target_dimension', 0, 'warning', '', '', '1', NOW(), '1', NOW(), b'0'),
  -- 状态
  (1065330, 0, '未生效', '0', 'crm_sales_target_status', 0, 'info', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1065331, 1, '已生效', '1', 'crm_sales_target_status', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1065332, 2, '已结束', '2', 'crm_sales_target_status', 0, 'warning', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1065333, 3, '已作废', '3', 'crm_sales_target_status', 0, 'danger', '', '', '1', NOW(), '1', NOW(), b'0');

-- 3. 菜单：营销管理(id=2617) -> 销售计划 / 达成分析
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
  (1065000, '销售计划', '', 2, 62, 2617, 'salesTarget', 'ep:data-line', 'crm/salesTarget/index', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1065100, '达成分析', '', 2, 63, 2617, 'salesTarget/analysis', 'ep:pie-chart', 'crm/salesTarget/analysis/index', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

-- 3.1 销售计划按钮权限
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
  (1065001, '销售计划查询', 'crm:sales-target:query', 3, 1, 1065000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1065002, '销售计划创建', 'crm:sales-target:create', 3, 2, 1065000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1065003, '销售计划更新', 'crm:sales-target:update', 3, 3, 1065000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1065004, '销售计划删除', 'crm:sales-target:delete', 3, 4, 1065000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1065005, '销售计划导出', 'crm:sales-target:export', 3, 5, 1065000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1065101, '达成分析查询', 'crm:sales-target:query', 3, 1, 1065100, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
