代客下单支持外带用餐模式

This commit is contained in:
SongZhang 2024-09-18 17:29:10 +08:00
parent e9fa13fdd8
commit 1b3158930f
18 changed files with 188 additions and 126 deletions

View File

@ -91,7 +91,7 @@ public class TbPlaceController {
@PutMapping("/returnCart") @PutMapping("/returnCart")
@Log("代客下单 退单") @Log("代客下单 退单")
@ApiOperation("代客下单 清空购物车 /shop/table") @ApiOperation("代客下单 清空购物车 /shop/table")
public ResponseEntity<Object> returnOrder(@Validated @RequestBody RemoveCartDTO removeCartDTO) { public ResponseEntity<Object> returnOrder(@Validated @RequestBody ReturnOrderDTO removeCartDTO) {
tbShopTableService.returnCart(removeCartDTO); tbShopTableService.returnCart(removeCartDTO);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@ -112,40 +112,40 @@ public class TbPlaceController {
public ResponseEntity<Object> getCart( public ResponseEntity<Object> getCart(
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size, @RequestParam(defaultValue = "10") Integer size,
@RequestParam Long tableId, @RequestParam(required = false) Long tableId,
@RequestParam Integer shopId, @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") @GetMapping("/pending/cart")
@Log("代客下单 查询购物车") @Log("代客下单 查询购物车")
@ApiOperation("代客下单 查询购物车 /shop/table") @ApiOperation("代客下单 查询购物车 /shop/table")
public ResponseEntity<Object> getPendingCart( public ResponseEntity<Object> getPendingCart(
@RequestParam Integer shopId, @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 @AnonymousAccess
@GetMapping("/masterId") @GetMapping("/masterId")
@Log("代客下单 查询购物车") @Log("代客下单 查询购物车")
@ApiOperation("代客下单 ") @ApiOperation("代客下单 ")
public ResponseEntity<Object> getMasterId( public ResponseEntity<Object> getMasterId(
@RequestParam Integer shopId, @RequestParam Integer shopId,
@RequestParam Long tableId, @RequestParam Long tableId,
@RequestParam(defaultValue = "") String useType,
@RequestParam(required = false) Integer vipUserId @RequestParam(required = false) Integer vipUserId
) { ) {
return ResponseEntity.ok(tbShopTableService.getMasterId(shopId, tableId, vipUserId)); return ResponseEntity.ok(tbShopTableService.getMasterId(shopId, tableId, vipUserId, useType));
} }
@AnonymousAccess @AnonymousAccess
@PostMapping("/order") @PostMapping("/order")
@Log("代客下单 查询购物车") @Log("代客下单 查询购物车")
@ApiOperation("代客下单 查询购物车 /shop/table") @ApiOperation("代客下单 查询购物车 /shop/table")
@ -156,7 +156,6 @@ public class TbPlaceController {
} }
@AnonymousAccess @AnonymousAccess
@PostMapping("/pending") @PostMapping("/pending")
@Log("代客下单 查询购物车") @Log("代客下单 查询购物车")
@ApiOperation("代客下单 查询购物车 /shop/table") @ApiOperation("代客下单 查询购物车 /shop/table")
@ -167,7 +166,6 @@ public class TbPlaceController {
} }
@AnonymousAccess @AnonymousAccess
@GetMapping("/payType") @GetMapping("/payType")
@Log("代客下单 查询购物车") @Log("代客下单 查询购物车")
@ApiOperation("代客下单 查询购物车 /shop/table") @ApiOperation("代客下单 查询购物车 /shop/table")
@ -223,8 +221,6 @@ public class TbPlaceController {
return ResponseEntity.ok(tbShopTableService.choseCount(choseCountDTO)); return ResponseEntity.ok(tbShopTableService.choseCount(choseCountDTO));
} }
@AnonymousAccess @AnonymousAccess
@PutMapping("/updateVip") @PutMapping("/updateVip")
@Log("代客下单 查询购物车") @Log("代客下单 查询购物车")

View File

@ -3,6 +3,7 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -17,7 +18,6 @@ public class AddCartDTO {
private Integer skuId; private Integer skuId;
@NotNull @NotNull
private Integer shopId; private Integer shopId;
@NotEmpty
private String tableId; private String tableId;
@NotNull @NotNull
@Min(1) @Min(1)
@ -26,4 +26,8 @@ public class AddCartDTO {
private boolean isGift; private boolean isGift;
private Integer cartId; private Integer cartId;
private String note; private String note;
// 用餐类型
@NotBlank
private String useType;
} }

View File

@ -17,4 +17,6 @@ public class ChoseCountDTO {
@NotNull @NotNull
@Min(1) @Min(1)
private Integer num; private Integer num;
@NotEmpty
private String useType;
} }

View File

@ -16,4 +16,5 @@ public class ChoseTableDTO {
private String newTableId; private String newTableId;
@NotEmpty @NotEmpty
private String oldTableId; private String oldTableId;
} }

View File

@ -6,12 +6,12 @@ import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@Data @Data
public class ClearCartDTO { public class ClearCartDTO {
@NotEmpty @NotEmpty
private String masterId; private String masterId;
private Integer vipUserId;
@NotNull
private Long tableId;
@NotNull @NotNull
private String shopId; private String shopId;
@NotEmpty
private String useType;
private Long tableId;
} }

View File

@ -9,12 +9,12 @@ import javax.validation.constraints.NotNull;
public class CreateOrderDTO { public class CreateOrderDTO {
@NotEmpty @NotEmpty
private String masterId; private String masterId;
private Integer vipUserId;
@NotNull @NotNull
private Integer shopId; private Integer shopId;
@NotEmpty
private String tableId; private String tableId;
private String note; private String note;
private boolean postPay; private boolean postPay;
private Integer orderId; private Integer orderId;
@NotEmpty
private String useType;
} }

View File

@ -2,8 +2,12 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
@Data @Data
public class DeleteOrderDTO { public class DeleteOrderDTO {
@NotNull
private Integer shopId; private Integer shopId;
@NotNull
private Integer orderId; private Integer orderId;
} }

View File

@ -13,7 +13,6 @@ public class PackCartDTO {
private Integer vipUserId; private Integer vipUserId;
@NotNull @NotNull
private Integer shopId; private Integer shopId;
@NotEmpty
private String tableId; private String tableId;
@NotNull @NotNull
@Range(min = 0, max = 1) @Range(min = 0, max = 1)

View File

@ -3,6 +3,7 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import org.bouncycastle.asn1.cmc.PendInfo; import org.bouncycastle.asn1.cmc.PendInfo;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -12,9 +13,10 @@ public class PendingDTO {
@NotNull @NotNull
private Integer shopId; private Integer shopId;
private String tableId; private String tableId;
private Integer vipUserId;
@NotNull @NotNull
private Boolean isPending; private Boolean isPending;
private Integer orderId; private Integer orderId;
private String note; private String note;
@NotBlank
private String useType;
} }

View File

@ -2,6 +2,7 @@ package cn.ysk.cashier.dto.shoptable;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -11,6 +12,7 @@ public class RemoveCartDTO {
private Integer cartId; private Integer cartId;
@NotNull @NotNull
private Integer shopId; private Integer shopId;
@NotNull
private Long tableId; private Long tableId;
@NotBlank
private String useType;
} }

View File

@ -19,4 +19,5 @@ public class UpdateVipDTO {
@NotNull @NotNull
@Range(min = 0, max = 1) @Range(min = 0, max = 1)
private Integer type; private Integer type;
} }

View File

@ -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;
}
}

