This commit is contained in:
Your Name
2026-07-15 09:07:29 +08:00
parent 796441b407
commit 58cc59cf8a
6 changed files with 57 additions and 0 deletions
Binary file not shown.
@@ -0,0 +1,5 @@
-- 医生表(la_admin)新增字段:是否开启美颜功能
-- 开启后医生端(管理后台通话)才显示美颜设置入口;关闭则不显示
-- 若项目使用 zyt_ 前缀,请将 la_admin 替换为 zyt_admin 后执行
ALTER TABLE `zyt_admin` ADD COLUMN `enable_beauty` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否开启美颜功能:0-关闭 1-开启';
@@ -0,0 +1,17 @@
-- 企微客户表:新增「以前加过」标记
-- 语义:该客户本次添加之前就加过企业(被删除后重新添加,或已是企业客户又被其他员工添加)。
-- 写入:客户联系回调收到 add_external_contact 时,若本地已存在该 external_userid(含软删行)则置 1
-- 置 1 后不回退(历史事实)。全量同步不改此字段。
ALTER TABLE `zyt_qywx_external_contact`
ADD COLUMN `readd_flag` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '以前加过:1=本次添加前已加过企业(重加/多员工添加)' AFTER `external_first_add_time`;
-- 历史回填:事件流水中有 2 条及以上 add_external_contact 的客户,说明发生过重复添加
UPDATE `zyt_qywx_external_contact` c
INNER JOIN (
SELECT `external_userid`
FROM `zyt_qywx_external_contact_event`
WHERE `change_type` = 'add_external_contact' AND `external_userid` <> ''
GROUP BY `external_userid`
HAVING COUNT(*) >= 2
) e ON e.`external_userid` = c.`external_userid`
SET c.`readd_flag` = 1;
@@ -0,0 +1,8 @@
-- 企微客户事件流水表:按客户维度查询的索引
-- 背景:今日进入明细/统计需要标记「老客户」(判断某客户在今天之前是否有 add_external_contact 事件),
-- 查询形态为 WHERE external_userid IN (...) AND change_type = ? AND event_time < ?。
-- 现有索引均以 change_type / event_time / state 开头,无法按 external_userid 检索,
-- 26 万行时单次判定耗时可达数十秒;补充此索引后为毫秒级。
-- 注意:MySQL 5.7 不支持 ADD INDEX IF NOT EXISTS,重复执行会报 1061(索引已存在),可忽略。
ALTER TABLE `zyt_qywx_external_contact_event`
ADD INDEX `idx_ext_change_time` (`external_userid`, `change_type`, `event_time`);
@@ -0,0 +1,10 @@
-- 企微客户表:允许同一 external_userid 多行(每次"添加"新增一条记录)
-- 背景:产品要求与企微「全部客户」展示对齐——客户被删除后重新添加、或被其他员工再次添加时,
-- 不覆盖原纪录,而是新增一行并打 readd_flag=1(以前加过),原有行保持不变。
-- 落库逻辑同步调整(CustomerLogic):
-- * 回调 add_external_contact 且已有该客户 → INSERT 新行(readd_flag=1);
-- * 其他事件 / 全量同步 → 只更新该客户"最新一行"(MAX(id)),不再依赖唯一键 UPSERT
-- * 彻底流失(84061)→ 该客户所有行一并软删。
ALTER TABLE `zyt_qywx_external_contact`
DROP INDEX `uk_external_userid`,
ADD INDEX `idx_external_userid` (`external_userid`);
@@ -0,0 +1,17 @@
-- 企微客户「现存跟进关系」表:external_userid × follow_user_id 一行,带企微 createtime
-- 用途:客户列表「任意添加(企微口径)」时间筛选——企微后台的时间筛选按"现存跟进关系的添加时间"
-- 匹配(关系被删后该客户不再出现在对应日期下),follow_users JSON 无法做 SQL 范围筛选,故落关系表。
-- 维护:CustomerLogic 在每次 UPSERT 客户时同步;软删客户时清空该客户的关系行。
-- 回填:执行 php think 版本回填脚本或 server/backfill_follow_relations.php(从 follow_users JSON 解析)。
CREATE TABLE IF NOT EXISTS `zyt_qywx_external_contact_follow` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`external_userid` varchar(64) NOT NULL DEFAULT '' COMMENT '外部联系人 external_userid',
`follow_user_id` varchar(64) NOT NULL DEFAULT '' COMMENT '跟进员工企微 userid',
`createtime` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '该员工添加此客户的时间(企微 follow_user.createtime,秒)',
`create_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '本行创建时间',
`update_time` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '本行更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_ext_user` (`external_userid`, `follow_user_id`),
KEY `idx_createtime` (`createtime`),
KEY `idx_user` (`follow_user_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '企微客户现存跟进关系(企微口径时间筛选用)';