1.代客下单

This commit is contained in:
2024-08-27 09:11:55 +08:00
parent a1d0fa1a7f
commit f585a4f46a
7 changed files with 184 additions and 46 deletions

View File

@@ -149,6 +149,11 @@ public class OrderService {
}
}
TbCashierCart cart = cashierCartMapper.selectByPrimaryKey(cartId);
if (cart != null && cart.getNumber() < number && StrUtil.isNotBlank(cart.getOrderId()) && StrUtil.isNotBlank(cart.getTableId())) {
return Result.fail("此商品已经出餐不支持减少操作");
}
// List<TbProskuCon> proskuConList= tbProskuConMapper.selectByShopIdAndSkuIdAndProductId(skuId,shopInfo.getId(),product.getId());
// if(Objects.nonNull(proskuConList)&&proskuConList.size()>0){
// for (TbProskuCon proskuCon : proskuConList) {
@@ -200,7 +205,6 @@ public class OrderService {
masterId = "#" + String.format("%03d", 1);
}
}
TbCashierCart cart = cashierCartMapper.selectByPrimaryKey(cartId);
if (Objects.nonNull(cart)) {
//查询现有规格商品
@@ -258,6 +262,7 @@ public class OrderService {
cashierCart.setStatus("create");
cashierCart.setIsPack(isPack);
cashierCart.setIsGift(isGift);
cashierCart.setSkuName(skuWithBLOBs.getSpecSnap());
if (isGift.equals("false")) {
cashierCart.setTotalAmount(new BigDecimal(number).multiply(skuWithBLOBs.getSalePrice()));
} else {
@@ -374,7 +379,9 @@ public class OrderService {
.and(query -> {
query.eq(TbCashierCart::getMasterId, finalMasterId)
.or()
.isNull(TbCashierCart::getMasterId);
.isNull(TbCashierCart::getMasterId)
.or()
.eq(TbCashierCart::getMasterId, "");
});
}
@@ -448,7 +455,7 @@ public class OrderService {
return Result.success(CodeEnum.SUCCESS, map);
}
@Transactional(rollbackFor = Exception.class)
// @Transactional(rollbackFor = Exception.class)
public Result delCart(String masterId, Integer cartId) {
@@ -481,13 +488,36 @@ public class OrderService {
List<String> skuIds=new ArrayList<>();
skuIds.add(cashierCart.getSkuId());
cashierCartMapper.deleteByCartId(masterId, cartId);
cashierCartMapper.deleteByPrimaryKey(cartId);
if (cashierCart.getOrderId() != null) {
int list = mpCashierCartMapper.selectCount( new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, cashierCart.getShopId())
.eq(TbCashierCart::getStatus, "create").eq(TbCashierCart::getTableId, cashierCart.getTableId())
.and(query2 -> {
query2.or(query3 -> {
query3.eq(TbCashierCart::getTradeDay, DateUtils.getDay())
.eq(TbCashierCart::getMasterId, cashierCart.getMasterId());
})
.or((query4 -> {
query4.isNull(TbCashierCart::getTradeDay)
.or()
.eq(TbCashierCart::getMasterId, "")
.or()
.eq(TbCashierCart::getMasterId, "");
}));
}));
if (list == 0) {
tbOrderInfoMapper.deleteByPrimaryKey(Integer.valueOf(cashierCart.getOrderId()));
}
}
return Result.success(CodeEnum.SUCCESS);
}
@Transactional(rollbackFor = Exception.class)
public Result createOrder(OrderVo orderVo, String clientType, String token) {
public Result createOrder(OrderVo orderVo, String clientType, String token, Integer oldOrderId, boolean isPrint) {
String day = DateUtils.getDay();
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
@@ -513,6 +543,9 @@ public class OrderService {
})
.or((query4 -> {
query4.isNull(TbCashierCart::getTradeDay)
.or()
.eq(TbCashierCart::getMasterId, "")
.or()
.eq(TbCashierCart::getMasterId, "");
}));
});
@@ -526,6 +559,16 @@ public class OrderService {
}
if(ObjectUtil.isEmpty(list)||ObjectUtil.isNull(list)||list.size()<=0){
if (oldOrderId != null) {
orderDetailMapper.deleteByOUrderId(oldOrderId);
TbOrderInfo orderInfo = new TbOrderInfo();
orderInfo.setId(oldOrderId);
orderInfo.setOrderAmount(BigDecimal.ZERO);
orderInfo.setDiscountAmount(BigDecimal.ZERO);
orderInfo.setStatus("cancelled");
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
// tbOrderInfoMapper.deleteByPrimaryKey(oldOrderId);
}
return Result.fail(CARTEXIST);
}
BigDecimal totalAmount = BigDecimal.ZERO;
@@ -600,7 +643,7 @@ public class OrderService {
orderInfo = new TbOrderInfo(orderNo, totalAmount, packAMount, totalAmount, saleAmount, totalAmount, feeAmount, "",
"table", "cash", orderVo.getMerchantId().toString(), orderVo.getShopId().toString(),
"", (byte) 1, day, masterId);
orderInfo.setMasterId(masterId);
orderInfo.setMasterId(orderVo.getMasterId());
orderInfo.setRemark(orderVo.getRemark());
orderInfo.setUserId(orderVo.getUserId());
orderInfo.setUseType(StrUtil.isNotBlank(orderVo.getTableId()) ? "postPay" : "afterPay");
@@ -637,9 +680,7 @@ public class OrderService {
redisUtil.saveMessage(RedisCst.OUT_NUMBER.concat(orderInfo.getShopId()),object.toString());
orderId = orderInfo.getId();
if (StrUtil.isNotBlank(orderVo.getTableId())) {
producer.printMechine(String.valueOf(orderId));
}
}
for (TbOrderDetail orderDetail : orderDetails) {
orderDetail.setOrderId(orderId);
@@ -685,11 +726,13 @@ public class OrderService {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.USING.getState()));
producer.printMechine(String.valueOf(orderInfo.getId()));
}
}
if (!StrUtil.isBlank(orderVo.getTableId())) {
if (isPrint) {
producer.printMechine(String.valueOf(orderId));
}
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.USING.getState()));
@@ -1025,21 +1068,26 @@ public class OrderService {
String day = DateUtils.getDay();
LambdaQueryWrapper<TbCashierCart> queryWrapper = new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, cartVo.getShopId())
.eq(TbCashierCart::getTradeDay, day)
.eq(TbCashierCart::getStatus, "create");
// 普通点单
if (StrUtil.isBlank(cartVo.getTableId())) {
queryWrapper.eq(TbCashierCart::getMasterId, cartVo.getMasterId());
queryWrapper.isNull(TbCashierCart::getTableId);
queryWrapper.eq(TbCashierCart::getMasterId, cartVo.getMasterId())
.eq(TbCashierCart::getTradeDay, day)
.and(query -> {
query.isNull(TbCashierCart::getTableId)
.or()
.eq(TbCashierCart::getTableId, "");
});
// 台桌点单
}else if (StrUtil.isNotBlank(cartVo.getTableId()) ) {
queryWrapper.eq(TbCashierCart::getTableId, cartVo.getTableId())
.and(query -> {
query.eq(TbCashierCart::getMasterId, cartVo.getMasterId())
.or()
.isNull(TbCashierCart::getMasterId);
.isNull(TbCashierCart::getMasterId)
.or()
.eq(TbCashierCart::getMasterId, "");
});
// 会员点单
}
@@ -1049,7 +1097,12 @@ public class OrderService {
int orderId = 0;
List<ProductSkuPo> productSkuPos = new ArrayList<>();
List<String> skuIds = new ArrayList<>();
ArrayList<Integer> ids = new ArrayList<>();
for (TbCashierCart cashierCart : list) {
if (StrUtil.isNotBlank(cashierCart.getOrderId()) && StrUtil.isNotBlank(cashierCart.getTableId())) {
continue;
}
ids.add(cashierCart.getId());
// 数量减少, 返还库存
String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId());
redisUtil.deleteByKey(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId());
@@ -1082,17 +1135,25 @@ public class OrderService {
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(orderId);
if (Objects.nonNull(orderInfo) && !orderInfo.getStatus().equals("pending")){
tbOrderInfoMapper.updateStatusById(orderId, "cancelled");
orderDetailMapper.updateStatusByOrderId(orderId, "cancelled");
// orderDetailMapper.updateStatusByOrderId(orderId, "cancelled");
orderDetailMapper.deleteByOUrderId(orderId);
}
}
if (!ids.isEmpty()) {
mpCashierCartMapper.deleteBatchIds(ids);
}
// cashierCartMapper.deleteByPrimaryKey()
cashierCartMapper.deleteBymasterId(cartVo.getMasterId(), Integer.valueOf(cartVo.getShopId()), day, "create", cartVo.getUuid());
// if(ObjectUtil.isNotEmpty(productSkuPos)&&productSkuPos.size()>0){
// tbProductSkuMapper.batchStockNum(productSkuPos);
// }
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, cartVo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
return Result.success(CodeEnum.SUCCESS);
}
@@ -1152,8 +1213,18 @@ public class OrderService {
@Autowired
TbShopUserMapper tbShopUserMapper;
public Result orderDetail(Integer shopId, Integer id) {
public Result orderDetail(Integer shopId, Integer id, String clientType, String token, String userId, String staffId) {
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(id);
OrderVo orderVo = new OrderVo();
orderVo.setMasterId(orderInfo.getMasterId());
orderVo.setShopId(Integer.valueOf(orderInfo.getShopId()));
orderVo.setTableId(orderInfo.getTableId());
orderVo.setMerchantId(Integer.valueOf(userId));
createOrder(orderVo, clientType, token, id, false);
orderInfo = tbOrderInfoMapper.selectByPrimaryKey(id);
if (Objects.nonNull(orderInfo)) {
List<TbOrderDetail> list = orderDetailMapper.selectAllByOrderId(id);
orderInfo.setDetailList(list);

View File

@@ -2,6 +2,7 @@ package com.chaozhanggui.system.cashierservice.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -304,7 +305,10 @@ public class PayService {
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
// 打印结算单
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
producer.printMechine(orderId);
}
return Result.success(CodeEnum.SUCCESS, object.getJSONObject("data"));
} else {
String status = ObjectUtil.isNotEmpty(object.getJSONObject("data")) ? object.getJSONObject("data").getString("status") : null;
@@ -322,7 +326,10 @@ public class PayService {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
// 打印结算单
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
producer.printMechine(orderId);
}
return Result.success(CodeEnum.PAYING);
}
@@ -378,7 +385,10 @@ public class PayService {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
// 打印结算单
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
producer.printMechine(orderId);
}
return Result.success(CodeEnum.SUCCESS, mainScanResp);
} else if ("TRADE_AWAIT".equals(mainScanResp.getState())) {
@@ -393,7 +403,10 @@ public class PayService {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
// 打印结算单
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
producer.printMechine(orderId);
}
return Result.success(CodeEnum.PAYING);
}
@@ -789,13 +802,13 @@ public class PayService {
return Result.fail("用户不存在或已被禁用");
}
long flag = mpShopUserMapper.decrBalance(vipUserId, orderInfo.getOrderAmount());
long flag = mpShopUserMapper.decrBalance(vipUserId, (payAmount != null && discountAmount != null) ? payAmount : orderInfo.getOrderAmount());
if (flag < 1) {
return Result.fail("余额不足或扣除余额失败");
}
TbShopUserFlow userFlow = new TbShopUserFlow();
userFlow.setAmount(orderInfo.getOrderAmount());
userFlow.setAmount((payAmount != null && discountAmount != null) ? payAmount : orderInfo.getOrderAmount());
userFlow.setBalance(shopUser.getAmount());
userFlow.setShopUserId(shopUser.getId());
userFlow.setBizCode("vipCardCash");
@@ -808,6 +821,7 @@ public class PayService {
if (payAmount != null && discountAmount != null) {
orderInfo.setPayAmount(payAmount);
orderInfo.setDiscountAmount(discountAmount);
orderInfo.setDiscountRatio(ObjectUtil.isNotEmpty(payAmount)?payAmount.divide(orderInfo.getOrderAmount(),2,RoundingMode.HALF_UP).setScale(2,RoundingMode.HALF_DOWN):null);
}else {
orderInfo.setPayAmount(orderInfo.getOrderAmount());
}
@@ -842,6 +856,7 @@ public class PayService {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
return Result.success(CodeEnum.SUCCESS);
}
@@ -927,6 +942,11 @@ public class PayService {
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
// 打印结算单
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
producer.printMechine(orderId);
}
return Result.success(CodeEnum.SUCCESS);
}
@@ -1009,6 +1029,10 @@ public class PayService {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
// 打印结算单
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
producer.printMechine(String.valueOf(orderId));
}
return Result.success(CodeEnum.SUCCESS);
}
@@ -1324,6 +1348,11 @@ public class PayService {
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, orderInfo.getTableId())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
// 打印结算单
if (StrUtil.isNotBlank(orderInfo.getTableId())) {
producer.printMechine(String.valueOf(orderId));
}
return Result.success(CodeEnum.SUCCESS);
}

