From 0c7d9a7c7e8171290aeda54ba890355d3443baba Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Wed, 23 Oct 2024 13:47:14 +0800 Subject: [PATCH 01/20] =?UTF-8?q?=E9=94=80=E9=87=8F=E7=BB=9F=E8=AE=A1=20?= =?UTF-8?q?=20=E6=97=B6=E9=97=B4=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/service/impl/SummaryServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java index 6255e0cb..b89fe541 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java @@ -300,8 +300,11 @@ public class SummaryServiceImpl implements SummaryService { public List summaryCount(ShopSummaryDto summaryDto) { List list = new ArrayList<>(); - summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L))); - summaryDto.setEndTime(new Date()); + if (summaryDto.getStartTime() == null) { + summaryDto.setStartTime(DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L))); + summaryDto.setEndTime(new Date()); + + } TbOrderSalesCountByDayVo tbOrderSalesCountByDayVo = detailRepository.queryTbOrderSalesCountByDaysummaryCount(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime()); TbOrderPayCountVo zongShuLiang = new TbOrderPayCountVo("el-icon-goods", "总数量", "0", tbOrderSalesCountByDayVo.getSalesNum() + tbOrderSalesCountByDayVo.getRefNum()); From 8053c84331dfd3c8535645eab61885cd56c0b6e9 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Tue, 22 Oct 2024 09:31:58 +0800 Subject: [PATCH 02/20] =?UTF-8?q?=E9=80=80=E8=8F=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/mybatis/mapper/TbOrderInfoMapper.java | 2 +- .../service/impl/shopimpl/TbShopTableServiceImpl.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderInfoMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderInfoMapper.java index c1399b54..47e1eeed 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderInfoMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbOrderInfoMapper.java @@ -37,6 +37,6 @@ public interface TbOrderInfoMapper extends BaseMapper { @Update("update tb_order_info set settlement_amount=settlement_amount-#{priceAmount}, pack_fee=pack_fee-#{packAmount}," + "order_amount=order_amount-#{priceAmount}, amount=amount-#{priceAmount}" + - " where id=#{orderId} and origin_amount-#{priceAmount} >= 0 and order_amount > 0") + " where id=#{orderId} and origin_amount-#{priceAmount} >= 0 and order_amount-#{priceAmount} >= 0") int updateOrderAmount(Integer orderId, BigDecimal priceAmount, BigDecimal packAmount); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index b7888766..341dbb61 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -667,7 +667,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { returnCart.setNumber(removeCartDTO.getNum()); returnCart.setId(null); returnCart.setTotalNumber(removeCartDTO.getNum()); - returnCart.setTotalAmount(returnCart.getSalePrice().multiply(BigDecimal.valueOf(returnCart.getNumber()))); + BigDecimal returnCartAmount = returnCart.getSalePrice().multiply(BigDecimal.valueOf(returnCart.getNumber())); + returnCart.setTotalAmount(returnCartAmount); returnCart.setStatus("return"); cashierCartMapper.insert(returnCart); @@ -691,7 +692,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (cashierCart.getOrderId() != null) { // 减少订单金额 - orderInfoMapper.updateOrderAmount(cashierCart.getOrderId(), orderDetail.getPriceAmount(), orderDetail.getPackAmount()); + orderInfoMapper.updateOrderAmount(cashierCart.getOrderId(), orderDetail.getPriceAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(removeCartDTO.getNum())), orderDetail.getPackAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP) + .multiply(BigDecimal.valueOf(removeCartDTO.getNum()))); } From b0898330c9bd73222b8ada38dfe93ee4b15f2d2a Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Tue, 22 Oct 2024 14:39:36 +0800 Subject: [PATCH 03/20] =?UTF-8?q?=E8=B5=A0=E9=80=81=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=89=93=E5=8C=85=E8=B4=B9=E4=B8=8D=E5=85=8D=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 341dbb61..bb604c06 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -382,7 +382,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } if (updateCartDTO.getIsGift() != null ) { - tbCashierCart.setTotalAmount(updateCartDTO.getIsGift() ? BigDecimal.ZERO : tbCashierCart.getTotalAmount()); + tbCashierCart.setTotalAmount(updateCartDTO.getIsGift() ? tbCashierCart.getPackFee() : tbCashierCart.getTotalAmount()); tbCashierCart.setIsGift(updateCartDTO.getIsGift() ? "true" : "false"); } From c2e481cd1545b583eb41a14ab1f1d6a05e332669 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Tue, 22 Oct 2024 17:21:30 +0800 Subject: [PATCH 04/20] =?UTF-8?q?=E9=9C=B8=E7=8E=8B=E9=A4=90=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TbFreeDineController.java | 39 ++++++++++ .../dto/freedine/UpdateFreeDineConfigDTO.java | 26 +++++++ .../mybatis/entity/TbFreeDineConfig.java | 71 +++++++++++++++++++ .../mapper/TbFreeDineConfigMapper.java | 18 +++++ .../service/TbFreeDineConfigService.java | 27 +++++++ .../impl/TbFreeDineConfigServiceImpl.java | 34 +++++++++ .../service/app/TbFreeDineService.java | 10 +++ .../impl/app/TbFreeDineServiceImpl.java | 50 +++++++++++++ .../mapper/TbFreeDineConfigMapper.xml | 28 ++++++++ 9 files changed, 303 insertions(+) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/controller/TbFreeDineController.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/dto/freedine/UpdateFreeDineConfigDTO.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbFreeDineConfig.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbFreeDineConfigMapper.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbFreeDineConfigService.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbFreeDineConfigServiceImpl.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/service/app/TbFreeDineService.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java create mode 100644 eladmin-system/src/main/resources/mapper/TbFreeDineConfigMapper.xml diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbFreeDineController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbFreeDineController.java new file mode 100644 index 00000000..0596a176 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/TbFreeDineController.java @@ -0,0 +1,39 @@ +package cn.ysk.cashier.controller; + +import cn.ysk.cashier.dto.freedine.UpdateFreeDineConfigDTO; +import cn.ysk.cashier.mybatis.entity.TbFreeDineConfig; +import cn.ysk.cashier.service.app.TbFreeDineService; +import lombok.AllArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + * 霸王餐相关接口 + * @author SongZhang + */ +@RestController +@RequestMapping("/freeDine") +@AllArgsConstructor +public class TbFreeDineController { + private final TbFreeDineService freeDineService; + + /** + * 获取当前店铺霸王餐配置信息列表 + * @param shopId 店铺id + * @return 霸王餐配置信息 (不存在会新建) + */ + @GetMapping + public ResponseEntity getConfig(@RequestParam Integer shopId) { + return ResponseEntity.ok(freeDineService.getConfig(shopId)); + } + + /** + * 修改霸王餐配置信息 + * @param updateFreeDineConfigDTO 修改信息 + * @return 霸王餐配置信息 + */ + @PutMapping + public ResponseEntity updateConfig(@RequestBody UpdateFreeDineConfigDTO updateFreeDineConfigDTO) { + return ResponseEntity.ok(freeDineService.updateConfig(updateFreeDineConfigDTO)); + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/freedine/UpdateFreeDineConfigDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/freedine/UpdateFreeDineConfigDTO.java new file mode 100644 index 00000000..ad4f3968 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/freedine/UpdateFreeDineConfigDTO.java @@ -0,0 +1,26 @@ +package cn.ysk.cashier.dto.freedine; + +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class UpdateFreeDineConfigDTO { + @NotNull + private Integer shopId; + @NotNull + private Integer id; + private Boolean enable; + @Min(1) + private Integer rechargeTimes; + @Min(value = 0) + private BigDecimal rechargeThreshold; + private Boolean withCoupon; + private Boolean withPoints; + private String rechargeDesc; + private List useTypeList; + +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbFreeDineConfig.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbFreeDineConfig.java new file mode 100644 index 00000000..cb2425d0 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/entity/TbFreeDineConfig.java @@ -0,0 +1,71 @@ +package cn.ysk.cashier.mybatis.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.math.BigDecimal; +import java.time.Instant; +import java.util.Date; +import java.util.List; + +@Data +public class TbFreeDineConfig { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Integer id; + + @NotNull + @Column(name = "enable", nullable = false) + private Boolean enable = false; + + @NotNull + @Column(name = "recharge_times", nullable = false) + private Integer rechargeTimes; + + @NotNull + @Column(name = "recharge_threshold", nullable = false, precision = 10, scale = 2) + private BigDecimal rechargeThreshold; + + @NotNull + @Column(name = "with_coupon", nullable = false) + private Boolean withCoupon = false; + + @NotNull + @Column(name = "with_points", nullable = false) + private Boolean withPoints = false; + + @Size(max = 500) + @Column(name = "recharge_desc", length = 500) + private String rechargeDesc; + + @Size(max = 255) + @Column(name = "use_type") + private String useType; + + @NotNull + @Column(name = "shop_id", nullable = false) + private Integer shopId; + + @Column(name = "create_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + @Column(name = "update_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + + @Size(max = 255) + @Column(name = "child_shop_id_list") + private String childShopIdList; + + @TableField(exist = false) + private List useTypeList; + +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbFreeDineConfigMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbFreeDineConfigMapper.java new file mode 100644 index 00000000..55ca644a --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbFreeDineConfigMapper.java @@ -0,0 +1,18 @@ +package cn.ysk.cashier.mybatis.mapper; + +import cn.ysk.cashier.mybatis.entity.TbFreeDineConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author Administrator +* @description 针对表【tb_free_dine_config(霸王餐配置信息表)】的数据库操作Mapper +* @createDate 2024-10-22 14:49:18 +* @Entity cn.ysk.cashier.mybatis.entity.TbFreeDineConfig +*/ +public interface TbFreeDineConfigMapper extends BaseMapper { + +} + + + + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbFreeDineConfigService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbFreeDineConfigService.java new file mode 100644 index 00000000..210342a0 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/TbFreeDineConfigService.java @@ -0,0 +1,27 @@ +package cn.ysk.cashier.mybatis.service; + +import cn.ysk.cashier.mybatis.entity.TbFreeDineConfig; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author Administrator +* @description 针对表【tb_free_dine_config(霸王餐配置信息表)】的数据库操作Service +* @createDate 2024-10-22 14:49:18 +*/ +public interface TbFreeDineConfigService extends IService { + + /** + * 根据店铺id获取霸王餐配置 + * @param shopId 店铺id + * @return 霸王餐配置 + */ + TbFreeDineConfig getByShopId(Integer shopId); + + /** + * 通过shopId和id获取配置 + * @param id 主键 + * @param shopId 店铺 + * @return 信息 + */ + TbFreeDineConfig getByIdAndShopId(Integer id, Integer shopId); +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbFreeDineConfigServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbFreeDineConfigServiceImpl.java new file mode 100644 index 00000000..71dce1e4 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/TbFreeDineConfigServiceImpl.java @@ -0,0 +1,34 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import cn.ysk.cashier.mybatis.entity.TbFreeDineConfig; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import cn.ysk.cashier.mybatis.service.TbFreeDineConfigService; +import cn.ysk.cashier.mybatis.mapper.TbFreeDineConfigMapper; +import org.springframework.stereotype.Service; + +/** +* @author Administrator +* @description 针对表【tb_free_dine_config(霸王餐配置信息表)】的数据库操作Service实现 +* @createDate 2024-10-22 14:49:18 +*/ +@Service +public class TbFreeDineConfigServiceImpl extends ServiceImpl + implements TbFreeDineConfigService{ + @Override + public TbFreeDineConfig getByShopId(Integer shopId) { + return getOne(new LambdaQueryWrapper() + .eq(TbFreeDineConfig::getShopId, shopId)); + } + + @Override + public TbFreeDineConfig getByIdAndShopId(Integer id, Integer shopId) { + return getOne(new LambdaQueryWrapper() + .eq(TbFreeDineConfig::getId, id) + .eq(TbFreeDineConfig::getShopId, shopId)); + } +} + + + + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/app/TbFreeDineService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/app/TbFreeDineService.java new file mode 100644 index 00000000..d532b172 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/app/TbFreeDineService.java @@ -0,0 +1,10 @@ +package cn.ysk.cashier.service.app; + +import cn.ysk.cashier.dto.freedine.UpdateFreeDineConfigDTO; +import cn.ysk.cashier.mybatis.entity.TbFreeDineConfig; + +public interface TbFreeDineService { + TbFreeDineConfig getConfig(Integer shopId); + + TbFreeDineConfig updateConfig(UpdateFreeDineConfigDTO updateFreeDineConfigDTO); +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java new file mode 100644 index 00000000..c61f9626 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java @@ -0,0 +1,50 @@ +package cn.ysk.cashier.service.impl.app; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import cn.ysk.cashier.dto.freedine.UpdateFreeDineConfigDTO; +import cn.ysk.cashier.exception.BadRequestException; +import cn.ysk.cashier.mybatis.entity.TbFreeDineConfig; +import cn.ysk.cashier.mybatis.service.TbFreeDineConfigService; +import cn.ysk.cashier.service.app.TbFreeDineService; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@AllArgsConstructor +public class TbFreeDineServiceImpl implements TbFreeDineService { + private final TbFreeDineConfigService freeDineConfigService; + + @Override + public TbFreeDineConfig getConfig(Integer shopId) { + TbFreeDineConfig freeDineConfig = freeDineConfigService.getByShopId(shopId); + if (freeDineConfig == null) { + freeDineConfig = new TbFreeDineConfig(); + freeDineConfig.setShopId(shopId); + freeDineConfig.setCreateTime(DateUtil.date()); + freeDineConfigService.save(freeDineConfig); + } + + if (StrUtil.isNotBlank(freeDineConfig.getUseType())) { + freeDineConfig.setUseTypeList(JSONObject.parseArray(freeDineConfig.getUseType()).toJavaList(String.class)); + } + return freeDineConfig; + } + + @Override + public TbFreeDineConfig updateConfig(UpdateFreeDineConfigDTO updateFreeDineConfigDTO) { + TbFreeDineConfig config = freeDineConfigService.getByIdAndShopId(updateFreeDineConfigDTO.getId(), updateFreeDineConfigDTO.getShopId()); + if (config == null) { + throw new BadRequestException("霸王餐信息未配置"); + } + BeanUtil.copyProperties(updateFreeDineConfigDTO, config); + config.setUpdateTime(DateUtil.date()); + if (updateFreeDineConfigDTO.getUseTypeList() != null) { + config.setUseType(JSONObject.toJSONString(updateFreeDineConfigDTO.getUseTypeList())); + } + freeDineConfigService.updateById(config); + return config; + } +} diff --git a/eladmin-system/src/main/resources/mapper/TbFreeDineConfigMapper.xml b/eladmin-system/src/main/resources/mapper/TbFreeDineConfigMapper.xml new file mode 100644 index 00000000..164ae54f --- /dev/null +++ b/eladmin-system/src/main/resources/mapper/TbFreeDineConfigMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + id,enable,recharge_times, + recharge_threshold,with_coupon,with_points, + recharge_desc,use_type,shop_id, + create_time,update_time,child_shop_id_list + + From 47735d6f4b0db3ae8437862f795354b01aae8fce Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 23 Oct 2024 10:22:40 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=A4=9A=E6=AC=A1=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ysk/cashier/enums/OrderStatusEnums.java | 15 ++++++ .../mybatis/service/MpOrderDetailService.java | 13 +++++ .../impl/MpOrderDetailServiceImpl.java | 17 ++++++- .../impl/app/TbFreeDineServiceImpl.java | 2 +- .../impl/shopimpl/TbShopTableServiceImpl.java | 51 +++++++++++++++---- 5 files changed, 86 insertions(+), 12 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java new file mode 100644 index 00000000..3210e758 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java @@ -0,0 +1,15 @@ +package cn.ysk.cashier.enums; + +import lombok.Getter; + +@Getter +public enum OrderStatusEnums { + REFUNDING("refunding"), + REFUND("refund"), + CLOSED("closed"); + private final String value; + + OrderStatusEnums(String value) { + this.value = value; + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java index 2a8eada3..c87d10c5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java @@ -1,8 +1,12 @@ package cn.ysk.cashier.mybatis.service; +import cn.ysk.cashier.dto.shoptable.ReturnOrderDTO; +import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.pojo.order.TbOrderDetail; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * (TbShopPermission)表服务接口 * @@ -11,5 +15,14 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface MpOrderDetailService extends IService { + /** + * 根据orderId和id修改detail状态 + * @param oldOrderStatusEnums 原始订单状态 + * @param orderStatusEnums 状态 + * @param orderId 订单id + * @param orderDetails detailIds + * @return 影响数量 + */ + boolean updateStatusByOrderIdAndIds(OrderStatusEnums oldOrderStatusEnums, OrderStatusEnums orderStatusEnums, Integer orderId, List orderDetails); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java index cf63ae1d..5faf6c07 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java @@ -1,11 +1,16 @@ package cn.ysk.cashier.mybatis.service.impl; +import cn.ysk.cashier.dto.shoptable.ReturnOrderDTO; +import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper; import cn.ysk.cashier.mybatis.service.MpOrderDetailService; import cn.ysk.cashier.pojo.order.TbOrderDetail; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** * (TbShopPermission)表服务实现类 * @@ -14,6 +19,16 @@ import org.springframework.stereotype.Service; */ @Service public class MpOrderDetailServiceImpl extends ServiceImpl implements MpOrderDetailService { - + @Override + public boolean updateStatusByOrderIdAndIds(OrderStatusEnums oldOrderStatusEnums, OrderStatusEnums orderStatusEnums, Integer orderId, List orderDetails) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() + .eq(TbOrderDetail::getOrderId, orderId) + .in(TbOrderDetail::getId, orderDetails) + .set(TbOrderDetail::getStatus, orderStatusEnums.getValue()); + if (oldOrderStatusEnums != null) { + wrapper.eq(TbOrderDetail::getStatus, oldOrderStatusEnums.getValue()); + } + return update(wrapper); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java index c61f9626..7287a9c0 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/app/TbFreeDineServiceImpl.java @@ -28,7 +28,7 @@ public class TbFreeDineServiceImpl implements TbFreeDineService { } if (StrUtil.isNotBlank(freeDineConfig.getUseType())) { - freeDineConfig.setUseTypeList(JSONObject.parseArray(freeDineConfig.getUseType()).toJavaList(String.class)); + freeDineConfig.setUseTypeList(JSONObject.parseArray(freeDineConfig.getUseType()).toJavaList(String.class )); } return freeDineConfig; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index bb604c06..12d24d00 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -89,7 +89,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final TbProducSkutMapper producSkutMapper; private final RabbitTemplate rabbitTemplate; private final TbShopInfoRepository shopInfoRepository; - private final TbShopOpenIdMapper shopOpenIdMapper; private final WxMsgUtils wxMsgUtils; private final TbShopPayTypeRepository payTypeRepository; private final MpShopTableMapper mpShopTableMapper; @@ -97,8 +96,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final MpShopTableService mpShopTableService; private final MpShopUnitMapper mpShopUnitMapper; private final MpProductStockDetailMapper mpProductStockDetailMapper; - @Value("${thirdPay.payType}") - private String thirdPayType; /** @@ -1999,18 +1996,36 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbOrderDetail::getStatus, "closed") .eq(TbOrderDetail::getOrderId, returnOrderDTO.getOrderId()) .in(TbOrderDetail::getId, detailIds)); - if (detailIds.size() != returnOrderDTO.getOrderDetails().size()) { + if (detailList.size() != returnOrderDTO.getOrderDetails().size()) { throw new BadRequestException("订单明细数量不一致"); } BigDecimal returnAmount = BigDecimal.ZERO; BigDecimal packAMount = BigDecimal.ZERO; BigDecimal saleAmount = BigDecimal.ZERO; - - List returnDetail = new ArrayList<>(); - + ArrayList remainOrderDetailList = new ArrayList<>(); for (TbOrderDetail orderDetail : detailList) { Integer returnNum = returnNumMap.get(orderDetail.getId().toString()); + int remainNum = orderDetail.getNum() - returnNum; + if (remainNum < 0) { + throw new BadRequestException("{}最多可退数量为: {}", orderDetail.getProductName(), orderDetail.getNum()); + } + + // 将未退款的剩余订单详情重新生成记录 + BigDecimal packFee = orderDetail.getPackAmount().divide(BigDecimal.valueOf(orderDetail.getNum()), RoundingMode.HALF_UP); + if (remainNum > 0) { + // 单个打包费 + BigDecimal remainPackFee = packFee.multiply(BigDecimal.valueOf(remainNum)); + TbOrderDetail remainOrderDetail = BeanUtil.copyProperties(orderDetail, TbOrderDetail.class); + remainOrderDetail.setNum(remainNum); + remainOrderDetail.setPriceAmount(BigDecimal.valueOf(remainNum).multiply(orderDetail.getPrice()) + .add(remainPackFee)); + remainOrderDetail.setPackAmount(remainPackFee); + remainOrderDetail.setReturnNum("0"); + remainOrderDetail.setId(null); + remainOrderDetailList.add(remainOrderDetail); + } + returnAmount = returnAmount.add(orderDetail.getPriceAmount() .divide(new BigDecimal(orderDetail.getNum()), 2, RoundingMode.DOWN) .multiply(BigDecimal.valueOf(returnNum))); @@ -2019,10 +2034,20 @@ public class TbShopTableServiceImpl implements TbShopTableService { .divide(new BigDecimal(orderDetail.getNum()), 2, RoundingMode.DOWN) .multiply(BigDecimal.valueOf(returnNum))); + BigDecimal returnPackFee = packFee.multiply(BigDecimal.valueOf(returnNum)); + orderDetail.setNum(returnNum); + orderDetail.setPriceAmount(BigDecimal.valueOf(returnNum).multiply(orderDetail.getPrice()) + .add(returnPackFee)); + orderDetail.setPackAmount(returnPackFee); orderDetail.setRefundNumber(returnNum); orderDetail.setStatus("refunding"); } + // 保存剩余未退款的订单详情 + if (!remainOrderDetailList.isEmpty()) { + mpOrderDetailService.saveBatch(remainOrderDetailList); + } + String orderNo = generateOrderNumber(isOnline ? "OLRO" : "RO"); TbOrderInfo returnOrder = BeanUtil.copyProperties(oldOrderInfo, TbOrderInfo.class); returnOrder.setId(null); @@ -2039,7 +2064,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfoMapper.insert(returnOrder); updateStockAndRecord(detailList); - + mpOrderDetailService.updateBatchById(detailList); return returnOrder; } @@ -2084,9 +2109,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { public Object returnOrder(ReturnOrderDTO returnOrderDTO) { TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaQueryWrapper() .eq(TbOrderInfo::getId, returnOrderDTO.getOrderId()) - .eq(TbOrderInfo::getStatus, "closed")); + .in(TbOrderInfo::getStatus, OrderStatusEnums.REFUND.getValue(), OrderStatusEnums.CLOSED.getValue()) +// .eq(TbOrderInfo::getStatus, "closed") + ); if (orderInfo == null) { - throw new BadRequestException("订单非完单状态"); + throw new BadRequestException("订单不处于可退款状态"); } TbShopInfo shopInfo = mpShopInfoMapper.selectById(orderInfo.getShopId()); @@ -2112,8 +2139,12 @@ public class TbShopTableServiceImpl implements TbShopTableService { } else if ("deposit".equals(payType)) { orderInfoService.depositReturn(Integer.valueOf(orderInfo.getUserId()), Integer.valueOf(orderInfo.getShopId()), returnOrderInfo.getRefundAmount()); orderInfo.setStatus("refund"); + mpOrderDetailService.updateStatusByOrderIdAndIds(OrderStatusEnums.REFUNDING, OrderStatusEnums.REFUND, + returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); } else if ("cash".equals(payType)) { orderInfo.setStatus("refund"); + mpOrderDetailService.updateStatusByOrderIdAndIds(OrderStatusEnums.REFUNDING, OrderStatusEnums.REFUND, + returnOrderDTO.getOrderId(), returnOrderDTO.getOrderDetails().stream().map(ReturnOrderDTO.OrderDetail::getId).collect(Collectors.toList())); } orderInfoMapper.updateById(orderInfo); // 打印退款小票 From d53762e7779a83223dbd86d17ef5c5ad127b709d Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 23 Oct 2024 10:52:55 +0800 Subject: [PATCH 06/20] =?UTF-8?q?=E5=A4=9A=E6=AC=A1=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E7=B4=AF=E5=8A=A0=E9=80=80=E6=AC=BE=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/service/MpOrderInfoService.java | 25 ++++++++++++ .../service/impl/MpOrderInfoServiceImpl.java | 28 +++++++++++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 39 ++++++++++++------- 3 files changed, 78 insertions(+), 14 deletions(-) create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java create mode 100644 eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java new file mode 100644 index 00000000..9c3a86ae --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java @@ -0,0 +1,25 @@ +package cn.ysk.cashier.mybatis.service; + +import cn.ysk.cashier.enums.OrderStatusEnums; +import cn.ysk.cashier.pojo.order.TbOrderDetail; +import cn.ysk.cashier.pojo.order.TbOrderInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * (TbShopPermission)表服务接口 + * + * @author makejava + * @since 2024-09-14 17:08:48 + */ +public interface MpOrderInfoService extends IService { + + /** + * 根据原始订单查询退款订单 + * @param orderId 原始订单id + * @return 对应的退款订单 + */ + TbOrderInfo selectReturnOrderByOrderId(Integer orderId); +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java new file mode 100644 index 00000000..23b95c86 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java @@ -0,0 +1,28 @@ +package cn.ysk.cashier.mybatis.service.impl; + +import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper; +import cn.ysk.cashier.mybatis.mapper.TbOrderInfoMapper; +import cn.ysk.cashier.mybatis.service.MpCashierCartService; +import cn.ysk.cashier.mybatis.service.MpOrderInfoService; +import cn.ysk.cashier.pojo.order.TbCashierCart; +import cn.ysk.cashier.pojo.order.TbOrderInfo; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * (TbShopPermission)表服务实现类 + * + * @author makejava + * @since 2024-09-14 17:08:49 + */ +@Service +public class MpOrderInfoServiceImpl extends ServiceImpl implements MpOrderInfoService { + @Override + public TbOrderInfo selectReturnOrderByOrderId(Integer orderId) { + return getOne(new LambdaQueryWrapper() + .eq(TbOrderInfo::getSource, orderId) + .eq(TbOrderInfo::getOrderType, "return")); + } +} + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 12d24d00..5f3ab61c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -18,6 +18,7 @@ import cn.ysk.cashier.mapper.shop.TbShopTableMapper; import cn.ysk.cashier.mybatis.mapper.*; import cn.ysk.cashier.mybatis.service.MpCashierCartService; import cn.ysk.cashier.mybatis.service.MpOrderDetailService; +import cn.ysk.cashier.mybatis.service.MpOrderInfoService; import cn.ysk.cashier.mybatis.service.MpShopTableService; import cn.ysk.cashier.pojo.TbShopPayType; import cn.ysk.cashier.pojo.order.TbCashierCart; @@ -114,6 +115,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final MpMerchantThirdApplyMapper mpMerchantThirdApplyMapper; private final PayService payService; private final TbOrderInfoService orderInfoService; + private final MpOrderInfoService mpOrderInfoService; private TbOrderInfo getCurrentOrder(ShopEatTypeInfoDTO eatTypeInfoDTO) { // 获取当前台桌最新订单,先付款模式不获取 @@ -2048,20 +2050,29 @@ public class TbShopTableServiceImpl implements TbShopTableService { mpOrderDetailService.saveBatch(remainOrderDetailList); } - String orderNo = generateOrderNumber(isOnline ? "OLRO" : "RO"); - TbOrderInfo returnOrder = BeanUtil.copyProperties(oldOrderInfo, TbOrderInfo.class); - returnOrder.setId(null); - returnOrder.setOrderNo(orderNo); - returnOrder.setRefundAmount(returnAmount); - returnOrder.setOrderType("return"); - returnOrder.setStatus("refunding"); - returnOrder.setUpdatedAt(null); - returnOrder.setSystemTime(DateUtil.current()); - returnOrder.setCreatedAt(DateUtil.current()); - returnOrder.setPayOrderNo(null); - returnOrder.setSource(oldOrderInfo.getId()); - returnOrder.setRefundRemark(returnOrderDTO.getNote()); - orderInfoMapper.insert(returnOrder); + TbOrderInfo returnOrder = mpOrderInfoService.selectReturnOrderByOrderId(returnOrderDTO.getOrderId()); + if (returnOrder == null) { + String orderNo = generateOrderNumber(isOnline ? "OLRO" : "RO"); + returnOrder = BeanUtil.copyProperties(oldOrderInfo, TbOrderInfo.class); + returnOrder.setId(null); + returnOrder.setOrderNo(orderNo); + returnOrder.setRefundAmount(returnAmount); + returnOrder.setOrderType("return"); + returnOrder.setStatus("refunding"); + returnOrder.setUpdatedAt(null); + returnOrder.setSystemTime(DateUtil.current()); + returnOrder.setCreatedAt(DateUtil.current()); + returnOrder.setPayOrderNo(null); + returnOrder.setSource(oldOrderInfo.getId()); + returnOrder.setRefundRemark(returnOrderDTO.getNote()); + orderInfoMapper.insert(returnOrder); + }else { + returnOrder.setUpdatedAt(DateUtil.current()); + returnOrder.setRefundRemark(returnOrderDTO.getNote()); + returnOrder.setRefundAmount(returnOrder.getRefundAmount().add(returnAmount)); + orderInfoMapper.updateById(returnOrder); + } + updateStockAndRecord(detailList); mpOrderDetailService.updateBatchById(detailList); From daccee5d045352f30eb70d74689f6158bacad2c6 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 23 Oct 2024 11:11:40 +0800 Subject: [PATCH 07/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A4=90=E4=BD=8D=E8=B4=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/order/TbOrderInfoServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index b116cd5b..65af5131 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -307,6 +307,12 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { .eq(TbCashierCart::getProductId, TableConstant.CART_SEAT_ID) .orderByDesc(TbCashierCart::getId)); TbCashierCart cashierCart = tbCashierCarts.isEmpty() ? null : tbCashierCarts.get(0); + Map map = BeanUtil.beanToMap(cashierCart, false, false); + if (cashierCart != null) { + map.put("cartId", cashierCart.getId()); + TbOrderDetail orderDetail = details.stream().filter(item -> item.getCartId().equals(cashierCart.getId())).findFirst().orElse(null); + map.put("id", orderDetail != null ? orderDetail.getId() : null); + } dto.setSeatInfo(cashierCart); Map data = BeanUtil.beanToMap(tbOrderInfo, false, false); data.putAll(BeanUtil.beanToMap(dto, false, false)); From bc7d2430ba08236aedbe3bacae7f8e7de7984136 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 23 Oct 2024 11:12:31 +0800 Subject: [PATCH 08/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A4=90=E4=BD=8D=E8=B4=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoDto.java | 2 +- .../ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoDto.java index 2cc0075d..5b596b59 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/order/TbOrderInfoDto.java @@ -173,7 +173,7 @@ public class TbOrderInfoDto implements Serializable { private Integer seatCount; private BigDecimal seatAmount; private String useType; - private TbCashierCart seatInfo; + private Object seatInfo; private String refundRemark; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java index 65af5131..54726f8e 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/order/TbOrderInfoServiceImpl.java @@ -313,7 +313,7 @@ public class TbOrderInfoServiceImpl implements TbOrderInfoService { TbOrderDetail orderDetail = details.stream().filter(item -> item.getCartId().equals(cashierCart.getId())).findFirst().orElse(null); map.put("id", orderDetail != null ? orderDetail.getId() : null); } - dto.setSeatInfo(cashierCart); + dto.setSeatInfo(map); Map data = BeanUtil.beanToMap(tbOrderInfo, false, false); data.putAll(BeanUtil.beanToMap(dto, false, false)); data.put("refundAmount", tbOrderInfo.getRefundAmount()); From 84d967ca6bddab7ef6a35791eb3e474a970c678d Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 23 Oct 2024 15:06:51 +0800 Subject: [PATCH 09/20] =?UTF-8?q?=E9=80=80=E6=AC=BE=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 5f3ab61c..46e2d9b5 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -2045,6 +2045,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setStatus("refunding"); } + if (returnAmount.compareTo(BigDecimal.ZERO) <= 0) { + throw new BadRequestException("退款金额必须大于0"); + } + // 保存剩余未退款的订单详情 if (!remainOrderDetailList.isEmpty()) { mpOrderDetailService.saveBatch(remainOrderDetailList); From 24a80cb24af23cfa14736839c63a407b0b73f4c7 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 23 Oct 2024 16:49:47 +0800 Subject: [PATCH 10/20] =?UTF-8?q?=E5=8F=96=E9=A4=90=E7=A0=81=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/controller/product/TbPlaceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java index cfca0c7b..4e562b86 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java @@ -136,7 +136,7 @@ public class TbPlaceController { @GetMapping("/masterId") @ApiOperation("代客下单 ") public ResponseEntity getMasterId(@RequestParam Integer shopId, - @RequestParam String tableId, + @RequestParam(required = false) String tableId, @RequestParam(required = false) Integer orderId, @RequestParam(defaultValue = "") String useType) { return ResponseEntity.ok(tbShopTableService.getMasterId(shopId, tableId, useType, orderId)); From d99771f8e77b0bbaee7896cd5feb728b316dc4c8 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Wed, 23 Oct 2024 17:32:45 +0800 Subject: [PATCH 11/20] =?UTF-8?q?=E6=97=A0=E5=8F=B0=E6=A1=8C=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E9=80=89=E6=8B=A9=E5=8F=B0=E6=A1=8C=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/product/TbPlaceController.java | 15 ++--- .../cashier/dto/shoptable/ChoseTableDTO.java | 14 ++-- .../mybatis/service/MpCashierCartService.java | 9 +++ .../mybatis/service/MpOrderDetailService.java | 9 +++ .../mybatis/service/MpOrderInfoService.java | 8 +++ .../mybatis/service/MpShopTableService.java | 16 +++++ .../impl/MpCashierCartServiceImpl.java | 15 ++++- .../impl/MpOrderDetailServiceImpl.java | 8 +++ .../service/impl/MpOrderInfoServiceImpl.java | 9 +++ .../service/impl/MpShopTableServiceImpl.java | 18 +++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 66 ++++++++----------- 11 files changed, 130 insertions(+), 57 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java index 4e562b86..803689f2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/product/TbPlaceController.java @@ -62,7 +62,7 @@ public class TbPlaceController { return new ResponseEntity<>(tbProductService.activateProduct(page, size, categoryId, shopId, productId), HttpStatus.OK); } - public TbPlaceController(TbShopTableService tbShopTableService, TbProductService tbProductService,RabbitMsgUtils rabbitMsgUtils) { + public TbPlaceController(TbShopTableService tbShopTableService, TbProductService tbProductService, RabbitMsgUtils rabbitMsgUtils) { this.tbShopTableService = tbShopTableService; this.tbProductService = tbProductService; this.rabbitMsgUtils = rabbitMsgUtils; @@ -144,7 +144,7 @@ public class TbPlaceController { @PostMapping("/order") @ApiOperation("代客下单 查询购物车 /shop/table") - public ResponseEntity createOrder(@RequestBody CreateOrderDTO createOrderDTO ) { + public ResponseEntity createOrder(@RequestBody CreateOrderDTO createOrderDTO) { return ResponseEntity.ok(tbShopTableService.createOrder(createOrderDTO, !createOrderDTO.isPostPay(), true)); } @@ -170,7 +170,7 @@ public class TbPlaceController { @ApiOperation("代客下单 支付订单") public ResponseEntity pay(HttpServletRequest request, @Validated @RequestBody PayDTO payDTO) { String token = tokenProvider.getToken(request); - JSONObject userInfo = JSON.parseObject(JSON.toJSONString(redisUtils.get("online-token-"+token))); + JSONObject userInfo = JSON.parseObject(JSON.toJSONString(redisUtils.get("online-token-" + token))); String userName = userInfo.getString("userName"); String shopId = userInfo.getString("shopId"); TbPlussShopStaff shopStaff = staffRepository.queryByAccount(userName, shopId); @@ -191,10 +191,7 @@ public class TbPlaceController { @PutMapping("/choseTable") @ApiOperation("代客下单 选择台桌") - public ResponseEntity choseTable( - @Validated @RequestBody ChoseTableDTO choseTableDTO - ) { - + public ResponseEntity choseTable(@Validated @RequestBody ChoseTableDTO choseTableDTO) { return ResponseEntity.ok(tbShopTableService.choseTable(choseTableDTO)); } @@ -213,9 +210,7 @@ public class TbPlaceController { @PostMapping("/printOrder") @ApiOperation("代客下单 打印订单") - public ResponseEntity printOrder( - @Validated @RequestBody BaseTableDTO baseTableDTO - ) { + public ResponseEntity printOrder(@Validated @RequestBody BaseTableDTO baseTableDTO) { return ResponseEntity.ok(tbShopTableService.printOrder(baseTableDTO)); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseTableDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseTableDTO.java index c0ebb40a..d96950cf 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseTableDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseTableDTO.java @@ -2,19 +2,15 @@ package cn.ysk.cashier.dto.shoptable; import lombok.Data; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; @Data public class ChoseTableDTO { @NotNull private Integer shopId; - private Integer orderId; - @NotNull - private String newTableId; - @NotEmpty - private String oldTableId; + @NotBlank + private String masterId; + @NotBlank + private String tableId; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java index 3270653b..7d0d193a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java @@ -4,6 +4,8 @@ import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbOrderDetail; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * (TbShopPermission)表服务接口 * @@ -12,5 +14,12 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface MpCashierCartService extends IService { + /** + * 根据取餐码获取购物车信息 + * @param masterId 取餐码 + * @param shopId 店铺id + * @return 购物车信息 + */ + List selectTakeoutCart(String masterId, Integer shopId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java index c87d10c5..23d352fa 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderDetailService.java @@ -5,6 +5,7 @@ import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.pojo.order.TbOrderDetail; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.ArrayList; import java.util.List; /** @@ -24,5 +25,13 @@ public interface MpOrderDetailService extends IService { * @return 影响数量 */ boolean updateStatusByOrderIdAndIds(OrderStatusEnums oldOrderStatusEnums, OrderStatusEnums orderStatusEnums, Integer orderId, List orderDetails); + + /** + * 根据购物车id修改用餐类型 + * @param cartIds 购物车ids + * @param useType 用餐类型 + * @return 是否成功 + */ + boolean updateUseTypeByCartIds(ArrayList cartIds, String useType); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java index 9c3a86ae..d20c67d3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpOrderInfoService.java @@ -21,5 +21,13 @@ public interface MpOrderInfoService extends IService { * @return 对应的退款订单 */ TbOrderInfo selectReturnOrderByOrderId(Integer orderId); + + /** + * 修改订单的就餐类型和tableId + * @param orderId 订单id + * @param useType 就餐类型 + * @return 是否成功 + */ + boolean updateTableIdAndUseTypeById(Integer orderId, String useType, String tableId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java index 65ee8e88..ab357efb 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java @@ -1,7 +1,23 @@ package cn.ysk.cashier.mybatis.service; +import cn.ysk.cashier.enums.TableStateEnum; import cn.ysk.cashier.pojo.shop.TbShopTable; import com.baomidou.mybatisplus.extension.service.IService; public interface MpShopTableService extends IService { + /** + * 根据qrcode修改台桌状态 + * @param tableStateEnum 状态枚举 + * @param tableId qrcode + * @return 是否成功 + */ + boolean updateStateByTableId(TableStateEnum tableStateEnum, String tableId); + + /** + * 根据状态和id获取台桌信息 + * @param tableStateEnum 台桌状态 + * @param tableId 台桌id + * @return 台桌信息 + */ + TbShopTable selectByStateAndTableId(TableStateEnum tableStateEnum, String tableId, Integer shopId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java index d26d9573..bfea7ef9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java @@ -1,14 +1,20 @@ package cn.ysk.cashier.mybatis.service.impl; +import cn.hutool.core.date.DateUtil; +import cn.ysk.cashier.enums.OrderUseTypeEnum; import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper; import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper; import cn.ysk.cashier.mybatis.service.MpCashierCartService; import cn.ysk.cashier.mybatis.service.MpOrderDetailService; import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbOrderDetail; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.Collections; +import java.util.List; + /** * (TbShopPermission)表服务实现类 * @@ -17,6 +23,13 @@ import org.springframework.stereotype.Service; */ @Service public class MpCashierCartServiceImpl extends ServiceImpl implements MpCashierCartService { - + @Override + public List selectTakeoutCart(String masterId, Integer shopId) { + return list(new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, shopId) + .eq(TbCashierCart::getMasterId, masterId) + .eq(TbCashierCart::getUseType, OrderUseTypeEnum.TAKEOUT.getValue()) + .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java index 5faf6c07..9be766b1 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderDetailServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -30,5 +31,12 @@ public class MpOrderDetailServiceImpl extends ServiceImpl cartIds, String useType) { + return update(new LambdaUpdateWrapper() + .in(TbOrderDetail::getCartId, cartIds) + .set(TbOrderDetail::getUseType, useType)); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java index 23b95c86..ea67276a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpOrderInfoServiceImpl.java @@ -7,6 +7,7 @@ import cn.ysk.cashier.mybatis.service.MpOrderInfoService; import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbOrderInfo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -24,5 +25,13 @@ public class MpOrderInfoServiceImpl extends ServiceImpl() + .eq(TbOrderInfo::getId, orderId) + .set(TbOrderInfo::getUseType, useType) + .set(TbOrderInfo::getTableId, tableId)); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java index 986aa570..93d3904a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java @@ -1,5 +1,6 @@ package cn.ysk.cashier.mybatis.service.impl; +import cn.ysk.cashier.enums.TableStateEnum; import cn.ysk.cashier.mapper.shop.TbShopTableMapper; import cn.ysk.cashier.mybatis.entity.TagProductDepts; import cn.ysk.cashier.mybatis.mapper.MpShopTableMapper; @@ -7,9 +8,26 @@ import cn.ysk.cashier.mybatis.mapper.TagProductDeptsMapper; import cn.ysk.cashier.mybatis.service.MpShopTableService; import cn.ysk.cashier.mybatis.service.TagProductDeptsService; import cn.ysk.cashier.pojo.shop.TbShopTable; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @Service public class MpShopTableServiceImpl extends ServiceImpl implements MpShopTableService { + + @Override + public boolean updateStateByTableId(TableStateEnum tableStateEnum, String tableId) { + return update(new LambdaUpdateWrapper() + .eq(TbShopTable::getQrcode, tableId) + .set(TbShopTable::getStatus, tableStateEnum.getState())); + } + + @Override + public TbShopTable selectByStateAndTableId(TableStateEnum tableStateEnum, String tableId, Integer shopId) { + return getOne(new LambdaQueryWrapper() + .eq(TbShopTable::getShopId, shopId) + .eq(TbShopTable::getStatus, tableStateEnum.getState()) + .eq(TbShopTable::getQrcode, tableId)); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 46e2d9b5..4840ffcd 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -1098,6 +1098,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { List cashierCarts = cashierCartMapper .selectList(queryWrapper); + if (cashierCarts.isEmpty() || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && cashierCarts.size() < 2)) { throw new BadRequestException("购物车为空或未选择餐位费,请先添加商品或选择餐位费"); } @@ -1728,50 +1729,41 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public Object choseTable(ChoseTableDTO choseTableDTO) { - String masterId = getMasterId(choseTableDTO.getShopId(), choseTableDTO.getNewTableId(), null, null).getString("masterId"); - - TbShopTable shopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper() - .eq(TbShopTable::getQrcode, choseTableDTO.getNewTableId()) - .eq(TbShopTable::getStatus, "idle")); + TbShopTable shopTable = mpShopTableService.selectByStateAndTableId(TableStateEnum.IDLE, choseTableDTO.getTableId(), choseTableDTO.getShopId()); if (shopTable == null) { - throw new BadRequestException("台桌不存在或非空闲状态"); + throw new BadRequestException("台桌不存在或不处于空闲状态"); } - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(choseTableDTO.getShopId(), choseTableDTO.getNewTableId()); - TbOrderInfo currentOrder = getCurrentOrder(shopEatTypeInfoDTO); - Integer currentOrderId = currentOrder == null ? null : currentOrder.getId(); + List tbCashierCarts = mpCashierCartService.selectTakeoutCart(choseTableDTO.getMasterId(), choseTableDTO.getShopId()); + if (tbCashierCarts.isEmpty()) { + throw new BadRequestException("购物车为空"); + } + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(choseTableDTO.getShopId(), choseTableDTO.getTableId()); - cashierCartMapper.update(null, new LambdaUpdateWrapper() - .eq(TbCashierCart::getTableId, choseTableDTO.getOldTableId()) - .in(TbCashierCart::getStatus, "create", "return") - .eq(TbCashierCart::getShopId, choseTableDTO.getShopId()) - .and(q -> q.isNull(TbCashierCart::getOrderId) - .or() - .eq(TbCashierCart::getOrderId, currentOrderId)) - .and(query2 -> query2.or(query3 -> query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) - .isNotNull(TbCashierCart::getMasterId)) - .or((query4 -> query4.isNull(TbCashierCart::getTradeDay) - .isNull(TbCashierCart::getMasterId)))) - .set(TbCashierCart::getMasterId, masterId) - .set(TbCashierCart::getTableId, choseTableDTO.getNewTableId())); + ArrayList cartIds = new ArrayList<>(); + Integer orderId = null; + for (TbCashierCart item : tbCashierCarts) { + item.setTableId(choseTableDTO.getTableId()); + item.setUseType(shopEatTypeInfoDTO.getUseType()); + cartIds.add(item.getId()); + if (item.getOrderId() != null) { + orderId = item.getOrderId(); + } + } + mpCashierCartService.updateBatchById(tbCashierCarts); + // 修改detail的用餐类型 + mpOrderDetailService.updateUseTypeByCartIds(cartIds, shopEatTypeInfoDTO.getUseType()); - mpShopTableMapper.update(null, new LambdaUpdateWrapper() - .eq(TbShopTable::getQrcode, choseTableDTO.getNewTableId()) - .set(TbShopTable::getStatus, TableStateEnum.USING.getState())); - mpShopTableMapper.update(null, new LambdaUpdateWrapper() - .eq(TbShopTable::getQrcode, choseTableDTO.getOldTableId()) - .set(TbShopTable::getStatus, TableStateEnum.IDLE.getState())); - - // 将台桌redis数据迁移 - String orderId = removeCurrentOrderId(choseTableDTO.getOldTableId(), choseTableDTO.getShopId().toString()); - setCurrentOrderId(choseTableDTO.getNewTableId(), choseTableDTO.getShopId().toString(), orderId); - - return orderInfoMapper.update(null, new LambdaUpdateWrapper() - .eq(TbOrderInfo::getId, currentOrderId) - .set(TbOrderInfo::getMasterId, masterId) - .set(TbOrderInfo::getTableId, choseTableDTO.getNewTableId())); + // 修改订单表台桌信息 + if(orderId != null) { + mpOrderInfoService.updateTableIdAndUseTypeById(orderId, shopEatTypeInfoDTO.getUseType(), choseTableDTO.getTableId()); + mpShopTableService.updateStateByTableId(TableStateEnum.USING, choseTableDTO.getTableId()); + // 将台桌redis数据迁移 + setCurrentOrderId(choseTableDTO.getTableId(), choseTableDTO.getShopId().toString(), orderId.toString()); + } + return true; } From eaace1d576762726cd23d321f4de963a55359af9 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 09:24:58 +0800 Subject: [PATCH 12/20] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A4=90=E4=BD=8D=E8=B4=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/ysk/cashier/enums/OrderStatusEnums.java | 2 +- .../impl/shopimpl/TbShopTableServiceImpl.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java index 3210e758..34d6a451 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java @@ -6,7 +6,7 @@ import lombok.Getter; public enum OrderStatusEnums { REFUNDING("refunding"), REFUND("refund"), - CLOSED("closed"); + CLOSED("closed"), CREATE("create"); private final String value; OrderStatusEnums(String value) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 4840ffcd..83721100 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.ysk.cashier.config.security.security.TokenProvider; import cn.ysk.cashier.cons.RedisConstant; +import cn.ysk.cashier.cons.TableConstant; import cn.ysk.cashier.cons.rabbit.RabbitConstants; import cn.ysk.cashier.dto.shop.TbShopTableDto; import cn.ysk.cashier.dto.shop.TbShopTableQueryCriteria; @@ -1075,7 +1076,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, createOrderDTO.getShopId()) .eq(TbCashierCart::getUseType, createOrderDTO.getUseType()) - .in(TbCashierCart::getStatus, "create") + .in(TbCashierCart::getStatus, "create", "return") .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) .and(q -> q.eq(TbCashierCart::getMasterId, createOrderDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId)); @@ -1096,10 +1097,21 @@ public class TbShopTableServiceImpl implements TbShopTableService { queryWrapper.eq(TbCashierCart::getTableId, createOrderDTO.getTableId()); } - List cashierCarts = cashierCartMapper + List allCashierCarts = cashierCartMapper .selectList(queryWrapper); - if (cashierCarts.isEmpty() || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && cashierCarts.size() < 2)) { + List cashierCarts = new ArrayList<>(); + TbCashierCart seatCart = null; + for (TbCashierCart allCashierCart : allCashierCarts) { + if (TableConstant.CART_SEAT_ID.equals(allCashierCart.getProductId())) { + seatCart = allCashierCart; + }else if (OrderStatusEnums.CREATE.getValue().equals(allCashierCart.getStatus())) { + cashierCarts.add(allCashierCart); + } + } + + if (allCashierCarts.isEmpty() || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart != null && allCashierCarts.size() < 2) + || (shopEatTypeInfoDTO.isNeedSeatFee() && !shopEatTypeInfoDTO.isTakeout() && seatCart == null)) { throw new BadRequestException("购物车为空或未选择餐位费,请先添加商品或选择餐位费"); } From 6f7459604cbfd1e6a5c0e4275aa4d9fbb7ec66b1 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 09:31:35 +0800 Subject: [PATCH 13/20] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A4=90=E4=BD=8D=E8=B4=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/shopimpl/TbShopTableServiceImpl.java | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 83721100..88315472 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -1151,14 +1151,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { List addOrderDetails = new ArrayList<>(); - BigDecimal mealAmount = null; - Integer mealNum = null; + boolean hasNewInfo = false; for (TbCashierCart cashierCart : cashierCarts) { - if ("-999".equals(cashierCart.getProductId())) { - mealAmount = cashierCart.getTotalAmount(); - mealNum = cashierCart.getNumber(); - } if (!"return".equals(cashierCart.getStatus())) { totalAmount = totalAmount.add(cashierCart.getTotalAmount()); packAMount = packAMount.add(cashierCart.getPackFee()); @@ -1203,11 +1198,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetails.add(orderDetail); } - if (shopInfo.getIsTableFee() != null && shopInfo.getIsTableFee() == 0 - && !shopEatTypeInfoDTO.isTakeout() - && mealAmount == null) { - throw new BadRequestException("请选择用餐人数"); - } // 查询订单 TbOrderInfo orderInfo = null; @@ -1232,8 +1222,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setTradeDay(DateUtils.getDay()); orderInfo.setUseType(createOrderDTO.getUseType()); orderInfo.setCreatedAt(DateUtil.current()); - orderInfo.setSeatAmount(mealAmount); - orderInfo.setSeatCount(mealNum); + if (seatCart != null) { + orderInfo.setSeatAmount(seatCart.getTotalAmount()); + orderInfo.setSeatCount(seatCart.getNumber()); + } if (StrUtil.isNotBlank(createOrderDTO.getVipUserId())) { orderInfo.setUserId(createOrderDTO.getVipUserId()); } @@ -1272,8 +1264,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { if (StrUtil.isNotBlank(createOrderDTO.getVipUserId())) { orderInfo.setUserId(createOrderDTO.getVipUserId()); } - orderInfo.setSeatAmount(mealAmount); - orderInfo.setSeatCount(mealNum); + if (seatCart != null) { + orderInfo.setSeatAmount(seatCart.getTotalAmount()); + orderInfo.setSeatCount(seatCart.getNumber()); + } orderInfo.setSendType(shopEatTypeInfoDTO.getSendType()); TbMerchantAccount merchantAccount = merchantAccountMapper.selectOne(new LambdaQueryWrapper() .eq(TbMerchantAccount::getShopId, createOrderDTO.getShopId()) @@ -1371,7 +1365,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .set(TbShopTable::getProductNum, cashierCarts.size()) .set(TbShopTable::getTotalAmount, orderInfo.getOrderAmount()) .set(TbShopTable::getRealAmount, orderInfo.getOrderAmount()) - .set(TbShopTable::getUseNum, mealNum) + .set(TbShopTable::getUseNum, seatCart != null ? seatCart.getNumber() : null) .set(TbShopTable::getStatus, TableStateEnum.USING.getState()); if (isFirst) { wrapper.set(TbShopTable::getUseTime, DateUtil.date()); From b356b3594d64fcf41394df8b426cc22798d0f875 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 09:33:42 +0800 Subject: [PATCH 14/20] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A4=90=E4=BD=8D=E8=B4=B9=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 88315472..0f6e0dcd 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -1105,7 +1105,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { for (TbCashierCart allCashierCart : allCashierCarts) { if (TableConstant.CART_SEAT_ID.equals(allCashierCart.getProductId())) { seatCart = allCashierCart; - }else if (OrderStatusEnums.CREATE.getValue().equals(allCashierCart.getStatus())) { + } + + if (OrderStatusEnums.CREATE.getValue().equals(allCashierCart.getStatus())) { cashierCarts.add(allCashierCart); } } From 94e679425519294a0f011da009b6ea4d26062897 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 09:43:05 +0800 Subject: [PATCH 15/20] =?UTF-8?q?=E5=AE=A2=E5=BA=A7=E8=B4=B9=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java | 2 +- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java index 34d6a451..637f3f2c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderStatusEnums.java @@ -6,7 +6,7 @@ import lombok.Getter; public enum OrderStatusEnums { REFUNDING("refunding"), REFUND("refund"), - CLOSED("closed"), CREATE("create"); + CLOSED("closed"), CREATE("create"), RETURN("return"); private final String value; OrderStatusEnums(String value) { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 0f6e0dcd..cb167d41 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -1801,7 +1801,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbCashierCart::getSkuId, "-999") .eq(TbCashierCart::getUseType, choseCountDTO.getUseType()) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) - .eq(TbCashierCart::getStatus, "create") + .in(TbCashierCart::getStatus, OrderStatusEnums.CREATE.getValue(), OrderStatusEnums.RETURN.getValue()) .eq(TbCashierCart::getTableId, choseCountDTO.getTableId()); TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query); From 01efaac3ab8c45a33565e0f1d0e87c01faac53b8 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 11:42:37 +0800 Subject: [PATCH 16/20] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A0=E6=A1=8C?= =?UTF-8?q?=E5=8F=B0=E5=B0=B1=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/shoptable/ShopEatTypeInfoDTO.java | 7 ++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 33 +++++++++++++++---- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java index 13db70d2..6926a8aa 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ShopEatTypeInfoDTO.java @@ -7,11 +7,18 @@ import lombok.Data; @Data @AllArgsConstructor public class ShopEatTypeInfoDTO { + // 是否外带 private boolean isTakeout; + // 是否快餐 private boolean isMunchies; + // 是否后付费 private boolean isDineInAfter; + // 是否先付费 private boolean isDineInBefore; + // 是否需要餐位费 private boolean needSeatFee; + // 是否无桌台下单 + private boolean isNoneTable; private TbShopInfo shopInfo; private String useType; private Object shopId; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index cb167d41..0b91d414 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -151,7 +151,26 @@ public class TbShopTableServiceImpl implements TbShopTableService { return getShopEatTypeInfoDTO(shopId, eatModel, tableId); } + /** + * 校验就餐模式是否存在并返回就餐类型信息 + * + * @param tableId 台桌id + * @param shopId 店铺id + * @return 就餐类型信息 + */ + public ShopEatTypeInfoDTO checkEatModel(Object shopId, String tableId, String useType) { + String eatModel = OrderUseTypeEnum.TAKEOUT.getValue().equals(useType) ? ShopInfoEatModelEnum.TAKE_OUT.getValue() : ShopInfoEatModelEnum.DINE_IN.getValue(); + return getShopEatTypeInfoDTO(shopId, eatModel, tableId); + } + /** + * 通过店铺id和就餐模式获取当前店铺的就餐类型信息 + * + * @param shopId 店铺id + * @param eatModel 就餐模式 + * @param tableId 台桌id + * @return just餐类型信息 + * */ private ShopEatTypeInfoDTO getShopEatTypeInfoDTO(Object shopId, String eatModel, String tableId) { TbShopInfo shopInfo = mpShopInfoMapper.selectOne(new LambdaQueryWrapper() .eq(TbShopInfo::getId, shopId) @@ -172,8 +191,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { boolean isDineInBefore = isMunchies && !isTakeout; boolean needSeatFee = shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0; + boolean isNoneTable = StrUtil.isBlank(tableId) && !isTakeout; - return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, shopInfo, isTakeout ? OrderUseTypeEnum.TAKEOUT.getValue() : + return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, shopInfo, isTakeout ? OrderUseTypeEnum.TAKEOUT.getValue() : isMunchies ? OrderUseTypeEnum.DINE_IN_BEFORE.getValue() : OrderUseTypeEnum.DINE_IN_AFTER.getValue(), shopId, tableId, isTakeout ? OrderSendTypeEnums.TAKE_SELF.getValue() : OrderSendTypeEnums.TABLE.getValue()); } @@ -1797,8 +1817,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { LambdaQueryWrapper query = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, choseCountDTO.getShopId()) .and(q -> q.eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()).or().isNull(TbCashierCart::getMasterId).or().eq(TbCashierCart::getMasterId, "")) - .eq(TbCashierCart::getProductId, "-999") - .eq(TbCashierCart::getSkuId, "-999") + .eq(TbCashierCart::getProductId, TableConstant.CART_SEAT_ID) .eq(TbCashierCart::getUseType, choseCountDTO.getUseType()) .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) .in(TbCashierCart::getStatus, OrderStatusEnums.CREATE.getValue(), OrderStatusEnums.RETURN.getValue()) @@ -1925,10 +1944,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public Object choseModel(ChoseModelDTO choseModelDTO) { - if (!OrderUseTypeEnum.TAKEOUT.getValue().equals(choseModelDTO.getUseType()) && StrUtil.isBlank(choseModelDTO.getTableId())) { - throw new BadRequestException("堂食tableId必须传递"); - // 外带设置餐位费 - } +// if (!OrderUseTypeEnum.TAKEOUT.getValue().equals(choseModelDTO.getUseType()) && StrUtil.isBlank(choseModelDTO.getTableId())) { +// throw new BadRequestException("堂食tableId必须传递"); +// // 外带设置餐位费 +// } List cashierCarts = cashierCartMapper.selectList(new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, choseModelDTO.getShopId()) From 62a931145bd80c2d2028f70215041e177c18c3b0 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 13:25:54 +0800 Subject: [PATCH 17/20] =?UTF-8?q?=E6=97=A0=E6=A1=8C=E5=8F=B0=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=B4=AD=E7=89=A9=E8=BD=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 0b91d414..21d2da51 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -434,7 +434,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public TbCashierCart addCartForUser(AddCartDTO addCartDTO) { addCartDTO.setTableId(OrderUseTypeEnum.TAKEOUT.getValue().equals(addCartDTO.getUseType()) ? null : addCartDTO.getTableId()); - ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(addCartDTO.getShopId(), addCartDTO.getTableId()); + ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(addCartDTO.getShopId(), addCartDTO.getTableId(), addCartDTO.getUseType()); TbProductSku productSku = productMapper.selectSkuByIdAndShopId(addCartDTO.getShopId(), addCartDTO.getSkuId()); TbProduct product = productMapper.selectByIdAndShopId(addCartDTO.getShopId(), addCartDTO.getProductId()); From 743f59d4a3acb29c8af461ba870743cb63d43512 Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 14:12:40 +0800 Subject: [PATCH 18/20] =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=BA=93=E5=AD=98=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 21d2da51..2ddc2611 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -443,7 +443,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { throw new BadRequestException("商品不存在或已下架, id: " + addCartDTO.getSkuId()); } - if (product.getStockNumber() < 1) { + if (product.getIsStock() != null && product.getIsStock() == 1 &&product.getStockNumber() < 1) { throw new BadRequestException(product.getName() + "商品库存不足"); } From d15b17729cc9452996f94cf5cd714cd0f7f2bd0d Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 15:20:14 +0800 Subject: [PATCH 19/20] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=B0=E6=A1=8C?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/shop/TbShopTableController.java | 8 +++++++- .../mybatis/service/MpCashierCartService.java | 10 ++++++++++ .../mybatis/service/MpShopTableService.java | 8 ++++++++ .../service/impl/MpCashierCartServiceImpl.java | 18 ++++++++++++++++++ .../service/impl/MpShopTableServiceImpl.java | 7 +++++++ .../impl/shopimpl/TbShopTableServiceImpl.java | 12 ++++++++++++ .../service/shop/TbShopTableService.java | 8 ++++++++ 7 files changed, 70 insertions(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java index e62f214c..0b6a6431 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/TbShopTableController.java @@ -98,6 +98,12 @@ public class TbShopTableController { return new ResponseEntity<>(tbShopTableService.generate(generateDTO),HttpStatus.OK); } - + /** + * 台桌状态获取 + */ + @GetMapping("/state") + public ResponseEntity getShopState(@RequestParam Integer shopId, @RequestParam String tableId) { + return new ResponseEntity<>(tbShopTableService.getShopState(shopId, tableId),HttpStatus.OK); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java index 7d0d193a..664c4391 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpCashierCartService.java @@ -1,5 +1,6 @@ package cn.ysk.cashier.mybatis.service; +import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.pojo.order.TbCashierCart; import cn.ysk.cashier.pojo.order.TbOrderDetail; import com.baomidou.mybatisplus.extension.service.IService; @@ -21,5 +22,14 @@ public interface MpCashierCartService extends IService { * @return 购物车信息 */ List selectTakeoutCart(String masterId, Integer shopId); + + /** + * 统计当前台桌购物车数量 + * @param shopId 店铺id + * @param tableId 台桌id + * @param statusEnums 状态,可不传查询所有 + * @return 购物车数量 + */ + long countByTableId(Integer shopId, String tableId, OrderStatusEnums... statusEnums); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java index ab357efb..0bc60a11 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/MpShopTableService.java @@ -20,4 +20,12 @@ public interface MpShopTableService extends IService { * @return 台桌信息 */ TbShopTable selectByStateAndTableId(TableStateEnum tableStateEnum, String tableId, Integer shopId); + + /** + * 查询台桌信息 + * @param tableId 台桌id + * @param shopId 店铺id + * @return 台桌信息 + */ + TbShopTable selectByTableId(String tableId, Integer shopId); } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java index bfea7ef9..f23e0655 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpCashierCartServiceImpl.java @@ -1,6 +1,7 @@ package cn.ysk.cashier.mybatis.service.impl; import cn.hutool.core.date.DateUtil; +import cn.ysk.cashier.enums.OrderStatusEnums; import cn.ysk.cashier.enums.OrderUseTypeEnum; import cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper; import cn.ysk.cashier.mybatis.mapper.TbOrderDetailMapper; @@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -31,5 +33,21 @@ public class MpCashierCartServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper() + .eq(TbCashierCart::getShopId, shopId) + .gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime()) + .eq(TbCashierCart::getTableId, tableId); + if (statusEnums.length > 0) { + ArrayList stateList = new ArrayList<>(); + for (OrderStatusEnums statusEnum : statusEnums) { + stateList.add(statusEnum.getValue()); + } + queryWrapper.in(TbCashierCart::getStatus, stateList); + } + return count(queryWrapper); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java index 93d3904a..44e854df 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/service/impl/MpShopTableServiceImpl.java @@ -30,4 +30,11 @@ public class MpShopTableServiceImpl extends ServiceImpl() + .eq(TbShopTable::getShopId, shopId) + .eq(TbShopTable::getQrcode, tableId)); + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 2ddc2611..8444fb2c 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -2191,4 +2191,16 @@ public class TbShopTableServiceImpl implements TbShopTableService { rabbitMsgUtils.updateCons(jsonObject1); return true; } + + @Override + public Object getShopState(Integer shopId, String tableId) { + TbShopTable tbShopTable = mpShopTableService.selectByTableId(tableId, shopId); + if (tbShopTable != null) { + long cartCount = mpCashierCartService.countByTableId(shopId, tableId); + Map map = BeanUtil.beanToMap(tbShopTable, false, false); + map.put("cartCount", cartCount); + return map; + } + return null; + } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java index 8b69849e..6643c5a8 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/shop/TbShopTableService.java @@ -139,4 +139,12 @@ public interface TbShopTableService { Object choseModel(ChoseModelDTO choseModelDTO); Object returnOrder(ReturnOrderDTO returnOrderDTO); + + /** + * 获取台桌状态 + * @param shopId 电偶id + * @param tableId qrcode + * @return + */ + Object getShopState(Integer shopId, String tableId); } From 4ec0f04cc59c6584a0fcfa3f69f4b8d83769bf3f Mon Sep 17 00:00:00 2001 From: SongZhang <2064194730@qq.com> Date: Thu, 24 Oct 2024 15:47:24 +0800 Subject: [PATCH 20/20] =?UTF-8?q?=E5=8F=B0=E6=A1=8C=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9C=AA=E7=BB=91=E5=AE=9A=E5=8F=B0=E6=A1=8C=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=B8=BAunbind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cashier/service/impl/shopimpl/TbShopTableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 8444fb2c..fb5fb04a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -225,7 +225,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { ArrayList> infoList = new ArrayList<>(); for (TbShopTable date : tbShopTableList) { if (StrUtil.isBlank(date.getQrcode())) { - date.setStatus("closed"); + date.setStatus("unbind"); } else if (tbCashierCartMapper.selectCount(new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, date.getShopId()) .eq(TbCashierCart::getTableId, date.getQrcode())