diff --git a/docs/api-phase1.md b/docs/api-phase1.md index 86ef6f2..0bdb7c1 100644 --- a/docs/api-phase1.md +++ b/docs/api-phase1.md @@ -466,6 +466,7 @@ app.register.max-per-device-per-day "id": "Pengantin Pengganti: Kesayangan Presiden Direktur" }, "dramaCover": "/files/drama_cover/12.jpg", + "dramaCoverLandscape": "/files/drama_cover/12-wide.jpg", "episodeNumber": 6, "totalEpisodes": 68, "viewCount": "1800", @@ -488,7 +489,8 @@ app.register.max-per-device-per-day | --- | --- | --- | | `dramaTitle` | string / null | 短剧中文标题,旧客户端回退用 | | `titleLocales` | object / null | 短剧标题语言表,key 为 `zh` / `en` / `id`。客户端按当前语言取,没有对应语言时回退 `zh` | -| `dramaCover` | string / null | 短剧封面 | +| `dramaCover` | string / null | 短剧竖版封面 | +| `dramaCoverLandscape` | string / null | 短剧横版封面,供继续观看横幅等横向位使用;为空时客户端回退 `dramaCover` | | `episodeNumber` | int / null | 当前续看集号 `ep_no` | | `totalEpisodes` | int / null | 短剧总集数 | | `viewCount` | Long(JSON 字符串)/ null | 短剧热度,取 `drama.view_count`。`playCount` 是用户自己的播放次数 | 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 a61d415..95f3ae5 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 @@ -206,6 +206,7 @@ public class AppCatalogService { detail.setTitleLocales(titles); detail.setSynopsisLocales(synopses); detail.setCover(drama.getCoverUrl()); + detail.setCoverLandscape(drama.getHorizontalCoverUrl()); detail.setTypes(types); fillDetailTag(detail, drama); detail.setTotalEpisodes(drama.getTotalEpisodes()); @@ -348,6 +349,7 @@ public class AppCatalogService { drama.getSynopsisLocales(), drama.getSynopsis(), null, null); card.setTitleLocales(titles); card.setCover(drama.getCoverUrl()); + card.setCoverLandscape(drama.getHorizontalCoverUrl()); card.setSynopsisLocales(shortLocales(synopses)); card.setTypes(types); fillTag(card, drama, tags); diff --git a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaCardVO.java b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaCardVO.java index aeceea3..e258fee 100644 --- a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaCardVO.java +++ b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaCardVO.java @@ -15,6 +15,8 @@ public class AppDramaCardVO { private Long id; private Map titleLocales; private String cover; + /** 横版封面(16:9),横幅等横向位优先用它;空串表示未上传,客户端回退竖版。 */ + private String coverLandscape; private Map synopsisLocales; /** 短剧选中的全部类型,每项是一份语言表。 */ private List> types; diff --git a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaDetailVO.java b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaDetailVO.java index 81c0da2..ebece38 100644 --- a/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaDetailVO.java +++ b/fruitshorts-app-api/src/main/java/com/fruitshorts/app/vo/AppDramaDetailVO.java @@ -14,6 +14,8 @@ public class AppDramaDetailVO { private Map titleLocales; private Map synopsisLocales; private String cover; + /** 横版封面(16:9);空串表示未上传。 */ + private String coverLandscape; private List> types; private Map tagLocales; /** 标签语义码,如 NEW_ARRIVAL;空表示未配置。 */ diff --git a/fruitshorts-module-content/src/main/java/com/fruitshorts/content/service/DramaService.java b/fruitshorts-module-content/src/main/java/com/fruitshorts/content/service/DramaService.java index e2aa3d1..f7f3c6b 100644 --- a/fruitshorts-module-content/src/main/java/com/fruitshorts/content/service/DramaService.java +++ b/fruitshorts-module-content/src/main/java/com/fruitshorts/content/service/DramaService.java @@ -464,10 +464,13 @@ public class DramaService { if (isNew || req.getCover() != null) { drama.setCoverUrl(req.getCover() == null ? "" : req.getCover()); } + if (isNew || req.getHorizontalCover() != null) { + drama.setHorizontalCoverUrl( + req.getHorizontalCover() == null ? "" : req.getHorizontalCover()); + } if (isNew || req.getTrailerUrl() != null) { drama.setTrailerUrl(req.getTrailerUrl() == null ? "" : req.getTrailerUrl()); } - drama.setHorizontalCoverUrl(drama.getHorizontalCoverUrl() == null ? "" : drama.getHorizontalCoverUrl()); if (isNew || req.getLanguage() != null) { drama.setLanguage(req.getLanguage() == null ? "zh-CN" : req.getLanguage()); } @@ -530,6 +533,7 @@ public class DramaService { vo.setSynopsisLocales(synopses); vo.setSubtitle(drama.getSubtitle()); vo.setCover(drama.getCoverUrl()); + vo.setHorizontalCover(drama.getHorizontalCoverUrl()); vo.setTrailerUrl(drama.getTrailerUrl()); vo.setLanguage(drama.getLanguage()); vo.setDramaType(dramaTypes.get(0)); diff --git a/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaRespVO.java b/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaRespVO.java index a4a847a..373cac0 100644 --- a/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaRespVO.java +++ b/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaRespVO.java @@ -27,6 +27,8 @@ public class DramaRespVO { private String description; private java.util.Map synopsisLocales; private String cover; + /** 横版封面(16:9)。 */ + private String horizontalCover; /** 整剧预告片地址 */ private String trailerUrl; private String language; diff --git a/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaSaveReqVO.java b/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaSaveReqVO.java index 6c79db7..77d1a1a 100644 --- a/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaSaveReqVO.java +++ b/fruitshorts-module-content/src/main/java/com/fruitshorts/content/vo/DramaSaveReqVO.java @@ -26,6 +26,8 @@ public class DramaSaveReqVO { /** 勾选语言的简介。 */ private java.util.Map synopsisLocales; private String cover; + /** 横版封面(16:9),用于横幅等横向位;不传则保持原值。 */ + private String horizontalCover; /** 整剧预告片地址(复用已有的 drama.trailer_url 列) */ private String trailerUrl; private String language; diff --git a/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/service/WatchProgressService.java b/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/service/WatchProgressService.java index 607ffac..0c46419 100644 --- a/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/service/WatchProgressService.java +++ b/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/service/WatchProgressService.java @@ -626,6 +626,7 @@ public class WatchProgressService { vo.setTitleLocales(titles); vo.setDramaTitle(ContentLocaleTexts.value(titles, ContentLocaleTexts.ZH)); vo.setDramaCover(drama.getCoverUrl()); + vo.setDramaCoverLandscape(drama.getHorizontalCoverUrl()); vo.setTotalEpisodes(drama.getTotalEpisodes()); vo.setViewCount(drama.getViewCount()); } diff --git a/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/vo/ProgressRespVO.java b/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/vo/ProgressRespVO.java index 96cce81..0f3c537 100644 --- a/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/vo/ProgressRespVO.java +++ b/fruitshorts-module-playback/src/main/java/com/fruitshorts/playback/vo/ProgressRespVO.java @@ -19,6 +19,8 @@ public class ProgressRespVO { private Map titleLocales; /** 短剧封面,仅列表类接口批量装配。 */ private String dramaCover; + /** 短剧横版封面,仅列表类接口批量装配;为空时客户端回退 dramaCover。 */ + private String dramaCoverLandscape; /** 当前续看集号。 */ private Integer episodeNumber; /** 短剧总集数;短剧不存在时为空。 */