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