更新
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
-- 企微外部联系人 ↔ 标签 关系表
|
||||
--
|
||||
-- 行粒度:(external_userid, follow_user_id, tag_id) 三元组 —— 即"某客户被某员工打的某标签"。
|
||||
-- 这样能区分同一个标签是哪个员工打的,便于按员工维度统计;同时按 (external_userid, tag_id) 聚合可得"客户去重后的标签集合"。
|
||||
--
|
||||
-- 字段冗余说明:tag_name / group_name / type 直接落在关系行,列表筛选 / 统计 SQL 不必再 JOIN 标签字典表
|
||||
-- (企微侧标签改名时,UPSERT 时会同步刷新这些冗余字段,create_time 保持不变)。
|
||||
--
|
||||
-- 与 zyt_qywx_external_contact.tags(JSON 字段)的分工:
|
||||
-- - tags JSON:详情页直接渲染,不需要 JOIN
|
||||
-- - 本关系表:列表筛选 / 多标签 AND/OR / GROUP BY 统计 / 漏斗分析
|
||||
|
||||
SET @t := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.TABLES
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'zyt_qywx_external_contact_tag'
|
||||
);
|
||||
|
||||
SET @sql := IF(
|
||||
@t = 0,
|
||||
"CREATE TABLE `zyt_qywx_external_contact_tag` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`external_userid` varchar(64) NOT NULL DEFAULT '' COMMENT '客户外部ID(zyt_qywx_external_contact.external_userid)',
|
||||
`follow_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '打这个标签的跟进员工 userid(企微 follow_user.userid)',
|
||||
`tag_id` varchar(64) NOT NULL DEFAULT '' COMMENT '标签ID(企微 tag_id)',
|
||||
`tag_name` varchar(128) NOT NULL DEFAULT '' COMMENT '标签名快照',
|
||||
`group_name` varchar(128) NOT NULL DEFAULT '' COMMENT '标签分组名快照',
|
||||
`type` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '1=企业标签 / 2=其他标签',
|
||||
`create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||||
`update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_ext_user_tag` (`external_userid`, `follow_user_id`, `tag_id`),
|
||||
KEY `idx_tag` (`tag_id`),
|
||||
KEY `idx_ext` (`external_userid`),
|
||||
KEY `idx_group` (`group_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='企业微信客户-标签关系表'",
|
||||
'SELECT 1'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,26 @@
|
||||
-- 给「企业微信外部联系人」表加 tags 字段:
|
||||
-- 直接把 /externalcontact/get 返回的 follow_user[].tags 合并去重(按 tag_id)后存 JSON 字符串,
|
||||
-- 便于后台无需解析 follow_users 大 JSON 即可快速查看/筛选客户标签。
|
||||
--
|
||||
-- 示例值:
|
||||
-- [{"group_name":"自媒体1","tag_name":"自媒体1","type":1,"tag_id":"etRr2rJQAABTrZUYkJRuP06BX0GUCaaA"}]
|
||||
--
|
||||
-- 通过 information_schema 兼容多次执行(不存在再加),避免重复执行报错。
|
||||
|
||||
SET @col := (
|
||||
SELECT COUNT(*)
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'zyt_qywx_external_contact'
|
||||
AND COLUMN_NAME = 'tags'
|
||||
);
|
||||
|
||||
SET @sql := IF(
|
||||
@col = 0,
|
||||
'ALTER TABLE `zyt_qywx_external_contact` ADD COLUMN `tags` TEXT NULL COMMENT ''follow_user 标签合并去重(JSON:[{tag_id,tag_name,group_name,type}])'' AFTER `follow_users`',
|
||||
'SELECT 1'
|
||||
);
|
||||
|
||||
PREPARE stmt FROM @sql;
|
||||
EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
@@ -0,0 +1,59 @@
|
||||
-- 业绩看板(fans/yeji):把 3 个后端接口权限挂到现有菜单 id=293(name='数据统计', component='fans/yeji')下
|
||||
-- 已存在则跳过,幂等
|
||||
|
||||
-- 1) 标准化页面菜单本身:补 perms 占位(保持页面权限码与 component 对应,便于后续按页面授权)
|
||||
UPDATE `zyt_system_menu`
|
||||
SET `perms` = 'fans/yeji'
|
||||
WHERE `id` = 293 AND (`perms` IS NULL OR `perms` = '');
|
||||
|
||||
-- 2) 接口:业绩看板单区间 overview
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
293, 'A', '业绩-单区间', '', 1,
|
||||
'stats.yejiStats/overview', '', '', '', '',
|
||||
1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM dual
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu` m
|
||||
WHERE m.pid = 293 AND m.perms = 'stats.yejiStats/overview'
|
||||
);
|
||||
|
||||
-- 3) 接口:业绩看板多区间 multi(默认 月/周/今日/昨日)
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
293, 'A', '业绩-多区间', '', 2,
|
||||
'stats.yejiStats/multi', '', '', '', '',
|
||||
1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM dual
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu` m
|
||||
WHERE m.pid = 293 AND m.perms = 'stats.yejiStats/multi'
|
||||
);
|
||||
|
||||
-- 4) 接口:业绩看板部门下拉
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
293, 'A', '业绩-部门下拉', '', 3,
|
||||
'stats.yejiStats/deptOptions', '', '', '', '',
|
||||
1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM dual
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu` m
|
||||
WHERE m.pid = 293 AND m.perms = 'stats.yejiStats/deptOptions'
|
||||
);
|
||||
|
||||
-- 5) 接口:业绩看板渠道下拉
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
293, 'A', '业绩-渠道下拉', '', 4,
|
||||
'stats.yejiStats/channelOptions', '', '', '', '',
|
||||
1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM dual
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu` m
|
||||
WHERE m.pid = 293 AND m.perms = 'stats.yejiStats/channelOptions'
|
||||
);
|
||||
@@ -0,0 +1,14 @@
|
||||
-- 业绩看板医助排行榜接口权限(fans/yeji · pid=293)
|
||||
-- 已存在则跳过,幂等
|
||||
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
293, 'A', '业绩-医助排行榜', '', 5,
|
||||
'stats.yejiStats/leaderboard', '', '', '', '',
|
||||
1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM dual
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu` m
|
||||
WHERE m.pid = 293 AND m.perms = 'stats.yejiStats/leaderboard'
|
||||
);
|
||||
@@ -0,0 +1,25 @@
|
||||
-- 财务管理:制定业绩(按月维护各部门目标)幂等
|
||||
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
166, 'C', '制定业绩', 'el-icon-Flag', 25,
|
||||
'finance.dept_performance_target/monthMatrix', 'mubiao', 'finance/mubiao', '', '',
|
||||
1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM dual
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu` m WHERE m.paths = 'mubiao' OR m.perms = 'finance.dept_performance_target/monthMatrix'
|
||||
);
|
||||
|
||||
INSERT INTO `zyt_system_menu`
|
||||
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
|
||||
SELECT
|
||||
m.id, 'A', '保存业绩目标', '', 1,
|
||||
'finance.dept_performance_target/batchSave', '', '', '', '',
|
||||
1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
|
||||
FROM `zyt_system_menu` m
|
||||
WHERE m.paths = 'mubiao' AND m.type = 'C'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `zyt_system_menu` x WHERE x.perms = 'finance.dept_performance_target/batchSave'
|
||||
)
|
||||
LIMIT 1;
|
||||
@@ -0,0 +1,18 @@
|
||||
-- 各部门月度业绩目标(制定业绩)
|
||||
CREATE TABLE IF NOT EXISTS `zyt_dept_performance_target` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||
`dept_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '部门ID',
|
||||
`dept_name` varchar(100) NOT NULL DEFAULT '' COMMENT '部门名称快照',
|
||||
`year_month` char(7) NOT NULL DEFAULT '' COMMENT '目标月份 YYYY-MM',
|
||||
`target_amount` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '目标业绩金额(元)',
|
||||
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
|
||||
`creator_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建人',
|
||||
`creator_name` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人姓名',
|
||||
`updater_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '最后修改人',
|
||||
`updater_name` varchar(64) NOT NULL DEFAULT '' COMMENT '最后修改人姓名',
|
||||
`create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
|
||||
`update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_dept_year_month` (`dept_id`, `year_month`),
|
||||
KEY `idx_year_month` (`year_month`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门月度业绩目标';
|
||||
Reference in New Issue
Block a user