fix: 1. 台桌列表获取修改 2.优惠券优惠金额计算不准确修复

This commit is contained in:
张松 2024-11-12 09:50:16 +08:00
parent dbed5887a1
commit b1bd7a7e89
1 changed files with 39 additions and 18 deletions

View File

@ -262,14 +262,35 @@ public class TbShopTableServiceImpl implements TbShopTableService {
mpShopTableService.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(criteria.getPage(), criteria.getSize()), query);
List<TbShopTable> tbShopTableList = shopTablePage.getRecords();
ArrayList<Map<String, Object>> infoList = new ArrayList<>();
List<TbCashierCart> cartList = tbCashierCartMapper.selectList(new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, criteria.getShopId())
// .eq(TbCashierCart::getTableId, date.getQrcode())
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())
.eq(TbCashierCart::getStatus, "create"));
HashMap<String, Integer> countMap = new HashMap<>();
cartList.forEach(item -> {
Integer count = countMap.computeIfAbsent(item.getTableId(), k -> 1);
countMap.put(item.getTableId(), count + 1);
});
HashMap<String, TbOrderInfo> currentOrderInfoMap = new HashMap<>();
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(criteria.getShopId(), "2232");
List<TbOrderInfo> orderInfoList = orderInfoMapper.selectPage(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(1, 1), new LambdaQueryWrapper<TbOrderInfo>()
.eq(TbOrderInfo::getStatus, "unpaid")
.eq(TbOrderInfo::getUseType, shopEatTypeInfoDTO.getUseType())
.eq(TbOrderInfo::getShopId, shopEatTypeInfoDTO.getShopId())
// .eq(TbOrderInfo::getTableId, eatTypeInfoDTO.getTableId())
.gt(TbOrderInfo::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())
// .eq(TbOrderInfo::getTradeDay, DateUtils.getDay())
.orderByDesc(TbOrderInfo::getId)).getRecords();
orderInfoList.forEach(item -> currentOrderInfoMap.computeIfAbsent(item.getTableId(), k -> item));
for (TbShopTable date : tbShopTableList) {
if (StrUtil.isBlank(date.getQrcode())) {
date.setStatus("unbind");
} else if (tbCashierCartMapper.selectCount(new LambdaQueryWrapper<TbCashierCart>()
.eq(TbCashierCart::getShopId, date.getShopId())
.eq(TbCashierCart::getTableId, date.getQrcode())
.gt(TbCashierCart::getCreatedAt, DateUtil.offsetDay(DateUtil.date(), -1).getTime())
.eq(TbCashierCart::getStatus, "create")) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus())
} else if (countMap.get(date.getQrcode()) < 1 && !TableStateEnum.CLEANING.getState().equals(date.getStatus())
) {
date.setStatus("idle");
mpShopTableMapper.update(null, new LambdaUpdateWrapper<TbShopTable>()
@ -290,9 +311,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
TbOrderInfo orderInfo = null;
if (StrUtil.isNotBlank(date.getQrcode())) {
try {
ShopEatTypeInfoDTO shopEatTypeInfoDTO = checkEatModel(criteria.getShopId(), date.getQrcode());
orderInfo = getCurrentOrder(shopEatTypeInfoDTO);
orderInfo = currentOrderInfoMap.get(date.getQrcode());
} catch (Exception e) {
log.info(e.getMessage());
}
@ -1194,17 +1213,17 @@ public class TbShopTableServiceImpl implements TbShopTableService {
TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId());
if (couponVo != null && couponVo.getCurrentUseNum() > 0) {
BigDecimal currentUseNum;
if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) {
cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
}
List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(Integer.valueOf(cashierCart.getProductId()), k -> new ArrayList<>());
tbUserCouponVos.add(couponVo);
TbCashierCart balanceCart = null;
// 优惠券数量小于购物车数量分割购物车数据
if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) {
if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) {
cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
// 优惠券数量小于购物车数量分割购物车数据
}else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) {
currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum());
BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber());
int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum();
@ -1216,7 +1235,9 @@ public class TbShopTableServiceImpl implements TbShopTableService {
cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(totalAmountByNum);
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum());
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
// 创建结余购物车
@ -1227,11 +1248,11 @@ public class TbShopTableServiceImpl implements TbShopTableService {
balanceCart.setNumber(balanceNum);
balanceCart.setTotalNumber(balanceNum);
balanceCart.setPackFee(singlePackFee.multiply(num));
balanceCart.setTotalAmount(cashierCart.getSalePrice().multiply(num).add(balanceCart.getPackFee()));
balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(num)));
balanceCartList.add(balanceCart);
} else {
currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
discountAmount = discountAmount.add(cashierCart.getTotalAmount().divide(BigDecimal.valueOf(cashierCart.getTotalNumber()), RoundingMode.HALF_UP).multiply(currentUseNum));
discountAmount = discountAmount.add(cashierCart.getTotalAmount());
cashierCart.setUserCouponId(couponVo.getId());
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
}