From 3effd6f9be2340127737cc906ea896b020b828e1 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 10 Sep 2026 13:55:01 +0800 Subject: [PATCH] 11 --- .../dto/DailyMenuDateRangeQueryDTO.java | 38 ++++++++++ .../canteen/vo/ADCanteenDailyMenuListVO.java | 7 ++ .../CanteenDailyMenuController.java | 15 ++++ .../mapper/CanteenDailyMenuMapper.java | 11 +++ .../service/CanteenDailyMenuService.java | 10 +++ .../impl/CanteenDailyMenuServiceImpl.java | 21 ++++++ .../mapper/CanteenDailyMenuMapper.xml | 34 +++++++++ .../api/dto/hard/HardOfflineUserSyncDto.java | 5 ++ .../hard/service/impl/HardApiServiceImpl.java | 73 +++++++++++++------ .../admin/api/feign/RemoteUserService.java | 17 +++++ .../admin/controller/SysUserController.java | 30 ++++++++ .../pjcloud/admin/service/SysUserService.java | 18 +++++ .../service/impl/SysUserServiceImpl.java | 20 +++++ 13 files changed, 275 insertions(+), 24 deletions(-) create mode 100644 pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/DailyMenuDateRangeQueryDTO.java diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/DailyMenuDateRangeQueryDTO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/DailyMenuDateRangeQueryDTO.java new file mode 100644 index 000000000..d6d7b5246 --- /dev/null +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/DailyMenuDateRangeQueryDTO.java @@ -0,0 +1,38 @@ +package com.bsd.pjcloud.canteen.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDate; + +/** + * 收银终端按日期范围查询每日菜谱的请求参数。 + */ +@Data +@Schema(description = "收银终端每日菜谱日期范围查询参数") +public class DailyMenuDateRangeQueryDTO { + + /** 菜谱起始日期,查询闭区间包含当天。 */ + @NotNull(message = "菜谱开始日期不能为空") + @Schema(description = "菜谱起始日期,格式为 yyyy-MM-dd", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDate startDate; + + /** 菜谱结束日期,查询闭区间包含当天。 */ + @NotNull(message = "菜谱结束日期不能为空") + @Schema(description = "菜谱结束日期,格式为 yyyy-MM-dd", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDate endDate; + + /** 餐段协议编码;为空时查询全部餐段。 */ + @Schema(description = "餐段编码;为空表示全部餐段") + private Integer hourType; + + /** 菜品分类 ID;为空时查询全部分类。 */ + @Schema(description = "菜品分类 ID;为空表示全部分类") + private Long categoryId; + + /** 收银终端所属商户 ID,用于隔离不同商户的每日菜谱。 */ + @NotNull(message = "每日菜谱商户不能为空") + @Schema(description = "收银终端所属商户 ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long merchantId; +} diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/ADCanteenDailyMenuListVO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/ADCanteenDailyMenuListVO.java index ecb1f1636..f708ef8fd 100644 --- a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/ADCanteenDailyMenuListVO.java +++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/ADCanteenDailyMenuListVO.java @@ -3,6 +3,8 @@ package com.bsd.pjcloud.canteen.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.time.LocalDate; + @Data public class ADCanteenDailyMenuListVO { /** @@ -10,6 +12,11 @@ public class ADCanteenDailyMenuListVO { */ private Long id; + /** + * 菜谱供应日期,yyyy-MM-dd;收银终端多日同步时以此归属到具体日期 + */ + private LocalDate saleDate; + /** * spuid */ 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 715d8f8d2..e3475f1bc 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 @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.canteen.dto.CanteenDailyMenuCVDTO; import com.bsd.pjcloud.canteen.dto.DailyMenuAll; +import com.bsd.pjcloud.canteen.dto.DailyMenuDateRangeQueryDTO; import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.canteen.service.CanteenSpuService; @@ -198,6 +199,20 @@ public class CanteenDailyMenuController { return R.ok(canteenDailyMenuService.getCanteenMenuListScope(day, hourType, categoryId,merchantId)); } + /** + * 按闭区间(含起止两天)查询收银终端多日菜谱,字段与单日接口一致, + * 每条记录额外携带供应日期 saleDate,便于终端按日期落库。 + * + * @param request 日期范围、可选筛选条件和收银终端所属商户 + * @return 指定日期范围内的每日菜谱列表;无数据时返回空列表 + */ + @PostMapping("/ad/getCanteenListByDateRange") + @SysLog("按日期范围查询每日菜品列表") + public R> getCanteenListByDateRange( + @Validated @RequestBody DailyMenuDateRangeQueryDTO request) { + return R.ok(canteenDailyMenuService.getCanteenMenuListByDateRange(request)); + } + // --------------APP--------------- 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 dcc9b3c59..1219f37b9 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 @@ -1,6 +1,7 @@ package com.bsd.pjcloud.canteen.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.bsd.pjcloud.canteen.dto.DailyMenuDateRangeQueryDTO; import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; import com.bsd.pjcloud.canteen.vo.DailyMenuVO; @@ -31,6 +32,16 @@ public interface CanteenDailyMenuMapper extends PjcloudBaseMapper getCanteenMenuList(@Param("day") String day, @Param("hourType") Integer hourType, @Param("categoryId") Long categoryId, @Param("merchantId") Long merchantId,DataScope dataScope); + /** + * 按闭区间查询收银终端多日菜谱展示数据,字段与单日查询保持一致。 + * + * @param request 日期范围、可选筛选条件和商户 ID + * @param dataScope 当前数据权限范围 + * @return 按日期、餐段和商品排序的菜谱列表 + */ + List getCanteenMenuListByDateRange(@Param("request") DailyMenuDateRangeQueryDTO request, + DataScope dataScope); + Page selectTimeFoodPage(@Param("page")Page page, DailyMenuDTO dailyMenuDTO); 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 90b7be021..d3c6d9509 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.canteen.dto.CanteenDailyMenuCVDTO; import com.bsd.pjcloud.canteen.dto.DailyMenuAll; +import com.bsd.pjcloud.canteen.dto.DailyMenuDateRangeQueryDTO; import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity; import com.bsd.pjcloud.canteen.vo.ADCanteenDailyMenuListVO; @@ -51,6 +52,15 @@ public interface CanteenDailyMenuService extends IService getCanteenMenuListScope(String day, Integer hourType, Long categoryId, Long merchantId); + /** + * 按闭区间查询收银终端多日菜谱,返回字段与单日查询保持一致, + * 每条记录额外携带供应日期,供终端按日期分桶落库。 + * + * @param request 日期范围、可选筛选条件和收银终端所属商户 + * @return 按日期、餐段和商品排序的菜谱列表 + */ + List getCanteenMenuListByDateRange(DailyMenuDateRangeQueryDTO request); + 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 b631fb63a..5f0d521b1 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 @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.canteen.dto.CanteenDailyMenuCVDTO; import com.bsd.pjcloud.canteen.dto.DailyMenuAll; +import com.bsd.pjcloud.canteen.dto.DailyMenuDateRangeQueryDTO; import com.bsd.pjcloud.canteen.dto.app.DailyMenuDTO; import com.bsd.pjcloud.canteen.entity.CanteenSpuEntity; import com.bsd.pjcloud.canteen.mapper.CanteenSpuMapper; @@ -142,6 +143,26 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl getCanteenMenuListByDateRange(DailyMenuDateRangeQueryDTO request) { + if (request == null || request.getStartDate() == null || request.getEndDate() == null) { + throw new IllegalArgumentException("菜谱开始日期与结束日期不能为空"); + } + if (request.getMerchantId() == null) { + throw new IllegalArgumentException("每日菜谱商户不能为空"); + } + if (request.getEndDate().isBefore(request.getStartDate())) { + throw new IllegalArgumentException("菜谱结束日期不能早于开始日期"); + } + return baseMapper.getCanteenMenuListByDateRange(request, DataScope.of()); + } + @Override public Page selectTimeFoodPage(Page page, DailyMenuDTO dailyMenuDTO) { Page pageData = baseMapper.selectTimeFoodPage(page, dailyMenuDTO); 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 7da7b1a8f..38029a9b2 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 @@ -19,6 +19,7 @@ + @@ -61,6 +62,7 @@ SELECT sp.id as spu_id, t.id, + t.start_time, sp.name, sp.pic_url, t.hour_type, @@ -90,6 +92,38 @@ +