diff --git a/TUICallKit-Vue3.zip b/TUICallKit-Vue3.zip new file mode 100644 index 00000000..0cd3582c Binary files /dev/null and b/TUICallKit-Vue3.zip differ diff --git a/server/sql/1.9.20260703/add_doctor_beauty_field.sql b/server/sql/1.9.20260703/add_doctor_beauty_field.sql new file mode 100644 index 00000000..dae7b863 --- /dev/null +++ b/server/sql/1.9.20260703/add_doctor_beauty_field.sql @@ -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-开启'; diff --git a/server/sql/1.9.20260709/add_qywx_contact_readd_flag.sql b/server/sql/1.9.20260709/add_qywx_contact_readd_flag.sql new file mode 100644 index 00000000..fe7f8db2 --- /dev/null +++ b/server/sql/1.9.20260709/add_qywx_contact_readd_flag.sql @@ -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; diff --git a/server/sql/1.9.20260709/add_qywx_event_ext_userid_index.sql b/server/sql/1.9.20260709/add_qywx_event_ext_userid_index.sql new file mode 100644 index 00000000..5d81c2ef --- /dev/null +++ b/server/sql/1.9.20260709/add_qywx_event_ext_userid_index.sql @@ -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`); diff --git a/server/sql/1.9.20260709/alter_qywx_contact_allow_duplicate_rows.sql b/server/sql/1.9.20260709/alter_qywx_contact_allow_duplicate_rows.sql new file mode 100644 index 00000000..5e747b7c --- /dev/null +++ b/server/sql/1.9.20260709/alter_qywx_contact_allow_duplicate_rows.sql @@ -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`); diff --git a/server/sql/1.9.20260709/create_qywx_external_contact_follow.sql b/server/sql/1.9.20260709/create_qywx_external_contact_follow.sql new file mode 100644 index 00000000..7128c072 --- /dev/null +++ b/server/sql/1.9.20260709/create_qywx_external_contact_follow.sql @@ -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 = '企微客户现存跟进关系(企微口径时间筛选用)';