diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java index 2c3d94b..d397a35 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbCashierCart.java @@ -34,6 +34,8 @@ public class TbCashierCart implements Serializable { private String skuName; private BigDecimal salePrice; + // 会员价 + private BigDecimal memberPrice; private BigDecimal packFee; private Integer number; @@ -74,6 +76,9 @@ public class TbCashierCart implements Serializable { // 使用的优惠券id private Integer userCouponId; + // 是否是会员 + private Integer isMember; + private static final long serialVersionUID = 1L; public String getSkuName() { @@ -83,4 +88,13 @@ public class TbCashierCart implements Serializable { return ""; } } + + + public void resetTotalAmount() { + if (isMember != null && isMember == 1) { + totalAmount = BigDecimal.valueOf(totalNumber).multiply(memberPrice).add(packFee); + }else { + totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee); + } + } } 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 531a562..fc97e49 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java @@ -16,6 +16,7 @@ import com.chaozhanggui.system.cashierservice.entity.Enum.PlatformTypeEnum; import com.chaozhanggui.system.cashierservice.entity.Enum.ShopWxMsgTypeEnum; import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.dto.*; +import com.chaozhanggui.system.cashierservice.entity.vo.ShopUserListVo; import com.chaozhanggui.system.cashierservice.entity.vo.TbUserCouponVo; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.mapper.*; @@ -209,7 +210,7 @@ public class CartService { } if (cashierCart.getIsVip().equals((byte) 1)) continue; 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()))); + amount = amount.add(cashierCart.getTotalAmount()); } } redisUtil.saveMessage(tableCartKey, array.toString(), 60 * 60 * 12L); @@ -410,8 +411,7 @@ public class CartService { if (isVip != null && isVip == 1) { cashierCart.setTotalAmount(BigDecimal.ZERO); } else { - cashierCart.setTotalAmount(new BigDecimal(cashierCart.getTotalNumber()) - .multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); + cashierCart.resetTotalAmount(); } cashierCart.setUpdatedAt(Instant.now().toEpochMilli()); mpCashierCartMapper.updateById(cashierCart); @@ -575,6 +575,12 @@ public class CartService { private TbCashierCart addCart(String productId, String skuId, Integer userId, Integer num, String tableId, String shopId, Integer isVip, String note, boolean isTakeout) throws Exception { try { + // 查询用户信息 + TbShopUser shopUser = shopUserMapper.selectByUserIdAndShopId(String.valueOf(userId), shopId); + if (shopUser == null) { + throw new MsgException("用户不存在"); + } + TbProduct product = productMapper.selectById(Integer.valueOf(productId)); String key = tableId + "-" + shopId; TbProductSkuWithBLOBs productSku = productSkuMapper.selectByPrimaryKey(Integer.valueOf(skuId)); @@ -602,6 +608,7 @@ public class CartService { cashierCart.setNumber(num); cashierCart.setTotalNumber(num); } + cashierCart.setIsMember(Integer.valueOf(shopUser.getIsVip())); cashierCart.setNote(note); cashierCart.setProductId(productId); cashierCart.setSkuId(skuId); @@ -621,6 +628,7 @@ public class CartService { cashierCart.setUpdatedAt(Instant.now().toEpochMilli()); cashierCart.setPackFee(BigDecimal.ZERO); cashierCart.setRefundNumber(0); + cashierCart.setMemberPrice(productSku.getMemberPrice()); cashierCart.setTradeDay(DateUtils.getDay()); // 打包费 if (isTakeout && product.getPackFee() != null) { @@ -632,7 +640,7 @@ public class CartService { cashierCart.setSalePrice(BigDecimal.ZERO); } else { cashierCart.setIsVip((byte) 0); - cashierCart.setTotalAmount(new BigDecimal(cashierCart.getTotalNumber()).multiply(productSku.getSalePrice().add(cashierCart.getPackFee()))); + cashierCart.resetTotalAmount(); } cashierCart.setPlatformType(PlatformTypeEnum.MINI_APP.getValue()); mpCashierCartMapper.insert(cashierCart); @@ -1193,7 +1201,7 @@ public class CartService { } - private OrderCartInfoDTO getCartInfoForOrder(ShopEatTypeInfoDTO shopEatTypeInfoDTO, List allCartList, TbShopTable shopTable) { + private OrderCartInfoDTO getCartInfoForOrder(ShopEatTypeInfoDTO shopEatTypeInfoDTO, List allCartList, TbShopTable shopTable, TbShopUser shopUser) { OrderCartInfoDTO infoDTO = new OrderCartInfoDTO(); // 就餐人数 ArrayList cashierIds = new ArrayList<>(); @@ -1201,6 +1209,9 @@ public class CartService { Integer orderId = null; for (TbCashierCart tbCashierCart : allCartList) { cashierIds.add(tbCashierCart.getId()); + // 设置会员信息及价格 + tbCashierCart.setIsMember(shopUser.getIsVip().intValue()); + tbCashierCart.resetTotalAmount(); if (TableConstant.CashierCart.ID.equals(tbCashierCart.getProductId())) { seatInfo = tbCashierCart; } @@ -1274,6 +1285,8 @@ public class CartService { if (tbUserInfo == null) { MsgException.throwException("生成订单失败"); } + + // 用户信息 TbShopUser tbShopUser = shopUserMapper.selectByUserIdAndShopId(userId, shopId); // 获取当前下单次数和用餐类型 @@ -1293,7 +1306,7 @@ public class CartService { TbShopTable shopTable = getTableInfoByEatType(shopEatTypeInfoDTO); // 获取详细的购物车信息 - OrderCartInfoDTO cartInfoDTO = getCartInfoForOrder(shopEatTypeInfoDTO, cashierCartList, shopTable); + OrderCartInfoDTO cartInfoDTO = getCartInfoForOrder(shopEatTypeInfoDTO, cashierCartList, shopTable, tbShopUser); // 获取订单信息 TbOrderInfo orderInfo = null;