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 bce7b7c0..758305fc 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 @@ -91,7 +91,7 @@ public class TbPlaceController { @PutMapping("/returnCart") @Log("代客下单 退单") @ApiOperation("代客下单 清空购物车 /shop/table") - public ResponseEntity returnOrder(@Validated @RequestBody RemoveCartDTO removeCartDTO) { + public ResponseEntity returnOrder(@Validated @RequestBody ReturnOrderDTO removeCartDTO) { tbShopTableService.returnCart(removeCartDTO); return new ResponseEntity<>(HttpStatus.OK); } @@ -112,40 +112,40 @@ public class TbPlaceController { public ResponseEntity getCart( @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size, - @RequestParam Long tableId, + @RequestParam(required = false) Long tableId, @RequestParam Integer shopId, - @RequestParam(required = false) Integer vipUserId, - @RequestParam String masterId + @RequestParam String masterId, + @RequestParam String useType ) { - return ResponseEntity.ok(tbShopTableService.getCart(tableId, page, size, shopId, vipUserId, masterId)); + return ResponseEntity.ok(tbShopTableService.getCart(tableId, page, size, shopId,masterId, useType)); } - @AnonymousAccess + @AnonymousAccess @GetMapping("/pending/cart") @Log("代客下单 查询购物车") @ApiOperation("代客下单 查询购物车 /shop/table") public ResponseEntity getPendingCart( @RequestParam Integer shopId, - @RequestParam String tableId + @RequestParam(required = false) String tableId, + @RequestParam String useType ) { - return ResponseEntity.ok(tbShopTableService.getCar(shopId, tableId)); + return ResponseEntity.ok(tbShopTableService.getCar(shopId, tableId, useType)); } @AnonymousAccess - @GetMapping("/masterId") @Log("代客下单 查询购物车") @ApiOperation("代客下单 ") public ResponseEntity getMasterId( @RequestParam Integer shopId, @RequestParam Long tableId, + @RequestParam(defaultValue = "") String useType, @RequestParam(required = false) Integer vipUserId ) { - return ResponseEntity.ok(tbShopTableService.getMasterId(shopId, tableId, vipUserId)); + return ResponseEntity.ok(tbShopTableService.getMasterId(shopId, tableId, vipUserId, useType)); } @AnonymousAccess - @PostMapping("/order") @Log("代客下单 查询购物车") @ApiOperation("代客下单 查询购物车 /shop/table") @@ -156,7 +156,6 @@ public class TbPlaceController { } @AnonymousAccess - @PostMapping("/pending") @Log("代客下单 查询购物车") @ApiOperation("代客下单 查询购物车 /shop/table") @@ -167,7 +166,6 @@ public class TbPlaceController { } @AnonymousAccess - @GetMapping("/payType") @Log("代客下单 查询购物车") @ApiOperation("代客下单 查询购物车 /shop/table") @@ -223,8 +221,6 @@ public class TbPlaceController { return ResponseEntity.ok(tbShopTableService.choseCount(choseCountDTO)); } - - @AnonymousAccess @PutMapping("/updateVip") @Log("代客下单 查询购物车") diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java index 0107c9aa..2dbac660 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/AddCartDTO.java @@ -3,6 +3,7 @@ package cn.ysk.cashier.dto.shoptable; import lombok.Data; import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @@ -17,7 +18,6 @@ public class AddCartDTO { private Integer skuId; @NotNull private Integer shopId; - @NotEmpty private String tableId; @NotNull @Min(1) @@ -26,4 +26,8 @@ public class AddCartDTO { private boolean isGift; private Integer cartId; private String note; + + // 用餐类型 + @NotBlank + private String useType; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseCountDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseCountDTO.java index 795d1525..ae1ad2f9 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseCountDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ChoseCountDTO.java @@ -17,4 +17,6 @@ public class ChoseCountDTO { @NotNull @Min(1) private Integer num; + @NotEmpty + private String useType; } 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 2d3728c1..c0ebb40a 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 @@ -16,4 +16,5 @@ public class ChoseTableDTO { private String newTableId; @NotEmpty private String oldTableId; + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ClearCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ClearCartDTO.java index f5a264e4..aebe89de 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ClearCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/ClearCartDTO.java @@ -6,12 +6,12 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @Data -public class ClearCartDTO { + public class ClearCartDTO { @NotEmpty private String masterId; - private Integer vipUserId; - @NotNull - private Long tableId; @NotNull private String shopId; + @NotEmpty + private String useType; + private Long tableId; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java index 5b11a4ad..07dbe944 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/CreateOrderDTO.java @@ -9,12 +9,12 @@ import javax.validation.constraints.NotNull; public class CreateOrderDTO { @NotEmpty private String masterId; - private Integer vipUserId; @NotNull private Integer shopId; - @NotEmpty private String tableId; private String note; private boolean postPay; private Integer orderId; + @NotEmpty + private String useType; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/DeleteOrderDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/DeleteOrderDTO.java index 4b4626fc..bda10b62 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/DeleteOrderDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/DeleteOrderDTO.java @@ -2,8 +2,12 @@ package cn.ysk.cashier.dto.shoptable; import lombok.Data; +import javax.validation.constraints.NotNull; + @Data public class DeleteOrderDTO { + @NotNull private Integer shopId; + @NotNull private Integer orderId; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PackCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PackCartDTO.java index 81fae90f..ce4e0171 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PackCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PackCartDTO.java @@ -13,7 +13,6 @@ public class PackCartDTO { private Integer vipUserId; @NotNull private Integer shopId; - @NotEmpty private String tableId; @NotNull @Range(min = 0, max = 1) diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PendingDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PendingDTO.java index 5285b3e0..c678972a 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PendingDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/PendingDTO.java @@ -3,6 +3,7 @@ package cn.ysk.cashier.dto.shoptable; import lombok.Data; import org.bouncycastle.asn1.cmc.PendInfo; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @@ -12,9 +13,10 @@ public class PendingDTO { @NotNull private Integer shopId; private String tableId; - private Integer vipUserId; @NotNull private Boolean isPending; private Integer orderId; private String note; + @NotBlank + private String useType; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/RemoveCartDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/RemoveCartDTO.java index 733a7dde..0ea3d483 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/RemoveCartDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/RemoveCartDTO.java @@ -2,6 +2,7 @@ package cn.ysk.cashier.dto.shoptable; import lombok.Data; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; @@ -11,6 +12,7 @@ public class RemoveCartDTO { private Integer cartId; @NotNull private Integer shopId; - @NotNull private Long tableId; + @NotBlank + private String useType; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java index a0de0032..bdd654c1 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/shoptable/UpdateVipDTO.java @@ -19,4 +19,5 @@ public class UpdateVipDTO { @NotNull @Range(min = 0, max = 1) private Integer type; + } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderUseTypeEnum.java b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderUseTypeEnum.java new file mode 100644 index 00000000..57d5e085 --- /dev/null +++ b/eladmin-system/src/main/java/cn/ysk/cashier/enums/OrderUseTypeEnum.java @@ -0,0 +1,15 @@ +package cn.ysk.cashier.enums; + +import lombok.Getter; + +@Getter +public enum OrderUseTypeEnum { + TAKEOUT("takeout"), + DINE_IN_AFTER("dine-in-after"), + DINE_IN_BEFORE("dine-in-before"); + private final String value; + + OrderUseTypeEnum(String value) { + this.value = value; + } +} diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java index ef59f927..09baa770 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/mybatis/mapper/TbCashierCartMapper.java @@ -20,11 +20,8 @@ public interface TbCashierCartMapper extends BaseMapper { " from tb_cashier_cart where table_id is not null and shop_id = #{shopId} and status = 'refund' group by shop_Id, master_id order by trade_day desc") List selectCar(@Param("shopId") Integer shopId); - @Select("select a.id orderId,b.pending_at pendingAt, sum(b.total_amount) totalAmount, count(b.id) totalCount, sum(b.total_number) totalNumber, a.remark from tb_order_info a " + - "JOIN tb_cashier_cart b on a.id=b.order_id " + - "where a.shop_id=#{shopId} and a.`status`='pending' and a.table_id=#{tableId} and a.trade_day=#{day}" + - "GROUP BY a.id ORDER BY a.id desc ") - List countPending(@Param("shopId") Integer shopId, @Param("tableId") String tableId, @Param("day") String day); + + List countPending(@Param("shopId") Integer shopId, @Param("tableId") String tableId, @Param("day") String day, @Param("useType") String useType); @Select("select a.*, b.spec_snap from tb_cashier_cart as a left join tb_product_sku as b on a.sku_id=b.id where a.shop_id=#{shopId} and a.status='refund';") List selectPending(Integer shopId); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java index 788b041d..e47dd0b4 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbCashierCart.java @@ -159,6 +159,8 @@ public class TbCashierCart implements Serializable { private Integer placeNum; @Column(name = "`note`") private String note; + @Column(name = "`use_type`") + private String useType; public void copy(TbCashierCart source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java index 794d1ad7..b5ff2048 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/pojo/order/TbOrderDetail.java @@ -119,6 +119,9 @@ public class TbOrderDetail implements Serializable { @Column(name = "`cart_id`") private Integer cartId; + @Column(name = "`use_type`") + private String useType; + public void copy(TbOrderDetail source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); } 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 26df0525..12b5823e 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 @@ -10,6 +10,7 @@ import cn.ysk.cashier.config.security.security.TokenProvider; import cn.ysk.cashier.cons.RedisConstant; import cn.ysk.cashier.cons.rabbit.RabbitConstants; import cn.ysk.cashier.dto.shoptable.*; +import cn.ysk.cashier.enums.OrderUseTypeEnum; import cn.ysk.cashier.enums.ShopWxMsgTypeEnum; import cn.ysk.cashier.enums.TableStateEnum; import cn.ysk.cashier.exception.BadRequestException; @@ -341,7 +342,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public TbCashierCart addCartForUser(AddCartDTO addCartDTO) { - checkTableIsOpen(addCartDTO.getTableId()); + if (StrUtil.isNotBlank(addCartDTO.getTableId())) { + checkTableIsOpen(addCartDTO.getTableId()); + } int currentPlaceNum = getCurrentPlaceNum(addCartDTO.getTableId(), addCartDTO.getShopId().toString()); @@ -362,15 +365,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbCashierCart::getShopId, addCartDTO.getShopId()) .eq(TbCashierCart::getSkuId, addCartDTO.getSkuId()) .eq(TbCashierCart::getProductId, addCartDTO.getProductId()) - .eq(TbCashierCart::getTableId, addCartDTO.getTableId()) .isNull(TbCashierCart::getPlaceNum) + .eq(TbCashierCart::getUseType, addCartDTO.getUseType()) .in(TbCashierCart::getStatus, "create", "refund") -// .and(q -> { -// q.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) -// .or() -// .isNull(TbCashierCart::getTradeDay); -// -// }); .and(query2 -> { query2.and(query3 -> { query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) @@ -386,6 +383,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { query.eq(TbCashierCart::getId, addCartDTO.getCartId()); } + if (StrUtil.isNotBlank(addCartDTO.getTableId())) { + query.eq(TbCashierCart::getTableId, addCartDTO.getTableId()); + } + TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query); // 增加redis购物车数据 String tableCartKey = RedisConstant.getTableCartKey(addCartDTO.getTableId(), addCartDTO.getShopId().toString()); @@ -393,11 +394,14 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 首次加入 if (tbCashierCart == null) { tbCashierCart = new TbCashierCart(); + tbCashierCart.setUseType(addCartDTO.getUseType()); tbCashierCart.setUserId(addCartDTO.getVipUserId()); tbCashierCart.setCoverImg(product.getCoverImg()); tbCashierCart.setCreatedAt(System.currentTimeMillis()); tbCashierCart.setIsSku(product.getTypeEnum()); - tbCashierCart.setTableId(Long.valueOf(addCartDTO.getTableId())); + if (StrUtil.isNotBlank(addCartDTO.getTableId())) { + tbCashierCart.setTableId(Long.valueOf(addCartDTO.getTableId())); + } tbCashierCart.setName(product.getName()); tbCashierCart.setProductId(String.valueOf(product.getId())); tbCashierCart.setSalePrice(productSku.getSalePrice()); @@ -451,7 +455,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { cashierCartRepository.save(tbCashierCart); } - setRedisTableCartInfo(addCartDTO.getTableId(), addCartDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); + if (StrUtil.isNotBlank(addCartDTO.getTableId())) { + setRedisTableCartInfo(addCartDTO.getTableId(), addCartDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); + } return tbCashierCart; } @@ -483,16 +489,17 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public void removeCart(RemoveCartDTO removeCartDTO) { - int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString()); + int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId() == null ? "" : removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString()); // 会员点单 TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, removeCartDTO.getShopId()) + .eq(TbCashierCart::getUseType, removeCartDTO.getUseType()) .eq(TbCashierCart::getId, removeCartDTO.getCartId())); if (cashierCart == null) { throw new BadRequestException("购物车商品不存在"); } - if (cashierCart.getPlaceNum() != null && !cashierCart.getPlaceNum().equals(currentPlaceNum)) { + if (removeCartDTO.getTableId() != null && cashierCart.getPlaceNum() != null && !cashierCart.getPlaceNum().equals(currentPlaceNum)) { throw new BadRequestException("已下单商品仅支持退单操作"); } @@ -501,26 +508,28 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbOrderDetail::getShopId, cashierCart.getShopId()) .eq(TbOrderDetail::getProductId, cashierCart.getProductId()) .eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId()) + .eq(TbOrderDetail::getUseType, removeCartDTO.getUseType()) .isNull(TbOrderDetail::getPlaceNum) .eq(TbOrderDetail::getOrderId, cashierCart.getOrderId())); } cashierCartMapper.deleteById(cashierCart.getId()); - // 清空购物车 出票 - long carCount = countCar(cashierCart.getTableId(), cashierCart.getShopId(), cashierCart.getMasterId()); + if (removeCartDTO.getTableId() != null) { + // 清空购物车 出票 + long carCount = countCar(cashierCart.getTableId(), cashierCart.getShopId(), cashierCart.getMasterId()); - log.info("购物车数量: {}", carCount); - if (cashierCart.getOrderId() != null && carCount < 1) { - rabbitMsgUtils.printTicket(String.valueOf(cashierCart.getOrderId())); + log.info("购物车数量: {}", carCount); + if (cashierCart.getOrderId() != null && carCount < 1) { + rabbitMsgUtils.printTicket(String.valueOf(cashierCart.getOrderId())); + } + setRedisTableCartInfo(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString(), Collections.singletonList(cashierCart), false); } - setRedisTableCartInfo(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString(), Collections.singletonList(cashierCart), false); - } @Override - public void returnCart(RemoveCartDTO removeCartDTO) { + public void returnCart(ReturnOrderDTO removeCartDTO) { rabbitMsgUtils.printDishesReturnTicket(4450, 9313); int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString()); @@ -562,13 +571,17 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public void clearCart(ClearCartDTO clearCartDTO) { - String orderId = redisTemplate.opsForValue().get(RedisConstant.getCurrentOrderKey(clearCartDTO.getTableId().toString(), clearCartDTO.getShopId())); - int currentPlaceNum = getCurrentPlaceNum(clearCartDTO.getTableId().toString(), clearCartDTO.getShopId()); + String orderId; + if (clearCartDTO.getTableId() != null) { + orderId = getCurrentOrderId(clearCartDTO.getTableId().toString(), clearCartDTO.getShopId()); + } else { + orderId = ""; + } - cashierCartMapper.delete(new LambdaQueryWrapper() + LambdaQueryWrapper query = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, clearCartDTO.getShopId()) - .eq(TbCashierCart::getTableId, clearCartDTO.getTableId()) - .eq(TbCashierCart::getPlaceNum, currentPlaceNum) + .isNull(TbCashierCart::getPlaceNum) + .eq(TbCashierCart::getUseType, clearCartDTO.getUseType()) .and(q -> { q.eq(TbCashierCart::getMasterId, clearCartDTO.getMasterId()) .or() @@ -580,20 +593,14 @@ public class TbShopTableServiceImpl implements TbShopTableService { q.eq(TbCashierCart::getOrderId, orderId) .or() .isNull(TbCashierCart::getOrderId); - }) - ); + }); + if (clearCartDTO.getTableId() != null) { + query.eq(TbCashierCart::getTableId, clearCartDTO.getTableId()); -// tbShopTableRepository.deleteByTableIdAndShopId(clearCartDTO.getTableId(), clearCartDTO.getShopId()); - - if (StrUtil.isNotBlank(orderId)) { - orderDetailMapper.delete(new LambdaQueryWrapper() - .eq(TbOrderDetail::getShopId, clearCartDTO.getShopId()) - .eq(TbOrderDetail::getPlaceNum, currentPlaceNum) - .eq(TbOrderDetail::getOrderId, orderId)); - rabbitMsgUtils.printTicket(orderId); } + cashierCartMapper.delete(query); } private long countCar(Long tableId, String shopId, String masterId) { @@ -606,11 +613,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public Map getCart(Long tableId, Integer page, - Integer size, Integer shopId, Integer vipUserId, String masterId) { + Integer size, Integer shopId, String masterId, String useType) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(TbCashierCart::getTableId, tableId) .in(TbCashierCart::getStatus, "create", "refund", "return") .eq(TbCashierCart::getShopId, shopId) + .eq(TbCashierCart::getUseType, useType) .and(query2 -> { query2.or(query3 -> { query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) @@ -622,12 +629,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { })); }); -// if (vipUserId != null) { -// queryWrapper.eq(TbCashierCart::getUserId, vipUserId); -// }else { -// queryWrapper.eq(TbCashierCart::getMasterId, masterId); -// queryWrapper.isNull(TbCashierCart::getUserId); -// } + if (tableId != null) { + queryWrapper.eq(TbCashierCart::getTableId, tableId); + } com.baomidou.mybatisplus.extension.plugins.pagination.Page cartPage = cashierCartMapper .selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page, size), queryWrapper); @@ -683,7 +687,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public void pack(PackCartDTO packCartDTO) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() - .eq(TbCashierCart::getTableId, packCartDTO.getTableId()) .eq(TbCashierCart::getShopId, packCartDTO.getShopId()) .in(TbCashierCart::getStatus, "create", "refund") .and(query2 -> { @@ -697,11 +700,9 @@ public class TbShopTableServiceImpl implements TbShopTableService { })); }); -// if (packCartDTO.getVipUserId() != null) { -// queryWrapper.eq(TbCashierCart::getUserId, packCartDTO.getVipUserId()); -// } else { -// queryWrapper.isNull(TbCashierCart::getUserId); -// } + if (StrUtil.isNotBlank(packCartDTO.getTableId())) { + queryWrapper.eq(TbCashierCart::getTableId, packCartDTO.getTableId()); + } List tbCashierCarts = cashierCartMapper.selectList(queryWrapper); tbCashierCarts.forEach(item -> { @@ -925,7 +926,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { private final StringRedisTemplate redisTemplate; @Override - public JSONObject getMasterId(Integer shopId, Long tableId, Integer vipUserId) { + public JSONObject getMasterId(Integer shopId, Long tableId, Integer vipUserId, String useType) { String account = tokenProvider.getSubject(); if (account == null) { throw new BadRequestException("token解析失败"); @@ -934,7 +935,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { String day = DateUtils.getDay(); JSONObject jsonObject = new JSONObject(); // 当前台桌码 - String key = "SHOP:CODE:USER:pc" + ":" + shopId + ":" + day + ":" + tableId; + String key = "SHOP:CODE:USER:pc" + ":" + shopId + ":" + day + ":" + tableId + useType; String userCode = redisTemplate.opsForValue().get(key); if (StringUtils.isEmpty(userCode) || "null".equals(userCode) || "#null".equals(userCode)) { @@ -965,21 +966,24 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public TbOrderInfo createOrder(CreateOrderDTO createOrderDTO, boolean addMaterId, boolean isPrint) { return Utils.runFunAndCheckKey(() -> { - TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper() - .eq(TbShopTable::getQrcode, createOrderDTO.getTableId()) - .in(TbShopTable::getStatus, "idle", "using")); + TbShopTable tbShopTable = null; + boolean tableFlag = StrUtil.isNotBlank(createOrderDTO.getTableId()); + if (tableFlag) { + tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper() + .eq(TbShopTable::getQrcode, createOrderDTO.getTableId()) + .in(TbShopTable::getStatus, "idle", "using")); - if (tbShopTable == null) { - throw new BadRequestException("台桌未开台或不存在"); + if (tbShopTable == null) { + throw new BadRequestException("台桌未开台或不存在"); + } } - // 传递orderId直接取否则取当前缓存id String currentOrderKey = RedisConstant.getCurrentOrderKey(createOrderDTO.getTableId(), createOrderDTO.getShopId().toString()); String orderIdValue = redisTemplate.opsForValue().get(currentOrderKey); Integer orderId = orderIdValue == null ? null : Integer.parseInt(orderIdValue); - orderId = createOrderDTO.getOrderId() != null ? createOrderDTO.getOrderId() : orderId; + orderId = tableFlag ? createOrderDTO.getOrderId() != null ? createOrderDTO.getOrderId() : orderId : null; // 查询订单 TbOrderInfo orderInfo = null; @@ -994,8 +998,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { String day = DateUtils.getDay(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, createOrderDTO.getShopId()) - .eq(TbCashierCart::getTableId, createOrderDTO.getTableId()) - .in(TbCashierCart::getStatus, "create", "refund") + .in(TbCashierCart::getStatus, "create") + .eq(TbCashierCart::getUseType, createOrderDTO.getUseType()) .and(query2 -> { query2.or(query3 -> { query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) @@ -1007,6 +1011,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { })); }); + if (StrUtil.isNotBlank(createOrderDTO.getTableId())) { + queryWrapper.eq(TbCashierCart::getTableId, createOrderDTO.getTableId()); + } + List cashierCarts = cashierCartMapper .selectList(queryWrapper); if (cashierCarts.isEmpty()) { @@ -1018,13 +1026,13 @@ public class TbShopTableServiceImpl implements TbShopTableService { BigDecimal feeAmount = BigDecimal.ZERO; BigDecimal saleAmount = BigDecimal.ZERO; // 当前下单次数 - int placeNum = getCurrentPlaceNum(createOrderDTO.getTableId(), createOrderDTO.getShopId().toString()); + int placeNum = StrUtil.isNotBlank(createOrderDTO.getTableId()) ? getCurrentPlaceNum(createOrderDTO.getTableId(), createOrderDTO.getShopId().toString()) : 1; List orderDetails = new ArrayList<>(); Integer mealNum = null; boolean unAdd = cashierCarts.stream().noneMatch(item -> item.getPlaceNum() == null); - if (addMaterId && unAdd) { + if (addMaterId && unAdd && !OrderUseTypeEnum.TAKEOUT.getValue().equals(createOrderDTO.getUseType())) { throw new BadRequestException("此次未添加新商品,清先添加商品"); } for (TbCashierCart cashierCart : cashierCarts) { @@ -1056,6 +1064,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId())); orderDetail.setPackAmount(cashierCart.getPackFee()); orderDetail.setStatus("unpaid"); + orderDetail.setUseType(createOrderDTO.getUseType()); orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setCartId(cashierCart.getId()); orderDetails.add(orderDetail); @@ -1066,7 +1075,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderDetail.setPlaceNum(placeNum); } - if (mealNum == null) { + if ((OrderUseTypeEnum.DINE_IN_BEFORE.getValue().equals(createOrderDTO.getUseType()) || OrderUseTypeEnum.DINE_IN_AFTER.getValue().equals(createOrderDTO.getUseType())) + && mealNum == null) { throw new BadRequestException("请选择用餐人数"); } @@ -1087,7 +1097,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setProductAmount(saleAmount); orderInfo.setTradeDay(DateUtils.getDay()); orderInfo.setUseType(createOrderDTO.isPostPay() ? "postPay" : "afterPay"); - orderInfo.setUserId(createOrderDTO.getVipUserId() == null ? null : String.valueOf(createOrderDTO.getVipUserId())); + orderInfo.setUseType(createOrderDTO.getUseType()); orderInfo.setCreatedAt(DateUtil.current()); if (!unAdd) { orderInfo.setPlaceNum(placeNum); @@ -1115,10 +1125,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setMasterId(createOrderDTO.getMasterId()); orderInfo.setOutNumber(createOrderDTO.getMasterId()); orderInfo.setRemark(createOrderDTO.getNote()); - orderInfo.setUserId(createOrderDTO.getVipUserId() == null ? null : String.valueOf(createOrderDTO.getVipUserId())); orderInfo.setCreatedAt(DateUtil.current()); - orderInfo.setTableName(tbShopTable.getName()); + orderInfo.setTableName(tbShopTable != null ? tbShopTable.getName() : null); orderInfo.setPlaceNum(placeNum); + orderInfo.setUseType(createOrderDTO.getUseType()); TbMerchantAccount merchantAccount = merchantAccountMapper.selectOne(new LambdaQueryWrapper() .eq(TbMerchantAccount::getShopId, createOrderDTO.getShopId()) .eq(TbMerchantAccount::getStatus, 1)); @@ -1128,7 +1138,10 @@ public class TbShopTableServiceImpl implements TbShopTableService { orderInfo.setMerchantId(merchantAccount.getId().toString()); orderInfoMapper.insert(orderInfo); - redisTemplate.opsForValue().set(currentOrderKey, orderInfo.getId().toString()); + // 台桌下单才保存订单信息 + if (tableFlag) { + redisTemplate.opsForValue().set(currentOrderKey, orderInfo.getId().toString()); + } } @@ -1166,8 +1179,6 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 后付费,不增加当前台桌取餐号 if (createOrderDTO.isPostPay()) { addGlobalCode(day, "pc", String.valueOf(createOrderDTO.getShopId())); -// String key = "SHOP:CODE:USER:pc" + ":" + createOrderDTO.getShopId() + ":" + day + ":" + orderInfo.getTableId(); -// redisTemplate.delete(key); } if (!createOrderDTO.isPostPay() || (addMaterId && "pending".equals(orderInfo.getStatus()))) { @@ -1225,6 +1236,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(TbCashierCart::getUseType, pendingDTO.getUseType()) .eq(TbCashierCart::getShopId, pendingDTO.getShopId()); if (!pendingDTO.getIsPending()) { @@ -1234,9 +1246,8 @@ public class TbShopTableServiceImpl implements TbShopTableService { queryWrapper.eq(TbCashierCart::getOrderId, pendingDTO.getOrderId()); } else { - queryWrapper.eq(TbCashierCart::getTableId, pendingDTO.getTableId()) + queryWrapper .eq(TbCashierCart::getStatus, "create") - .eq(TbCashierCart::getTableId, pendingDTO.getTableId()) .and(query2 -> { query2.or(query3 -> { query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) @@ -1247,12 +1258,11 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbCashierCart::getMasterId, ""); })); }); -// if (pendingDTO.getVipUserId() != null) { -// queryWrapper.eq(TbCashierCart::getUserId, pendingDTO.getVipUserId()); -// }else { -// queryWrapper.eq(TbCashierCart::getMasterId, pendingDTO.getMasterId()) -// .isNull(TbCashierCart::getUserId); -// } + + if (StrUtil.isNotBlank(pendingDTO.getTableId())) { + queryWrapper.eq(TbCashierCart::getTableId, pendingDTO.getTableId()); + } + } List cashierCarts = cashierCartMapper @@ -1273,22 +1283,22 @@ public class TbShopTableServiceImpl implements TbShopTableService { createOrderDTO.setTableId(pendingDTO.getTableId()); createOrderDTO.setShopId(pendingDTO.getShopId()); createOrderDTO.setMasterId(pendingDTO.getMasterId()); - createOrderDTO.setVipUserId(pendingDTO.getVipUserId()); createOrderDTO.setNote(pendingDTO.getNote()); + createOrderDTO.setUseType(pendingDTO.getUseType()); orderId = createOrder(createOrderDTO, true, false).getId(); } TbOrderDetail orderDetail = new TbOrderDetail(); - orderDetail.setStatus(pendingDTO.getIsPending() ? "pending" : "cancelled"); + orderDetail.setStatus(pendingDTO.getIsPending() ? "pending" : "unpaid"); orderDetailMapper.update(orderDetail, new LambdaUpdateWrapper() - .eq(TbOrderDetail::getShopId, pendingDTO.getIsPending()) + .eq(TbOrderDetail::getShopId, pendingDTO.getShopId()) .eq(TbOrderDetail::getOrderId, orderId)); TbOrderInfo orderInfo = new TbOrderInfo(); orderInfo.setId(orderId); - orderInfo.setStatus(pendingDTO.getIsPending() ? "pending" : "cancelled"); + orderInfo.setStatus(pendingDTO.getIsPending() ? "pending" : "unpaid"); orderInfoMapper.updateById(orderInfo); TbCashierCart cashierCart = new TbCashierCart(); @@ -1299,31 +1309,36 @@ public class TbShopTableServiceImpl implements TbShopTableService { // 后付款订单,修改台桌状态并打票 - if (pendingDTO.getIsPending()) { + if (pendingDTO.getIsPending() && StrUtil.isNotBlank(pendingDTO.getTableId())) { mpShopTableMapper.update(null, new LambdaUpdateWrapper() .eq(TbShopTable::getQrcode, cashierCart.getTableId()) .set(TbShopTable::getStatus, TableStateEnum.PENDING.getState())); } - redisTemplate.delete(RedisConstant.getCurrentOrderKey(pendingDTO.getTableId(), pendingDTO.getShopId().toString())); + if (StrUtil.isNotBlank(pendingDTO.getTableId())) { + redisTemplate.delete(RedisConstant.getCurrentOrderKey(pendingDTO.getTableId(), pendingDTO.getShopId().toString())); + } return orderInfoMapper.selectById(orderId); } @Override - public Object getCar(Integer shopId, String tableId) { + public Object getCar(Integer shopId, String tableId, String useType) { ArrayList> data = new ArrayList<>(); - List pendingCountVOS = cashierCartMapper.countPending(shopId, tableId, DateUtils.getDay()); - List tbCashierCarts = cashierCartMapper.selectList(new LambdaQueryWrapper() + List pendingCountVOS = cashierCartMapper.countPending(shopId, tableId, DateUtils.getDay(), useType); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) - .eq(TbCashierCart::getTableId, tableId) - .eq(TbCashierCart::getStatus, "refund")); + .eq(TbCashierCart::getUseType, useType) + .eq(TbCashierCart::getStatus, "refund"); + if (StrUtil.isNotBlank(tableId)) { + queryWrapper.eq(TbCashierCart::getTableId, tableId); + + } + List tbCashierCarts = cashierCartMapper.selectList(queryWrapper); ArrayList skuIds = new ArrayList<>(); - tbCashierCarts.forEach(item -> { - skuIds.add(Integer.valueOf(item.getSkuId())); - }); + tbCashierCarts.forEach(item -> skuIds.add(Integer.valueOf(item.getSkuId()))); List skuList = productSkuRepository.findAllById(skuIds); @@ -1530,7 +1545,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { @Override public Object choseTable(ChoseTableDTO choseTableDTO) { - String masterId = getMasterId(choseTableDTO.getShopId(), Long.valueOf(choseTableDTO.getNewTableId()), null).getString("masterId"); + String masterId = getMasterId(choseTableDTO.getShopId(), Long.valueOf(choseTableDTO.getNewTableId()), null, "").getString("masterId"); String currentOrderId = choseTableDTO.getOrderId() == null ? getCurrentOrderId(choseTableDTO.getOldTableId(), choseTableDTO.getShopId().toString()) : choseTableDTO.getOrderId().toString(); @@ -1598,6 +1613,7 @@ public class TbShopTableServiceImpl implements TbShopTableService { .eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()) .eq(TbCashierCart::getProductId, "-999") .eq(TbCashierCart::getSkuId, "-999") + .eq(TbCashierCart::getUseType, choseCountDTO.getUseType()) .eq(TbCashierCart::getTradeDay, cn.ysk.cashier.utils.DateUtils.getDay()) .eq(TbCashierCart::getTableId, choseCountDTO.getTableId()); TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query); 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 5cf3c63e..e6329856 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 @@ -100,11 +100,11 @@ public interface TbShopTableService { void removeCart(RemoveCartDTO removeCartDTO); - void returnCart(RemoveCartDTO removeCartDTO); + void returnCart(ReturnOrderDTO removeCartDTO); void clearCart(ClearCartDTO clearCartDTO); - Map getCart(Long tableId, Integer page, Integer size, Integer shopId, Integer vipUserId, String masterId); + Map getCart(Long tableId, Integer page, Integer size, Integer shopId, String masterId, String useType); TbCashierCart updateCart(UpdateCartDTO updateCartDTO); @@ -112,11 +112,11 @@ public interface TbShopTableService { Object createOrder(CreateOrderDTO createOrderDTO, boolean addMasterId, boolean isPrint); - JSONObject getMasterId(Integer shopId, Long tableId, Integer vipUserId); + JSONObject getMasterId(Integer shopId, Long tableId, Integer vipUserId, String useType); Object pending(PendingDTO pendingDTO); - Object getCar(Integer shopId, String tableId); + Object getCar(Integer shopId, String tableId, String useType); Object getPayType(Integer shopId); diff --git a/eladmin-system/src/main/resources/mapper/TbCashierCartMapper.xml b/eladmin-system/src/main/resources/mapper/TbCashierCartMapper.xml new file mode 100644 index 00000000..8012c2fa --- /dev/null +++ b/eladmin-system/src/main/resources/mapper/TbCashierCartMapper.xml @@ -0,0 +1,18 @@ + + + + +