fix: 1. 台桌列表获取修改 2.优惠券优惠金额计算不准确修复
This commit is contained in:
parent
dbed5887a1
commit
b1bd7a7e89
|
|
@ -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());
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue