diff --git a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/service/AppCatalogService.java b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/service/AppCatalogService.java index 95f3ae5..c40ea93 100644 --- a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/service/AppCatalogService.java +++ b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/service/AppCatalogService.java @@ -34,7 +34,6 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Arrays; @@ -350,7 +349,7 @@ public class AppCatalogService { card.setTitleLocales(titles); card.setCover(drama.getCoverUrl()); card.setCoverLandscape(drama.getHorizontalCoverUrl()); - card.setSynopsisLocales(shortLocales(synopses)); + card.setSynopsisLocales(synopses); card.setTypes(types); fillTag(card, drama, tags); card.setTotalEpisodes(drama.getTotalEpisodes()); @@ -451,20 +450,4 @@ public class AppCatalogService { return dramaCategoryService.localeMap(); } - /** 卡片只带一句简介,避免列表响应体过大 */ - private Map shortLocales(Map locales) { - Map result = new LinkedHashMap<>(); - if (locales == null) { - return result; - } - locales.forEach((code, text) -> result.put(code, shortSynopsis(text))); - return result; - } - - private String shortSynopsis(String synopsis) { - if (synopsis == null) { - return ""; - } - return synopsis.length() <= 60 ? synopsis : synopsis.substring(0, 60); - } } diff --git a/fruitshorts-app-api/src/test/java/com/fruitshorts/app/service/AppCatalogServiceTest.java b/fruitshorts-app-api/src/test/java/com/fruitshorts/app/service/AppCatalogServiceTest.java index a734b20..c55f7db 100644 --- a/fruitshorts-app-api/src/test/java/com/fruitshorts/app/service/AppCatalogServiceTest.java +++ b/fruitshorts-app-api/src/test/java/com/fruitshorts/app/service/AppCatalogServiceTest.java @@ -130,6 +130,25 @@ class AppCatalogServiceTest { verify(commentService, never()).countByDrama(any()); } + @Test + void should_keep_full_synopsis_on_card_when_text_exceeds_card_length() { + String longSynopsis = "一纸婚约,开启了甜蜜又心动的同居生活。" + + "真相只有一个,而她亲手揭开迷雾。一场意外替嫁,让她成为冷面总裁的契约新娘。"; + Drama drama = new Drama(); + drama.setId(1L); + drama.setTitle("第一部"); + drama.setSynopsis(longSynopsis); + given(episodeService.firstPlayableByDramas(List.of(1L))).willReturn(Map.of()); + given(dramaCategoryService.listBasic()).willReturn(List.of()); + given(commentService.countByEpisodes(List.of())).willReturn(Map.of()); + + List cards = catalogService.toCards(List.of(drama)); + + assertThat(cards).hasSize(1); + assertThat(cards.get(0).getSynopsisLocales()) + .containsEntry("zh", longSynopsis); + } + @Test void should_filter_feed_by_drama_type_and_expose_it_on_card() { Drama anime = drama(1L, "ANIME");