diff --git a/app/crmAdmin/service/CustomerService.php b/app/crmAdmin/service/CustomerService.php index ecd2a17..622d9d6 100644 --- a/app/crmAdmin/service/CustomerService.php +++ b/app/crmAdmin/service/CustomerService.php @@ -463,9 +463,36 @@ class CustomerService $customer['enter_user_name'] = empty($customer['enter_user_id']) ? '' : User::where('id',$customer['enter_user_id'])->value('name'); $customer['user_name'] = empty($customer['user_id']) ? '公海' : User::where('id',$customer['user_id'])->value('name'); + // 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) {