diff --git a/application/admin/controller/fc/Post.php b/application/admin/controller/fc/Post.php index 1121bc1..71b56f8 100644 --- a/application/admin/controller/fc/Post.php +++ b/application/admin/controller/fc/Post.php @@ -153,6 +153,17 @@ class Post extends Backend $mediaList[] = $row->cover; } + // 结构化媒体列表(识别图片与短视频) + $mediaItems = []; + foreach ($mediaList as $m) { + $url = (string)$m; + $isVideo = (bool)preg_match('/\.(mp4|mov|avi|webm|mkv)(\?|$)/i', $url); + $mediaItems[] = [ + 'url' => $url, + 'is_video' => $isVideo, + ]; + } + // 获取用户画像与关联商家门店资料 $userInfo = [ 'id' => $row->user_id, @@ -215,6 +226,7 @@ class Post extends Backend $this->view->assign('userInfo', $userInfo); $this->view->assign('merchantInfo', $merchantInfo); $this->view->assign('mediaList', $mediaList); + $this->view->assign('mediaItems', $mediaItems); $this->view->assign('queue', $this->auditQueue($row->getData())); // 如果是审核模式渲染 audit.html,详情模式渲染 detail.html diff --git a/application/admin/controller/fc/Postaudit.php b/application/admin/controller/fc/Postaudit.php index a063ae0..3680e6f 100644 --- a/application/admin/controller/fc/Postaudit.php +++ b/application/admin/controller/fc/Postaudit.php @@ -212,7 +212,7 @@ class Postaudit extends Backend $row->category_name = '未分类'; } - // 解析多图相册 + // 解析多图相册与多媒体 $mediaList = []; $rawMedia = $row->getData('media'); if (!empty($rawMedia)) { @@ -227,6 +227,25 @@ class Postaudit extends Backend $mediaList[] = $row->cover; } + // 构造结构化媒体列表(精准区分图片与视频) + $mediaItems = []; + foreach ($mediaList as $item) { + $pathOnly = parse_url($item, PHP_URL_PATH) ?: $item; + $ext = strtolower(pathinfo($pathOnly, PATHINFO_EXTENSION)); + $isVideo = in_array($ext, ['mp4', 'mov', 'avi', 'wmv', 'm4v', '3gp', 'flv', 'mkv', 'webm'], true); + $mediaItems[] = [ + 'url' => $item, + 'is_video' => $isVideo, + 'ext' => $ext + ]; + } + + // 获取商家门店信息(如存在) + $merchantInfo = null; + if (!empty($row->merchant_id)) { + $merchantInfo = Db::name('fc_merchant')->where('id', $row->merchant_id)->find(); + } + // 获取发布用户画像 $userInfo = [ 'id' => $row->user_id, @@ -247,7 +266,9 @@ class Postaudit extends Backend $this->view->assign('mode', $mode); $this->view->assign('row', $row); $this->view->assign('userInfo', $userInfo); + $this->view->assign('merchantInfo', $merchantInfo); $this->view->assign('mediaList', $mediaList); + $this->view->assign('mediaItems', $mediaItems); $this->view->assign('queue', $this->auditQueue($row->getData())); if ($mode === 'audit') { diff --git a/application/admin/view/fc/post/audit.html b/application/admin/view/fc/post/audit.html index 068f61b..7d93626 100644 --- a/application/admin/view/fc/post/audit.html +++ b/application/admin/view/fc/post/audit.html @@ -124,19 +124,43 @@ - -
-
- 送审图片质检 ({:count($mediaList)} 张) + {php} + $mediaListSafe = !empty($mediaList) ? $mediaList : []; + if (empty($mediaItems) && !empty($mediaListSafe)) { + $mediaItems = []; + foreach ($mediaListSafe as $m) { + $pathOnly = parse_url($m, PHP_URL_PATH) ?: $m; + $ext = strtolower(pathinfo($pathOnly, PATHINFO_EXTENSION)); + $isVideo = in_array($ext, ['mp4', 'mov', 'avi', 'wmv', 'm4v', '3gp', 'flv', 'mkv', 'webm'], true); + $mediaItems[] = ['url' => $m, 'is_video' => $isVideo, 'ext' => $ext]; + } + } + $imgItems = []; + $videoItems = []; + if (!empty($mediaItems)) { + foreach ($mediaItems as $item) { + if (!empty($item['is_video'])) { + $videoItems[] = $item; + } else { + $imgItems[] = $item; + } + } + } +{/php} + +
+
+ 送审图片质检 ({:count($imgItems)} 张) + 点击查看原图细节
- {if empty($mediaList)} -
用户未上传任何附加图片
+ {if empty($imgItems)} +
用户未上传附加图片
{else /} -
+ +
+
+ 送审短视频质检 ({:count($videoItems)} 个) + 在线试听与画面合规质检 +
+
+ {if empty($videoItems)} +
用户未上传实拍短视频
+ {else /} +
+ {volist name="videoItems" id="vid"} +
+ +
+ 审核短视频 + 弹窗试看 +
+
+ {/volist} +
+ {/if} +
+
+
- + {php} + $mediaListSafe = !empty($mediaList) ? $mediaList : []; + if (empty($mediaItems) && !empty($mediaListSafe)) { + $mediaItems = []; + foreach ($mediaListSafe as $m) { + $pathOnly = parse_url($m, PHP_URL_PATH) ?: $m; + $ext = strtolower(pathinfo($pathOnly, PATHINFO_EXTENSION)); + $isVideo = in_array($ext, ['mp4', 'mov', 'avi', 'wmv', 'm4v', '3gp', 'flv', 'mkv', 'webm'], true); + $mediaItems[] = ['url' => $m, 'is_video' => $isVideo, 'ext' => $ext]; + } + } + $imgItems = []; + $videoItems = []; + if (!empty($mediaItems)) { + foreach ($mediaItems as $item) { + if (!empty($item['is_video'])) { + $videoItems[] = $item; + } else { + $imgItems[] = $item; + } + } + } +{/php} +
-
- 信息图集 ({:count($mediaList)} 张) +
+ 实拍图集 ({:count($imgItems)} 张) + 点击可查看高清大图
- {if empty($mediaList)} -
无附加图片
+ {if empty($imgItems)} +
无附加图片
{else /} -
- {volist name="mediaList" id="media"} - - + @@ -212,6 +236,31 @@
+ +
+
+ 实拍短视频 ({:count($videoItems)} 个) + HTML5 原生视频播放器 +
+
+ {if empty($videoItems)} +
用户未上传实拍短视频
+ {else /} +
+ {volist name="videoItems" id="vid"} +
+ +
+ 短视频 + 弹窗试看 +
+
+ {/volist} +
+ {/if} +
+
+