|
|
@@ -240,8 +240,8 @@ public class ProductOrderService {
|
|
|
order.setBuyerId(buyerId);
|
|
|
order.setFamilyId(buyer != null ? buyer.getFamilyId() : null);
|
|
|
order.setQuantity(dto.getQuantity());
|
|
|
- order.setUnitPrice(product.getPrice());
|
|
|
- order.setTotalAmount(product.getPrice() * dto.getQuantity());
|
|
|
+ order.setUnitPrice(getEligibleMemberPrice(product, buyerId));
|
|
|
+ order.setTotalAmount(getEligibleMemberPrice(product, buyerId) * dto.getQuantity());
|
|
|
order.setPointsUsed(dto.getPointsUsed() != null ? dto.getPointsUsed() : 0);
|
|
|
int pointsCost = dto.getPointsUsed() != null ? dto.getPointsUsed() : 0;
|
|
|
order.setPointsCost(pointsCost);
|
|
|
@@ -496,7 +496,7 @@ public class ProductOrderService {
|
|
|
return Result.error(bundleCheck.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- int unitPrice = product.getPrice();
|
|
|
+ int unitPrice = getEligibleMemberPrice(product, buyerId);
|
|
|
if (item.getSkuId() != null) {
|
|
|
ProductSku sku = productSkuService.getById(item.getSkuId());
|
|
|
if (sku != null) {
|
|
|
@@ -1559,9 +1559,44 @@ public class ProductOrderService {
|
|
|
order.setRemark("供应商审核修改: " + changeLog.toString());
|
|
|
}
|
|
|
|
|
|
- // ===== 6. 更新订单时间 =====
|
|
|
+ // ===== 7. 组装返回 =====
|
|
|
order.setUpdatedAt(new Date());
|
|
|
orderMapper.updateById(order);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取用户有效的会员价。
|
|
|
+ * 规则:如果产品 min_discount_level 为 NULL,所有会员均可享受 memberPrice;
|
|
|
+ * 如果产品 min_discount_level 设置(如 BASIC/FAMILY/PREMIUM),
|
|
|
+ * 则仅当用户会员等级 >= min_discount_level 时才返回 memberPrice,
|
|
|
+ * 否则返回原价 product.getPrice()。
|
|
|
+ */
|
|
|
+ private Integer getEligibleMemberPrice(Product product, Long buyerId) {
|
|
|
+ if (product == null || product.getMemberPrice() == null || product.getMemberPrice() <= 0) {
|
|
|
+ return product != null ? product.getPrice() : 0;
|
|
|
+ }
|
|
|
+ // 产品未设置最低级别,所有会员均可享会员价
|
|
|
+ if (product.getMinDiscountLevel() == null) {
|
|
|
+ return product.getMemberPrice();
|
|
|
+ }
|
|
|
+ // 已设置最低级别,检查用户会员等级
|
|
|
+ String userLevel = "FREE";
|
|
|
+ if (buyerId != null) {
|
|
|
+ User user = userMapper.selectById(buyerId);
|
|
|
+ if (user != null) {
|
|
|
+ userLevel = membershipService.getMemberLevel(userId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 比较级别数字:级别数字越小越低
|
|
|
+ int userLevelOrder = membershipService.getLevelOrder(userLevel);
|
|
|
+ int minLevelOrder = membershipService.getLevelOrder(product.getMinDiscountLevel());
|
|
|
+ // 用户级别 >= 最低要求级别,则可享会员价
|
|
|
+ if (userLevelOrder >= minLevelOrder) {
|
|
|
+ return product.getMemberPrice();
|
|
|
+ }
|
|
|
+ return product.getPrice();
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
// ===== 7. 组装返回 =====
|
|
|
ProductOrderDTO dto = ProductOrderDTO.from(order);
|