From ccc2b0e4dae9284f0baf421559ae1ab898838540 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 6 Aug 2026 11:46:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A5=97=E9=A4=90=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/vo/app/DailyMenuAppVO.java | 87 +++++++++++++++---- .../CanteenDailyMenuController.java | 14 +++ .../mapper/CanteenDailyMenuMapper.java | 10 ++- .../service/CanteenDailyMenuService.java | 11 ++- .../impl/CanteenDailyMenuServiceImpl.java | 17 +++- .../mapper/CanteenDailyMenuMapper.xml | 32 ++++++- 6 files changed, 150 insertions(+), 21 deletions(-) diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/app/DailyMenuAppVO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/app/DailyMenuAppVO.java index c5af151d8..ddff7d31a 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/app/DailyMenuAppVO.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/app/DailyMenuAppVO.java @@ -2,59 +2,112 @@ package com.bsd.pjcloud.canteen.vo.app; import lombok.Data; +import java.time.LocalDate; import java.util.List; +/** + * App 每日菜谱展示信息,聚合菜谱日期、餐段和关联菜品的详情字段。 + */ @Data public class DailyMenuAppVO { - + /** + * 每日菜谱记录 ID,是 App 详情接口和页面跳转使用的唯一标识。 + */ private Long id; /** - * 菜品id + * 菜谱生效日期。 + */ + private LocalDate startTime; + + /** + * 菜谱所属商户 ID。 + */ + private Long merchantId; + + /** + * 关联菜品 SPU ID,用于套餐组成查询和下单。 */ private Long spuId; /** - * 菜品名称 + * 菜品名称。 */ private String name; + /** - * 商品价格,单位使用:分 + * 商品销售价格,单位为分。 */ private Integer price; + /** - * 菜品分类编号 + * 商品市场价格,单位为分;为空时不展示划线价。 + */ + private Integer marketPrice; + + /** + * 菜品分类编号。 */ private Long categoryId; + /** - * 菜品封面图 + * 菜品分类名称;分类不存在或已删除时为空。 + */ + private String categoryName; + + /** + * 菜品封面图地址。 */ private String picUrl; + /** - * 库存 + * 商品轮播图地址,多个地址按逗号分隔。 + */ + private String sliderPicUrls; + + /** + * 商品简介;为空时详情页不展示简介区域。 + */ + private String introduction; + + /** + * 商品富文本详情;为空或仅包含空标签时详情页不展示图文区域。 + */ + private String description; + + /** + * 当前可售库存。 */ private Integer stock; /** - * 时间类型 + * 商品销量,仅用于详情页展示。 + */ + private Integer salesCount; + + /** + * 餐段类型:1 早餐、2 午餐、3 晚餐。 */ private Integer hourType; + /** + * 菜品展示排序,数值越小越靠前。 + */ private Integer sort; /** - * 是否显示 + * 是否显示,沿用菜品表协议值;App 查询只返回值为 0 的记录。 */ private String isShow; - /** - * 商品类型:1单品 2套餐 - */ - private Integer spuType; + /** + * 商品类型:1 单品、2 套餐。 + */ + private Integer spuType; - /** - * 套餐组成 - */ - private List comboItems; + /** + * 套餐组成;单品或套餐未配置明细时返回空列表。 + */ + private List comboItems; } diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java index 6df7eaf5c..8b8698124 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java @@ -15,6 +15,7 @@ import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.canteen.service.CanteenSpuService; import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; +import com.bsd.pjcloud.canteen.vo.app.DailyMenuAppVO; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity; @@ -212,6 +213,19 @@ public class CanteenDailyMenuController { return R.ok(canteenDailyMenuService.selectTimeFoodPage(page, dailyMenuDTO)); } + /** + * 按每日菜谱记录 ID 查询 App 详情。 + * + * @param id 每日菜谱记录 ID + * @return 每日菜谱详情;记录不存在、已删除或菜品已隐藏时 data 为空 + */ + @Operation(summary = "查询每日菜谱详情", description = "按每日菜谱记录 ID 查询 App 展示详情") + @ApiCryptoAes + @GetMapping("/app/{id}") + public R getAppDetail(@PathVariable("id") Long id) { + return R.ok(canteenDailyMenuService.getAppDetail(id)); + } + /** * 获取当天指定菜品 diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java index dcc9b3c59..5d64a0a52 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java @@ -34,4 +34,12 @@ public interface CanteenDailyMenuMapper extends PjcloudBaseMapper selectTimeFoodPage(@Param("page")Page page, DailyMenuDTO dailyMenuDTO); -} \ No newline at end of file + + /** + * 按每日菜谱记录 ID 查询 App 详情,结果聚合菜谱、菜品和分类的展示字段。 + * + * @param id 每日菜谱记录 ID + * @return 可展示的每日菜谱详情;记录不存在、已删除或菜品已隐藏时返回 null + */ + DailyMenuAppVO selectAppDetail(@Param("id") Long id); +} diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java index 90b7be021..7fa283a3c 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java @@ -7,6 +7,7 @@ import com.bsd.pjcloud.canteen.dto.DailyMenuAll; import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity; import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; +import com.bsd.pjcloud.canteen.vo.app.DailyMenuAppVO; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.security.service.PjcloudUser; @@ -53,6 +54,14 @@ public interface CanteenDailyMenuService extends IService list) { if (CollectionUtils.isEmpty(list)) { return; @@ -249,4 +264,4 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl order by s.sort asc - \ No newline at end of file + + +