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)
{