feat:套餐展示
This commit is contained in:
1 parent
112c8dde3c
commit
ccc2b0e4da
6 files changed
+150
-21
No files matched your search
+70
-17
@@ -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<OnlineSpuComboItemVO> comboItems;
|
||||
/**
|
||||
* 套餐组成;单品或套餐未配置明细时返回空列表。
|
||||
*/
|
||||
private List<OnlineSpuComboItemVO> comboItems;
|
||||
}
|
||||
+14
@@ -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<DailyMenuAppVO> getAppDetail(@PathVariable("id") Long id) {
|
||||
return R.ok(canteenDailyMenuService.getAppDetail(id));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取当天指定菜品
|
||||
|
||||
+9
-1
@@ -34,4 +34,12 @@ public interface CanteenDailyMenuMapper extends PjcloudBaseMapper<CanteenDailyMe
|
||||
|
||||
|
||||
Page<DailyMenuAppVO> selectTimeFoodPage(@Param("page")Page page, DailyMenuDTO dailyMenuDTO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按每日菜谱记录 ID 查询 App 详情,结果聚合菜谱、菜品和分类的展示字段。
|
||||
*
|
||||
* @param id 每日菜谱记录 ID
|
||||
* @return 可展示的每日菜谱详情;记录不存在、已删除或菜品已隐藏时返回 null
|
||||
*/
|
||||
DailyMenuAppVO selectAppDetail(@Param("id") Long id);
|
||||
}
|
||||
+10
-1
@@ -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<CanteenDailyMenuEntity
|
||||
|
||||
Page selectTimeFoodPage(Page page, DailyMenuDTO dailyMenuDTO);
|
||||
|
||||
/**
|
||||
* 按每日菜谱记录 ID 查询 App 详情,并补充套餐组成数据。
|
||||
*
|
||||
* @param id 每日菜谱记录 ID
|
||||
* @return 每日菜谱详情;记录不存在、已删除或菜品已隐藏时返回 null
|
||||
*/
|
||||
DailyMenuAppVO getAppDetail(Long id);
|
||||
|
||||
|
||||
/**
|
||||
* 一键复制
|
||||
@@ -60,4 +69,4 @@ public interface CanteenDailyMenuService extends IService<CanteenDailyMenuEntity
|
||||
* @return
|
||||
*/
|
||||
R cv(CanteenDailyMenuCVDTO creenDailyMenuCVDTO);
|
||||
}
|
||||
}
|
||||
+16
-1
@@ -150,6 +150,21 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl<CanteenDailyMenuMap
|
||||
return pageData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按每日菜谱记录 ID 查询 App 详情,并使用关联 SPU 补齐套餐组成。
|
||||
*
|
||||
* @param id 每日菜谱记录 ID
|
||||
* @return 可展示的每日菜谱详情;无有效记录时返回 null
|
||||
*/
|
||||
@Override
|
||||
public DailyMenuAppVO getAppDetail(Long id) {
|
||||
DailyMenuAppVO detail = baseMapper.selectAppDetail(id);
|
||||
if (detail != null) {
|
||||
fillDailyMenuAppCombo(Collections.singletonList(detail));
|
||||
}
|
||||
return detail;
|
||||
}
|
||||
|
||||
private void fillDailyMenuCombo(List<DailyMenuVO> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
@@ -249,4 +264,4 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl<CanteenDailyMenuMap
|
||||
if (ObjectUtil.isEmpty(mchId)) return;
|
||||
Optional.of(remoteMchService.getById(mchId)).map(R::getData).map(MchManageVo::getDeptId).ifPresent(remoteMqttEventService::sendCanteenProductChangeMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
+31
-1
@@ -118,4 +118,34 @@
|
||||
</where>
|
||||
order by s.sort asc
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
<select id="selectAppDetail" resultType="com.bsd.pjcloud.canteen.vo.app.DailyMenuAppVO">
|
||||
SELECT m.id,
|
||||
m.start_time,
|
||||
m.hour_type,
|
||||
m.merchant_id,
|
||||
s.id AS spu_id,
|
||||
s.name,
|
||||
s.price,
|
||||
s.market_price,
|
||||
s.stock,
|
||||
s.sales_count,
|
||||
s.pic_url,
|
||||
s.slider_pic_urls,
|
||||
s.introduction,
|
||||
s.description,
|
||||
s.sort,
|
||||
s.is_show,
|
||||
c.id AS category_id,
|
||||
c.name AS category_name,
|
||||
IFNULL(s.spu_type, 1) AS spu_type
|
||||
FROM canteen_daily_menu m
|
||||
INNER JOIN canteen_spu s ON m.spu_id = s.id
|
||||
LEFT JOIN canteen_category c ON s.category_id = c.id AND c.del_flag = 0
|
||||
WHERE m.id = #{id}
|
||||
AND m.del_flag = 0
|
||||
AND s.del_flag = 0
|
||||
AND s.is_show = 0
|
||||
LIMIT 1
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in new issue
Block a user