diff --git a/src/main/java/com/cultural/heritage/controller/good/GoodController.java b/src/main/java/com/cultural/heritage/controller/good/GoodController.java index 53fb992..c761121 100644 --- a/src/main/java/com/cultural/heritage/controller/good/GoodController.java +++ b/src/main/java/com/cultural/heritage/controller/good/GoodController.java @@ -25,20 +25,14 @@ import com.cultural.heritage.model.dto.good.service.ServiceGoodQueryRequest; import com.cultural.heritage.model.dto.good.service.ServiceGoodSingleUpdateRequest; import com.cultural.heritage.model.dto.good.service.ServiceGoodUpdateRequest; import com.cultural.heritage.model.dto.timeperiod.TimePeriodAddRequest; -import com.cultural.heritage.model.entity.AppointmentDate; -import com.cultural.heritage.model.entity.CartRecord; -import com.cultural.heritage.model.entity.Good; -import com.cultural.heritage.model.entity.TimePeriod; +import com.cultural.heritage.model.entity.*; import com.cultural.heritage.model.vo.appointment.AppointmentDateTimePeriodVO; import com.cultural.heritage.model.vo.appointment.AppointmentDateVO; import com.cultural.heritage.model.vo.good.GoodPageVO; import com.cultural.heritage.model.vo.good.ServiceGoodCardVO; import com.cultural.heritage.model.vo.good.ServiceGoodVO; import com.cultural.heritage.model.vo.timeperiod.TimePeriodVO; -import com.cultural.heritage.service.good.AppointmentDateService; -import com.cultural.heritage.service.good.CartRecordService; -import com.cultural.heritage.service.good.GoodService; -import com.cultural.heritage.service.good.TimePeriodService; +import com.cultural.heritage.service.good.*; import com.cultural.heritage.service.user.UserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -83,6 +77,10 @@ public class GoodController { private CartRecordService cartRecordService; + @Resource + private CartExperienceService cartExperienceService; + + /** @@ -704,6 +702,11 @@ public class GoodController { if (serviceGoodSingleUpdateRequest == null || serviceGoodSingleUpdateRequest.getId() <= 0) { throw new BusinessException(ErrorCode.PARAMS_ERROR); } + // 获取原来的商品价格 + Long sourceId = serviceGoodSingleUpdateRequest.getId(); + Good resourceGood = goodService.getById(sourceId); + BigDecimal resourcePrice = resourceGood.getPrice(); + // 更新服务类商品的基本信息 Good good = new Good(); BeanUtils.copyProperties(serviceGoodSingleUpdateRequest, good); @@ -716,6 +719,16 @@ public class GoodController { boolean result = goodService.updateById(good); ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "服务类商品信息更新失败"); + // 如果更新了商品的价格,就需要更新购物车中的小计 + Long id = good.getId(); + BigDecimal targetPrice = good.getPrice(); + + if (resourcePrice.compareTo(targetPrice) != 0) { + // 更新购物车中的小计 + List cartExperienceList = goodService.updateCartExperienceGoodPrice(id, targetPrice); + boolean update = cartExperienceService.updateBatchById(cartExperienceList); + ThrowUtils.throwIf(!update, ErrorCode.OPERATION_ERROR, "购物车商品价格更新失败"); + } return ResultUtils.success(true); } diff --git a/src/main/java/com/cultural/heritage/controller/order/OrderController.java b/src/main/java/com/cultural/heritage/controller/order/OrderController.java index bc9156b..f68f324 100644 --- a/src/main/java/com/cultural/heritage/controller/order/OrderController.java +++ b/src/main/java/com/cultural/heritage/controller/order/OrderController.java @@ -14,6 +14,8 @@ import com.cultural.heritage.exception.ThrowUtils; import com.cultural.heritage.model.dto.CommonRequest; import com.cultural.heritage.model.dto.cart.CartOrderAddRequest; import com.cultural.heritage.model.dto.cart.CartOrderItemAddRequest; +import com.cultural.heritage.model.dto.cartService.CartExperienceOrderAddRequest; +import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest; import com.cultural.heritage.model.dto.order.OrderQueryRequest; import com.cultural.heritage.model.dto.order.OrderUpdateRequest; import com.cultural.heritage.model.dto.order.capital.GeneralGoodSingleBuyAddRequest; @@ -24,6 +26,7 @@ import com.cultural.heritage.model.entity.Order; import com.cultural.heritage.model.entity.OrderItems; import com.cultural.heritage.model.entity.User; import com.cultural.heritage.model.vo.order.OrderVO; +import com.cultural.heritage.service.good.CartExperienceService; import com.cultural.heritage.service.good.CartRecordService; import com.cultural.heritage.service.good.GoodService; import com.cultural.heritage.service.order.OrderItemService; @@ -73,6 +76,10 @@ public class OrderController { private CartRecordService cartRecordService; + @Resource + private CartExperienceService cartExperienceService; + + @Resource private GoodService goodService; @@ -88,7 +95,7 @@ public class OrderController { */ @PostMapping("/add") @Transactional(rollbackFor = Exception.class) - @Operation(summary = "小程序端用户创建常规类商品订单", description = "参数:订单创建请求体,权限:所有人,方法名:addOrder") + @Operation(summary = "小程序端用户创建常规类(服务类)商品订单", description = "参数:订单创建请求体,权限:所有人,方法名:addOrder") public BaseResponse addOrder(@RequestBody GeneralGoodSingleBuyAddRequest generalGoodSingleBuyAddRequest, HttpServletRequest request) { if (generalGoodSingleBuyAddRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); @@ -158,6 +165,40 @@ public class OrderController { + /** + * 小程序端用户创建服务类商品购物车订单 + */ + @PostMapping("/add/experience/cart") + @Transactional(rollbackFor = Exception.class) + @Operation(summary = "小程序端用户创建服务类商品购物车订单", description = "参数:购物车订单创建请求体,权限:所有人,方法名:addCartOrder") + public BaseResponse addCartExperienceOrder(@RequestBody CartExperienceOrderAddRequest cartExperienceOrderAddRequest, HttpServletRequest request) { + if (cartExperienceOrderAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + // 校验用户当前是否处于登录态 + User loginUser = userService.getLoginUser(request); + Long userId = loginUser.getId(); + + // 校验购物车数据是否准确 + List cartExperienceOrderItemAddRequestList = cartExperienceOrderAddRequest.getCartOrderItemAddRequestList(); + boolean isAccurate = cartExperienceService.validIsConsistent(cartExperienceOrderItemAddRequestList); + ThrowUtils.throwIf(!isAccurate, ErrorCode.OPERATION_ERROR, "当前购物车中的某些商品已下架或者不存在,无法生成订单"); + + // 封装成订单主要信息请求体 + OrderMainInfoAddRequest orderMainInfoAddRequest = orderService.packagedOrderMainInfoAddRequest(cartExperienceOrderAddRequest); + + // 创建通用订单(常规类和服务类商品) + List cartIds = cartExperienceOrderItemAddRequestList.stream().map(CartExperienceOrderItemAddRequest::getCartExperienceId).toList(); + Long orderId = orderService.createCommonOrder(orderMainInfoAddRequest, userId, true, cartIds, false); + + // 向消息队列中发送订单创建的消息 + orderService.sendCreateOrderMessage(orderId); + + return ResultUtils.success(orderId); + + } + + /** * Web端管理员分页查询订单 @@ -247,7 +288,6 @@ public class OrderController { map.put(orderId, orderItemsArrayList); } - List orderVOS = orders.stream().map(order -> { Long orderId = order.getId(); QueryWrapper orderItemsQueryWrapper = new QueryWrapper<>(); diff --git a/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderAddRequest.java b/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderAddRequest.java index 76757bb..9aec09e 100644 --- a/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderAddRequest.java +++ b/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderAddRequest.java @@ -30,8 +30,8 @@ public class CartExperienceOrderAddRequest implements Serializable { /** * 地址id */ - @Schema(description = "地址id(id > 0)", example = "12") - private Long addressId; + @Schema(description = "联系人(id > 0)", example = "12") + private Long contactsId; /** @@ -41,7 +41,6 @@ public class CartExperienceOrderAddRequest implements Serializable { private Long couponId; - /** * 订单备注 */ diff --git a/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderItemAddRequest.java b/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderItemAddRequest.java index b97d60a..28d572d 100644 --- a/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderItemAddRequest.java +++ b/src/main/java/com/cultural/heritage/model/dto/cartService/CartExperienceOrderItemAddRequest.java @@ -16,7 +16,7 @@ public class CartExperienceOrderItemAddRequest implements Serializable { * 购物车id */ @Schema(description = "购物车id(id > 0)", example = "20") - private Long cartRecordId; + private Long cartExperienceId; /** * 数量 diff --git a/src/main/java/com/cultural/heritage/service/good/CartExperienceService.java b/src/main/java/com/cultural/heritage/service/good/CartExperienceService.java index fe8ce50..7a4dc7c 100644 --- a/src/main/java/com/cultural/heritage/service/good/CartExperienceService.java +++ b/src/main/java/com/cultural/heritage/service/good/CartExperienceService.java @@ -2,6 +2,7 @@ package com.cultural.heritage.service.good; import com.baomidou.mybatisplus.extension.service.IService; import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest; +import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest; import com.cultural.heritage.model.entity.CartExperience; import com.cultural.heritage.model.vo.cartService.CartExperienceVO; import jakarta.servlet.http.HttpServletRequest; @@ -30,10 +31,10 @@ public interface CartExperienceService extends IService { -// /** -// * 在提交订单页校验购物车商品项的准确性 -// */ -// boolean validIsConsistent(List cartOrderItemAddRequestList); + /** + * 在提交订单页校验购物车商品项的准确性 + */ + boolean validIsConsistent(List cartExperienceOrderItemAddRequestList); diff --git a/src/main/java/com/cultural/heritage/service/good/GoodService.java b/src/main/java/com/cultural/heritage/service/good/GoodService.java index 277bdff..a971938 100644 --- a/src/main/java/com/cultural/heritage/service/good/GoodService.java +++ b/src/main/java/com/cultural/heritage/service/good/GoodService.java @@ -3,6 +3,7 @@ package com.cultural.heritage.service.good; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; import com.cultural.heritage.model.dto.good.GoodQueryRequest; +import com.cultural.heritage.model.entity.CartExperience; import com.cultural.heritage.model.entity.CartRecord; import com.cultural.heritage.model.entity.Good; @@ -30,9 +31,15 @@ public interface GoodService extends IService { /** - * 更新购物车中的小计 + * 更新常规类购物车中的小计 */ List updateCartGoodPrice(Long goodId, BigDecimal targetPrice); + /** + * 更新服务类购物车中的小计 + */ + List updateCartExperienceGoodPrice(Long goodId, BigDecimal targetPrice); + + } diff --git a/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java b/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java index 637a03e..e08bed4 100644 --- a/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java @@ -8,6 +8,7 @@ import com.cultural.heritage.exception.BusinessException; import com.cultural.heritage.exception.ThrowUtils; import com.cultural.heritage.mapper.CartExperienceMapper; import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest; +import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest; import com.cultural.heritage.model.entity.CartExperience; import com.cultural.heritage.model.entity.Good; import com.cultural.heritage.model.entity.User; @@ -193,34 +194,34 @@ public class CartExperienceServiceImpl extends ServiceImpl cartOrderItemAddRequestList) { -// if (cartOrderItemAddRequestList.size() == 0) { -// throw new BusinessException(ErrorCode.PARAMS_ERROR, "购物车中没有商品"); -// } -// // 封装map集合(键:购物车id, 值:购买数量) -// Map map = new HashMap<>(); -// for (CartOrderItemAddRequest cartOrderItemAddRequest : cartOrderItemAddRequestList) { -// Long cartRecordId = cartOrderItemAddRequest.getCartRecordId(); -// Integer quantity = cartOrderItemAddRequest.getQuantity(); -// map.put(cartRecordId, quantity); -// } -// // 修改购物车商品项的购买数量 -// List cartRecordIds = cartOrderItemAddRequestList.stream().map(CartOrderItemAddRequest::getCartRecordId).toList(); -// QueryWrapper queryWrapper = new QueryWrapper<>(); -// queryWrapper.in("id", cartRecordIds); -// List cartRecordList = this.list(queryWrapper); -// for (CartRecord cartRecord : cartRecordList) { -// Long id = cartRecord.getId(); -// Integer quantity = map.get(id); -// cartRecord.setQuantity(quantity); -// } -// List cartIds = getInvalidCartIds(cartRecordList); -// return cartIds.isEmpty(); -// } + /** + * 在提交订单页校验购物车商品项的准确性 + */ + @Override + public boolean validIsConsistent(List cartExperienceOrderItemAddRequestList) { + if (cartExperienceOrderItemAddRequestList.size() == 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "购物车中没有商品"); + } + // 封装map集合(键:购物车id, 值:购买数量) + Map map = new HashMap<>(); + for (CartExperienceOrderItemAddRequest cartExperienceOrderItemAddRequest : cartExperienceOrderItemAddRequestList) { + Long cartExperienceId = cartExperienceOrderItemAddRequest.getCartExperienceId(); + Integer quantity = cartExperienceOrderItemAddRequest.getQuantity(); + map.put(cartExperienceId, quantity); + } + // 修改购物车商品项的购买数量 + List cartExperienceIds = cartExperienceOrderItemAddRequestList.stream().map(CartExperienceOrderItemAddRequest::getCartExperienceId).toList(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", cartExperienceIds); + List cartExperiences = this.list(queryWrapper); + for (CartExperience cartExperience : cartExperiences) { + Long id = cartExperience.getId(); + Integer quantity = map.get(id); + cartExperience.setQuantity(quantity); + } + List cartIds = getInvalidCartIds(cartExperiences); + return cartIds.isEmpty(); + } /** diff --git a/src/main/java/com/cultural/heritage/service/good/impl/GoodServiceImpl.java b/src/main/java/com/cultural/heritage/service/good/impl/GoodServiceImpl.java index bc5c872..8b67f98 100644 --- a/src/main/java/com/cultural/heritage/service/good/impl/GoodServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/good/impl/GoodServiceImpl.java @@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.cultural.heritage.common.ErrorCode; import com.cultural.heritage.constant.CommonConstant; import com.cultural.heritage.exception.BusinessException; +import com.cultural.heritage.mapper.CartExperienceMapper; import com.cultural.heritage.mapper.CartRecordMapper; import com.cultural.heritage.mapper.GoodMapper; import com.cultural.heritage.model.dto.good.GoodQueryRequest; +import com.cultural.heritage.model.entity.CartExperience; import com.cultural.heritage.model.entity.CartRecord; import com.cultural.heritage.model.entity.Good; import com.cultural.heritage.service.good.GoodService; @@ -30,6 +32,10 @@ public class GoodServiceImpl extends ServiceImpl implements Go private CartRecordMapper cartRecordMapper; + @Resource + private CartExperienceMapper cartExperienceMapper; + + /** * 商品查询条件 */ @@ -116,7 +122,7 @@ public class GoodServiceImpl extends ServiceImpl implements Go /** - * 更新购物车中的小计 + * 更新常规类购物车中的小计 */ @Override public List updateCartGoodPrice(Long goodId, BigDecimal targetPrice) { @@ -132,4 +138,22 @@ public class GoodServiceImpl extends ServiceImpl implements Go } + + /** + * 更新服务类购物车中的小计 + */ + @Override + public List updateCartExperienceGoodPrice(Long goodId, BigDecimal targetPrice) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("goodId", goodId); + List cartExperienceList = cartExperienceMapper.selectList(queryWrapper); + // 更新购物车中的小计 + for (CartExperience cartExperience : cartExperienceList) { + Integer quantity = cartExperience.getQuantity(); + cartExperience.setSubtotal(targetPrice.multiply(BigDecimal.valueOf(quantity))); + } + return cartExperienceList; + } + + } diff --git a/src/main/java/com/cultural/heritage/service/order/OrderService.java b/src/main/java/com/cultural/heritage/service/order/OrderService.java index 6a249c8..2424ae0 100644 --- a/src/main/java/com/cultural/heritage/service/order/OrderService.java +++ b/src/main/java/com/cultural/heritage/service/order/OrderService.java @@ -3,6 +3,7 @@ package com.cultural.heritage.service.order; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; import com.cultural.heritage.model.dto.cart.CartOrderAddRequest; +import com.cultural.heritage.model.dto.cartService.CartExperienceOrderAddRequest; import com.cultural.heritage.model.dto.order.OrderAddRequest; import com.cultural.heritage.model.dto.order.OrderQueryRequest; import com.cultural.heritage.model.dto.order.capital.GeneralGoodSingleBuyAddRequest; @@ -66,8 +67,14 @@ public interface OrderService extends IService { /** - * 购物车封装订单主要信息请求体 + * 常规类商品购物车封装订单主要信息请求体 */ OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartOrderAddRequest cartOrderAddRequest); + + /** + * 服务类商品购物车封装订单主要信息请求体 + */ + OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartExperienceOrderAddRequest cartExperienceOrderAddRequest); + } diff --git a/src/main/java/com/cultural/heritage/service/order/impl/OrderServiceImpl.java b/src/main/java/com/cultural/heritage/service/order/impl/OrderServiceImpl.java index a53af65..02145cd 100644 --- a/src/main/java/com/cultural/heritage/service/order/impl/OrderServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/order/impl/OrderServiceImpl.java @@ -13,6 +13,8 @@ import com.cultural.heritage.exception.ThrowUtils; import com.cultural.heritage.mapper.*; import com.cultural.heritage.model.dto.cart.CartOrderAddRequest; import com.cultural.heritage.model.dto.cart.CartOrderItemAddRequest; +import com.cultural.heritage.model.dto.cartService.CartExperienceOrderAddRequest; +import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest; import com.cultural.heritage.model.dto.order.OrderAddRequest; import com.cultural.heritage.model.dto.order.OrderItemAddRequest; import com.cultural.heritage.model.dto.order.OrderQueryRequest; @@ -26,10 +28,7 @@ import com.cultural.heritage.model.dto.snapshot.GoodSnapshot; import com.cultural.heritage.model.entity.*; import com.cultural.heritage.model.enums.GoodTypeEnum; import com.cultural.heritage.model.vo.coupon.CouponVO; -import com.cultural.heritage.service.good.CartRecordService; -import com.cultural.heritage.service.good.CouponService; -import com.cultural.heritage.service.good.GoodService; -import com.cultural.heritage.service.good.UserCouponService; +import com.cultural.heritage.service.good.*; import com.cultural.heritage.service.order.OrderItemService; import com.cultural.heritage.service.order.OrderService; import com.cultural.heritage.utils.MultiDelayMessage; @@ -77,6 +76,10 @@ public class OrderServiceImpl extends ServiceImpl implements private CartRecordService cartRecordService; + @Resource + private CartExperienceService cartExperienceService; + + @Resource private RabbitTemplate rabbitTemplate; @@ -254,7 +257,7 @@ public class OrderServiceImpl extends ServiceImpl implements return orderItems; }).toList(); boolean save = orderItemService.saveBatch(newOrderItemsList); - ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR); + ThrowUtils.throwIf(!save, ErrorCode.OPERATION_ERROR, "订单明细生成失败"); if (isGeneral) { // 扣减商品库存 @@ -388,7 +391,7 @@ public class OrderServiceImpl extends ServiceImpl implements /** - * 购物车封装订单主要信息请求体 + * 常规类商品购物车封装订单主要信息请求体 */ @Override public OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartOrderAddRequest cartOrderAddRequest) { @@ -455,6 +458,78 @@ public class OrderServiceImpl extends ServiceImpl implements } + + + /** + * 服务类商品购物车封装订单主要信息请求体 + */ + @Override + public OrderMainInfoAddRequest packagedOrderMainInfoAddRequest(CartExperienceOrderAddRequest cartExperienceOrderAddRequest) { + // 封装成订单主要信息请求体 + OrderMainInfoAddRequest orderMainInfoAddRequest = new OrderMainInfoAddRequest(); + BeanUtils.copyProperties(cartExperienceOrderAddRequest, orderMainInfoAddRequest); + // 获取购物车id列表 + List cartExperienceOrderItemAddRequestList = cartExperienceOrderAddRequest.getCartOrderItemAddRequestList(); + List cartIds = cartExperienceOrderItemAddRequestList.stream().map(CartExperienceOrderItemAddRequest::getCartExperienceId).toList(); + // 根据id列表获取购物车商品信息 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("id", cartIds); + List cartExperienceList = cartExperienceService.list(queryWrapper); + + List goodIds = cartExperienceList.stream().map(CartExperience::getGoodId).toList(); + QueryWrapper goodQueryWrapper = new QueryWrapper<>(); + goodQueryWrapper.in("id", goodIds); + List goodList = goodService.list(goodQueryWrapper); + // 封装map集合(键:商品id, 值:商品信息) + Map goodMap = new HashMap<>(); + for (Good good : goodList) { + goodMap.put(good.getId(), good); + } + // 封装成一个map集合(键:购物车id, 值:购物车商品数量) + Map map = new HashMap<>(); + for (CartExperienceOrderItemAddRequest cartExperienceOrderItemAddRequest : cartExperienceOrderItemAddRequestList) { + Long cartExperienceId = cartExperienceOrderItemAddRequest.getCartExperienceId(); + Integer quantity = cartExperienceOrderItemAddRequest.getQuantity(); + map.put(cartExperienceId, quantity); + } + + // 计算订单总金额 + BigDecimal totalAmount = BigDecimal.ZERO; + for (CartExperience cartExperience : cartExperienceList) { + Long goodId = cartExperience.getGoodId(); + Good good = goodMap.get(goodId); + Long cartExperienceId = cartExperience.getId(); + Integer quantity = map.get(cartExperienceId); + totalAmount = totalAmount.add(good.getPrice().multiply(BigDecimal.valueOf(quantity))); + } + // 处理优惠券满减金额 + Long couponId = orderMainInfoAddRequest.getCouponId(); + if (couponId != null) { + UserCoupon userCoupon = userCouponService.getById(couponId); + ThrowUtils.throwIf(userCoupon == null || userCoupon.getCouponVO().getStatus().equals("已过期"), ErrorCode.OPERATION_ERROR, "用户优惠券不存在或已过期"); + BigDecimal conditionAmount = userCoupon.getCouponVO().getConditionAmount(); + totalAmount = totalAmount.subtract(conditionAmount); + } + // 填充订单主要信息请求体金额 + orderMainInfoAddRequest.setTotalAmount(totalAmount); + // 封装成订单明细主要信息请求体列表 + List orderItemMainInfoAddRequestList = new ArrayList<>(); + OrderItemMainInfoAddRequest orderItemMainInfoAddRequest; + for (CartExperience cartExperience : cartExperienceList) { + Long goodId = cartExperience.getGoodId(); + Long cartExperienceId = cartExperience.getId(); + Integer quantity = map.get(cartExperienceId); + String reservationDate = cartExperience.getReservationDate(); + String timeSlot = cartExperience.getTimeSlot(); + orderItemMainInfoAddRequest = new OrderItemMainInfoAddRequest(goodId, quantity, reservationDate, timeSlot); + orderItemMainInfoAddRequestList.add(orderItemMainInfoAddRequest); + } + // 填充到订单主要信息请求体 + orderMainInfoAddRequest.setOrderItemMainInfoAddRequestList(orderItemMainInfoAddRequestList); + return orderMainInfoAddRequest; + } + + /** * 根据id获取订单(地址,联系人,商品)信息 */