From 0cc91a0894e3bdf2a5406f1e2adec8575e57b985 Mon Sep 17 00:00:00 2001 From: zt Date: Tue, 20 May 2025 10:52:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/enums/ErrorCodeConstants.java | 2 + .../StoreDiscountController.java | 95 +++++++++++++++++++ .../vo/StoreDiscountPageReqVO.java | 43 +++++++++ .../storediscount/vo/StoreDiscountRespVO.java | 49 ++++++++++ .../vo/StoreDiscountSaveReqVO.java | 37 ++++++++ .../admin/storeorder/vo/StoreOrderRespVO.java | 11 +++ .../app/store/AppStoreController.java | 25 ++--- .../storeorder/AppStoreOrderController.java | 16 +++- .../storediscount/StoreDiscountDO.java | 58 +++++++++++ .../dataobject/storeorder/StoreOrderDO.java | 14 +++ .../storediscount/StoreDiscountMapper.java | 32 +++++++ .../storediscount/StoreDiscountService.java | 62 ++++++++++++ .../StoreDiscountServiceImpl.java | 86 +++++++++++++++++ .../service/storeorder/StoreOrderService.java | 2 + .../storeorder/StoreOrderServiceImpl.java | 53 ++++++++++- .../system/enums/ErrorCodeConstants.java | 2 + .../dishimage/vo/DishImageSaveReqVO.java | 11 ++- .../dishimage/DishImageServiceImpl.java | 68 ++++++++----- 18 files changed, 620 insertions(+), 46 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/StoreDiscountController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storediscount/StoreDiscountDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storediscount/StoreDiscountMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountServiceImpl.java diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 06f20e52..a865e002 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -186,5 +186,7 @@ public interface ErrorCodeConstants { ErrorCode STORE_DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_033_02, "设置不存在"); ErrorCode DINING_PLATES_BIND_MAX = new ErrorCode(1_004_033_02, "可绑定的餐盘已达到上限"); + + ErrorCode STORE_DISCOUNT_NOT_EXISTS = new ErrorCode(1_004_033_03, "门店超市折扣不存在"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/StoreDiscountController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/StoreDiscountController.java new file mode 100644 index 00000000..ac1ad727 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/StoreDiscountController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.storediscount; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO; +import cn.iocoder.yudao.module.member.service.storediscount.StoreDiscountService; + +@Tag(name = "管理后台 - 门店超市折扣") +@RestController +@RequestMapping("/member/store-discount") +@Validated +public class StoreDiscountController { + + @Resource + private StoreDiscountService storeDiscountService; + + @PostMapping("/create") + @Operation(summary = "创建门店超市折扣") + @PreAuthorize("@ss.hasPermission('member:store-discount:create')") + public CommonResult createStoreDiscount(@Valid @RequestBody StoreDiscountSaveReqVO createReqVO) { + return success(storeDiscountService.createStoreDiscount(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新门店超市折扣") + @PreAuthorize("@ss.hasPermission('member:store-discount:update')") + public CommonResult updateStoreDiscount(@Valid @RequestBody StoreDiscountSaveReqVO updateReqVO) { + storeDiscountService.updateStoreDiscount(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除门店超市折扣") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:store-discount:delete')") + public CommonResult deleteStoreDiscount(@RequestParam("id") Long id) { + storeDiscountService.deleteStoreDiscount(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得门店超市折扣") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:store-discount:query')") + public CommonResult getStoreDiscount(@RequestParam("id") Long id) { + StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscount(id); + return success(BeanUtils.toBean(storeDiscount, StoreDiscountRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得门店超市折扣分页") + @PreAuthorize("@ss.hasPermission('member:store-discount:query')") + public CommonResult> getStoreDiscountPage(@Valid StoreDiscountPageReqVO pageReqVO) { + PageResult pageResult = storeDiscountService.getStoreDiscountPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StoreDiscountRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出门店超市折扣 Excel") + @PreAuthorize("@ss.hasPermission('member:store-discount:export')") + @OperateLog(type = EXPORT) + public void exportStoreDiscountExcel(@Valid StoreDiscountPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storeDiscountService.getStoreDiscountPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "门店超市折扣.xls", "数据", StoreDiscountRespVO.class, + BeanUtils.toBean(list, StoreDiscountRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountPageReqVO.java new file mode 100644 index 00000000..899f2430 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountPageReqVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.member.controller.admin.storediscount.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 门店超市折扣分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StoreDiscountPageReqVO extends PageParam { + + @Schema(description = "门店ID", example = "24360") + private Long storeId; + + @Schema(description = "折扣名字", example = "赵六") + private String discountName; + + @Schema(description = "折扣") + private BigDecimal discountNum; + + @Schema(description = "开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "0-禁用,1-启用", example = "2") + private String status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountRespVO.java new file mode 100644 index 00000000..fe8d68c0 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.member.controller.admin.storediscount.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 门店超市折扣 Response VO") +@Data +@ExcelIgnoreUnannotated +public class StoreDiscountRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5567") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "门店ID", example = "24360") + @ExcelProperty("门店ID") + private Long storeId; + + @Schema(description = "折扣名字", example = "赵六") + @ExcelProperty("折扣名字") + private String discountName; + + @Schema(description = "折扣") + @ExcelProperty("折扣") + private BigDecimal discountNum; + + @Schema(description = "开始时间") + @ExcelProperty("开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + @ExcelProperty("结束时间") + private LocalDateTime endTime; + + @Schema(description = "0-禁用,1-启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("0-禁用,1-启用") + private String status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountSaveReqVO.java new file mode 100644 index 00000000..c61ff286 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storediscount/vo/StoreDiscountSaveReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.member.controller.admin.storediscount.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 门店超市折扣新增/修改 Request VO") +@Data +public class StoreDiscountSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5567") + private Long id; + + @Schema(description = "门店ID", example = "24360") + private Long storeId; + + @Schema(description = "折扣名字", example = "赵六") + private String discountName; + + @Schema(description = "折扣") + private BigDecimal discountNum; + + @Schema(description = "开始时间") + private LocalDateTime startTime; + + @Schema(description = "结束时间") + private LocalDateTime endTime; + + @Schema(description = "0-禁用,1-启用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "0-禁用,1-启用不能为空") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java index e29508c4..275d5728 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java @@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -68,4 +69,14 @@ public class StoreOrderRespVO { */ private Double reductionPrice; + /** + * 原价 + */ + private Double originalPrice; + + /** + * 折扣 + */ + private BigDecimal discountNum; + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java index 533e3cbe..efa4479c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java @@ -5,16 +5,8 @@ import cn.iocoder.yudao.framework.common.pojo.StoreResult; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.controller.admin.storegoodsinventory.vo.AddReqVO; -import cn.iocoder.yudao.module.member.controller.app.store.dto.FacePayDto; -import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto; -import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadDto; -import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; -import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreUserDto; -import cn.iocoder.yudao.module.member.controller.app.store.vo.GoodsResult; -import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreGoodsListVo; -import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreGoodsTypeListVo; -import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreUserVo; -import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo; +import cn.iocoder.yudao.module.member.controller.app.store.dto.*; +import cn.iocoder.yudao.module.member.controller.app.store.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; @@ -32,11 +24,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.annotation.security.PermitAll; @@ -209,6 +197,13 @@ public class AppStoreController { } + @GetMapping("/mgcr/discount") + @Operation(summary = "获取门店折扣") + public String getDiscount(String equipmentCode) { + return JsonUtils.toJsonString(StoreResult.success(orderService.getDiscount(equipmentCode))); + + } + public String reverseHexAndConvert(String hexStr) { // 将十六进制字符串反转,每两位一组 StringBuilder reversedHex = new StringBuilder(); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java index c77ae91f..39e35932 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java @@ -12,10 +12,12 @@ import cn.iocoder.yudao.module.member.controller.app.storeorder.dto.completeList import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderVO; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto; +import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum; import cn.iocoder.yudao.module.member.service.async.MemberAsyncService; import cn.iocoder.yudao.module.member.service.configdata.ConfigDataService; +import cn.iocoder.yudao.module.member.service.storediscount.StoreDiscountService; import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService; import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService; import cn.iocoder.yudao.module.member.util.ConfigConstants; @@ -28,6 +30,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.Duration; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @@ -52,7 +55,8 @@ public class AppStoreOrderController { private MemberAsyncService memberAsyncService; @Resource private ConfigDataService configDataService; - + @Resource + private StoreDiscountService storeDiscountService; @GetMapping("/page") @Operation(summary = "获得商品订单分页") @@ -62,6 +66,7 @@ public class AppStoreOrderController { } PageResult pageResult = storeOrderService.getStoreOrderPage(pageReqVO); PageResult bean = BeanUtils.toBean(pageResult, StoreOrderRespVO.class); + //处理订单详情 if(CollectionUtil.isNotEmpty(bean.getList())){ for (StoreOrderRespVO vo : bean.getList()) { @@ -135,6 +140,15 @@ public class AppStoreOrderController { return success(true); } + @GetMapping("/discount") + @Operation(summary = "获取折扣") + public CommonResult discount(Long storeId) { + StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId); + if(storeDiscount == null){ + return success(null); + } + return success(storeDiscount.getDiscountNum().divide(BigDecimal.valueOf(10), 2, RoundingMode.HALF_UP)); + } public void checkTime(){ String start = configDataService.getConfigData(ConfigConstants.START_TIME, ConfigConstants.BUY_PROHIBIT).getValue(); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storediscount/StoreDiscountDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storediscount/StoreDiscountDO.java new file mode 100644 index 00000000..9d7e583d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storediscount/StoreDiscountDO.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.storediscount; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 门店超市折扣 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_store_discount") +@KeySequence("member_store_discount_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreDiscountDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 门店ID + */ + private Long storeId; + /** + * 折扣名字 + */ + private String discountName; + /** + * 折扣 + */ + private BigDecimal discountNum; + /** + * 开始时间 + */ + private LocalDateTime startTime; + /** + * 结束时间 + */ + private LocalDateTime endTime; + /** + * 0-禁用,1-启用 + */ + private String status; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java index 9c8351ae..99521c08 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java @@ -11,6 +11,8 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; +import java.math.BigDecimal; + /** * 商品订单 DO * @@ -56,6 +58,16 @@ public class StoreOrderDO extends BaseDO { */ private Double totalPrice; + /** + * 原价 + */ + private Double originalPrice; + + /** + * 折扣 + */ + private BigDecimal discountNum; + private Long userId; /** @@ -76,4 +88,6 @@ public class StoreOrderDO extends BaseDO { private Boolean billingExist; private String billingNum; + + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storediscount/StoreDiscountMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storediscount/StoreDiscountMapper.java new file mode 100644 index 00000000..f7752394 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storediscount/StoreDiscountMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.member.dal.mysql.storediscount; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.*; + +/** + * 门店超市折扣 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface StoreDiscountMapper extends BaseMapperX { + + default PageResult selectPage(StoreDiscountPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(StoreDiscountDO::getStoreId, reqVO.getStoreId()) + .likeIfPresent(StoreDiscountDO::getDiscountName, reqVO.getDiscountName()) + .eqIfPresent(StoreDiscountDO::getDiscountNum, reqVO.getDiscountNum()) + .betweenIfPresent(StoreDiscountDO::getStartTime, reqVO.getStartTime()) + .betweenIfPresent(StoreDiscountDO::getEndTime, reqVO.getEndTime()) + .eqIfPresent(StoreDiscountDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(StoreDiscountDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(StoreDiscountDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountService.java new file mode 100644 index 00000000..e50e5332 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.member.service.storediscount; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO; + +import javax.validation.Valid; + +/** + * 门店超市折扣 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface StoreDiscountService { + + /** + * 创建门店超市折扣 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStoreDiscount(@Valid StoreDiscountSaveReqVO createReqVO); + + /** + * 更新门店超市折扣 + * + * @param updateReqVO 更新信息 + */ + void updateStoreDiscount(@Valid StoreDiscountSaveReqVO updateReqVO); + + /** + * 删除门店超市折扣 + * + * @param id 编号 + */ + void deleteStoreDiscount(Long id); + + /** + * 获得门店超市折扣 + * + * @param id 编号 + * @return 门店超市折扣 + */ + StoreDiscountDO getStoreDiscount(Long id); + + /** + * 获得门店超市折扣分页 + * + * @param pageReqVO 分页查询 + * @return 门店超市折扣分页 + */ + PageResult getStoreDiscountPage(StoreDiscountPageReqVO pageReqVO); + + /** + * 获得门店超市折扣 + * + * @param storeId 门店编号 + * @return 门店超市折扣 + */ + StoreDiscountDO getStoreDiscountByStoreId(Long storeId); +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountServiceImpl.java new file mode 100644 index 00000000..3bf6771f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storediscount/StoreDiscountServiceImpl.java @@ -0,0 +1,86 @@ +package cn.iocoder.yudao.module.member.service.storediscount; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.storediscount.vo.StoreDiscountSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO; +import cn.iocoder.yudao.module.member.dal.mysql.storediscount.StoreDiscountMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_DISCOUNT_NOT_EXISTS; + +/** + * 门店超市折扣 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class StoreDiscountServiceImpl implements StoreDiscountService { + + @Resource + private StoreDiscountMapper storeDiscountMapper; + + @Override + public Long createStoreDiscount(StoreDiscountSaveReqVO createReqVO) { + // 插入 + StoreDiscountDO storeDiscount = BeanUtils.toBean(createReqVO, StoreDiscountDO.class); + storeDiscountMapper.insert(storeDiscount); + // 返回 + return storeDiscount.getId(); + } + + @Override + public void updateStoreDiscount(StoreDiscountSaveReqVO updateReqVO) { + // 校验存在 + validateStoreDiscountExists(updateReqVO.getId()); + // 更新 + StoreDiscountDO updateObj = BeanUtils.toBean(updateReqVO, StoreDiscountDO.class); + storeDiscountMapper.updateById(updateObj); + } + + @Override + public void deleteStoreDiscount(Long id) { + // 校验存在 + validateStoreDiscountExists(id); + // 删除 + storeDiscountMapper.deleteById(id); + } + + private void validateStoreDiscountExists(Long id) { + if (storeDiscountMapper.selectById(id) == null) { + throw exception(STORE_DISCOUNT_NOT_EXISTS); + } + } + + @Override + public StoreDiscountDO getStoreDiscount(Long id) { + return storeDiscountMapper.selectById(id); + } + + @Override + public PageResult getStoreDiscountPage(StoreDiscountPageReqVO pageReqVO) { + return storeDiscountMapper.selectPage(pageReqVO); + } + + @Override + public StoreDiscountDO getStoreDiscountByStoreId(Long storeId) { + LocalDateTime now = LocalDateTime.now(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StoreDiscountDO::getStoreId, storeId); + wrapper.eq(StoreDiscountDO::getStatus, "1"); + wrapper.ge(StoreDiscountDO::getEndTime, now); + wrapper.le(StoreDiscountDO::getStartTime, now); + wrapper.orderByDesc(StoreDiscountDO::getCreateTime); + wrapper.last("limit 1"); + return storeDiscountMapper.selectOne(wrapper); + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java index c72b0069..bf561a92 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java @@ -97,4 +97,6 @@ public interface StoreOrderService { void completeList(List orderIds); List countOrder(String startTime,String endTime); + + BigDecimal getDiscount(String equipmentCode); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java index 0b067b34..62a4e3f7 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java @@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreGoodsDetail; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderVO; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto; +import cn.iocoder.yudao.module.member.dal.dataobject.storediscount.StoreDiscountDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; @@ -27,6 +28,7 @@ import cn.iocoder.yudao.module.member.service.amount.LockManager; import cn.iocoder.yudao.module.member.service.group.MemberGroupService; import cn.iocoder.yudao.module.member.service.money.MoneyService; import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService; +import cn.iocoder.yudao.module.member.service.storediscount.StoreDiscountService; import cn.iocoder.yudao.module.member.service.storegoodsinventory.StoreGoodsInventoryService; import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService; import cn.iocoder.yudao.module.member.service.storerefund.StoreRefundService; @@ -49,7 +51,6 @@ import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -75,6 +76,9 @@ public class StoreOrderServiceImpl implements StoreOrderService { @Resource private MoneyService moneyService; + @Resource + private StoreDiscountService storeDiscountService; + @Resource private MemberUserService userService; @@ -162,8 +166,19 @@ public class StoreOrderServiceImpl implements StoreOrderService { double sum = equipmentGoodsCustoms.stream() .mapToDouble(StoreGoodsDto::getTotalPrice) .sum(); - storeOrderDO.setStatus(status); + storeOrderDO.setOriginalPrice(sum); storeOrderDO.setTotalPrice(sum); + //计算折扣 + StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId); + if(storeDiscount != null){ + BigDecimal discountNum = storeDiscount.getDiscountNum(); + BigDecimal totalMoney = new BigDecimal(sum).multiply(discountNum).divide(new BigDecimal(10), 2, RoundingMode.HALF_UP); + storeOrderDO.setTotalPrice(totalMoney.doubleValue()); + storeOrderDO.setDiscountNum(discountNum); + } + + storeOrderDO.setStatus(status); + storeOrderDO.setCarteenId(storeId); storeOrderMapper.insert(storeOrderDO); ArrayList detailDOS = new ArrayList<>(); @@ -228,8 +243,15 @@ public class StoreOrderServiceImpl implements StoreOrderService { double sum = equipmentGoodsCustoms.stream() .mapToDouble(StoreGoodsDto::getTotalPrice) .sum(); + BigDecimal totalMoney = BigDecimal.valueOf(sum); + //计算折扣 + StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId); + if(storeDiscount != null){ + BigDecimal discountNum = storeDiscount.getDiscountNum(); + totalMoney = new BigDecimal(sum).multiply(discountNum).divide(new BigDecimal(10), 2, RoundingMode.HALF_UP); + } MemberUserDO user = userService.getUser(Long.valueOf(s)); dto.setUserId(user.getId()); @@ -347,6 +369,16 @@ public class StoreOrderServiceImpl implements StoreOrderService { public AddReqVO appCreate(CardDto dto) { MemberUserDO user = userService.getUser(dto.getUserId()); BigDecimal total = BigDecimal.valueOf(dto.getTotalPrice()); + + //计算折扣 + BigDecimal discountNum = null; + StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(dto.getCarteenId()); + if(storeDiscount != null){ + discountNum = storeDiscount.getDiscountNum(); + total = BigDecimal.valueOf(dto.getTotalPrice()).multiply(discountNum).divide(new BigDecimal(10), 2, RoundingMode.HALF_UP); + } + + checkMoney(user,total); //扣除库存 AddReqVO addReqVO = new AddReqVO(); @@ -365,6 +397,12 @@ public class StoreOrderServiceImpl implements StoreOrderService { //创建订单 StoreOrderDO storeOrderDO = new StoreOrderDO(); BeanUtil.copyProperties(dto, storeOrderDO); + storeOrderDO.setOriginalPrice(dto.getTotalPrice()); + storeOrderDO.setTotalPrice(total.doubleValue()); + if(storeDiscount != null){ + storeOrderDO.setDiscountNum(storeDiscount.getDiscountNum()); + } + storeOrderDO.setStatus(StoreOrderStatusEnum.PAY.getCode()); storeOrderMapper.insert(storeOrderDO); List goodsList = dto.getGoodsList(); @@ -669,6 +707,17 @@ public class StoreOrderServiceImpl implements StoreOrderService { return storeOrderMapper.countOrder(startTime,endTime); } + @Override + public BigDecimal getDiscount(String equipmentCode) { + Long storeId = cashregisterinfoApi.getStoreId(equipmentCode); + //计算折扣 + StoreDiscountDO storeDiscount = storeDiscountService.getStoreDiscountByStoreId(storeId); + if(storeDiscount == null){ + return null; + } + return storeDiscount.getDiscountNum().divide(BigDecimal.valueOf(10), 2, RoundingMode.HALF_UP); + } + public void checkMoney(MemberUserDO user, BigDecimal totalMoney) { //获取用户所在组分类 BigDecimal computeMoney = user.getMoney(); diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index bf23d050..1bc29844 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -198,6 +198,8 @@ public interface ErrorCodeConstants { ErrorCode FACE_DEVICE_INFO_EXISTS = new ErrorCode(1_002_040_003, "设备码已存在"); ErrorCode DISH_IMAGE_NOT_EXISTS = new ErrorCode(1_002_040_004, "本周菜单不存在"); + ErrorCode START_DATE_EXISTS = new ErrorCode(1_002_040_004, "开始时间已存在菜单"); + ErrorCode END_DATE_EXISTS = new ErrorCode(1_002_040_004, "结束时间已存在菜单"); ErrorCode CASH_REGISTER_INFO_NOT_EXISTS = new ErrorCode(1_002_040_005, "收银机信息关联门店不存在"); ErrorCode CASH_REGISTER_INFO_EXISTS = new ErrorCode(1_002_040_006, "收银机已存在"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishimage/vo/DishImageSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishimage/vo/DishImageSaveReqVO.java index 836a4f7d..15940274 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishimage/vo/DishImageSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dishimage/vo/DishImageSaveReqVO.java @@ -1,9 +1,10 @@ package cn.iocoder.yudao.module.system.controller.admin.dishimage.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; @Schema(description = "管理后台 - 本周菜单新增/修改 Request VO") @Data @@ -16,17 +17,21 @@ public class DishImageSaveReqVO { private String name; @Schema(description = "开始日期") + @NotBlank(message = "开始日期不能为空") private String startDate; @Schema(description = "结束日期") + @NotBlank(message = "结束日期不能为空") private String endDate; @Schema(description = "地址", example = "https://www.iocoder.cn") + @NotBlank(message = "图片不能为空") private String imageUrl; @Schema(description = "备注", example = "随便") private String remark; + @NotNull(message = "门店不能为空") private Long carteenId; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishimage/DishImageServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishimage/DishImageServiceImpl.java index e5740d55..3b607b4c 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishimage/DishImageServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dishimage/DishImageServiceImpl.java @@ -2,29 +2,23 @@ package cn.iocoder.yudao.module.system.service.dishimage; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImagePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.dishimage.vo.DishImageSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.dishimage.DishImageDO; import cn.iocoder.yudao.module.system.dal.mysql.dishimage.DishImageMapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; -import java.time.DayOfWeek; +import javax.annotation.Resource; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.*; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - - +import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.DISH_IMAGE_NOT_EXISTS; +import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; /** @@ -43,6 +37,7 @@ public class DishImageServiceImpl implements DishImageService { public Integer createDishImage(DishImageSaveReqVO createReqVO) { // 插入 DishImageDO dishImage = BeanUtils.toBean(createReqVO, DishImageDO.class); + validateDishImageExists(dishImage); dishImageMapper.insert(dishImage); // 返回 return dishImage.getId(); @@ -54,6 +49,7 @@ public class DishImageServiceImpl implements DishImageService { validateDishImageExists(updateReqVO.getId()); // 更新 DishImageDO updateObj = BeanUtils.toBean(updateReqVO, DishImageDO.class); + validateDishImageExists(updateObj); dishImageMapper.updateById(updateObj); } @@ -70,6 +66,26 @@ public class DishImageServiceImpl implements DishImageService { throw exception(DISH_IMAGE_NOT_EXISTS); } } + private void validateDishImageExists(DishImageDO dishImage) { + List dishImageDOS = dishImageMapper.selectList(Wrappers.lambdaQuery() + .eq(DishImageDO::getCarteenId, dishImage.getCarteenId()) + .le(DishImageDO::getStartDate, dishImage.getStartDate()) + .ge(DishImageDO::getEndDate, dishImage.getStartDate()) + .ne(dishImage.getId()!=null,DishImageDO::getId, dishImage.getId()) + ); + if(CollectionUtil.isNotEmpty(dishImageDOS)){ + throw exception(START_DATE_EXISTS); + } + List dishImageDOList = dishImageMapper.selectList(Wrappers.lambdaQuery() + .eq(DishImageDO::getCarteenId, dishImage.getCarteenId()) + .le(DishImageDO::getStartDate, dishImage.getEndDate()) + .ge(DishImageDO::getEndDate, dishImage.getEndDate()) + .ne(dishImage.getId()!=null,DishImageDO::getId, dishImage.getId()) + ); + if(CollectionUtil.isNotEmpty(dishImageDOList)){ + throw exception(END_DATE_EXISTS); + } + } @Override public DishImageDO getDishImage(Integer id) { @@ -85,23 +101,25 @@ public class DishImageServiceImpl implements DishImageService { public DishImageDO getThisWeekDishImage(Long carteenId,String time) { // 获取今天的日期 LocalDate today = LocalDate.now(); - if(StrUtil.isNotBlank(time)){ - today= LocalDate.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd")); - } - // 获取本周的开始日期(周一) - LocalDate weekStart = today.with(DayOfWeek.MONDAY); - - // 获取本周的结束日期(周日) - LocalDate weekEnd = today.with(DayOfWeek.SUNDAY); - - // 格式化日期(年-月-日) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String startTime = today.format(formatter); + if(StrUtil.isNotBlank(time)){ + startTime= time; + } +// // 获取本周的开始日期(周一) +// LocalDate weekStart = today.with(DayOfWeek.MONDAY); +// +// // 获取本周的结束日期(周日) +// LocalDate weekEnd = today.with(DayOfWeek.SUNDAY); +// +// // 格式化日期(年-月-日) +// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - String startTime = weekStart.format(formatter); - String endTime = weekEnd.format(formatter); +// String startTime = weekStart.format(formatter); +// String endTime = weekEnd.format(formatter); List dishImageDOS = dishImageMapper.selectList(Wrappers.lambdaQuery() - .eq(DishImageDO::getStartDate, startTime) - .eq(DishImageDO::getEndDate, endTime) + .le(DishImageDO::getStartDate, startTime) + .ge(DishImageDO::getEndDate, startTime) .eq(DishImageDO::getCarteenId, carteenId)); if(CollectionUtil.isNotEmpty(dishImageDOS)){ return dishImageDOS.get(0);