1.代客下单 会员支付,台桌状态问题

This commit is contained in:
SongZhang 2024-08-23 11:06:26 +08:00
parent ce54b66205
commit f8a9022064
4 changed files with 67 additions and 59 deletions

View File

@ -153,6 +153,8 @@ public class TbCashierCart implements Serializable {
@Column(name = "`uuid`")
@ApiModelProperty(value = "uuid")
private String uuid;
@Column(name = "`sku_name`")
private String skuName;
public void copy(TbCashierCart source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));

View File

@ -1,11 +1,15 @@
package cn.ysk.cashier.service;
import cn.ysk.cashier.dto.ScanPayDTO;
import cn.ysk.cashier.dto.shoptable.PayDTO;
import cn.ysk.cashier.pojo.order.TbOrderInfo;
import javax.validation.constraints.NotNull;
public interface TbPayService {
void scanPay(ScanPayDTO scanPayDTO);
void vipPay(@NotNull Integer shopId, @NotNull Integer orderId);
TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId);
TbOrderInfo cashPay(PayDTO payDTO);
}

View File

@ -3,6 +3,8 @@ package cn.ysk.cashier.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.ysk.cashier.dto.ScanPayDTO;
import cn.ysk.cashier.dto.shoptable.PayDTO;
import cn.ysk.cashier.enums.TableStateEnum;
import cn.ysk.cashier.exception.BadRequestException;
import cn.ysk.cashier.mybatis.entity.TbShopUser;
import cn.ysk.cashier.mybatis.entity.TbOrderPayment;
@ -14,6 +16,7 @@ import cn.ysk.cashier.pojo.order.TbCashierCart;
import cn.ysk.cashier.pojo.order.TbOrderDetail;
import cn.ysk.cashier.pojo.order.TbOrderInfo;
import cn.ysk.cashier.pojo.shop.TbMerchantThirdApply;
import cn.ysk.cashier.pojo.shop.TbShopTable;
import cn.ysk.cashier.repository.shop.TbMerchantThirdApplyRepository;
import cn.ysk.cashier.service.TbPayService;
import cn.ysk.cashier.utils.RabbitMsgUtils;
@ -50,9 +53,11 @@ public class TbPayServiceImpl implements TbPayService {
private final TbOrderDetailMapper orderDetailMapper;
private final RabbitTemplate rabbitTemplate;
private final RabbitMsgUtils rabbitMsgUtils;
private final MpShopTableMapper mpShopTableMapper;
public TbPayServiceImpl(TbOrderInfoMapper orderInfoMapper, TbCashierCartMapper cashierCartMapper, TbMerchantThirdApplyRepository merchantThirdApplyRepository, TbOrderPaymentService orderPaymentService, TbShopPayTypeMapper shopPayTypeMapper, TbOrderDetailMapper orderDetailMapper, RabbitTemplate rabbitTemplate, RabbitMsgUtils rabbitMsgUtils, TbMShopUserMapper shopUserMapper, TbShopUserFlowMapper shopUserFlowMapper) {
public TbPayServiceImpl(TbOrderInfoMapper orderInfoMapper, TbCashierCartMapper cashierCartMapper, TbMerchantThirdApplyRepository merchantThirdApplyRepository, TbOrderPaymentService orderPaymentService, TbShopPayTypeMapper shopPayTypeMapper, TbOrderDetailMapper orderDetailMapper, RabbitTemplate rabbitTemplate, RabbitMsgUtils rabbitMsgUtils, MpShopTableMapper mpShopTableMapper, TbMShopUserMapper shopUserMapper, TbShopUserFlowMapper shopUserFlowMapper) {
this.orderInfoMapper = orderInfoMapper;
this.cashierCartMapper = cashierCartMapper;
this.merchantThirdApplyRepository = merchantThirdApplyRepository;
@ -61,6 +66,7 @@ public class TbPayServiceImpl implements TbPayService {
this.orderDetailMapper = orderDetailMapper;
this.rabbitTemplate = rabbitTemplate;
this.rabbitMsgUtils = rabbitMsgUtils;
this.mpShopTableMapper = mpShopTableMapper;
this.shopUserMapper = shopUserMapper;
this.shopUserFlowMapper = shopUserFlowMapper;
}
@ -291,7 +297,7 @@ public class TbPayServiceImpl implements TbPayService {
private final TbShopUserFlowMapper shopUserFlowMapper;
@Override
public void vipPay(@NotNull Integer shopId, @NotNull Integer orderId) {
public TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId) {
TbOrderInfo orderInfo = orderInfoMapper.selectById(orderId);
@ -341,20 +347,49 @@ public class TbPayServiceImpl implements TbPayService {
orderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, orderId)
.set(TbOrderDetail::getStatus, "closed"));
log.info("更新购物车:{}", cartCount);
return orderInfo;
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", null);
jsonObject.put("type", "create");
jsonObject.put("orderId", orderId);
@Override
public TbOrderInfo cashPay(PayDTO payDTO) {
TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, payDTO.getOrderId())
.eq(TbOrderInfo::getShopId, payDTO.getShopId()));
rabbitMsgUtils.sendOrderCollectMsg(jsonObject);
rabbitMsgUtils.printTicket(String.valueOf(orderId));
if (orderInfo == null) {
throw new BadRequestException("订单信息不存在");
}
// 发送库存记录mq消息
JSONObject mqData = new JSONObject();
mqData.put("orderId", orderId);
mqData.put("type", "pc");
rabbitMsgUtils.sendStockMsg(mqData);
if (!"unpaid".equals(orderInfo.getStatus())) {
throw new BadRequestException("此订单不处于未支付状态");
}
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.PAYING.getState()));
// int count = shopInfoRepository.countSelectByShopIdAndPayType(orderInfo.getShopId(), "cash");
// if (count < 1) {
// return Result.fail(CodeEnum.PAYTYPENOEXIST);
// }
orderInfo.setPayAmount(orderInfo.getOrderAmount());
orderInfo.setPayType("cash");
orderInfo.setStatus("closed");
orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo()));
orderInfoMapper.updateById(orderInfo);
//更新购物车状态
TbCashierCart cashierCart = new TbCashierCart();
cashierCart.setStatus("final");
int cartCount = cashierCartMapper.update(cashierCart, new LambdaUpdateWrapper<TbCashierCart>()
.eq(TbCashierCart::getOrderId, payDTO.getOrderId()));
TbOrderDetail orderDetail = new TbOrderDetail();
orderDetail.setStatus("closed");
orderDetailMapper.update(orderDetail, new LambdaUpdateWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, payDTO.getOrderId()));
return orderInfo;
}
}

View File

@ -349,6 +349,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
tbCashierCart.setIsGift(String.valueOf(addCartDTO.isGift()));
tbCashierCart.setSalePrice(productSku.getSalePrice());
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice()));
tbCashierCart.setSkuName(productSku.getSpecSnap());
if (!addCartDTO.isPack()) {
tbCashierCart.setPackFee(BigDecimal.ZERO);
} else {
@ -1022,60 +1023,26 @@ public class TbShopTableServiceImpl implements TbShopTableService {
@Override
public Object pay(PayDTO payDTO) {
TbOrderInfo orderInfo = null;
switch (payDTO.getPayType()) {
case "vipPay":
tbPayServiceImpl.vipPay(payDTO.getShopId(), payDTO.getOrderId());
return null;
orderInfo = tbPayServiceImpl.vipPay(payDTO.getShopId(), payDTO.getOrderId());
break;
case "cashPay":
orderInfo = tbPayServiceImpl.cashPay(payDTO);
}
TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaUpdateWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getId, payDTO.getOrderId())
.eq(TbOrderInfo::getShopId, payDTO.getShopId()));
if (orderInfo == null) {
throw new BadRequestException("订单信息不存在");
}
if (!"unpaid".equals(orderInfo.getStatus())) {
return new BadRequestException("此订单不处于未支付状态");
}
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.PAYING.getState()));
// int count = shopInfoRepository.countSelectByShopIdAndPayType(orderInfo.getShopId(), "cash");
// if (count < 1) {
// return Result.fail(CodeEnum.PAYTYPENOEXIST);
// }
orderInfo.setPayAmount(orderInfo.getOrderAmount());
orderInfo.setPayType("cash");
orderInfo.setStatus("closed");
orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo()));
orderInfoMapper.updateById(orderInfo);
//更新购物车状态
TbCashierCart cashierCart = new TbCashierCart();
cashierCart.setStatus("final");
int cartCount = cashierCartMapper.update(cashierCart, new LambdaUpdateWrapper<TbCashierCart>()
.eq(TbCashierCart::getOrderId, payDTO.getOrderId()));
TbOrderDetail orderDetail = new TbOrderDetail();
orderDetail.setStatus("closed");
orderDetailMapper.update(orderDetail, new LambdaUpdateWrapper<TbOrderDetail>()
.eq(TbOrderDetail::getOrderId, payDTO.getOrderId()));
log.info("更新购物车:{}", cartCount);
log.info("更新购物车");
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", null);
jsonObject.put("type", "create");
jsonObject.put("orderId", payDTO.getOrderId());
rabbitTemplate.convertAndSend(RabbitConstants.CART_ORDER_COLLECT_PUT, RabbitConstants.CART_ORDER_COLLECT_ROUTINGKEY_PUT, jsonObject.toJSONString(), new CorrelationData(UUID.randomUUID().toString()));
jsonObject.put("orderId", orderInfo.getId());
// 打印消息
rabbitMsgUtils.sendOrderCollectMsg(jsonObject);
if (StrUtil.isBlank(orderInfo.getUseType()) || orderInfo.getUseType().equals("afterPay")) {
rabbitTemplate.convertAndSend(RabbitConstants.PRINT_MECHINE_COLLECT_PUT, RabbitConstants.PRINT_MECHINE_COLLECT_ROUTINGKEY_PUT, payDTO.getOrderId().toString(), new CorrelationData(UUID.randomUUID().toString()));
rabbitMsgUtils.printTicket(String.valueOf(orderInfo.getId()));
}
// 发送库存记录mq消息