From d3d7371236a28f7da9cb95e8e1ef5a0220f664cd Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Tue, 21 Oct 2025 16:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=90=E6=97=B6=E6=8A=98=E6=89=A3=20?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=AB=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ALimitTimeDiscountController.java | 75 +++++++++++++++ .../market/dto/MkLimitTimeDiscountDTO.java | 14 +++ .../impl/MkLimitTimeDiscountServiceImpl.java | 91 +++++++++++++------ 3 files changed, 151 insertions(+), 29 deletions(-) create mode 100644 cash-api/market-server/src/main/java/com/czg/controller/admin/ALimitTimeDiscountController.java diff --git a/cash-api/market-server/src/main/java/com/czg/controller/admin/ALimitTimeDiscountController.java b/cash-api/market-server/src/main/java/com/czg/controller/admin/ALimitTimeDiscountController.java new file mode 100644 index 00000000..8c5d2e4d --- /dev/null +++ b/cash-api/market-server/src/main/java/com/czg/controller/admin/ALimitTimeDiscountController.java @@ -0,0 +1,75 @@ +package com.czg.controller.admin; + +import com.czg.TimeQueryParam; +import com.czg.log.annotation.OperationLog; +import com.czg.market.dto.MkLimitTimeDiscountDTO; +import com.czg.market.service.MkLimitTimeDiscountService; +import com.czg.resp.CzgResult; +import com.czg.sa.StpKit; +import com.czg.utils.AssertUtil; +import com.czg.validator.group.DefaultGroup; +import com.czg.validator.group.InsertGroup; +import com.czg.validator.group.UpdateGroup; +import com.mybatisflex.core.paginate.Page; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 限时折扣 + * + * @author Administrator + */ +@RestController +@RequestMapping("/admin/limitTimeDiscount") +public class ALimitTimeDiscountController { + @Resource + private MkLimitTimeDiscountService limitTimeDiscountService; + + /** + * 限时折扣-分页 + */ + @GetMapping("page") + public CzgResult> getLimitTimeDiscountPage(TimeQueryParam param) { + Page data = limitTimeDiscountService.getLimitTimeDiscountPage(param, StpKit.USER.getShopId()); + return CzgResult.success(data); + } + + + /** + * 限时折扣-新增 + */ + @PostMapping + @OperationLog("限时折扣-新增") + public CzgResult addLimitTimeDiscount(@RequestBody @Validated({InsertGroup.class, DefaultGroup.class}) MkLimitTimeDiscountDTO dto) { + Long shopId = StpKit.USER.getShopId(); + dto.setShopId(shopId); + limitTimeDiscountService.addLimitTimeDiscount(dto); + return CzgResult.success(); + } + + /** + * 限时折扣-修改 + */ + @PutMapping + @OperationLog("限时折扣-修改") + public CzgResult updateLimitTimeDiscount(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) MkLimitTimeDiscountDTO dto) { + Long shopId = StpKit.USER.getShopId(); + dto.setShopId(shopId); + limitTimeDiscountService.updateLimitTimeDiscountById(dto); + return CzgResult.success(); + } + + /** + * 限时折扣-删除 + */ + @DeleteMapping + @OperationLog("限时折扣-删除") + public CzgResult deleteLimitTimeDiscount(@RequestParam Long id) { + AssertUtil.isNull(id, "{}不能为空", "id"); + limitTimeDiscountService.deleteLimitTimeDiscount(id); + return CzgResult.success(); + } + + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkLimitTimeDiscountDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkLimitTimeDiscountDTO.java index 526410fb..c02cd9f8 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkLimitTimeDiscountDTO.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkLimitTimeDiscountDTO.java @@ -2,6 +2,10 @@ package com.czg.market.dto; import com.alibaba.fastjson2.annotation.JSONField; +import com.czg.validator.group.InsertGroup; +import com.czg.validator.group.UpdateGroup; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -30,6 +34,7 @@ public class MkLimitTimeDiscountDTO implements Serializable { /** * 自增主键 */ + @NotNull(message = "主键不能为空", groups = {UpdateGroup.class}) private Long id; /** @@ -40,6 +45,7 @@ public class MkLimitTimeDiscountDTO implements Serializable { /** * only-仅本店 all全部 /custom 指定 */ + @NotBlank(message = "使用门店类型不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String useShopType; /** @@ -50,21 +56,25 @@ public class MkLimitTimeDiscountDTO implements Serializable { /** * 有效期开始时间 */ + @NotBlank(message = "有效期开始时间不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String validStartTime; /** * 有效期结束时间 */ + @NotBlank(message = "有效期结束时间不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String validEndTime; /** * 可用周期,示例:周一,周二,周三,周四,周五,周六,周日 */ + @NotBlank(message = "可用周期不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String useDays; /** * 可用时间段类型:all-全时段,custom-指定时段 */ + @NotBlank(message = "可用时间段类型不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String useTimeType; /** @@ -81,11 +91,13 @@ public class MkLimitTimeDiscountDTO implements Serializable { * 可使用类型:堂食 dine-in 外带 take-out 外卖 take-away 配送 post * 示例 dine-in,take-out,take-away,post */ + @NotBlank(message = "可使用类型不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String useType; /** * 折扣% 范围1-99 */ + @NotNull(message = "折扣%不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private Integer discountRate; /** @@ -96,11 +108,13 @@ public class MkLimitTimeDiscountDTO implements Serializable { /** * 折扣优先级 limit-time/vip-price */ + @NotBlank(message = "折扣优先级不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private String discountPriority; /** * 参与商品 1全部 2部分 */ + @NotNull(message = "参与商品范围不能为空", groups = {InsertGroup.class, UpdateGroup.class}) private Integer foodType; /** diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkLimitTimeDiscountServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkLimitTimeDiscountServiceImpl.java index 627b5ddb..f842530c 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkLimitTimeDiscountServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkLimitTimeDiscountServiceImpl.java @@ -1,8 +1,12 @@ package com.czg.service.market.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; import com.czg.TimeQueryParam; +import com.czg.account.entity.PictureClassify; import com.czg.account.entity.ShopInfo; import com.czg.account.service.ShopInfoService; +import com.czg.enums.YesNoEnum; import com.czg.exception.CzgException; import com.czg.market.dto.MkLimitTimeDiscountDTO; import com.czg.market.entity.MkLimitTimeDiscount; @@ -43,6 +47,14 @@ public class MkLimitTimeDiscountServiceImpl extends ServiceImpl { + q.eq(MkLimitTimeDiscount::getUseType, "all").or(q1 -> { + q1.eq(MkLimitTimeDiscount::getUseType, "only").eq(MkLimitTimeDiscount::getShopId, shopId); + }).or(q2 -> { + q2.eq(MkLimitTimeDiscount::getUseType, "custom").gt("FIND_IN_SET(" + shopId + ", use_shops)", 0); + }); + }); return pageAs(PageUtil.buildPage(), queryWrapper, MkLimitTimeDiscountDTO.class); } @@ -60,43 +72,46 @@ public class MkLimitTimeDiscountServiceImpl extends ServiceImpl { + q.eq(MkLimitTimeDiscount::getUseType, "all").or(q1 -> { + q1.eq(MkLimitTimeDiscount::getUseType, "only").eq(MkLimitTimeDiscount::getShopId, 999); + }).or(q2 -> { + q2.eq(MkLimitTimeDiscount::getUseType, "custom").gt("FIND_IN_SET(" + 2 + ", use_shops)", 0); + }); + }); + System.out.println(queryWrapper.toSQL()); + + } }