From 705f402c7877c4f20869f3b65ac6dc0bd91c103a Mon Sep 17 00:00:00 2001 From: mzl Date: Wed, 19 Aug 2026 11:05:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=9A=E5=8A=A1=E7=AB=AF=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E8=AF=A6=E6=83=85=E6=98=BE=E7=A4=BAWhatsApp=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E6=88=AA=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit getCustomer()(/crm/customer/list 列表与详情弹窗共用)把 desc_collect 中 crm_whatsapp 截图的 OSS 对象键替换为带签名 (7天有效期,每次请求重签)。 键按原文签名(历史双斜杠键的对象即存于该键);前端 v-html 渲染,零改动。 Co-Authored-By: Claude --- app/crm/service/CustomerService.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/crm/service/CustomerService.php b/app/crm/service/CustomerService.php index e6e94c4..2e0481a 100644 --- a/app/crm/service/CustomerService.php +++ b/app/crm/service/CustomerService.php @@ -6,6 +6,7 @@ use app\common\model\Corp; use app\common\model\CustomerAudit; use app\common\model\InquiryLog; use app\common\model\User; +use app\common\service\OssService; use app\common\traits\crud\CrudServiceTrait; use app\crm\logic\CustomerLogic; use app\crm\model\Channel; @@ -377,9 +378,36 @@ class CustomerService } } + // WhatsApp导入截图:desc_collect 里的 OSS 对象键 -> 带签名 (前端 v-html 渲染) + $customer['desc_collect'] = self::signScreenshotImages((string)($customer['desc_collect'] ?? '')); + return $customer; } + /** + * 将 desc_collect 中 crm_whatsapp 截图的 OSS 对象键替换为带签名的 标签。 + * 键按原文匹配签名(历史记录为双斜杠键,对象即存于该键,不可归一)。 + */ + private static function signScreenshotImages(string $desc): string + { + if ($desc === '' || strpos($desc, 'crm_whatsapp/') === false) { + return $desc; + } + return preg_replace_callback( + '/([A-Za-z0-9_\-]+(?:\/[A-Za-z0-9_\-]+)*\/+crm_whatsapp\/[A-Za-z0-9_\-\.]+\.(?:png|jpe?g|webp))/', + function ($m) { + try { + $url = (new OssService())->generatePrivateUrl($m[1], 7 * 86400); + return ''; + } catch (\Throwable $e) { + return $m[0]; + } + }, + $desc + ); + } + public function detail($params) {