1.代客下单 退单接口 选择台桌 选择人数
This commit is contained in:
parent
6096f91b6c
commit
10290bd37b
|
|
@ -19,4 +19,9 @@ public interface RabbitConstants {
|
|||
// 售出记录
|
||||
String EXCHANGE_STOCK_RECORD = "exchange.stock.record";
|
||||
String ROUTING_STOCK_RECORD_SALE = "routing.stock.record.sale";
|
||||
|
||||
// 菜品打印
|
||||
String EXCHANGE_PRINT = "exchange.print";
|
||||
String ROUTING_KEY_PRINT_DISHES = "routing.dishes.print";
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,6 +86,15 @@ public class TbPlaceController {
|
|||
tbShopTableService.removeCart(removeCartDTO);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@AnonymousAccess
|
||||
@PutMapping("/returnOrder")
|
||||
@Log("代客下单 退单")
|
||||
@ApiOperation("代客下单 清空购物车 /shop/table")
|
||||
public ResponseEntity<Object> returnOrder(@Validated @RequestBody RemoveCartDTO removeCartDTO) {
|
||||
tbShopTableService.returnCart(removeCartDTO);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@AnonymousAccess
|
||||
|
||||
@DeleteMapping("/clearCart")
|
||||
|
|
@ -192,6 +201,31 @@ public class TbPlaceController {
|
|||
return ResponseEntity.ok(tbShopTableService.pay(payDTO));
|
||||
}
|
||||
|
||||
@AnonymousAccess
|
||||
|
||||
@PutMapping("/choseTable")
|
||||
@Log("代客下单 选择台桌")
|
||||
@ApiOperation("代客下单 选择台桌 /shop/table")
|
||||
public ResponseEntity<Object> choseTable(
|
||||
@Validated @RequestBody ChoseTableDTO choseTableDTO
|
||||
) {
|
||||
|
||||
return ResponseEntity.ok(tbShopTableService.choseTable(choseTableDTO));
|
||||
}
|
||||
@AnonymousAccess
|
||||
|
||||
@PutMapping("/choseCount")
|
||||
@Log("代客下单 选择用餐人数")
|
||||
@ApiOperation("代客下单 选择台桌 /shop/table")
|
||||
public ResponseEntity<Object> choseCount(
|
||||
@Validated @RequestBody ChoseCountDTO choseCountDTO
|
||||
) {
|
||||
|
||||
return ResponseEntity.ok(tbShopTableService.choseCount(choseCountDTO));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@AnonymousAccess
|
||||
@PutMapping("/updateVip")
|
||||
@Log("代客下单 查询购物车")
|
||||
|
|
|
|||
|
|
@ -20,9 +20,10 @@ public class AddCartDTO {
|
|||
@NotEmpty
|
||||
private String tableId;
|
||||
@NotNull
|
||||
@Min(0)
|
||||
@Min(1)
|
||||
private Integer num;
|
||||
private boolean isPack;
|
||||
private boolean isGift;
|
||||
private Integer cartId;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package cn.ysk.cashier.dto.shoptable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
public class ChoseCountDTO {
|
||||
@NotEmpty
|
||||
private String masterId;
|
||||
@NotNull
|
||||
private Integer shopId;
|
||||
@NotEmpty
|
||||
private String tableId;
|
||||
@NotNull
|
||||
@Min(1)
|
||||
private Integer num;
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
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;
|
||||
|
||||
@Data
|
||||
public class ChoseTableDTO {
|
||||
@NotNull
|
||||
private Integer shopId;
|
||||
private Integer orderId;
|
||||
@NotNull
|
||||
private String newTableId;
|
||||
@NotEmpty
|
||||
private String oldTableId;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package cn.ysk.cashier.dto.shoptable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
public class ReturnOrderDTO {
|
||||
@NotNull
|
||||
private Integer cartId;
|
||||
@NotNull
|
||||
private Integer shopId;
|
||||
@NotNull
|
||||
private Long tableId;
|
||||
}
|
||||
|
|
@ -155,6 +155,8 @@ public class TbCashierCart implements Serializable {
|
|||
private String uuid;
|
||||
@Column(name = "`sku_name`")
|
||||
private String skuName;
|
||||
@Column(name = "`place_num`")
|
||||
private Integer placeNum;
|
||||
|
||||
public void copy(TbCashierCart source){
|
||||
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package cn.ysk.cashier.pojo.order;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.Data;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
|
@ -101,12 +102,17 @@ public class TbOrderDetail implements Serializable {
|
|||
|
||||
@Transient
|
||||
@ApiModelProperty(value = "退单数量")
|
||||
@TableField(exist = false)
|
||||
private Integer refundNumber;
|
||||
|
||||
@Column(name = "`is_vip`")
|
||||
@ApiModelProperty(value = "isVip")
|
||||
private Integer isVip;
|
||||
|
||||
@Column(name = "`place_num`")
|
||||
@ApiModelProperty(value = "place_num")
|
||||
private Integer placeNum;
|
||||
|
||||
public void copy(TbOrderDetail source){
|
||||
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -228,6 +228,9 @@ public class TbOrderInfo implements Serializable {
|
|||
private String isUseCoupon;
|
||||
@Column(name = "`use_type`")
|
||||
private String useType;
|
||||
@Column(name = "`place_num`")
|
||||
@ApiModelProperty(value = "place_num")
|
||||
private Integer placeNum;
|
||||
public void copy(TbOrderInfo source){
|
||||
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,14 +7,15 @@ import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
|||
import javax.validation.constraints.Max;
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public interface TbPayService {
|
||||
TbOrderInfo scanPay(PayDTO payDTO);
|
||||
TbOrderInfo scanPay(Integer shopId, String code, Integer merchantId, Integer memberId, BigDecimal payMount, TbOrderInfo orderInfo);
|
||||
|
||||
TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId, Double discount, Integer vipUserId);
|
||||
void vipPay(BigDecimal payMount, Integer vipUserId);
|
||||
|
||||
TbOrderInfo cashPay(PayDTO payDTO);
|
||||
|
||||
TbOrderInfo memberAccountPay(String memberId, String shopId, String accountCode, Integer orderId, Double discount) throws Exception;
|
||||
TbOrderInfo memberAccountPay(String memberId, String shopId, String accountCode, TbOrderInfo orderInfo, BigDecimal payMount) throws Exception;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,29 +106,20 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public TbOrderInfo scanPay(PayDTO scanPayDTO) {
|
||||
if (StrUtil.isBlank(scanPayDTO.getCode())) {
|
||||
public TbOrderInfo scanPay(Integer shopId, String code, Integer merchantId, Integer memberId, BigDecimal payMount, TbOrderInfo orderInfo) {
|
||||
if (StrUtil.isBlank(code)) {
|
||||
throw new BadRequestException("无效码");
|
||||
}
|
||||
|
||||
TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaUpdateWrapper<TbOrderInfo>()
|
||||
.in(TbOrderInfo::getStatus, "unpaid", "paying")
|
||||
.eq(TbOrderInfo::getId, scanPayDTO.getOrderId())
|
||||
.eq(TbOrderInfo::getShopId, scanPayDTO.getShopId()));
|
||||
|
||||
if (orderInfo == null) {
|
||||
throw new BadRequestException("订单不存在或已支付");
|
||||
}
|
||||
|
||||
|
||||
if (ObjectUtil.isNull(orderInfo.getMerchantId()) || ObjectUtil.isEmpty(orderInfo.getMerchantId())) {
|
||||
if (merchantId == null) {
|
||||
throw new BadRequestException("订单商户id为空");
|
||||
}
|
||||
|
||||
|
||||
List<TbCashierCart> cashierCarts = cashierCartMapper.selectList(new LambdaUpdateWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getShopId, scanPayDTO.getShopId())
|
||||
.eq(TbCashierCart::getOrderId, scanPayDTO.getOrderId()));
|
||||
.eq(TbCashierCart::getShopId, shopId)
|
||||
.eq(TbCashierCart::getOrderId, orderInfo.getId()));
|
||||
if (cashierCarts.isEmpty()) {
|
||||
throw new BadRequestException("购物车为空");
|
||||
}
|
||||
|
|
@ -138,10 +129,8 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
body.append(cashierCart.getName());
|
||||
}
|
||||
|
||||
BigDecimal payMount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(scanPayDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP);
|
||||
|
||||
|
||||
TbMerchantThirdApply thirdApply = merchantThirdApplyRepository.getById(Integer.valueOf(orderInfo.getMerchantId()));
|
||||
TbMerchantThirdApply thirdApply = merchantThirdApplyRepository.getById(merchantId);
|
||||
if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) {
|
||||
throw new BadRequestException("三方支付信息不存在");
|
||||
}
|
||||
|
|
@ -149,7 +138,7 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
String payType;
|
||||
String payName;
|
||||
String qpay;
|
||||
String payTypeCode = scanPayDTO.getCode().substring(0, 2);// 判断收款码
|
||||
String payTypeCode = code.substring(0, 2);// 判断收款码
|
||||
|
||||
if(Integer.parseInt(payTypeCode) >=25 && Integer.parseInt(payTypeCode) <= 30){
|
||||
payType = "aliPay";
|
||||
|
|
@ -168,32 +157,32 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
}
|
||||
|
||||
long count = shopPayTypeMapper.selectCount(new LambdaUpdateWrapper<TbShopPayType>()
|
||||
.eq(TbShopPayType::getShopId, scanPayDTO.getShopId())
|
||||
.eq(TbShopPayType::getShopId, shopId)
|
||||
.eq(TbShopPayType::getIsDisplay, 1)
|
||||
.eq(TbShopPayType::getPayType, qpay));
|
||||
if (count < 1) {
|
||||
throw new BadRequestException("未到找支付方式");
|
||||
}
|
||||
|
||||
TbOrderPayment payment = orderPaymentService.getById(scanPayDTO.getOrderId());
|
||||
TbOrderPayment payment = orderPaymentService.getById(orderInfo.getId());
|
||||
if (ObjectUtil.isEmpty(payment) || payment == null) {
|
||||
payment = new TbOrderPayment();
|
||||
payment.setPayTypeId("ysk");
|
||||
payment.setAmount(payMount.doubleValue());
|
||||
payment.setPaidAmount(orderInfo.getPayAmount().doubleValue());
|
||||
payment.setPaidAmount(payMount.doubleValue());
|
||||
payment.setHasRefundAmount((double) 0);
|
||||
payment.setPayName(payName);
|
||||
payment.setPayType(payType);
|
||||
payment.setReceived(payment.getAmount());
|
||||
payment.setChangeFee((double) 0);
|
||||
payment.setMemberId(orderInfo.getMemberId());
|
||||
payment.setShopId(orderInfo.getShopId());
|
||||
payment.setOrderId(orderInfo.getId().toString());
|
||||
payment.setMemberId(String.valueOf(memberId));
|
||||
payment.setShopId(String.valueOf(shopId));
|
||||
payment.setOrderId(String.valueOf(orderInfo.getId()));
|
||||
payment.setCreatedAt(System.currentTimeMillis());
|
||||
payment.setAuthCode(scanPayDTO.getCode());
|
||||
payment.setAuthCode(code);
|
||||
orderPaymentService.save(payment);
|
||||
} else {
|
||||
payment.setAuthCode(scanPayDTO.getCode());
|
||||
payment.setAuthCode(code);
|
||||
payment.setUpdatedAt(System.currentTimeMillis());
|
||||
orderPaymentService.updateById(payment);
|
||||
}
|
||||
|
|
@ -202,15 +191,13 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
orderInfo.setPayAmount(payMount);
|
||||
orderInfo.setPayType(qpay);
|
||||
orderInfo.setUpdatedAt(System.currentTimeMillis());
|
||||
orderInfoMapper.update(orderInfo, new LambdaUpdateWrapper<TbOrderInfo>()
|
||||
.eq(TbOrderInfo::getId, scanPayDTO.getOrderId()));
|
||||
|
||||
if ("ysk".equals(thirdPayType)) {
|
||||
|
||||
ScanPayReq scanPayReq = new ScanPayReq();
|
||||
scanPayReq.setAppId(thirdApply.getAppId());
|
||||
scanPayReq.setTimestamp(System.currentTimeMillis());
|
||||
scanPayReq.setAuthCode(scanPayDTO.getCode());
|
||||
scanPayReq.setAuthCode(code);
|
||||
scanPayReq.setNotifyUrl(backUrl);
|
||||
scanPayReq.setConsumeFee(BigDecimal.valueOf(payment.getAmount()).setScale(2, RoundingMode.DOWN).toPlainString());
|
||||
|
||||
|
|
@ -231,20 +218,20 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
orderInfo.setStatus("closed");
|
||||
orderInfo.setPayOrderNo(object.getJSONObject("data").get("orderNumber").toString());
|
||||
orderInfoMapper.update(orderInfo, new LambdaQueryWrapper<TbOrderInfo>()
|
||||
.eq(TbOrderInfo::getId, scanPayDTO.getOrderId()));
|
||||
.eq(TbOrderInfo::getId, orderInfo.getId()));
|
||||
|
||||
//更新购物车状态
|
||||
TbCashierCart cashierCart = new TbCashierCart();
|
||||
cashierCart.setStatus("final");
|
||||
int cartCount = cashierCartMapper.update(cashierCart, new LambdaQueryWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getOrderId, scanPayDTO.getOrderId()));
|
||||
.eq(TbCashierCart::getOrderId, orderInfo.getId()));
|
||||
log.info("更新购物车:{}", cartCount);
|
||||
|
||||
//更新子单状态
|
||||
TbOrderDetail orderDetail = new TbOrderDetail();
|
||||
orderDetail.setStatus("closed");
|
||||
orderDetailMapper.update(orderDetail, new LambdaQueryWrapper<TbOrderDetail>()
|
||||
.eq(TbOrderDetail::getOrderId, scanPayDTO.getOrderId()));
|
||||
.eq(TbOrderDetail::getOrderId, orderInfo.getId()));
|
||||
|
||||
|
||||
return orderInfo;
|
||||
|
|
@ -282,7 +269,7 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
reqbody, reqbody,
|
||||
BigDecimal.valueOf(payment.getAmount()).setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(),
|
||||
payType.equals("wechatPay") ? thirdApply.getSmallAppid() : null,
|
||||
scanPayDTO.getCode(), DateUtils.getSsdfTimes(), thirdApply.getStoreId(), callBack, thirdApply.getAppToken());
|
||||
code, DateUtils.getSsdfTimes(), thirdApply.getStoreId(), callBack, thirdApply.getAppToken());
|
||||
log.info("响应信息, {}", publicResp);
|
||||
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
|
||||
if ("000000".equals(publicResp.getCode())) {
|
||||
|
|
@ -331,41 +318,25 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public TbOrderInfo vipPay(@NotNull Integer shopId, @NotNull Integer orderId, Double discount, Integer vipUserId) {
|
||||
|
||||
TbOrderInfo orderInfo = orderInfoMapper.selectById(orderId);
|
||||
|
||||
if (ObjectUtil.isEmpty(orderInfo)) {
|
||||
throw new BadRequestException("订单不存在");
|
||||
}
|
||||
|
||||
if (!"unpaid".equals(orderInfo.getStatus()) && !"pending".equals(orderInfo.getStatus())) {
|
||||
throw new BadRequestException("订单非未支付状态");
|
||||
}
|
||||
|
||||
if (vipUserId != null) {
|
||||
orderInfo.setUserId(String.valueOf(vipUserId));
|
||||
}
|
||||
|
||||
public void vipPay(BigDecimal payMount, Integer vipUserId) {
|
||||
|
||||
// 扣减会员余额
|
||||
TbShopUser shopUser = shopUserMapper.selectOne(new LambdaUpdateWrapper<TbShopUser>()
|
||||
.eq(TbShopUser::getStatus, 1)
|
||||
.eq(TbShopUser::getId, orderInfo.getUserId()));
|
||||
.eq(TbShopUser::getId, vipUserId));
|
||||
|
||||
if (shopUser == null) {
|
||||
throw new BadRequestException("用户不存在或已被禁用");
|
||||
}
|
||||
|
||||
BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(discount)).setScale(2, RoundingMode.HALF_UP);
|
||||
long flag = shopUserMapper.decrBalance(Integer.valueOf(orderInfo.getUserId()), finalAmount);
|
||||
long flag = shopUserMapper.decrBalance(vipUserId, payMount);
|
||||
if (flag < 1) {
|
||||
throw new BadRequestException("余额不足或扣除余额失败");
|
||||
}
|
||||
|
||||
TbShopUserFlow userFlow = new TbShopUserFlow();
|
||||
userFlow.setAmount(finalAmount);
|
||||
userFlow.setBalance(shopUser.getAmount().subtract(finalAmount));
|
||||
userFlow.setAmount(payMount);
|
||||
userFlow.setBalance(shopUser.getAmount().subtract(payMount));
|
||||
userFlow.setShopUserId(shopUser.getId());
|
||||
userFlow.setBizCode("vipCardCash");
|
||||
userFlow.setBizName("余额支付");
|
||||
|
|
@ -373,22 +344,6 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
userFlow.setType("-");
|
||||
shopUserFlowMapper.insert(userFlow);
|
||||
|
||||
orderInfo.setPayAmount(finalAmount);
|
||||
orderInfo.setPayType("cash");
|
||||
orderInfo.setStatus("closed");
|
||||
orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo()));
|
||||
orderInfo.setDiscountRatio(BigDecimal.valueOf(discount));
|
||||
orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount));
|
||||
orderInfoMapper.updateById(orderInfo);
|
||||
//更新购物车状态
|
||||
int cartCount = cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getOrderId, orderId)
|
||||
.set(TbCashierCart::getStatus, "final"));
|
||||
|
||||
orderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>()
|
||||
.eq(TbOrderDetail::getOrderId, orderId)
|
||||
.set(TbOrderDetail::getStatus, "closed"));
|
||||
return orderInfo;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -442,33 +397,11 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
return orderInfo;
|
||||
}
|
||||
|
||||
public TbOrderInfo memberAccountPay(String memberId, String shopId, String accountCode, Integer orderId, Double discount) {
|
||||
public TbOrderInfo memberAccountPay(String memberId, String shopId, String accountCode, TbOrderInfo orderInfo, BigDecimal payMount) {
|
||||
if (StrUtil.isBlank(accountCode)) {
|
||||
throw new BadRequestException("无效码");
|
||||
}
|
||||
|
||||
TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaUpdateWrapper<TbOrderInfo>()
|
||||
.eq(TbOrderInfo::getId, orderId)
|
||||
.eq(TbOrderInfo::getShopId, shopId));
|
||||
|
||||
if (orderInfo == null) {
|
||||
throw new BadRequestException("订单不存在或已支付");
|
||||
}
|
||||
|
||||
if (!"unpaid".equals(orderInfo.getStatus()) && !"pending".equals(orderInfo.getStatus())) {
|
||||
throw new BadRequestException("此订单不处于未支付状态");
|
||||
}
|
||||
|
||||
BigDecimal payMount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(discount)).setScale(2, RoundingMode.HALF_UP);
|
||||
|
||||
long count = tbShopPayTypeMapper.selectCount(new LambdaQueryWrapper<TbShopPayType>()
|
||||
.eq(TbShopPayType::getShopId, shopId)
|
||||
.eq(TbShopPayType::getIsDisplay, 1)
|
||||
.eq(TbShopPayType::getPayType, "deposit"));
|
||||
if (count < 1) {
|
||||
throw new BadRequestException("未知支付方式");
|
||||
}
|
||||
|
||||
|
||||
TbShopUser user = null;
|
||||
|
||||
|
|
@ -520,22 +453,7 @@ public class TbPayServiceImpl implements TbPayService {
|
|||
orderInfo.setUserId(user.getUserId());
|
||||
orderInfo.setMemberId(user.getId().toString());
|
||||
orderInfo.setPayType("deposit");
|
||||
orderInfo.setStatus("closed");
|
||||
orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo()));
|
||||
orderInfoMapper.updateById(orderInfo);
|
||||
//更新购物车状态
|
||||
int cartCount = cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getId, orderId)
|
||||
.set(TbCashierCart::getStatus, "final"));
|
||||
|
||||
|
||||
orderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>()
|
||||
.eq(TbOrderDetail::getOrderId, orderId)
|
||||
.set(TbOrderDetail::getStatus, "closed"));
|
||||
|
||||
log.info("更新购物车:{}", cartCount);
|
||||
|
||||
|
||||
return orderInfo;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package cn.ysk.cashier.service.impl.shopimpl;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
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;
|
||||
|
|
@ -27,7 +28,9 @@ import cn.ysk.cashier.enums.ShopWxMsgTypeEnum;
|
|||
import cn.ysk.cashier.enums.TableStateEnum;
|
||||
import cn.ysk.cashier.exception.BadRequestException;
|
||||
import cn.ysk.cashier.mybatis.entity.TbShopOpenId;
|
||||
import cn.ysk.cashier.mybatis.entity.TbShopUserFlow;
|
||||
import cn.ysk.cashier.mybatis.mapper.*;
|
||||
import cn.ysk.cashier.pojo.TbShopPayType;
|
||||
import cn.ysk.cashier.pojo.order.TbCashierCart;
|
||||
import cn.ysk.cashier.pojo.order.TbOrderDetail;
|
||||
import cn.ysk.cashier.pojo.order.TbOrderInfo;
|
||||
|
|
@ -66,6 +69,8 @@ import org.springframework.data.domain.Page;
|
|||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
|
@ -105,6 +110,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
private final WxMsgUtils wxMsgUtils;
|
||||
private final TbShopPayTypeRepository payTypeRepository;
|
||||
private final MpShopTableMapper mpShopTableMapper;
|
||||
private final TbShopPayTypeMapper tbShopPayTypeMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 桌码前缀
|
||||
|
|
@ -322,10 +329,24 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
return shopTable;
|
||||
}
|
||||
|
||||
private int getCurrentPlaceNum(String tableId, String shopId) {
|
||||
String currentOrderKey = RedisConstant.getCurrentOrderKey(tableId,
|
||||
shopId);
|
||||
if (StrUtil.isBlank(currentOrderKey)) {
|
||||
return 1;
|
||||
}
|
||||
TbOrderInfo orderInfo = orderInfoMapper.selectOne(new LambdaQueryWrapper<TbOrderInfo>()
|
||||
.eq(TbOrderInfo::getUseType, "postPay")
|
||||
.eq(TbOrderInfo::getId, currentOrderKey).select(TbOrderInfo::getPlaceNum));
|
||||
return orderInfo == null ? 1 : orderInfo.getPlaceNum() + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TbCashierCart addCartForUser(AddCartDTO addCartDTO) {
|
||||
checkTableIsOpen(addCartDTO.getTableId());
|
||||
|
||||
int currentPlaceNum = getCurrentPlaceNum(addCartDTO.getShopId().toString(), addCartDTO.getTableId());
|
||||
|
||||
TbProductSku productSku = productMapper.selectSkuByIdAndShopId(addCartDTO.getShopId(), addCartDTO.getSkuId());
|
||||
TbProduct product = productMapper.selectByIdAndShopId(addCartDTO.getShopId(), addCartDTO.getProductId());
|
||||
|
||||
|
|
@ -344,6 +365,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
.eq(TbCashierCart::getSkuId, addCartDTO.getSkuId())
|
||||
.eq(TbCashierCart::getProductId, addCartDTO.getProductId())
|
||||
.eq(TbCashierCart::getTableId, addCartDTO.getTableId())
|
||||
.eq(TbCashierCart::getPlaceNum, currentPlaceNum)
|
||||
.in(TbCashierCart::getStatus, "create", "refund")
|
||||
// .and(q -> {
|
||||
// q.eq(TbCashierCart::getTradeDay, DateUtils.getDay())
|
||||
|
|
@ -391,6 +413,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
tbCashierCart.setSalePrice(productSku.getSalePrice());
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(addCartDTO.getNum()).multiply(productSku.getSalePrice()));
|
||||
tbCashierCart.setSkuName(productSku.getSpecSnap());
|
||||
tbCashierCart.setPlaceNum(currentPlaceNum);
|
||||
if (!addCartDTO.isPack()) {
|
||||
tbCashierCart.setPackFee(BigDecimal.ZERO);
|
||||
} else {
|
||||
|
|
@ -425,11 +448,6 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
tbCashierCart.setIsGift(String.valueOf(addCartDTO.isGift()));
|
||||
tbCashierCart.setTotalNumber(addCartDTO.getNum());
|
||||
tbCashierCart.setNumber(addCartDTO.getNum());
|
||||
// 数量0删除
|
||||
if (tbCashierCart.getNumber() == 0) {
|
||||
cashierCartRepository.deleteById(tbCashierCart.getId());
|
||||
return null;
|
||||
}
|
||||
tbCashierCart.setUpdatedAt(DateUtil.current());
|
||||
cashierCartRepository.save(tbCashierCart);
|
||||
}
|
||||
|
|
@ -466,9 +484,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
|
||||
@Override
|
||||
public void removeCart(RemoveCartDTO removeCartDTO) {
|
||||
int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString());
|
||||
// 会员点单
|
||||
TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getShopId, removeCartDTO.getShopId())
|
||||
.eq(TbCashierCart::getPlaceNum, currentPlaceNum)
|
||||
.eq(TbCashierCart::getId, removeCartDTO.getCartId()));
|
||||
if (cashierCart == null) {
|
||||
throw new BadRequestException("购物车商品不存在");
|
||||
|
|
@ -479,11 +499,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
.eq(TbOrderDetail::getShopId, cashierCart.getShopId())
|
||||
.eq(TbOrderDetail::getProductId, cashierCart.getProductId())
|
||||
.eq(TbOrderDetail::getProductSkuId, cashierCart.getSkuId())
|
||||
.eq(TbOrderDetail::getPlaceNum, currentPlaceNum)
|
||||
.eq(TbOrderDetail::getOrderId, cashierCart.getOrderId()));
|
||||
}
|
||||
cashierCartMapper.delete(new LambdaQueryWrapper<TbCashierCart>().eq(TbCashierCart::getShopId, removeCartDTO.getShopId())
|
||||
.eq(TbCashierCart::getId, removeCartDTO.getCartId()));
|
||||
|
||||
|
||||
// 清空购物车 出票
|
||||
long carCount = countCar(cashierCart.getTableId(), cashierCart.getShopId(), cashierCart.getMasterId());
|
||||
|
|
@ -497,13 +515,55 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void returnCart(RemoveCartDTO removeCartDTO) {
|
||||
rabbitMsgUtils.printDishesReturnTicket(4450, 9313);
|
||||
|
||||
int currentPlaceNum = getCurrentPlaceNum(removeCartDTO.getTableId().toString(), removeCartDTO.getShopId().toString());
|
||||
// 会员点单
|
||||
TbCashierCart cashierCart = cashierCartMapper.selectOne(new LambdaQueryWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getShopId, removeCartDTO.getShopId())
|
||||
.in(TbCashierCart::getStatus, "create")
|
||||
.eq(TbCashierCart::getId, removeCartDTO.getCartId()));
|
||||
|
||||
if (cashierCart == null) {
|
||||
throw new BadRequestException("购物车商品不存在或已退单");
|
||||
}
|
||||
|
||||
TbOrderDetail tbOrderDetail = orderDetailMapper.selectOne(new LambdaQueryWrapper<TbOrderDetail>()
|
||||
.eq(TbOrderDetail::getShopId, removeCartDTO.getShopId())
|
||||
.eq(TbOrderDetail::getPlaceNum, cashierCart.getPlaceNum())
|
||||
.in(TbOrderDetail::getStatus, "unpaid")
|
||||
.eq(TbOrderDetail::getOrderId, cashierCart.getOrderId()));
|
||||
if (tbOrderDetail == null) {
|
||||
throw new BadRequestException("购物车商品不存在或已退单");
|
||||
}
|
||||
|
||||
if (cashierCart.getOrderId() == null) {
|
||||
throw new BadRequestException("此商品还未下单,无需退单");
|
||||
}
|
||||
|
||||
cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getId, cashierCart.getId())
|
||||
.set(TbCashierCart::getStatus, "return"));
|
||||
|
||||
orderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>()
|
||||
.eq(TbOrderDetail::getId, tbOrderDetail.getId())
|
||||
.set(TbOrderDetail::getUpdateTime, DateUtil.date())
|
||||
.set(TbOrderDetail::getStatus, "return"));
|
||||
|
||||
rabbitMsgUtils.printDishesReturnTicket(tbOrderDetail.getOrderId(), tbOrderDetail.getOrderId());
|
||||
}
|
||||
|
||||
@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());
|
||||
|
||||
cashierCartMapper.delete(new LambdaQueryWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getShopId, clearCartDTO.getShopId())
|
||||
.eq(TbCashierCart::getTableId, clearCartDTO.getTableId())
|
||||
.eq(TbCashierCart::getPlaceNum, currentPlaceNum)
|
||||
.and(q -> {
|
||||
q.eq(TbCashierCart::getMasterId, clearCartDTO.getMasterId())
|
||||
.or()
|
||||
|
|
@ -518,10 +578,13 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
})
|
||||
);
|
||||
|
||||
|
||||
// tbShopTableRepository.deleteByTableIdAndShopId(clearCartDTO.getTableId(), clearCartDTO.getShopId());
|
||||
|
||||
if (StrUtil.isNotBlank(orderId)) {
|
||||
orderDetailMapper.delete(new LambdaQueryWrapper<TbOrderDetail>().eq(TbOrderDetail::getShopId, clearCartDTO.getShopId())
|
||||
orderDetailMapper.delete(new LambdaQueryWrapper<TbOrderDetail>()
|
||||
.eq(TbOrderDetail::getShopId, clearCartDTO.getShopId())
|
||||
.eq(TbOrderDetail::getPlaceNum, currentPlaceNum)
|
||||
.eq(TbOrderDetail::getOrderId, orderId));
|
||||
rabbitMsgUtils.printTicket(orderId);
|
||||
}
|
||||
|
|
@ -541,7 +604,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
Integer size, Integer shopId, Integer vipUserId, String masterId) {
|
||||
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getTableId, tableId)
|
||||
.in(TbCashierCart::getStatus, "create", "refund")
|
||||
.in(TbCashierCart::getStatus, "create", "refund", "return")
|
||||
.eq(TbCashierCart::getShopId, shopId)
|
||||
.and(query2 -> {
|
||||
query2.or(query3 -> {
|
||||
|
|
@ -835,7 +898,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
private final StringRedisTemplate redisTemplate;
|
||||
|
||||
@Override
|
||||
public Object getMasterId(Integer shopId, Long tableId, Integer vipUserId) {
|
||||
public JSONObject getMasterId(Integer shopId, Long tableId, Integer vipUserId) {
|
||||
String account = tokenProvider.getSubject();
|
||||
if (account == null) {
|
||||
throw new BadRequestException("token解析失败");
|
||||
|
|
@ -875,12 +938,32 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
@Override
|
||||
public TbOrderInfo createOrder(CreateOrderDTO createOrderDTO, boolean addMaterId, boolean isPrint) {
|
||||
return Utils.runFunAndCheckKey(() -> {
|
||||
TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>()
|
||||
.eq(TbShopTable::getQrcode, createOrderDTO.getTableId())
|
||||
.in(TbShopTable::getStatus, "idle", "using"));
|
||||
|
||||
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;
|
||||
|
||||
// 查询订单
|
||||
TbOrderInfo orderInfo = null;
|
||||
if (orderId != null) {
|
||||
orderInfo = orderInfoMapper.selectById(orderId);
|
||||
|
||||
if (orderInfo == null || !"unpaid".equals(orderInfo.getStatus())) {
|
||||
redisTemplate.delete(currentOrderKey);
|
||||
}
|
||||
}
|
||||
|
||||
String day = DateUtils.getDay();
|
||||
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getShopId, createOrderDTO.getShopId())
|
||||
|
|
@ -896,33 +979,26 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
.isNull(TbCashierCart::getMasterId);
|
||||
}));
|
||||
});
|
||||
// if (createOrderDTO.getVipUserId() != null) {
|
||||
// queryWrapper.eq(TbCashierCart::getUserId, createOrderDTO.getVipUserId());
|
||||
// }else {
|
||||
// queryWrapper.eq(TbCashierCart::getMasterId, createOrderDTO.getMasterId())
|
||||
// .isNull(TbCashierCart::getUserId);
|
||||
// }
|
||||
|
||||
List<TbCashierCart> cashierCarts = cashierCartMapper
|
||||
.selectList(queryWrapper);
|
||||
if (cashierCarts.isEmpty()) {
|
||||
throw new BadRequestException("购物车为空,请先添加商品");
|
||||
}
|
||||
|
||||
TbShopTable tbShopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>()
|
||||
.eq(TbShopTable::getQrcode, createOrderDTO.getTableId())
|
||||
.in(TbShopTable::getStatus, "idle", "using"));
|
||||
|
||||
if (tbShopTable == null) {
|
||||
throw new BadRequestException("台桌未开台或不存在");
|
||||
}
|
||||
|
||||
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||
BigDecimal packAMount = BigDecimal.ZERO;
|
||||
BigDecimal feeAmount = BigDecimal.ZERO;
|
||||
BigDecimal saleAmount = BigDecimal.ZERO;
|
||||
// 当前下单次数
|
||||
int placeNum = orderInfo == null ? 1 : orderInfo.getPlaceNum() + 1;
|
||||
List<TbOrderDetail> orderDetails = new ArrayList<>();
|
||||
|
||||
boolean mealCost = false;
|
||||
for (TbCashierCart cashierCart : cashierCarts) {
|
||||
if ("客位费".equals(cashierCart.getName())) {
|
||||
mealCost = true;
|
||||
}
|
||||
totalAmount = totalAmount.add(cashierCart.getTotalAmount());
|
||||
packAMount = packAMount.add(cashierCart.getPackFee());
|
||||
feeAmount = cashierCart.getPackFee();
|
||||
|
|
@ -950,15 +1026,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
orderId = cashierCart.getOrderId();
|
||||
}
|
||||
orderDetail.setOrderId(orderId);
|
||||
orderDetail.setPlaceNum(placeNum);
|
||||
}
|
||||
|
||||
TbOrderInfo orderInfo = null;
|
||||
if (orderId != null) {
|
||||
orderInfo = orderInfoMapper.selectById(orderId);
|
||||
|
||||
if (orderInfo == null || !"unpaid".equals(orderInfo.getStatus())) {
|
||||
redisTemplate.delete(currentOrderKey);
|
||||
}
|
||||
if (!mealCost) {
|
||||
throw new BadRequestException("请选择用餐人数");
|
||||
}
|
||||
|
||||
// 修改订单信息
|
||||
|
|
@ -1236,25 +1308,70 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
@Override
|
||||
public Object pay(PayDTO payDTO) {
|
||||
return Utils.runFunAndCheckKey(() -> {
|
||||
TbOrderInfo orderInfo = null;
|
||||
long count = tbShopPayTypeMapper.selectCount(new LambdaQueryWrapper<TbShopPayType>()
|
||||
.eq(TbShopPayType::getShopId, payDTO.getShopId())
|
||||
.eq(TbShopPayType::getIsDisplay, 1)
|
||||
.eq(TbShopPayType::getPayType, "deposit"));
|
||||
if (count < 1) {
|
||||
throw new BadRequestException("未知支付方式");
|
||||
}
|
||||
|
||||
TbOrderInfo orderInfo = orderInfoMapper.selectById(payDTO.getOrderId());
|
||||
|
||||
if (ObjectUtil.isEmpty(orderInfo)) {
|
||||
throw new BadRequestException("订单不存在");
|
||||
}
|
||||
|
||||
if (!"unpaid".equals(orderInfo.getStatus()) && !"pending".equals(orderInfo.getStatus())) {
|
||||
throw new BadRequestException("订单非未支付状态");
|
||||
}
|
||||
|
||||
if (payDTO.getDiscount() == null) {
|
||||
payDTO.setDiscount((double) 1);
|
||||
}
|
||||
|
||||
BigDecimal finalAmount = orderInfo.getOrderAmount().multiply(BigDecimal.valueOf(payDTO.getDiscount())).setScale(2, RoundingMode.HALF_UP);
|
||||
|
||||
switch (payDTO.getPayType()) {
|
||||
case "vipPay":
|
||||
orderInfo = tbPayServiceImpl.vipPay(payDTO.getShopId(), payDTO.getOrderId(), payDTO.getDiscount(), payDTO.getVipUserId());
|
||||
if (payDTO.getVipUserId() != null) {
|
||||
orderInfo.setUserId(String.valueOf(payDTO.getVipUserId()));
|
||||
}
|
||||
tbPayServiceImpl.vipPay(finalAmount, Integer.valueOf(orderInfo.getUserId()));
|
||||
orderInfo.setPayOrderNo("vipPay".concat(SnowFlakeUtil.generateOrderNo()));
|
||||
orderInfo.setPayType("deposit");
|
||||
break;
|
||||
case "cash":
|
||||
orderInfo = tbPayServiceImpl.cashPay(payDTO);
|
||||
orderInfo.setPayType("cash");
|
||||
orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo()));
|
||||
|
||||
// orderInfo = tbPayServiceImpl.cashPay(payDTO);
|
||||
break;
|
||||
case "scanCode":
|
||||
orderInfo = tbPayServiceImpl.scanPay(payDTO);
|
||||
orderInfo = tbPayServiceImpl.scanPay(payDTO.getShopId(), payDTO.getCode(), Integer.valueOf(orderInfo.getMerchantId()), Integer.valueOf(orderInfo.getMemberId()), finalAmount, orderInfo);
|
||||
break;
|
||||
case "deposit":
|
||||
orderInfo = tbPayServiceImpl.memberAccountPay("", String.valueOf(payDTO.getShopId()), payDTO.getCode(), payDTO.getOrderId(), payDTO.getDiscount());
|
||||
orderInfo = tbPayServiceImpl.memberAccountPay("", String.valueOf(payDTO.getShopId()), payDTO.getCode(), orderInfo, finalAmount);
|
||||
break;
|
||||
default:
|
||||
throw new BadRequestException("未知支付方式");
|
||||
}
|
||||
|
||||
log.info("更新购物车");
|
||||
orderInfo.setPayAmount(finalAmount);
|
||||
orderInfo.setStatus("closed");
|
||||
orderInfo.setDiscountRatio(BigDecimal.valueOf(payDTO.getDiscount()));
|
||||
orderInfo.setDiscountAmount(orderInfo.getAmount().subtract(finalAmount));
|
||||
orderInfoMapper.updateById(orderInfo);
|
||||
|
||||
//更新购物车状态
|
||||
cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getOrderId, orderInfo.getId())
|
||||
.set(TbCashierCart::getStatus, "final"));
|
||||
|
||||
orderDetailMapper.update(null, new LambdaUpdateWrapper<TbOrderDetail>()
|
||||
.eq(TbOrderDetail::getOrderId, orderInfo.getId())
|
||||
.set(TbOrderDetail::getStatus, "closed"));
|
||||
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("token", null);
|
||||
|
|
@ -1327,4 +1444,94 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
|||
}
|
||||
return cashierCartMapper.update(null, queryWrapper);
|
||||
}
|
||||
|
||||
private String getCurrentOrderId(String tableId, String shopId) {
|
||||
String currentOrderKey = RedisConstant.getCurrentOrderKey(tableId, shopId);
|
||||
return redisTemplate.opsForValue().get(currentOrderKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object choseTable(ChoseTableDTO choseTableDTO) {
|
||||
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();
|
||||
|
||||
TbShopTable shopTable = mpShopTableMapper.selectOne(new LambdaQueryWrapper<TbShopTable>()
|
||||
.eq(TbShopTable::getQrcode, choseTableDTO.getNewTableId())
|
||||
.eq(TbShopTable::getStatus, "idle"));
|
||||
if (shopTable == null) {
|
||||
throw new BadRequestException("台桌不存在或非空闲状态");
|
||||
}
|
||||
|
||||
cashierCartMapper.update(null, new LambdaUpdateWrapper<TbCashierCart>()
|
||||
.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()));
|
||||
|
||||
|
||||
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
|
||||
.eq(TbShopTable::getQrcode, choseTableDTO.getNewTableId())
|
||||
.set(TbShopTable::getStatus, "using"));
|
||||
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
|
||||
.eq(TbShopTable::getQrcode, choseTableDTO.getOldTableId())
|
||||
.set(TbShopTable::getStatus, "idle"));
|
||||
|
||||
return orderInfoMapper.update(null, new LambdaUpdateWrapper<TbOrderInfo>()
|
||||
.eq(TbOrderInfo::getId, currentOrderId)
|
||||
.set(TbOrderInfo::getMasterId, masterId)
|
||||
.set(TbOrderInfo::getTableId, choseTableDTO.getNewTableId()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object choseCount(ChoseCountDTO choseCountDTO) {
|
||||
LambdaQueryWrapper<TbCashierCart> query = new LambdaQueryWrapper<TbCashierCart>()
|
||||
.eq(TbCashierCart::getShopId, choseCountDTO.getShopId())
|
||||
.eq(TbCashierCart::getMasterId, choseCountDTO.getMasterId())
|
||||
.eq(TbCashierCart::getProductId, -999)
|
||||
.eq(TbCashierCart::getTableId, choseCountDTO.getTableId());
|
||||
TbCashierCart tbCashierCart = cashierCartMapper.selectOne(query);
|
||||
|
||||
if (tbCashierCart == null) {
|
||||
tbCashierCart = new TbCashierCart();
|
||||
tbCashierCart.setStatus("create");
|
||||
tbCashierCart.setCreatedAt(System.currentTimeMillis());
|
||||
tbCashierCart.setTableId(Long.valueOf(choseCountDTO.getTableId()));
|
||||
tbCashierCart.setName("客座费");
|
||||
tbCashierCart.setSalePrice(BigDecimal.ONE);
|
||||
tbCashierCart.setMasterId(choseCountDTO.getMasterId());
|
||||
tbCashierCart.setShopId(String.valueOf(choseCountDTO.getShopId()));
|
||||
tbCashierCart.setTradeDay(DateUtils.getDay());
|
||||
tbCashierCart.setStatus("create");
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(BigDecimal.ONE));
|
||||
tbCashierCart.setPlaceNum(1);
|
||||
tbCashierCart.setProductId("-999");
|
||||
tbCashierCart.setSkuId("-999");
|
||||
tbCashierCartMapper.insert(tbCashierCart);
|
||||
}else {
|
||||
tbCashierCart.setTotalAmount(new BigDecimal(choseCountDTO.getNum()).multiply(BigDecimal.ONE));
|
||||
tbCashierCart.setNumber(choseCountDTO.getNum());
|
||||
tbCashierCart.setTotalNumber(choseCountDTO.getNum());
|
||||
tbCashierCartMapper.updateById(tbCashierCart);
|
||||
}
|
||||
|
||||
return tbCashierCart;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import cn.ysk.cashier.pojo.order.TbCashierCart;
|
|||
import cn.ysk.cashier.pojo.shop.TbShopTable;
|
||||
import cn.ysk.cashier.dto.shop.TbShopTableDto;
|
||||
import cn.ysk.cashier.dto.shop.TbShopTableQueryCriteria;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import java.util.Map;
|
||||
|
|
@ -100,6 +101,8 @@ public interface TbShopTableService {
|
|||
|
||||
void removeCart(RemoveCartDTO removeCartDTO);
|
||||
|
||||
void returnCart(RemoveCartDTO removeCartDTO);
|
||||
|
||||
void clearCart(ClearCartDTO clearCartDTO);
|
||||
|
||||
Page<TbCashierCart> getCart(Long tableId, Integer page, Integer size, Integer shopId, Integer vipUserId, String masterId);
|
||||
|
|
@ -110,7 +113,7 @@ public interface TbShopTableService {
|
|||
|
||||
Object createOrder(CreateOrderDTO createOrderDTO, boolean addMasterId, boolean isPrint);
|
||||
|
||||
Object getMasterId(Integer shopId, Long tableId, Integer vipUserId);
|
||||
JSONObject getMasterId(Integer shopId, Long tableId, Integer vipUserId);
|
||||
|
||||
Object pending(PendingDTO pendingDTO);
|
||||
|
||||
|
|
@ -123,4 +126,8 @@ public interface TbShopTableService {
|
|||
Object deleteOrder(DeleteOrderDTO deleteOrderDTO);
|
||||
|
||||
Object updateVip(UpdateVipDTO updateVipDTO);
|
||||
|
||||
Object choseTable(ChoseTableDTO choseTableDTO);
|
||||
|
||||
Object choseCount(ChoseCountDTO choseCountDTO);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,4 +46,12 @@ public class RabbitMsgUtils implements RabbitTemplate.ConfirmCallback {
|
|||
// 发送库存记录mq消息
|
||||
sendMsg(RabbitConstants.EXCHANGE_STOCK_RECORD, RabbitConstants.ROUTING_STOCK_RECORD_SALE, mqData, "库存记录", true);
|
||||
}
|
||||
|
||||
public void printDishesReturnTicket(Integer orderId, Integer... orderIds) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("orderId", orderId);
|
||||
jsonObject.put("orderDetailIds", orderIds);
|
||||
jsonObject.put("isReturn", true);
|
||||
sendMsg(RabbitConstants.EXCHANGE_PRINT, RabbitConstants.ROUTING_KEY_PRINT_DISHES, jsonObject, "菜品退单", false);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue