diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java index e28d0a1..a15afef 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java @@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.chaozhanggui.system.cashierservice.constant.TableConstant; import com.chaozhanggui.system.cashierservice.dao.*; import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.Enum.*; @@ -178,21 +179,31 @@ public class CartService { tableId = null; } String tableCartKey = RedisCst.getTableCartKey(shopId, tableId, userId); + // 免除座位费,删除当前台桌座位费信息 + TbShopInfo shopInfo = shopEatTypeInfoDTO.getShopInfo(); + boolean ignoreTableFee = shopInfo.getIsTableFee() != null && shopInfo.getIsTableFee() == 1; + TbCashierCart seatCartInfo = null; if (redisUtil.exists(tableCartKey)) { - array = JSON.parseArray(redisUtil.getMessage(tableCartKey)); - for (int i = 0; i < array.size(); i++) { + JSONArray jsonArray = JSON.parseArray(redisUtil.getMessage(tableCartKey)); + for (int i = 0; i < jsonArray.size(); i++) { JSONObject object = array.getJSONObject(i); TbCashierCart cashierCart = JSONUtil.parseJSONStr2T(object.toJSONString(), TbCashierCart.class); - if (cashierCart.getNumber() > 0) { - amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); + if ((!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId()) || !ignoreTableFee) && cashierCart.getNumber() > 0) { + amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); } - if ("-999".equals(cashierCart.getProductId())) { + if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { seatCartInfo = cashierCart; + if (!ignoreTableFee) { + array.add(cashierCart); + } + }else { + array.add(cashierCart); } } } else { + // 查询购物车所有信息 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(TbCashierCart::getShopId, shopId) @@ -209,18 +220,28 @@ public class CartService { List tbCashierCarts = mpCashierCartMapper.selectList(queryWrapper); if (!CollectionUtils.isEmpty(tbCashierCarts)) { for (TbCashierCart cashierCart : tbCashierCarts) { - if ("-999".equals(cashierCart.getProductId())) { + if (TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) { seatCartInfo = cashierCart; + if (!ignoreTableFee) { + array.add(cashierCart); + } + }else { + array.add(cashierCart); } - array.add(cashierCart); if (cashierCart.getIsVip().equals((byte) 1)) continue; - amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); + if ((!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId()) || !ignoreTableFee) && cashierCart.getNumber() > 0) { + amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); + } } redisUtil.saveMessage(tableCartKey, array.toString(), 60 * 60 * 12L); } } - redisUtil.saveMessage(RedisCst.getCurrentTableSeatCount(shopEatTypeInfoDTO.getShopInfo().getId(), tableId), JSONObject.toJSONString(seatCartInfo), 60 * 60 * 12L); + if (ignoreTableFee && seatCartInfo != null) { + mpCashierCartMapper.deleteById(seatCartInfo.getId()); + }else { + redisUtil.saveMessage(RedisCst.getCurrentTableSeatCount(shopEatTypeInfoDTO.getShopInfo().getId(), tableId), JSONObject.toJSONString(seatCartInfo), 60 * 60 * 12L); + } JSONObject jsonObject1 = new JSONObject(); jsonObject1.put("status", "success");