fix(mealorder): 修复2025 年 9 月 28 日的订餐问题
- 在 buildNextWeekMeals 方法中添加特殊日期处理逻辑 - 如果 nextWeekStart前一天是 2025-09-28,则添加该日期的菜单 -优化代码结构,提高可读性和可维护性
Showing
1 changed file
with
19 additions
and
5 deletions
| ... | @@ -3,11 +3,19 @@ package com.infoloop.tianting.logic.task; | ... | @@ -3,11 +3,19 @@ package com.infoloop.tianting.logic.task; |
| 3 | import com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse; | 3 | import com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse; |
| 4 | import com.infoloop.tianting.context.LoginContextHolder; | 4 | import com.infoloop.tianting.context.LoginContextHolder; |
| 5 | import com.infoloop.tianting.enums.LoginSourceEnum; | 5 | import com.infoloop.tianting.enums.LoginSourceEnum; |
| 6 | -import com.infoloop.tianting.mealorderservice.*; | 6 | +import com.infoloop.tianting.mealorderservice.MealOrderCreation; |
| 7 | +import com.infoloop.tianting.mealorderservice.MealOrderOrderMethodEnum; | ||
| 8 | +import com.infoloop.tianting.mealorderservice.MenuSchedule; | ||
| 9 | +import com.infoloop.tianting.mealorderservice.SingleDinerMealSuspensionRecordRpcResponse; | ||
| 10 | +import com.infoloop.tianting.mealorderservice.SingleDinerRpcResponse; | ||
| 11 | +import com.infoloop.tianting.mealorderservice.SingleGradeClassRpcResponse; | ||
| 12 | +import com.infoloop.tianting.mealorderservice.SingleMealMenuRecordRpcResponse; | ||
| 13 | +import com.infoloop.tianting.mealorderservice.SingleMealOrderRpcResponse; | ||
| 14 | +import com.infoloop.tianting.mealorderservice.SingleMpAccountDinerRefRpcResponse; | ||
| 15 | +import com.infoloop.tianting.service.SuspensionService; | ||
| 7 | import com.infoloop.tianting.service.client.ClientInventoryServiceRpcClient; | 16 | import com.infoloop.tianting.service.client.ClientInventoryServiceRpcClient; |
| 8 | import com.infoloop.tianting.service.client.DeliveryRuleServiceRpcClient; | 17 | import com.infoloop.tianting.service.client.DeliveryRuleServiceRpcClient; |
| 9 | import com.infoloop.tianting.service.client.MealOrderServiceRpcClient; | 18 | import com.infoloop.tianting.service.client.MealOrderServiceRpcClient; |
| 10 | -import com.infoloop.tianting.service.SuspensionService; | ||
| 11 | import com.infoloop.tianting.store.WeeklyTaskStore; | 19 | import com.infoloop.tianting.store.WeeklyTaskStore; |
| 12 | import com.infoloop.tianting.utils.DateUtil; | 20 | import com.infoloop.tianting.utils.DateUtil; |
| 13 | import lombok.RequiredArgsConstructor; | 21 | import lombok.RequiredArgsConstructor; |
| ... | @@ -273,7 +281,7 @@ public class AutoCreateMealOrderTask { | ... | @@ -273,7 +281,7 @@ public class AutoCreateMealOrderTask { |
| 273 | private List<MenuSchedule> buildNextWeekMeals(ZonedDateTime nextWeekStart, | 281 | private List<MenuSchedule> buildNextWeekMeals(ZonedDateTime nextWeekStart, |
| 274 | java.util.List<SuspensionService.SuspensionInterval> intervals, | 282 | java.util.List<SuspensionService.SuspensionInterval> intervals, |
| 275 | Map<String, Integer> holidayMap) { | 283 | Map<String, Integer> holidayMap) { |
| 276 | - return IntStream.range(0, 7) | 284 | + List<MenuSchedule> meals = new ArrayList<>(IntStream.range(0, 7) |
| 277 | .mapToObj(i -> { | 285 | .mapToObj(i -> { |
| 278 | final var date = nextWeekStart.plusDays(i); | 286 | final var date = nextWeekStart.plusDays(i); |
| 279 | final var dateStr = date.format(DateUtil.YYYY_MM_DD); | 287 | final var dateStr = date.format(DateUtil.YYYY_MM_DD); |
| ... | @@ -291,14 +299,20 @@ public class AutoCreateMealOrderTask { | ... | @@ -291,14 +299,20 @@ public class AutoCreateMealOrderTask { |
| 291 | .anyMatch(interval -> !(dateEnd < interval.startAt || dateStart > interval.endAt)); | 299 | .anyMatch(interval -> !(dateEnd < interval.startAt || dateStart > interval.endAt)); |
| 292 | if (overlaps) return null; | 300 | if (overlaps) return null; |
| 293 | } | 301 | } |
| 294 | - | ||
| 295 | return MenuSchedule.newBuilder() | 302 | return MenuSchedule.newBuilder() |
| 296 | .setDate(date.format(DateUtil.YYYY_MM_DD_LEFT_SYMBOL)) | 303 | .setDate(date.format(DateUtil.YYYY_MM_DD_LEFT_SYMBOL)) |
| 297 | .setMenu("A") | 304 | .setMenu("A") |
| 298 | .build(); | 305 | .build(); |
| 299 | }) | 306 | }) |
| 300 | .filter(Objects::nonNull) | 307 | .filter(Objects::nonNull) |
| 301 | - .toList(); | 308 | + .toList()); |
| 309 | + if (nextWeekStart.minusDays(1).format(DateUtil.YYYY_MM_DD).equals("2025-09-28")) { | ||
| 310 | + meals.add(MenuSchedule.newBuilder() | ||
| 311 | + .setDate("2025-09-28") | ||
| 312 | + .setMenu("A") | ||
| 313 | + .build()); | ||
| 314 | + } | ||
| 315 | + return meals; | ||
| 302 | } | 316 | } |
| 303 | 317 | ||
| 304 | private LocalDate getThisWeekDay(LocalDate now, DayOfWeek target) { | 318 | private LocalDate getThisWeekDay(LocalDate now, DayOfWeek target) { | ... | ... |
-
Please register or login to post a comment