View File

@@ -4,9 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.chaozhanggui.system.cashierservice.bean.TableStateEnum;
import com.chaozhanggui.system.cashierservice.dao.*;
import com.chaozhanggui.system.cashierservice.entity.*;
import com.chaozhanggui.system.cashierservice.entity.vo.TbShopTableVO;
import com.chaozhanggui.system.cashierservice.mybatis.MpShopTableMapper;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.DateUtils;
@@ -15,6 +18,7 @@ import com.chaozhanggui.system.cashierservice.util.TokenUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@@ -37,6 +41,12 @@ public class ShopInfoService {
@Autowired
ShopUserDutyDetailMapper shopUserDutyDetailMapper;
private final TbOrderInfoMapper orderInfoMapper;
@Qualifier("tbCashierCartMapper")
@Autowired
private TbCashierCartMapper tbCashierCartMapper;
@Autowired
private MpShopTableMapper mpShopTableMapper;
public ShopInfoService(TbOrderInfoMapper orderInfoMapper) {
this.orderInfoMapper = orderInfoMapper;
@@ -56,6 +66,17 @@ public class ShopInfoService {
PageHelperUtil.startPage(page, pageSize);
// List<TbShopTable> shopTables=tbShopTableMapper.selectByShopIdAndStatus(shopId,areaId,status);
List<TbShopTableVO> tbShopTableVOList = tbShopTableMapper.selectTableInfo(shopId, areaId, status, DateUtils.getDay());
for (TbShopTableVO tbShopTableVO : tbShopTableVOList) {
if (StrUtil.isBlank(tbShopTableVO.getQrcode())) {
tbShopTableVO.setStatus("closed");
}else if (tbCashierCartMapper.countTable(tbShopTableVO.getQrcode(), tbShopTableVO.getShopId()) < 1) {
tbShopTableVO.setStatus("idle");
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
.eq(TbShopTable::getQrcode, tbShopTableVO.getQrcode())
.set(TbShopTable::getStatus, TableStateEnum.IDLE.getState()));
}
}
PageInfo pageInfo=new PageInfo(tbShopTableVOList);
return Result.success(CodeEnum.SUCCESS,pageInfo);