diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java index d13d7849d..ef7974f08 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteCanteenSpuService.java @@ -23,6 +23,7 @@ package com.bsd.pjcloud.canteen.api.feign; import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; +import com.bsd.pjcloud.canteen.vo.app.OnlineSpuComboItemVO; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; import org.springframework.cloud.openfeign.FeignClient; @@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestParam; import java.util.Collection; import java.util.List; +import java.util.Map; /** * @author zjf @@ -67,6 +69,15 @@ public interface RemoteCanteenSpuService { @PostMapping("/canteenSpu/ad/getSpuListByIds") R> getSpuListByIds(@RequestBody List ids); + /** + * 按套餐 SPU ID 批量查询套餐组成,用于跨服务补充只读展示数据。 + * + * @param spuIds 套餐 SPU ID 列表,空列表返回空映射 + * @return 套餐 SPU ID 与已按配置顺序排列的组成菜品映射 + */ + @PostMapping("/canteenSpu/ad/getComboItemsBySpuIds") + R>> getComboItemsBySpuIds(@RequestBody List spuIds); + /** * 购物车效验库存 * @param spuId diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteDailyMenuService.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteDailyMenuService.java index fe2ed83f6..65f8ff68d 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteDailyMenuService.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/api/feign/RemoteDailyMenuService.java @@ -26,9 +26,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO; import com.bsd.pjcloud.canteen.dto.DailyMenuAll; import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; -import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; import com.bsd.pjcloud.canteen.vo.APPOnlineSpuVO; import com.bsd.pjcloud.canteen.vo.app.CanteenOnlineSpuAppVO; +import com.bsd.pjcloud.canteen.vo.app.DailyMenuAppVO; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; import io.swagger.v3.oas.annotations.Operation; @@ -70,17 +70,18 @@ public interface RemoteDailyMenuService { /** - * 根据菜品日期获取当天的菜品列表 - * @param day 日期 - * @param hourType 早中晚 - * @param categoryId 分类id - * @param merchantId 商户id - * @return + * 查询收银终端指定日期的每日菜谱,返回与 App 分页记录一致的商品及套餐组成结构。 + * + * @param day 菜谱生效日期,格式为 yyyy-MM-dd + * @param hourType 餐段编码;为空表示全部餐段 + * @param categoryId 菜品分类 ID;为空表示全部分类 + * @param merchantId 收银终端所属商户 ID + * @return 指定条件下的每日菜谱列表;无可售菜品时 data 为空列表 */ @GetMapping("/canteenDailyMenu/ad/getCanteenList") - public R> getCanteenList(@RequestParam("day") String day, - @RequestParam(value = "hourType", required = false) Integer hourType, - @RequestParam(value = "categoryId", required = false) Long categoryId, - @RequestParam(value = "merchantId") Long merchantId); + R> getCanteenList(@RequestParam("day") String day, + @RequestParam(value = "hourType", required = false) Integer hourType, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "merchantId") Long merchantId); } 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 8b8698124..aa54a4780 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 @@ -14,7 +14,6 @@ import com.bsd.pjcloud.canteen.dto.DailyMenuAll; 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; @@ -190,14 +189,22 @@ public class CanteenDailyMenuController { // ---------AD------------ + /** + * 查询收银终端指定日期的每日菜谱,并返回套餐类型及其组成明细。 + * + * @param day 菜谱生效日期,格式为 yyyy-MM-dd + * @param hourType 餐段编码;为空表示全部餐段 + * @param categoryId 菜品分类 ID;为空表示全部分类 + * @param merchantId 收银终端所属商户 ID + * @return 与 App 每日菜谱分页记录一致的商品列表;无数据时返回空列表 + */ @GetMapping("/ad/getCanteenList") @SysLog("查询每日菜品列表") - public R> getCanteenList(@RequestParam("day") String day, - @RequestParam(value = "hourType", required = false) Integer hourType, - @RequestParam(value = "categoryId", required = false) Long categoryId, - @RequestParam(value = "merchantId") Long merchantId) { - - return R.ok(canteenDailyMenuService.getCanteenMenuListScope(day, hourType, categoryId,merchantId)); + public R> getCanteenList(@RequestParam("day") String day, + @RequestParam(value = "hourType", required = false) Integer hourType, + @RequestParam(value = "categoryId", required = false) Long categoryId, + @RequestParam(value = "merchantId") Long merchantId) { + return R.ok(canteenDailyMenuService.getCanteenMenuListScope(day, hourType, categoryId, merchantId)); } // --------------APP--------------- diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java index 2a4f36ab3..4c4b6d5eb 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java @@ -15,6 +15,7 @@ import com.bsd.pjcloud.canteen.entity.CanteenOnlineSpuEntity; import com.bsd.pjcloud.canteen.entity.CanteenStockEntity; import com.bsd.pjcloud.canteen.mapper.CanteenStockMapper; import com.bsd.pjcloud.canteen.service.CanteenStockService; +import com.bsd.pjcloud.canteen.vo.app.OnlineSpuComboItemVO; import com.bsd.pjcloud.canteen.vo.erp.CanteenSpuSimpleVO; import com.bsd.pjcloud.canteen.vo.erp.CanteenSpuStockVO; import com.bsd.pjcloud.common.core.util.R; @@ -34,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Map; import java.util.Objects; /** @@ -263,6 +265,17 @@ public class CanteenSpuController { return R.ok(list); } + /** + * 按套餐 SPU ID 批量查询套餐组成,供订单等内部业务补充只读展示信息。 + * + * @param spuIds 套餐 SPU ID 列表,空列表返回空映射 + * @return 套餐 SPU ID 与组成菜品列表的映射 + */ + @PostMapping("/ad/getComboItemsBySpuIds") + public R>> getComboItemsBySpuIds(@RequestBody List spuIds) { + return R.ok(canteenSpuService.loadComboItemVos(spuIds)); + } + @ApiCryptoAes @GetMapping("/app/checkSpuStock") 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 5d64a0a52..bbc607843 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 @@ -2,7 +2,6 @@ package com.bsd.pjcloud.canteen.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; -import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; import com.bsd.pjcloud.canteen.vo.DailyMenuVO; import com.bsd.pjcloud.canteen.vo.app.DailyMenuAppVO; import com.bsd.pjcloud.common.data.datascope.DataScope; @@ -22,14 +21,17 @@ public interface CanteenDailyMenuMapper extends PjcloudBaseMapper getCanteenMenuList(@Param("day") String day, @Param("hourType") Integer hourType, - @Param("categoryId") Long categoryId, @Param("merchantId") Long merchantId,DataScope dataScope); + List getCanteenMenuList(@Param("day") String day, @Param("hourType") Integer hourType, + @Param("categoryId") Long categoryId, @Param("merchantId") Long merchantId, DataScope dataScope); 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 7fa283a3c..839ad25c1 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 @@ -6,7 +6,6 @@ import com.bsd.pjcloud.canteen.dto.CanteenDailyMenuCVDTO; 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; @@ -43,14 +42,15 @@ public interface CanteenDailyMenuService extends IService getCanteenMenuListScope(String day, Integer hourType, Long categoryId, Long merchantId); + List getCanteenMenuListScope(String day, Integer hourType, Long categoryId, Long merchantId); Page selectTimeFoodPage(Page page, DailyMenuDTO dailyMenuDTO); diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java index b24e3a862..37edcf84e 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java @@ -11,7 +11,6 @@ import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.canteen.mapper.CanteenSpuMapper; import com.bsd.pjcloud.canteen.service.CanteenSpuService; -import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; import com.bsd.pjcloud.canteen.vo.DailyMenuVO; import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity; import com.bsd.pjcloud.canteen.mapper.CanteenDailyMenuMapper; @@ -138,9 +137,20 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl getCanteenMenuListScope(String day, Integer hourType, Long categoryId, Long merchantId) { - return baseMapper.getCanteenMenuList(day, hourType, categoryId, merchantId, DataScope.of()); + public List getCanteenMenuListScope(String day, Integer hourType, Long categoryId, Long merchantId) { + List list = baseMapper.getCanteenMenuList(day, hourType, categoryId, merchantId, DataScope.of()); + fillDailyMenuAppCombo(list); + return list; } @Override diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml index d15159de9..593026e89 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml @@ -17,17 +17,26 @@ - + - + + - + + + + + + - + + + + - SELECT - sp.id as spu_id, t.id, + t.start_time, + t.merchant_id, + sp.id AS spu_id, sp.name, - sp.pic_url, - t.hour_type, sp.price, + sp.market_price, + sp.pic_url, + sp.slider_pic_urls, + sp.introduction, + sp.description, sp.stock, - sp.category_id, + sp.sales_count, sp.sort, + sp.is_show, + c.id AS category_id, + c.name AS category_name, + IFNULL(sp.spu_type, 1) AS spu_type, + t.hour_type, + t.dept_id, t.create_by FROM canteen_daily_menu t LEFT JOIN canteen_spu sp on t.spu_id=sp.id + LEFT JOIN canteen_category c + on sp.category_id = c.id AND c.del_flag = 0 - sp.del_flag = 0 and t.del_flag = 0 + sp.del_flag = 0 and t.del_flag = 0 and sp.is_show = 0 AND sp.category_id = #{categoryId} @@ -85,6 +107,7 @@ AND t.merchant_id = #{merchantId} + order by sp.sort asc