diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/api/GlobalMetadataApi.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/api/GlobalMetadataApi.java index c2b8d133..529dcbb6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/api/GlobalMetadataApi.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/api/GlobalMetadataApi.java @@ -3,6 +3,7 @@ package com.bonus.canteen.core.allocation.api; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.bonus.canteen.core.allocation.canteen.mapper.AllocStallMapper; import com.bonus.common.houqin.constant.LeConstants; import com.bonus.canteen.core.allocation.alloc.model.AllocMetadata; import com.bonus.canteen.core.allocation.alloc.service.AllocMetadataService; @@ -16,6 +17,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -28,6 +30,9 @@ public class GlobalMetadataApi { @Lazy private AllocMetadataService allocMetadataService; + @Resource + private AllocStallMapper allocStallMapper; + @Resource @Lazy private AllocStallApi allocStallApi; @@ -116,7 +121,12 @@ public class GlobalMetadataApi { } public T getAvailableModel(MetadataModelTypeEnum modelTypeEnum, T t, Long canteenId, Long stallId) { - List metadataList = this.getAvailableList(modelTypeEnum, canteenId, stallId); + List metadataList =new ArrayList<>(); + if("order".equals(modelTypeEnum.getKey())){ + metadataList=allocStallMapper.queryAvailableOrder(modelTypeEnum.getKey(),canteenId,stallId); + }else{ + metadataList = this.getAvailableList(modelTypeEnum, canteenId, stallId); + } return MetadataUtil.transferToPayModel(metadataList, t); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/mapper/AllocStallMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/mapper/AllocStallMapper.java index 0cecb06e..f22cf537 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/mapper/AllocStallMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/mapper/AllocStallMapper.java @@ -1,6 +1,7 @@ package com.bonus.canteen.core.allocation.canteen.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.bonus.canteen.core.allocation.alloc.model.AllocMetadata; import com.bonus.canteen.core.allocation.canteen.model.AllocStall; import com.bonus.canteen.core.allocation.canteen.vo.AllocCanteenStallVO; import org.apache.ibatis.annotations.Mapper; @@ -16,4 +17,6 @@ public interface AllocStallMapper extends BaseMapper { List listAllCanteenStall(@Param("canteenId") Long canteenId); String getStallNameByIdSet(@Param("stallIdSet") Set stallIdSet); + + List queryAvailableOrder(@Param("modelType") String modelType,@Param("canteenId") Long canteenId, @Param("stallId") Long stallId); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/service/impl/AllocStallServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/service/impl/AllocStallServiceImpl.java index fde8d44e..1a127a54 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/service/impl/AllocStallServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/allocation/canteen/service/impl/AllocStallServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.time.LocalDate; import java.util.ArrayList; import java.util.Iterator; @@ -62,8 +63,23 @@ public class AllocStallServiceImpl extends ServiceImpl listReserveDate(AllocMobileCanteenQueryDTO queryDTO) { AllocCanteenOrderDTO allocCanteenOrderDTO = this.allocOrderMetadataApi.queryAvailableOrder(queryDTO.getCanteenId(), queryDTO.getStallId()); - String ifReserveSkipHoliday = allocCanteenOrderDTO.getIfReserveSkipHoliday(); - Integer reserveLimitDayNum = Integer.parseInt(allocCanteenOrderDTO.getReserveLimitDay()); + System.out.println("ifReserveSkipHoliday="+allocCanteenOrderDTO.getIfReserveSkipHoliday()+";reserveLimitDayNum="+allocCanteenOrderDTO.getReserveLimitDay()+"" + + ";ifAllowReserveToday="+allocCanteenOrderDTO.getIfAllowReserveToday()); + String ifReserveSkipHoliday="1"; + if(allocCanteenOrderDTO.getIfReserveSkipHoliday()!=null&&!"".equals(allocCanteenOrderDTO.getIfReserveSkipHoliday())){ + ifReserveSkipHoliday= allocCanteenOrderDTO.getIfReserveSkipHoliday(); + }else{ + ifReserveSkipHoliday="1"; + } + Integer reserveLimitDayNum = 7; + try{ + reserveLimitDayNum=Integer.parseInt(allocCanteenOrderDTO.getReserveLimitDay()); + }catch (Exception e){ + reserveLimitDayNum=7; + } + if(allocCanteenOrderDTO.getIfAllowReserveToday()==null||"".equals(allocCanteenOrderDTO.getIfAllowReserveToday())){ + allocCanteenOrderDTO.setIfAllowReserveToday("1"); + } return this.listMatchData(ifReserveSkipHoliday, reserveLimitDayNum, allocCanteenOrderDTO.getIfAllowReserveToday()); } @@ -72,42 +88,47 @@ public class AllocStallServiceImpl extends ServiceImpl listMatchData(String skipFlagStr, Integer limitNum, String ifAllowReserveToday) { + private List listMatchData(String skipFlagStr, Integer limitNum, String ifAllowReserveToday) { log.info(String.format("查询日期,是否调过节假日:%s,天数:%d", skipFlagStr, limitNum)); List reserveDateList = new ArrayList(); - LocalDate startDate; - if ("1".equals(ifAllowReserveToday)) { - log.info("允许预定当天"); - startDate = LocalDate.now(); - } else { - log.info("不允许预定当天"); - startDate = LocalDate.now().plusDays(1L); - } - - if ("2".equals(skipFlagStr)) { - for(int i = 0; i < limitNum; ++i) { - reserveDateList.add(startDate.plusDays((long)i)); + try{ + LocalDate startDate; + if ("1".equals(ifAllowReserveToday)) { + log.info("允许预定当天"); + limitNum=limitNum+1; + startDate = LocalDate.now(); + } else { + log.info("不允许预定当天"); + startDate = LocalDate.now().plusDays(1L); } - } else { - List holidayList = this.allocHolidayApi.getHolidayList(); - for(int i = 0; i < limitNum; ++i) { - LocalDate reserveDate = startDate.plusDays((long)i); - boolean skipFlag = false; - Iterator var10 = holidayList.iterator(); + if ("2".equals(skipFlagStr)) { + for(int i = 0; i < limitNum; ++i) { + reserveDateList.add(startDate.plusDays((long)i)); + } + } else { + List holidayList = this.allocHolidayApi.getHolidayList(); - while(var10.hasNext()) { - LocalDate holiday = (LocalDate)var10.next(); - if (reserveDate.isEqual(holiday)) { - skipFlag = true; - limitNum = limitNum + 1; + for(int i = 0; i < limitNum; ++i) { + LocalDate reserveDate = startDate.plusDays((long)i); + boolean skipFlag = false; + Iterator var10 = holidayList.iterator(); + + while(var10.hasNext()) { + LocalDate holiday = (LocalDate)var10.next(); + if (reserveDate.isEqual(holiday)) { + skipFlag = true; + limitNum = limitNum + 1; + } + } + + if (!skipFlag) { + reserveDateList.add(reserveDate); } } - - if (!skipFlag) { - reserveDateList.add(reserveDate); - } } + }catch (Exception e){ + e.printStackTrace(); } return reserveDateList; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java index 349a94bc..88108ecc 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/service/impl/MenuRecipeServiceImpl.java @@ -4,10 +4,12 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.bonus.canteen.core.menu.model.AllocMealtimeModel; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.houqin.constant.DelFlagEnum; import com.bonus.canteen.core.allocation.api.AllocCanteenApi; @@ -37,6 +39,7 @@ import com.bonus.canteen.core.order.api.OrderMenuApi; import com.bonus.canteen.core.order.common.vo.OrderGoodsNumVO; import com.bonus.common.houqin.i18n.I18n; import com.bonus.common.houqin.utils.id.Id; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.slf4j.Logger; @@ -285,6 +288,33 @@ public class MenuRecipeServiceImpl extends ServiceImpl typeList=vo.getTypeList(); + if (ObjectUtil.isNotEmpty(typeList)) { + for(AppletReserveRecipeTypeVO vo1:typeList){ + List dishesList=vo1.getDishesList(); + if (ObjectUtil.isNotEmpty(dishesList)) { + for(AppletReserveRecipeDishesVO vo2:dishesList){ + String mealtime=vo2.getMealTime(); + if(mealtime!=null&&mealtime.contains("\"endTime\":")){ + ObjectMapper mapper = new ObjectMapper(); + AllocMealtimeModel person =new AllocMealtimeModel(); + try{ + person = (AllocMealtimeModel) JSONObject.parseObject(mealtime, AllocMealtimeModel.class); + }catch (Exception e){e.printStackTrace();} + if(person!=null){ + vo2.setStartTime(person.getReserveStartTime()); + } + if(person!=null){ + vo2.setEndTime(person.getReserveEndTime()); + } + + } + } + } + } + } + } resultList.sort(Collections.reverseOrder((s1, s2) -> { return s2.getMealtimeType() - s1.getMealtimeType(); })); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/AppletReserveRecipeDishesVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/AppletReserveRecipeDishesVO.java index 108db2b2..59847aa7 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/AppletReserveRecipeDishesVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/menu/vo/AppletReserveRecipeDishesVO.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.math.BigDecimal; +import java.time.LocalTime; import java.util.List; @ApiModel("菜品详情") @@ -45,6 +46,14 @@ public class AppletReserveRecipeDishesVO { private List tasteNameList; @ApiModelProperty("预定时间") private String reserveEndTime; + @ApiModelProperty("当日预定时间") + private String mealTime; + @ApiModelProperty("当日预定结束时间") + private LocalTime endTime; + @ApiModelProperty("当日预定开始时间") + private LocalTime startTime; + @ApiModelProperty("预定餐最多允许订多少天 默认:7") + private String reserveLimitDay; public String getDishesImgUrl() { return ObjectUtil.isNotEmpty(this.dishesImgUrl) ? SysUtil.getCutFileUrl(this.dishesImgUrl.split(",")[0]) : this.dishesImgUrl; @@ -181,4 +190,36 @@ public class AppletReserveRecipeDishesVO { public void setReserveEndTime(String reserveEndTime) { this.reserveEndTime = reserveEndTime; } + + public String getMealTime() { + return mealTime; + } + + public void setMealTime(String mealTime) { + this.mealTime = mealTime; + } + + public LocalTime getEndTime() { + return endTime; + } + + public void setEndTime(LocalTime endTime) { + this.endTime = endTime; + } + + public LocalTime getStartTime() { + return startTime; + } + + public void setStartTime(LocalTime startTime) { + this.startTime = startTime; + } + + public String getReserveLimitDay() { + return reserveLimitDay; + } + + public void setReserveLimitDay(String reserveLimitDay) { + this.reserveLimitDay = reserveLimitDay; + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java index 4a451f3b..45ce8d31 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/order/mobile/business/impl/OrderPlaceMobileBusinessImplV3.java @@ -235,9 +235,11 @@ public class OrderPlaceMobileBusinessImplV3 implements OrderPlaceMobileBusiness , (Long) LeNumUtil.reduceField(reserveMealDTO.getReserveMealList(), OrderReserveMealDTO::getCanteenId , (Object)null), (Long)LeNumUtil.reduceField(reserveMealDTO.getReserveMealList() , OrderReserveMealDTO::getStallId, (Object)null), headerDTO.getOpenid(), custInfo, reserveMealDTO); + OrderSavePO orderSavePO = this.packageOrderInfo(reserveMealDTO, reserveMealDTO.getReserveMealList(), payDTO); this.reserveMealOrderPlaceCheck(orderSavePO.getOrderInfoList(), orderSavePO.getOrderDetailList() , orderSavePO.getOrderDeliveryList()); + if (LeConstants.COMMON_NO.equals(reserveMealDTO.getIfTrial())) { this.orderPlaceBusiness.orderHandlerLock(orderSavePO.getMacOrderId(), OrderCacheConstants.MOBILE_PAY_INTERVAL); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/canteen/AllocStallMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/canteen/AllocStallMapper.xml index e3342a0a..a92d0e60 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/canteen/AllocStallMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/alloc/canteen/AllocStallMapper.xml @@ -13,5 +13,22 @@ #{stallId} + diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml index 636c98b3..4d3e1f41 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/menu/MenuRecipeMapper.xml @@ -147,6 +147,7 @@ + @@ -193,7 +194,7 @@ md.size_json, mdtt.taste_name, mdsr.monthly_sales, - mdsr.good_probability,amd.model_value as reserveEndTime + mdsr.good_probability,amd.model_value as reserveEndTime,amd2.model_value as mealTime,amdlimit.model_value as reserveLimitDay from menu_recipe_detail mrd inner join menu_recipe_dishes m on mrd.detail_id = m.detail_id @@ -211,6 +212,17 @@ left join menu_taste_dishes mtd on md.dishes_id = mtd.dishes_id left join menu_dishes_taste mdtt on mtd.taste_id = mdtt.taste_id left join alloc_metadata amd on mr.canteen_id = amd.canteen_id and mr.stall_id = amd.stall_id and amd.model_key='reserveEndTime' + left join alloc_metadata amdlimit on mr.canteen_id = amdlimit.canteen_id and mr.stall_id = amdlimit.stall_id and amdlimit.model_key='reserveLimitDay' + left join ( + select a.*,case when a.model_key='mealtimeBreakfast' then '1' + when a.model_key='mealtimeLunch' then '2' + when a.model_key='mealtimeAfternoonTea' then '3' + when a.model_key='mealtimeDinner' then '4' + when a.model_key='mealtimeMidnightSnack' then '5' + else '0' end as model_keyd + from alloc_metadata a where a.model_type='mealtime' + ) amd2 + on mrd.mealtime_type=amd2.model_keyd and mr.canteen_id = amd2.canteen_id and mr.stall_id = amd2.stall_id where mrd.apply_date = #{applyDate} and mr.recipe_id = #{recipeId}