h5周菜谱

This commit is contained in:
sxu 2025-06-07 09:17:53 +08:00
parent b23e27759b
commit e42bcb884b
10 changed files with 202 additions and 6 deletions

View File

@ -4,9 +4,11 @@ import cn.hutool.core.util.ObjectUtil;
import com.bonus.canteen.core.basic.domain.AllocMobileCanteenQueryDTO;
import com.bonus.canteen.core.cook.domain.CookRecipe;
import com.bonus.canteen.core.cook.dto.*;
import com.bonus.canteen.core.cook.service.ICookDishesService;
import com.bonus.canteen.core.cook.service.ICookRecipeH5Service;
import com.bonus.canteen.core.cook.service.ICookRecipeService;
import com.bonus.canteen.core.cook.vo.AllocRecipeStallVO;
import com.bonus.canteen.core.cook.vo.AppletDishesDetailVO;
import com.bonus.canteen.core.cook.vo.CookRecipeDetailVO;
import com.bonus.common.core.utils.poi.ExcelUtil;
import com.bonus.common.core.web.controller.BaseController;
@ -26,6 +28,8 @@ import javax.validation.Valid;
import java.time.LocalDate;
import java.util.List;
import static com.bonus.common.core.web.domain.AjaxResult.success;
/**
* 菜品计划信息Controller
*
@ -39,6 +43,8 @@ import java.util.List;
public class CookRecipeH5Controller extends BaseController {
@Autowired
private ICookRecipeH5Service cookRecipeH5Service;
@Autowired
private ICookDishesService cookDishesService;
@ApiOperation("获取预定餐食堂列表")
@GetMapping({"/reserve/canteen/shopstall/list"})
@ -81,4 +87,11 @@ public class CookRecipeH5Controller extends BaseController {
return getDataTable(null);
}
}
@PostMapping({"/dishes/detail"})
@ApiOperation("根据菜品id获取菜品详情")
public AjaxResult getRecipeDetail(@RequestBody AppletDishesDetailDTO dto) {
AppletDishesDetailVO dishesDetailVO = this.cookDishesService.getDishesDetailByDishesId(dto);
return success(dishesDetailVO);
}
}

View File

@ -0,0 +1,54 @@
package com.bonus.canteen.core.cook.enums;
public enum CookMealTypeEnum {
DISHES(1, "菜品"),
PACKAGE_MEAL(2, "套餐"),
PRODUCT(3, "商品");
private final Integer key;
private final String value;
private CookMealTypeEnum(Integer key, String value) {
this.key = key;
this.value = value;
}
public static Integer getKey(String value) {
CookMealTypeEnum[] enums = values();
CookMealTypeEnum[] var2 = enums;
int var3 = enums.length;
for(int var4 = 0; var4 < var3; ++var4) {
CookMealTypeEnum temp = var2[var4];
if (temp.value().equals(value)) {
return temp.key();
}
}
return null;
}
public static String getValue(Integer key) {
CookMealTypeEnum[] enums = values();
CookMealTypeEnum[] var2 = enums;
int var3 = enums.length;
for(int var4 = 0; var4 < var3; ++var4) {
CookMealTypeEnum temp = var2[var4];
if (temp.key().equals(key)) {
return temp.value();
}
}
return null;
}
public Integer key() {
return this.key;
}
public String value() {
return this.value;
}
}

View File

@ -62,4 +62,6 @@ public interface CookCollectionDishesMapper {
* @return 结果
*/
public int deleteCookCollectionDishesByDishesIds(Long[] ids);
public Long getCountByUserIdAndDishesId(Long userId, Long dishesId);
}

View File

@ -3,6 +3,9 @@ package com.bonus.canteen.core.cook.mapper;
import java.util.List;
import com.bonus.canteen.core.cook.domain.*;
import com.bonus.canteen.core.cook.dto.AppletDishesDetailDTO;
import com.bonus.canteen.core.cook.vo.AppletDishesDetailVO;
import com.bonus.canteen.core.cook.vo.CookMaterialBasVO;
import com.bonus.canteen.core.utils.NutritionEntity;
import org.apache.ibatis.annotations.Param;
@ -159,4 +162,8 @@ public interface CookDishesMapper {
* @return 菜品材料类型信息
*/
List<MapBean> getCookMaterialTypeMap();
AppletDishesDetailVO selectDishesDetailByDishesId(AppletDishesDetailDTO dishesDetailDTO);
List<CookMaterialBasVO> getCookMaterialById(Long dishesId);
}

View File

@ -2,8 +2,10 @@ package com.bonus.canteen.core.cook.service;
import java.util.List;
import com.bonus.canteen.core.cook.domain.CookDishes;
import com.bonus.canteen.core.cook.dto.AppletDishesDetailDTO;
import com.bonus.canteen.core.cook.dto.DishesImportCheckResult;
import com.bonus.canteen.core.cook.dto.MenuDishesImportDTO;
import com.bonus.canteen.core.cook.vo.AppletDishesDetailVO;
import org.springframework.web.multipart.MultipartFile;
/**
@ -76,4 +78,6 @@ public interface ICookDishesService {
* @return 是否成功
*/
Boolean newImportDishes(List<MenuDishesImportDTO> request);
public AppletDishesDetailVO getDishesDetailByDishesId(AppletDishesDetailDTO dishesDetailDTO);
}

View File

@ -6,30 +6,32 @@ import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSONObject;
import com.bonus.canteen.core.common.utils.EasyExcelUtil;
import com.bonus.canteen.core.common.utils.LogUtil;
import com.bonus.canteen.core.cook.domain.*;
import com.bonus.canteen.core.cook.dto.AppletDishesDetailDTO;
import com.bonus.canteen.core.cook.dto.DishesImportCheckResult;
import com.bonus.canteen.core.cook.dto.MenuDishesImportDTO;
import com.bonus.canteen.core.cook.enums.MenuDishesTypeDefaultFlagEnum;
import com.bonus.canteen.core.cook.enums.CookMealTypeEnum;
import com.bonus.canteen.core.cook.enums.MenuMaterialTypeEnum;
import com.bonus.canteen.core.cook.enums.MenuSalesTypeEnum;
import com.bonus.canteen.core.cook.mapper.CookCollectionDishesMapper;
import com.bonus.canteen.core.cook.mapper.CookNutritionMapper;
import com.bonus.canteen.core.cook.vo.AppletDishesDetailVO;
import com.bonus.canteen.core.cook.vo.AppletDishesSizeV2VO;
import com.bonus.canteen.core.utils.Arith;
import com.bonus.canteen.core.utils.NutritionEntity;
import com.bonus.canteen.core.utils.NutritionEntityUtil;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.houqin.constant.DelFlagEnum;
import com.bonus.common.security.utils.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@ -56,6 +58,8 @@ public class CookDishesServiceImpl implements ICookDishesService {
private CookDishesMapper cookDishesMapper;
@Autowired
private CookNutritionMapper cookNutritionMapper;
@Autowired
private CookCollectionDishesMapper cookCollectionDishesMapper;
@Lazy
@Resource(
name = "smartCanteenTaskExecutor"
@ -549,4 +553,34 @@ public class CookDishesServiceImpl implements ICookDishesService {
dishesList.forEach(this::insertCookDishes);
}
public AppletDishesDetailVO getDishesDetailByDishesId(AppletDishesDetailDTO dishesDetailDTO) {
//AppletDishesDetailDTO dishesDetailDTO = (AppletDishesDetailDTO)JSON.parseObject(content, AppletDishesDetailDTO.class);
dishesDetailDTO.setDelFlag(DelFlagEnum.DEL_FALSE.key());
Long baseDishesId = dishesDetailDTO.getDishesId();
Long userId = dishesDetailDTO.getUserID();
if (!ObjectUtil.isNull(userId) && userId != -1L) {
AppletDishesDetailVO appletDishesDetailVO = cookDishesMapper.selectDishesDetailByDishesId(dishesDetailDTO);
Long countDishes = this.cookCollectionDishesMapper.getCountByUserIdAndDishesId(userId, baseDishesId);
if (ObjectUtil.isNotNull(countDishes) && countDishes > 0L) {
appletDishesDetailVO.setIsFavorites(1);
} else {
appletDishesDetailVO.setIsFavorites(2);
}
Long dishesId = ((AppletDishesSizeV2VO)appletDishesDetailVO.getDishesDetailList().get(0)).getDishesId();
List materialList;
if (CookMealTypeEnum.DISHES.key().equals(appletDishesDetailVO.getMealType())) {
materialList = this.cookDishesMapper.getCookMaterialById(dishesId);
appletDishesDetailVO.setMaterialList(materialList);
} else {
//套餐信息 暂时删除不要
// materialList = this.cookDishesMapper.selectDishesName(dishesId);
// appletDishesDetailVO.setPackageDishesList(materialList);
}
return appletDishesDetailVO;
} else {
throw new ServiceException("菜单没有用户信息");
}
}
}

View File

@ -30,7 +30,7 @@ public class AppletDishesDetailVO {
private Integer isFavorites;
@ApiModelProperty("菜品规格")
private List<AppletDishesSizeV2VO> dishesDetailList;
List<MenuMaterialBasVO> materialList;
List<CookMaterialBasVO> materialList;
@ApiModelProperty("套餐菜品明细")
private List<String> packageDishesList;

View File

@ -7,7 +7,7 @@ import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
@ApiModel("菜品标签分页返回")
public class MenuMaterialBasVO implements Serializable {
public class CookMaterialBasVO implements Serializable {
@ApiModelProperty("食材id")
private Long materialId;
@ApiModelProperty("食材名称")

View File

@ -97,4 +97,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{dishesId}
</foreach>
</delete>
<select id="getCountByUserIdAndDishesId" resultType="Long">
select count(1) from cook_collection_dishes
where user_id = #{userId} and dishes_id = #{dishesId}
</select>
</mapper>

View File

@ -79,6 +79,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="dishesTypeName" column="dishes_type_name" />
</resultMap>
<resultMap id="appletDishesDetailVO" type="com.bonus.canteen.core.cook.vo.AppletDishesDetailVO">
<result property="dishesId" column="dishes_id"/>
<result property="mealType" column="meal_type"/>
<result property="customId" column="custom_d"/>
<result property="dishesName" column="dishes_name"/>
<result property="aliasName" column="alias_name"/>
<result property="imageUrl" column="image_url"/>
<result property="intro" column="intro"/>
<result property="particulars" column="particulars"/>
<collection property="dishesDetailList" ofType="com.bonus.canteen.core.cook.vo.AppletDishesSizeV2VO">
<result property="dishesId" column="dishes_id"/>
<result property="dishesName" column="dishes_name"/>
<result property="surplusNum" column="surplus_num"/>
<result property="restrictNum" column="restrict_num"/>
<result property="dishesPrice" column="dishes_price"/>
<result property="prefPrice" column="pref_price"/>
<result property="sizeType" column="size_type"/>
<result property="sizeJson" column="size_json"/>
<result property="calories" column="calories"/>
<result property="protein" column="protein"/>
<result property="fat" column="fat"/>
<result property="carbohydrate" column="carbohydrate"/>
<result property="dietaryFiber" column="dietary_fiber"/>
<result property="cholesterol" column="cholesterol"/>
<result property="calcium" column="calcium"/>
<result property="sodium" column="sodium"/>
</collection>
</resultMap>
<sql id="selectCookDishesVo">
select dishes_id, meal_type, custom_id, inventory_id, dishes_name, alias_name, bar_code, intro, cook_id, type_id,cdt.dishes_type_name, classify_id,
effect_id, style_id, if_local_feature, dishes_depart, sequence, pungency_degree, sales_mode, size_type, size_json,
@ -521,4 +550,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{detailId}
</foreach>
</delete>
<!-- 根据菜品id获取菜品详情 -->
<select id="selectDishesDetailByDishesId" resultMap="appletDishesDetailVO">
select
md.dishes_id,
md.meal_type,
md.custom_id,
md.dishes_name,
md.dishes_name as real_dishes_name,
md.alias_name,
md.image_url,
md.intro,
md.particulars,
mrd.size_type,
md.size_json,
mrd.price as dishes_price,
mrd.sale_price as pref_price,
mrd.supply_num - mrd.surplus_num as sales_num,
mrd.surplus_num,
mrd.restrict_num,
md.calories,
md.protein,
md.fat,
md.carbohydrate,
md.dietary_fiber,
md.cholesterol,
md.calcium,
md.sodium
from
cook_dishes md
left join cook_recipe_dishes mrd on md.dishes_id = mrd.dishes_id
where
mrd.detail_id = #{detailId} and md.del_flag = #{delFlag}
</select>
<select id="getCookMaterialById" resultType="com.bonus.canteen.core.cook.vo.CookMaterialBasVO">
SELECT cm.material_id,
cm.material_name,
cm.material_code,
cm.img_url,
cdm.weight,
cdm.material_type,
cn.nutrition_type_id as little_type
FROM cook_material cm
LEFT JOIN cook_dishes_material cdm ON cm.material_id = cdm.material_id
LEFT JOIN cook_nutrition cn ON cn.nutrition_id = cm.nutrition_id
WHERE cdm.dishes_id = #{dishesId}
</select>
</mapper>