fix: 会员价校验全局开关

This commit is contained in:
张松
2024-11-07 15:43:22 +08:00
parent 7f34a7fcfa
commit ee873e0e7d
4 changed files with 29 additions and 14 deletions

View File

@@ -91,7 +91,7 @@ public class TbCashierCart implements Serializable {
public void resetTotalAmount() { public void resetTotalAmount() {
if (isMember != null && isMember == 1 && memberPrice.compareTo(BigDecimal.ZERO) > 0) { if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
totalAmount = BigDecimal.valueOf(totalNumber).multiply(memberPrice).add(packFee); totalAmount = BigDecimal.valueOf(totalNumber).multiply(memberPrice).add(packFee);
}else { }else {
totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee); totalAmount = BigDecimal.valueOf(totalNumber).multiply(salePrice).add(packFee);

View File

@@ -21,5 +21,6 @@ public class ShopEatTypeInfoDTO {
private String useType; private String useType;
private boolean isOpenTakeout; private boolean isOpenTakeout;
private boolean isOpenDineIn; private boolean isOpenDineIn;
private boolean isMemberPrice;
private String tableId; private String tableId;
} }

View File

@@ -194,7 +194,10 @@ public class CartService {
if (cashierCart.getIsVip().equals((byte) 1)) continue; if (cashierCart.getIsVip().equals((byte) 1)) continue;
if ((!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) && cashierCart.getNumber() > 0) { if ((!TableConstant.CART_SEAT_ID.equals(cashierCart.getProductId())) && cashierCart.getNumber() > 0) {
amount = amount.add(cashierCart.getSalePrice().multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee())); amount = amount.add(cashierCart.getSalePrice().multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
memberAmount = memberAmount.add(cashierCart.getMemberPrice().multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee())); BigDecimal mPrice = cashierCart.getIsMember() == 1 && cashierCart.getMemberPrice() != null && cashierCart.getMemberPrice().compareTo(BigDecimal.ZERO) > 0
? cashierCart.getMemberPrice() : cashierCart.getSalePrice();
memberAmount = memberAmount.add(mPrice.multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
} }
} }
redisUtil.saveMessage(tableCartKey, array.toString(), 60 * 60 * 12L); redisUtil.saveMessage(tableCartKey, array.toString(), 60 * 60 * 12L);
@@ -350,12 +353,14 @@ public class CartService {
if (Objects.isNull(array) || array.isEmpty()) { if (Objects.isNull(array) || array.isEmpty()) {
if (type == 1) { if (type == 1) {
TbCashierCart cashierCart = addCart(productId, skuId, TbCashierCart cashierCart = addCart(productId, skuId,
jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO.isTakeout()); jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO);
jsonArray.add(cashierCart); jsonArray.add(cashierCart);
cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum()); cashierCart.setPlaceNum(cashierCart.getPlaceNum() == null ? 0 : cashierCart.getPlaceNum());
cashierCartArrayList.add(cashierCart); cashierCartArrayList.add(cashierCart);
amount = amount.add(new BigDecimal(cashierCart.getNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); amount = amount.add(new BigDecimal(cashierCart.getNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
memberAmount = memberAmount.add(new BigDecimal(cashierCart.getNumber()).multiply(cashierCart.getMemberPrice().add(cashierCart.getPackFee()))); BigDecimal mPrice = cashierCart.getIsMember() == 1 && cashierCart.getMemberPrice() != null && cashierCart.getMemberPrice().compareTo(BigDecimal.ZERO) > 0
? cashierCart.getMemberPrice() : cashierCart.getSalePrice();
memberAmount = memberAmount.add(mPrice.multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
} }
} else { } else {
@@ -411,7 +416,9 @@ public class CartService {
jsonArray.add(cashierCart); jsonArray.add(cashierCart);
cashierCartArrayList.add(cashierCart); cashierCartArrayList.add(cashierCart);
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
memberAmount = memberAmount.add(new BigDecimal(cashierCart.getNumber()).multiply(cashierCart.getMemberPrice().add(cashierCart.getPackFee()))); BigDecimal mPrice = cashierCart.getIsMember() == 1 && cashierCart.getMemberPrice() != null && cashierCart.getMemberPrice().compareTo(BigDecimal.ZERO) > 0
? cashierCart.getMemberPrice() : cashierCart.getSalePrice();
memberAmount = memberAmount.add(mPrice.multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
if ("-999".equals(cashierCart.getProductId())) { if ("-999".equals(cashierCart.getProductId())) {
hasSeat = true; hasSeat = true;
@@ -420,10 +427,12 @@ public class CartService {
if (flag && type == 1) { if (flag && type == 1) {
TbCashierCart cashierCart = addCart(productId, skuId, TbCashierCart cashierCart = addCart(productId, skuId,
jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO.isTakeout()); jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO);
jsonArray.add(cashierCart); jsonArray.add(cashierCart);
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
memberAmount = memberAmount.add(new BigDecimal(cashierCart.getNumber()).multiply(cashierCart.getMemberPrice().add(cashierCart.getPackFee()))); BigDecimal mPrice = cashierCart.getIsMember() == 1 && cashierCart.getMemberPrice() != null && cashierCart.getMemberPrice().compareTo(BigDecimal.ZERO) > 0
? cashierCart.getMemberPrice() : cashierCart.getSalePrice();
memberAmount = memberAmount.add(mPrice.multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
} }
@@ -431,7 +440,7 @@ public class CartService {
} else { } else {
if (type == 1) { if (type == 1) {
TbCashierCart cashierCart = addCart(productId, skuId, TbCashierCart cashierCart = addCart(productId, skuId,
jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO.isTakeout()); jsonObject.getInteger("userId"), buyNum, tableId, shopId, isVip, note, shopEatTypeInfoDTO);
if (!TableConstant.CART_SEAT_ID.equals(productId)) { if (!TableConstant.CART_SEAT_ID.equals(productId)) {
jsonArray.add(cashierCart); jsonArray.add(cashierCart);
} }
@@ -439,7 +448,9 @@ public class CartService {
cashierCartArrayList.add(cashierCart); cashierCartArrayList.add(cashierCart);
if (isVip != 1) { if (isVip != 1) {
amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee()))); amount = amount.add(new BigDecimal(cashierCart.getTotalNumber()).multiply(cashierCart.getSalePrice().add(cashierCart.getPackFee())));
memberAmount = memberAmount.add(new BigDecimal(cashierCart.getNumber()).multiply(cashierCart.getMemberPrice().add(cashierCart.getPackFee()))); BigDecimal mPrice = cashierCart.getIsMember() == 1 && cashierCart.getMemberPrice() != null && cashierCart.getMemberPrice().compareTo(BigDecimal.ZERO) > 0
? cashierCart.getMemberPrice() : cashierCart.getSalePrice();
memberAmount = memberAmount.add(mPrice.multiply(BigDecimal.valueOf(cashierCart.getTotalNumber())).add(cashierCart.getPackFee()));
} }
} }
@@ -566,7 +577,7 @@ public class CartService {
} }
private TbCashierCart addCart(String productId, String skuId, Integer userId, Integer num, private TbCashierCart addCart(String productId, String skuId, Integer userId, Integer num,
String tableId, String shopId, Integer isVip, String note, boolean isTakeout) throws Exception { String tableId, String shopId, Integer isVip, String note, ShopEatTypeInfoDTO shopEatTypeInfoDTO) throws Exception {
try { try {
// 查询用户信息 // 查询用户信息
TbShopUser shopUser = shopUserMapper.selectByUserIdAndShopId(String.valueOf(userId), shopId); TbShopUser shopUser = shopUserMapper.selectByUserIdAndShopId(String.valueOf(userId), shopId);
@@ -601,7 +612,6 @@ public class CartService {
cashierCart.setNumber(num); cashierCart.setNumber(num);
cashierCart.setTotalNumber(num); cashierCart.setTotalNumber(num);
} }
cashierCart.setIsMember(shopUser.getIsVip() == 1 && productSku.getMemberPrice() != null && productSku.getMemberPrice().compareTo(BigDecimal.ZERO) > 0 ? 1 : 0);
cashierCart.setNote(note); cashierCart.setNote(note);
cashierCart.setProductId(productId); cashierCart.setProductId(productId);
cashierCart.setSkuId(skuId); cashierCart.setSkuId(skuId);
@@ -621,10 +631,13 @@ public class CartService {
cashierCart.setUpdatedAt(Instant.now().toEpochMilli()); cashierCart.setUpdatedAt(Instant.now().toEpochMilli());
cashierCart.setPackFee(BigDecimal.ZERO); cashierCart.setPackFee(BigDecimal.ZERO);
cashierCart.setRefundNumber(0); cashierCart.setRefundNumber(0);
cashierCart.setMemberPrice(productSku.getMemberPrice() == null || productSku.getMemberPrice().compareTo(BigDecimal.ZERO) <= 0 ? productSku.getSalePrice() : productSku.getMemberPrice()); if (shopEatTypeInfoDTO.isMemberPrice() && shopUser.getIsVip() == 1) {
cashierCart.setMemberPrice(productSku.getMemberPrice());
cashierCart.setIsMember(1);
}
cashierCart.setTradeDay(DateUtils.getDay()); cashierCart.setTradeDay(DateUtils.getDay());
// 打包费 // 打包费
if (isTakeout && product.getPackFee() != null) { if (shopEatTypeInfoDTO.isTakeout() && product.getPackFee() != null) {
cashierCart.setPackFee(product.getPackFee().multiply(BigDecimal.valueOf(num))); cashierCart.setPackFee(product.getPackFee().multiply(BigDecimal.valueOf(num)));
} }
if (isVip == 1) { if (isVip == 1) {

View File

@@ -57,6 +57,7 @@ public class ShopUtils {
boolean isDineInBefore = isOpenDineIn && isMunchies && !isTakeout; boolean isDineInBefore = isOpenDineIn && isMunchies && !isTakeout;
boolean hasTable = StrUtil.isNotBlank(tableId); boolean hasTable = StrUtil.isNotBlank(tableId);
boolean isNoneTable = !hasTable && !isTakeout; boolean isNoneTable = !hasTable && !isTakeout;
boolean isOpenMemberPrice = shopInfo.getIsMemberPrice() != null && shopInfo.getIsMemberPrice() == 1;
boolean needSeatFee = !isTakeout && (shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0); boolean needSeatFee = !isTakeout && (shopInfo.getIsTableFee() == null || shopInfo.getIsTableFee() == 0);
@@ -65,7 +66,7 @@ public class ShopUtils {
return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, isIncrMasterId, shopInfo, isTakeout ? OrderUseTypeEnum.TAKEOUT.getValue() : return new ShopEatTypeInfoDTO(isTakeout, isMunchies, isDineInAfter, isDineInBefore, needSeatFee, isNoneTable, isIncrMasterId, shopInfo, isTakeout ? OrderUseTypeEnum.TAKEOUT.getValue() :
isDineInBefore ? OrderUseTypeEnum.DINE_IN_BEFORE.getValue() : isDineInAfter ? OrderUseTypeEnum.DINE_IN_AFTER.getValue() : null, isOpenTakeout, isOpenDineIn, tableId); isDineInBefore ? OrderUseTypeEnum.DINE_IN_BEFORE.getValue() : isDineInAfter ? OrderUseTypeEnum.DINE_IN_AFTER.getValue() : null, isOpenTakeout, isOpenDineIn, isOpenMemberPrice, tableId);
} }
public ShopEatTypeInfoDTO getEatModel(String tableId, Object shopId) { public ShopEatTypeInfoDTO getEatModel(String tableId, Object shopId) {