View File

@ -20,11 +20,8 @@ public interface TbCashierCartMapper extends BaseMapper<TbCashierCart> {
" 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") " 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<CarVO> selectCar(@Param("shopId") Integer shopId); List<CarVO> 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 " + List<PendingCountVO> countPending(@Param("shopId") Integer shopId, @Param("tableId") String tableId, @Param("day") String day, @Param("useType") String useType);
"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<PendingCountVO> countPending(@Param("shopId") Integer shopId, @Param("tableId") String tableId, @Param("day") String day);
@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';") @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<TbCashierCartVO> selectPending(Integer shopId); List<TbCashierCartVO> selectPending(Integer shopId);

View File

@ -159,6 +159,8 @@ public class TbCashierCart implements Serializable {
private Integer placeNum; private Integer placeNum;
@Column(name = "`note`") @Column(name = "`note`")
private String note; private String note;
@Column(name = "`use_type`")
private String useType;
public void copy(TbCashierCart source){ public void copy(TbCashierCart source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));

View File

@ -119,6 +119,9 @@ public class TbOrderDetail implements Serializable {
@Column(name = "`cart_id`") @Column(name = "`cart_id`")
private Integer cartId; private Integer cartId;
@Column(name = "`use_type`")
private String useType;
public void copy(TbOrderDetail source){ public void copy(TbOrderDetail source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
} }

View File

@ -10,6 +10,7 @@ import cn.ysk.cashier.config.security.security.TokenProvider;
import cn.ysk.cashier.cons.RedisConstant; import cn.ysk.cashier.cons.RedisConstant;
import cn.ysk.cashier.cons.rabbit.RabbitConstants; import cn.ysk.cashier.cons.rabbit.RabbitConstants;
import cn.ysk.cashier.dto.shoptable.*; import cn.ysk.cashier.dto.shoptable.*;
import cn.ysk.cashier.enums.OrderUseTypeEnum;
import cn.ysk.cashier.enums.ShopWxMsgTypeEnum; import cn.ysk.cashier.enums.ShopWxMsgTypeEnum;
import cn.ysk.cashier.enums.TableStateEnum; import cn.ysk.cashier.enums.TableStateEnum;
import cn.ysk.cashier.exception.BadRequestException; import cn.ysk.cashier.exception.BadRequestException;
@ -341,7 +342,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public TbCashierCart addCartForUser(AddCartDTO addCartDTO) { public TbCashierCart addCartForUser(AddCartDTO addCartDTO) {
if (StrUtil.isNotBlank(addCartDTO.getTableId())) {
checkTableIsOpen(addCartDTO.getTableId()); checkTableIsOpen(addCartDTO.getTableId());
}
int currentPlaceNum = getCurrentPlaceNum(addCartDTO.getTableId(), addCartDTO.getShopId().toString()); int currentPlaceNum = getCurrentPlaceNum(addCartDTO.getTableId(), addCartDTO.getShopId().toString());
@ -362,15 +365,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.eq(TbCashierCart::getShopId, addCartDTO.getShopId()) .eq(TbCashierCart::getShopId, addCartDTO.getShopId())
.eq(TbCashierCart::getSkuId, addCartDTO.getSkuId()) .eq(TbCashierCart::getSkuId, addCartDTO.getSkuId())
.eq(TbCashierCart::getProductId, addCartDTO.getProductId()) .eq(TbCashierCart::getProductId, addCartDTO.getProductId())
.eq(TbCashierCart::getTableId, addCartDTO.getTableId())
.isNull(TbCashierCart::getPlaceNum) .isNull(TbCashierCart::getPlaceNum)
.eq(TbCashierCart::getUseType, addCartDTO.getUseType())
.in(TbCashierCart::getStatus, "create", "refund") .in(TbCashierCart::getStatus, "create", "refund")
// .and(q -> {
// q.eq(TbCashierCart::getTradeDay, DateUtils.getDay())
// .or()
// .isNull(TbCashierCart::getTradeDay);
//
// });
.and(query2 -> { .and(query2 -> {
query2.and(query3 -> { query2.and(query3 -> {
query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay())
@ -386,6 +383,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
query.eq(TbCashierCart::getId, addCartDTO.getCartId()); query.eq(TbCashierCart::getId, addCartDTO.getCartId());
} }
if (StrUtil.isNotBlank(addCartDTO.getTableId())) {
query.eq(TbCashierCart::getTableId, addCartDTO.getTableId());
}
TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query); TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query);
// 增加redis购物车数据 // 增加redis购物车数据
String tableCartKey = RedisConstant.getTableCartKey(addCartDTO.getTableId(), addCartDTO.getShopId().toString()); String tableCartKey = RedisConstant.getTableCartKey(addCartDTO.getTableId(), addCartDTO.getShopId().toString());
@ -393,11 +394,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 首次加入 // 首次加入
if (tbCashierCart == null) { if (tbCashierCart == null) {
tbCashierCart = new TbCashierCart(); tbCashierCart = new TbCashierCart();
tbCashierCart.setUseType(addCartDTO.getUseType());
tbCashierCart.setUserId(addCartDTO.getVipUserId()); tbCashierCart.setUserId(addCartDTO.getVipUserId());
tbCashierCart.setCoverImg(product.getCoverImg()); tbCashierCart.setCoverImg(product.getCoverImg());
tbCashierCart.setCreatedAt(System.currentTimeMillis()); tbCashierCart.setCreatedAt(System.currentTimeMillis());
tbCashierCart.setIsSku(product.getTypeEnum()); tbCashierCart.setIsSku(product.getTypeEnum());
if (StrUtil.isNotBlank(addCartDTO.getTableId())) {
tbCashierCart.setTableId(Long.valueOf(addCartDTO.getTableId())); tbCashierCart.setTableId(Long.valueOf(addCartDTO.getTableId()));
}
tbCashierCart.setName(product.getName()); tbCashierCart.setName(product.getName());
tbCashierCart.setProductId(String.valueOf(product.getId())); tbCashierCart.setProductId(String.valueOf(product.getId()));
tbCashierCart.setSalePrice(productSku.getSalePrice()); tbCashierCart.setSalePrice(productSku.getSalePrice());
@ -451,7 +455,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
cashierCartRepository.save(tbCashierCart); cashierCartRepository.save(tbCashierCart);
} }
if (StrUtil.isNotBlank(addCartDTO.getTableId())) {
setRedisTableCartInfo(addCartDTO.getTableId(), addCartDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true); setRedisTableCartInfo(addCartDTO.getTableId(), addCartDTO.getShopId().toString(), Collections.singletonList(tbCashierCart), true);
}
return tbCashierCart; return tbCashierCart;
} }
@ -483,16 +489,17 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public void removeCart(RemoveCartDTO removeCartDTO) { 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<TbCashierCart>() TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, removeCartDTO.getShopId()) .eq(TbCashierCart::getShopId, removeCartDTO.getShopId())
.eq(TbCashierCart::getUseType, removeCartDTO.getUseType())
.eq(TbCashierCart::getId, removeCartDTO.getCartId())); .eq(TbCashierCart::getId, removeCartDTO.getCartId()));
if (cashierCart == null) { if (cashierCart == null) {
throw new BadRequestException("购物车商品不存在"); 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("已下单商品仅支持退单操作"); throw new BadRequestException("已下单商品仅支持退单操作");
} }
@ -501,12 +508,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.eq(TbOrderDetail::getShopId, cashierCart.getShopId()) .eq(TbOrderDetail::getShopId, cashierCart.getShopId())
.eq(TbOrderDetail::getProductId, cashierCart.getProductId()) .eq(TbOrderDetail::getProductId, cashierCart.getProductId())
.eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId()) .eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId())
.eq(TbOrderDetail::getUseType, removeCartDTO.getUseType())
.isNull(TbOrderDetail::getPlaceNum) .isNull(TbOrderDetail::getPlaceNum)
.eq(TbOrderDetail::getOrderId, cashierCart.getOrderId())); .eq(TbOrderDetail::getOrderId, cashierCart.getOrderId()));
} }
cashierCartMapper.deleteById(cashierCart.getId()); cashierCartMapper.deleteById(cashierCart.getId());
if (removeCartDTO.getTableId() != null) {
// 清空购物车 出票 // 清空购物车 出票
long carCount = countCar(cashierCart.getTableId(), cashierCart.getShopId(), cashierCart.getMasterId()); long carCount = countCar(cashierCart.getTableId(), cashierCart.getShopId(), cashierCart.getMasterId());
@ -514,13 +523,13 @@ public class TbShopTableServiceImpl implements TbShopTableService {
if (cashierCart.getOrderId() != null && carCount < 1) { if (cashierCart.getOrderId() != null && carCount < 1) {
rabbitMsgUtils.printTicket(String.valueOf(cashierCart.getOrderId())); 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 @Override
public void returnCart(RemoveCartDTO removeCartDTO) { public void returnCart(ReturnOrderDTO removeCartDTO) {
rabbitMsgUtils.printDishesReturnTicket(4450, 9313); rabbitMsgUtils.printDishesReturnTicket(4450, 9313);
int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString()); int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString());
@ -562,13 +571,17 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public void clearCart(ClearCartDTO clearCartDTO) { public void clearCart(ClearCartDTO clearCartDTO) {
String orderId = redisTemplate.opsForValue().get(RedisConstant.getCurrentOrderKey(clearCartDTO.getTableId().toString(), clearCartDTO.getShopId())); String orderId;
int currentPlaceNum = getCurrentPlaceNum(clearCartDTO.getTableId().toString(), clearCartDTO.getShopId()); if (clearCartDTO.getTableId() != null) {
orderId = getCurrentOrderId(clearCartDTO.getTableId().toString(), clearCartDTO.getShopId());
} else {
orderId = "";
}
cashierCartMapper.delete(new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, clearCartDTO.getShopId()) .eq(TbCashierCart::getShopId, clearCartDTO.getShopId())
.eq(TbCashierCart::getTableId, clearCartDTO.getTableId()) .isNull(TbCashierCart::getPlaceNum)
.eq(TbCashierCart::getPlaceNum, currentPlaceNum) .eq(TbCashierCart::getUseType, clearCartDTO.getUseType())
.and(q -> { .and(q -> {
q.eq(TbCashierCart::getMasterId, clearCartDTO.getMasterId()) q.eq(TbCashierCart::getMasterId, clearCartDTO.getMasterId())
.or() .or()
@ -580,20 +593,14 @@ public class TbShopTableServiceImpl implements TbShopTableService {
q.eq(TbCashierCart::getOrderId, orderId) q.eq(TbCashierCart::getOrderId, orderId)
.or() .or()
.isNull(TbCashierCart::getOrderId); .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<TbOrderDetail>()
.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) { private long countCar(Long tableId, String shopId, String masterId) {
@ -606,11 +613,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public Map<String, Object> getCart(Long tableId, Integer page, public Map<String, Object> getCart(Long tableId, Integer page,
Integer size, Integer shopId, Integer vipUserId, String masterId) { Integer size, Integer shopId, String masterId, String useType) {
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getTableId, tableId)
.in(TbCashierCart::getStatus, "create", "refund", "return") .in(TbCashierCart::getStatus, "create", "refund", "return")
.eq(TbCashierCart::getShopId, shopId) .eq(TbCashierCart::getShopId, shopId)
.eq(TbCashierCart::getUseType, useType)
.and(query2 -> { .and(query2 -> {
query2.or(query3 -> { query2.or(query3 -> {
query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay())
@ -622,12 +629,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
})); }));
}); });
// if (vipUserId != null) { if (tableId != null) {
// queryWrapper.eq(TbCashierCart::getUserId, vipUserId); queryWrapper.eq(TbCashierCart::getTableId, tableId);
// }else { }
// queryWrapper.eq(TbCashierCart::getMasterId, masterId);
// queryWrapper.isNull(TbCashierCart::getUserId);
// }
com.baomidou.mybatisplus.extension.plugins.pagination.Page<TbCashierCart> cartPage = cashierCartMapper com.baomidou.mybatisplus.extension.plugins.pagination.Page<TbCashierCart> cartPage = cashierCartMapper
.selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page, size), queryWrapper); .selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page, size), queryWrapper);
@ -683,7 +687,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public void pack(PackCartDTO packCartDTO) { public void pack(PackCartDTO packCartDTO) {
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getTableId, packCartDTO.getTableId())
.eq(TbCashierCart::getShopId, packCartDTO.getShopId()) .eq(TbCashierCart::getShopId, packCartDTO.getShopId())
.in(TbCashierCart::getStatus, "create", "refund") .in(TbCashierCart::getStatus, "create", "refund")
.and(query2 -> { .and(query2 -> {
@ -697,11 +700,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
})); }));
}); });
// if (packCartDTO.getVipUserId() != null) { if (StrUtil.isNotBlank(packCartDTO.getTableId())) {
// queryWrapper.eq(TbCashierCart::getUserId, packCartDTO.getVipUserId()); queryWrapper.eq(TbCashierCart::getTableId, packCartDTO.getTableId());
// } else { }
// queryWrapper.isNull(TbCashierCart::getUserId);
// }
List<TbCashierCart> tbCashierCarts = cashierCartMapper.selectList(queryWrapper); List<TbCashierCart> tbCashierCarts = cashierCartMapper.selectList(queryWrapper);
tbCashierCarts.forEach(item -> { tbCashierCarts.forEach(item -> {
@ -925,7 +926,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
private final StringRedisTemplate redisTemplate; private final StringRedisTemplate redisTemplate;
@Override @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(); String account = tokenProvider.getSubject();
if (account == null) { if (account == null) {
throw new BadRequestException("token解析失败"); throw new BadRequestException("token解析失败");
@ -934,7 +935,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
String day = DateUtils.getDay(); String day = DateUtils.getDay();
JSONObject jsonObject = new JSONObject(); 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); String userCode = redisTemplate.opsForValue().get(key);
if (StringUtils.isEmpty(userCode) || "null".equals(userCode) || "#null".equals(userCode)) { if (StringUtils.isEmpty(userCode) || "null".equals(userCode) || "#null".equals(userCode)) {
@ -965,21 +966,24 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public TbOrderInfo createOrder(CreateOrderDTO createOrderDTO, boolean addMaterId, boolean isPrint) { public TbOrderInfo createOrder(CreateOrderDTO createOrderDTO, boolean addMaterId, boolean isPrint) {
return Utils.runFunAndCheckKey(() -> { return Utils.runFunAndCheckKey(() -> {
TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>() TbShopTable tbShopTable = null;
boolean tableFlag = StrUtil.isNotBlank(createOrderDTO.getTableId());
if (tableFlag) {
tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, createOrderDTO.getTableId()) .eq(TbShopTable::getQrcode, createOrderDTO.getTableId())
.in(TbShopTable::getStatus, "idle", "using")); .in(TbShopTable::getStatus, "idle", "using"));
if (tbShopTable == null) { if (tbShopTable == null) {
throw new BadRequestException("台桌未开台或不存在"); throw new BadRequestException("台桌未开台或不存在");
} }
}
// 传递orderId直接取否则取当前缓存id // 传递orderId直接取否则取当前缓存id
String currentOrderKey = RedisConstant.getCurrentOrderKey(createOrderDTO.getTableId(), String currentOrderKey = RedisConstant.getCurrentOrderKey(createOrderDTO.getTableId(),
createOrderDTO.getShopId().toString()); createOrderDTO.getShopId().toString());
String orderIdValue = redisTemplate.opsForValue().get(currentOrderKey); String orderIdValue = redisTemplate.opsForValue().get(currentOrderKey);
Integer orderId = orderIdValue == null ? null : Integer.parseInt(orderIdValue); 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; TbOrderInfo orderInfo = null;
@ -994,8 +998,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
String day = DateUtils.getDay(); String day = DateUtils.getDay();
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, createOrderDTO.getShopId()) .eq(TbCashierCart::getShopId, createOrderDTO.getShopId())
.eq(TbCashierCart::getTableId, createOrderDTO.getTableId()) .in(TbCashierCart::getStatus, "create")
.in(TbCashierCart::getStatus, "create", "refund") .eq(TbCashierCart::getUseType, createOrderDTO.getUseType())
.and(query2 -> { .and(query2 -> {
query2.or(query3 -> { query2.or(query3 -> {
query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) 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<TbCashierCart> cashierCarts = cashierCartMapper List<TbCashierCart> cashierCarts = cashierCartMapper
.selectList(queryWrapper); .selectList(queryWrapper);
if (cashierCarts.isEmpty()) { if (cashierCarts.isEmpty()) {
@ -1018,13 +1026,13 @@ public class TbShopTableServiceImpl implements TbShopTableService {
BigDecimal feeAmount = BigDecimal.ZERO; BigDecimal feeAmount = BigDecimal.ZERO;
BigDecimal saleAmount = 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<TbOrderDetail> orderDetails = new ArrayList<>(); List<TbOrderDetail> orderDetails = new ArrayList<>();
Integer mealNum = null; Integer mealNum = null;
boolean unAdd = cashierCarts.stream().noneMatch(item -> item.getPlaceNum() == 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("此次未添加新商品,清先添加商品"); throw new BadRequestException("此次未添加新商品,清先添加商品");
} }
for (TbCashierCart cashierCart : cashierCarts) { for (TbCashierCart cashierCart : cashierCarts) {
@ -1056,6 +1064,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId())); orderDetail.setShopId(Integer.valueOf(cashierCart.getShopId()));
orderDetail.setPackAmount(cashierCart.getPackFee()); orderDetail.setPackAmount(cashierCart.getPackFee());
orderDetail.setStatus("unpaid"); orderDetail.setStatus("unpaid");
orderDetail.setUseType(createOrderDTO.getUseType());
orderDetail.setProductImg(cashierCart.getCoverImg()); orderDetail.setProductImg(cashierCart.getCoverImg());
orderDetail.setCartId(cashierCart.getId()); orderDetail.setCartId(cashierCart.getId());
orderDetails.add(orderDetail); orderDetails.add(orderDetail);
@ -1066,7 +1075,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderDetail.setPlaceNum(placeNum); 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("请选择用餐人数"); throw new BadRequestException("请选择用餐人数");
} }
@ -1087,7 +1097,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderInfo.setProductAmount(saleAmount); orderInfo.setProductAmount(saleAmount);
orderInfo.setTradeDay(DateUtils.getDay()); orderInfo.setTradeDay(DateUtils.getDay());
orderInfo.setUseType(createOrderDTO.isPostPay() ? "postPay" : "afterPay"); orderInfo.setUseType(createOrderDTO.isPostPay() ? "postPay" : "afterPay");
orderInfo.setUserId(createOrderDTO.getVipUserId() == null ? null : String.valueOf(createOrderDTO.getVipUserId())); orderInfo.setUseType(createOrderDTO.getUseType());
orderInfo.setCreatedAt(DateUtil.current()); orderInfo.setCreatedAt(DateUtil.current());
if (!unAdd) { if (!unAdd) {
orderInfo.setPlaceNum(placeNum); orderInfo.setPlaceNum(placeNum);
@ -1115,10 +1125,10 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderInfo.setMasterId(createOrderDTO.getMasterId()); orderInfo.setMasterId(createOrderDTO.getMasterId());
orderInfo.setOutNumber(createOrderDTO.getMasterId()); orderInfo.setOutNumber(createOrderDTO.getMasterId());
orderInfo.setRemark(createOrderDTO.getNote()); orderInfo.setRemark(createOrderDTO.getNote());
orderInfo.setUserId(createOrderDTO.getVipUserId() == null ? null : String.valueOf(createOrderDTO.getVipUserId()));
orderInfo.setCreatedAt(DateUtil.current()); orderInfo.setCreatedAt(DateUtil.current());
orderInfo.setTableName(tbShopTable.getName()); orderInfo.setTableName(tbShopTable != null ? tbShopTable.getName() : null);
orderInfo.setPlaceNum(placeNum); orderInfo.setPlaceNum(placeNum);
orderInfo.setUseType(createOrderDTO.getUseType());
TbMerchantAccount merchantAccount = merchantAccountMapper.selectOne(new LambdaQueryWrapper<TbMerchantAccount>() TbMerchantAccount merchantAccount = merchantAccountMapper.selectOne(new LambdaQueryWrapper<TbMerchantAccount>()
.eq(TbMerchantAccount::getShopId, createOrderDTO.getShopId()) .eq(TbMerchantAccount::getShopId, createOrderDTO.getShopId())
.eq(TbMerchantAccount::getStatus, 1)); .eq(TbMerchantAccount::getStatus, 1));
@ -1128,8 +1138,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
orderInfo.setMerchantId(merchantAccount.getId().toString()); orderInfo.setMerchantId(merchantAccount.getId().toString());
orderInfoMapper.insert(orderInfo); orderInfoMapper.insert(orderInfo);
// 台桌下单才保存订单信息
if (tableFlag) {
redisTemplate.opsForValue().set(currentOrderKey, orderInfo.getId().toString()); redisTemplate.opsForValue().set(currentOrderKey, orderInfo.getId().toString());
} }
}
// 添加订单详细数据 // 添加订单详细数据
@ -1166,8 +1179,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 后付费不增加当前台桌取餐号 // 后付费不增加当前台桌取餐号
if (createOrderDTO.isPostPay()) { if (createOrderDTO.isPostPay()) {
addGlobalCode(day, "pc", String.valueOf(createOrderDTO.getShopId())); 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()))) { if (!createOrderDTO.isPostPay() || (addMaterId && "pending".equals(orderInfo.getStatus()))) {
@ -1225,6 +1236,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
} }
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getUseType, pendingDTO.getUseType())
.eq(TbCashierCart::getShopId, pendingDTO.getShopId()); .eq(TbCashierCart::getShopId, pendingDTO.getShopId());
if (!pendingDTO.getIsPending()) { if (!pendingDTO.getIsPending()) {
@ -1234,9 +1246,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
queryWrapper.eq(TbCashierCart::getOrderId, pendingDTO.getOrderId()); queryWrapper.eq(TbCashierCart::getOrderId, pendingDTO.getOrderId());
} else { } else {
queryWrapper.eq(TbCashierCart::getTableId, pendingDTO.getTableId()) queryWrapper
.eq(TbCashierCart::getStatus, "create") .eq(TbCashierCart::getStatus, "create")
.eq(TbCashierCart::getTableId, pendingDTO.getTableId())
.and(query2 -> { .and(query2 -> {
query2.or(query3 -> { query2.or(query3 -> {
query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay()) query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay())
@ -1247,12 +1258,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.eq(TbCashierCart::getMasterId, ""); .eq(TbCashierCart::getMasterId, "");
})); }));
}); });
// if (pendingDTO.getVipUserId() != null) {
// queryWrapper.eq(TbCashierCart::getUserId, pendingDTO.getVipUserId()); if (StrUtil.isNotBlank(pendingDTO.getTableId())) {
// }else { queryWrapper.eq(TbCashierCart::getTableId, pendingDTO.getTableId());
// queryWrapper.eq(TbCashierCart::getMasterId, pendingDTO.getMasterId()) }
// .isNull(TbCashierCart::getUserId);
// }
} }
List<TbCashierCart> cashierCarts = cashierCartMapper List<TbCashierCart> cashierCarts = cashierCartMapper
@ -1273,22 +1283,22 @@ public class TbShopTableServiceImpl implements TbShopTableService {
createOrderDTO.setTableId(pendingDTO.getTableId()); createOrderDTO.setTableId(pendingDTO.getTableId());
createOrderDTO.setShopId(pendingDTO.getShopId()); createOrderDTO.setShopId(pendingDTO.getShopId());
createOrderDTO.setMasterId(pendingDTO.getMasterId()); createOrderDTO.setMasterId(pendingDTO.getMasterId());
createOrderDTO.setVipUserId(pendingDTO.getVipUserId());
createOrderDTO.setNote(pendingDTO.getNote()); createOrderDTO.setNote(pendingDTO.getNote());
createOrderDTO.setUseType(pendingDTO.getUseType());
orderId = createOrder(createOrderDTO, true, false).getId(); orderId = createOrder(createOrderDTO, true, false).getId();
} }
TbOrderDetail orderDetail = new TbOrderDetail(); TbOrderDetail orderDetail = new TbOrderDetail();
orderDetail.setStatus(pendingDTO.getIsPending() ? "pending" : "cancelled"); orderDetail.setStatus(pendingDTO.getIsPending() ? "pending" : "unpaid");
orderDetailMapper.update(orderDetail, new LambdaUpdateWrapper<TbOrderDetail>() orderDetailMapper.update(orderDetail, new LambdaUpdateWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getShopId, pendingDTO.getIsPending()) .eq(TbOrderDetail::getShopId, pendingDTO.getShopId())
.eq(TbOrderDetail::getOrderId, orderId)); .eq(TbOrderDetail::getOrderId, orderId));
TbOrderInfo orderInfo = new TbOrderInfo(); TbOrderInfo orderInfo = new TbOrderInfo();
orderInfo.setId(orderId); orderInfo.setId(orderId);
orderInfo.setStatus(pendingDTO.getIsPending() ? "pending" : "cancelled"); orderInfo.setStatus(pendingDTO.getIsPending() ? "pending" : "unpaid");
orderInfoMapper.updateById(orderInfo); orderInfoMapper.updateById(orderInfo);
TbCashierCart cashierCart = new TbCashierCart(); 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<TbShopTable>() mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, cashierCart.getTableId()) .eq(TbShopTable::getQrcode, cashierCart.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.PENDING.getState())); .set(TbShopTable::getStatus, TableStateEnum.PENDING.getState()));
} }
if (StrUtil.isNotBlank(pendingDTO.getTableId())) {
redisTemplate.delete(RedisConstant.getCurrentOrderKey(pendingDTO.getTableId(), pendingDTO.getShopId().toString())); redisTemplate.delete(RedisConstant.getCurrentOrderKey(pendingDTO.getTableId(), pendingDTO.getShopId().toString()));
}
return orderInfoMapper.selectById(orderId); return orderInfoMapper.selectById(orderId);
} }
@Override @Override
public Object getCar(Integer shopId, String tableId) { public Object getCar(Integer shopId, String tableId, String useType) {
ArrayList<Map<String, Object>> data = new ArrayList<>(); ArrayList<Map<String, Object>> data = new ArrayList<>();
List<PendingCountVO> pendingCountVOS = cashierCartMapper.countPending(shopId, tableId, DateUtils.getDay()); List<PendingCountVO> pendingCountVOS = cashierCartMapper.countPending(shopId, tableId, DateUtils.getDay(), useType);
List<TbCashierCart> tbCashierCarts = cashierCartMapper.selectList(new LambdaQueryWrapper<TbCashierCart>() LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, shopId) .eq(TbCashierCart::getShopId, shopId)
.eq(TbCashierCart::getTableId, tableId) .eq(TbCashierCart::getUseType, useType)
.eq(TbCashierCart::getStatus, "refund")); .eq(TbCashierCart::getStatus, "refund");
if (StrUtil.isNotBlank(tableId)) {
queryWrapper.eq(TbCashierCart::getTableId, tableId);
}
List<TbCashierCart> tbCashierCarts = cashierCartMapper.selectList(queryWrapper);
ArrayList<Integer> skuIds = new ArrayList<>(); ArrayList<Integer> skuIds = new ArrayList<>();
tbCashierCarts.forEach(item -> { tbCashierCarts.forEach(item -> skuIds.add(Integer.valueOf(item.getSkuId())));
skuIds.add(Integer.valueOf(item.getSkuId()));
});
List<TbProductSku> skuList = productSkuRepository.findAllById(skuIds); List<TbProductSku> skuList = productSkuRepository.findAllById(skuIds);
@ -1530,7 +1545,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override @Override
public Object choseTable(ChoseTableDTO choseTableDTO) { 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(), String currentOrderId = choseTableDTO.getOrderId() == null ? getCurrentOrderId(choseTableDTO.getOldTableId(),
choseTableDTO.getShopId().toString()) : choseTableDTO.getOrderId().toString(); choseTableDTO.getShopId().toString()) : choseTableDTO.getOrderId().toString();
@ -1598,6 +1613,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId()) .eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId())
.eq(TbCashierCart::getProductId, "-999") .eq(TbCashierCart::getProductId, "-999")
.eq(TbCashierCart::getSkuId, "-999") .eq(TbCashierCart::getSkuId, "-999")
.eq(TbCashierCart::getUseType, choseCountDTO.getUseType())
.eq(TbCashierCart::getTradeDay, cn.ysk.cashier.utils.DateUtils.getDay()) .eq(TbCashierCart::getTradeDay, cn.ysk.cashier.utils.DateUtils.getDay())
.eq(TbCashierCart::getTableId, choseCountDTO.getTableId()); .eq(TbCashierCart::getTableId, choseCountDTO.getTableId());
TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query); TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query);

View File

@ -100,11 +100,11 @@ public interface TbShopTableService {
void removeCart(RemoveCartDTO removeCartDTO); void removeCart(RemoveCartDTO removeCartDTO);
void returnCart(RemoveCartDTO removeCartDTO); void returnCart(ReturnOrderDTO removeCartDTO);
void clearCart(ClearCartDTO clearCartDTO); void clearCart(ClearCartDTO clearCartDTO);
Map<String, Object> getCart(Long tableId, Integer page, Integer size, Integer shopId, Integer vipUserId, String masterId); Map<String, Object> getCart(Long tableId, Integer page, Integer size, Integer shopId, String masterId, String useType);
TbCashierCart updateCart(UpdateCartDTO updateCartDTO); TbCashierCart updateCart(UpdateCartDTO updateCartDTO);
@ -112,11 +112,11 @@ public interface TbShopTableService {
Object createOrder(CreateOrderDTO createOrderDTO, boolean addMasterId, boolean isPrint); 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 pending(PendingDTO pendingDTO);
Object getCar(Integer shopId, String tableId); Object getCar(Integer shopId, String tableId, String useType);
Object getPayType(Integer shopId); Object getPayType(Integer shopId);

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.ysk.cashier.mybatis.mapper.TbCashierCartMapper">
<select id="countPending" resultType="cn.ysk.cashier.vo.PendingCountVO">
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.trade_day=#{day} and a.use_type=#{useType}
<if test="tableId != null and tableId != ''">
and a.table_id=#{tableId}
</if>
GROUP BY a.id ORDER BY a.id desc
</select>
</mapper>