From d2d27bea854a5d0b48869b8bd87e6202c28f4cd2 Mon Sep 17 00:00:00 2001
From: shinnosuke <tantao@1hoper.com>
Date: 星期四, 17 九月 2026 16:03:26 +0800
Subject: [PATCH] 更新....

---
 talent-card-server/src/main/java/com/talentcard/server/business/portal/ChildrenEntrustmentPortalService.java |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/talent-card-server/src/main/java/com/talentcard/server/business/portal/ChildrenEntrustmentPortalService.java b/talent-card-server/src/main/java/com/talentcard/server/business/portal/ChildrenEntrustmentPortalService.java
index 6601611..8b83889 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/business/portal/ChildrenEntrustmentPortalService.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/business/portal/ChildrenEntrustmentPortalService.java
@@ -32,7 +32,10 @@
         result.put("serviceId", serviceId);
         result.put("title", benefit.get("title"));
 		result.put("applicableCards", text(matchedRight.get("tag"), ""));
-        result.put("heroImage", benefit.get("heroImage"));
+        // 详情页图优先用该商家自己配置的轮播图,没配时回落商家封面图,最后才是服务权益里的全局图。
+        result.put("heroImage", merchantHeroImage(serviceId,
+                text(merchant.get("coverUrl"), text(benefit.get("heroImage"), ""))));
+        result.put("heroImages", merchantHeroImages(serviceId));
         result.put("rightsText", text(matchedRight.get("detail"), text(benefit.get("rightsText"), "暂无使用说明")));
         result.put("available", available);
         result.put("unavailableReason", available ? "" : text(benefit.get("unavailableReason"), "该权益暂未开放"));
@@ -61,6 +64,23 @@
             school.put("detailAvailable", number(row.get("detailAvailable")) == 1);
             return school;
                 }).toList();
+    }
+
+    private List<String> merchantHeroImages(Long merchantId) {
+        return query("""
+                select image_url
+                from merchant_hero_image
+                where merchant_id = ? and deleted = 0 and enabled = 1
+                order by sort_no asc, id asc
+                """, merchantId).stream()
+                .map(row -> text(row.get("imageUrl"), ""))
+                .filter(url -> !url.isBlank())
+                .toList();
+    }
+
+    private String merchantHeroImage(Long merchantId, String fallback) {
+        List<String> images = merchantHeroImages(merchantId);
+        return images.isEmpty() ? fallback : images.get(0);
     }
 
     private List<Map<String, Object>> configuredSchools(Object value) {
@@ -150,7 +170,7 @@
     private Map<String, Object> approvalService(Long serviceId) {
         if (serviceId == null || serviceId <= 0) throw new BusinessException(ErrorCode.BAD_REQUEST, "学生托付服务信息不能为空");
         List<Map<String, Object>> rows = query("""
-                select m.id, m.merchant_rights_config, m.usage_instructions
+                select m.id, m.cover_url, m.merchant_rights_config, m.usage_instructions
                 from merchant m
                 where m.id = ? and m.deleted = 0 and m.merchant_type_code = 'children'
                 """, serviceId);

--
Gitblit v1.7.1