feat: 购物车及订单增加会员价

This commit is contained in:
张松
2024-11-06 09:49:34 +08:00
parent 5ebdb1610c
commit 5285a0875f
2 changed files with 33 additions and 6 deletions

View File

@@ -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);
}
}
}

View File

@@ -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<TbCashierCart> allCartList, TbShopTable shopTable) {
private OrderCartInfoDTO getCartInfoForOrder(ShopEatTypeInfoDTO shopEatTypeInfoDTO, List<TbCashierCart> allCartList, TbShopTable shopTable, TbShopUser shopUser) {
OrderCartInfoDTO infoDTO = new OrderCartInfoDTO();
// 就餐人数
ArrayList<Integer> 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;