|
|
@@ -16,7 +16,9 @@ import shop.alien.dining.service.StoreOrderService;
|
|
|
import shop.alien.dining.util.TokenUtil;
|
|
|
import shop.alien.entity.store.*;
|
|
|
import shop.alien.entity.store.dto.CartDTO;
|
|
|
+import shop.alien.entity.store.dto.CartItemDTO;
|
|
|
import shop.alien.entity.store.dto.CreateOrderDTO;
|
|
|
+import shop.alien.entity.store.vo.OrderInfoVO;
|
|
|
import shop.alien.mapper.*;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
@@ -47,6 +49,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
private final StoreCouponUsageMapper storeCouponUsageMapper;
|
|
|
private final StoreCartMapper storeCartMapper;
|
|
|
private final BaseRedisService baseRedisService;
|
|
|
+ private final StoreInfoMapper storeInfoMapper;
|
|
|
|
|
|
@Override
|
|
|
public StoreOrder createOrder(CreateOrderDTO dto) {
|
|
|
@@ -669,6 +672,78 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public OrderInfoVO getOrderInfo(Integer orderId) {
|
|
|
+ log.info("查询订单信息, orderId={}", orderId);
|
|
|
+
|
|
|
+ // 1. 查询订单基本信息
|
|
|
+ StoreOrder order = this.getById(orderId);
|
|
|
+ if (order == null || order.getDeleteFlag() == 1) {
|
|
|
+ throw new RuntimeException("订单不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 查询订单明细(菜品清单)
|
|
|
+ LambdaQueryWrapper<StoreOrderDetail> detailWrapper = new LambdaQueryWrapper<>();
|
|
|
+ detailWrapper.eq(StoreOrderDetail::getOrderId, orderId);
|
|
|
+ detailWrapper.eq(StoreOrderDetail::getDeleteFlag, 0);
|
|
|
+ detailWrapper.orderByDesc(StoreOrderDetail::getCreatedTime);
|
|
|
+ List<StoreOrderDetail> details = orderDetailMapper.selectList(detailWrapper);
|
|
|
+
|
|
|
+ // 转换为CartItemDTO
|
|
|
+ List<CartItemDTO> items = details.stream().map(detail -> {
|
|
|
+ CartItemDTO item = new CartItemDTO();
|
|
|
+ item.setCuisineId(detail.getCuisineId());
|
|
|
+ item.setCuisineName(detail.getCuisineName());
|
|
|
+ item.setCuisineType(detail.getCuisineType());
|
|
|
+ item.setCuisineImage(detail.getCuisineImage());
|
|
|
+ item.setUnitPrice(detail.getUnitPrice());
|
|
|
+ item.setQuantity(detail.getQuantity());
|
|
|
+ item.setSubtotalAmount(detail.getSubtotalAmount());
|
|
|
+ item.setAddUserId(detail.getAddUserId());
|
|
|
+ item.setAddUserPhone(detail.getAddUserPhone());
|
|
|
+ item.setRemark(detail.getRemark());
|
|
|
+ return item;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 3. 查询门店信息
|
|
|
+ StoreInfo storeInfo = storeInfoMapper.selectById(order.getStoreId());
|
|
|
+ String storeName = storeInfo != null ? storeInfo.getStoreName() : "";
|
|
|
+
|
|
|
+ // 4. 查询优惠券信息(如果有)
|
|
|
+ String couponName = null;
|
|
|
+ if (order.getCouponId() != null) {
|
|
|
+ LifeDiscountCoupon coupon = lifeDiscountCouponMapper.selectById(order.getCouponId());
|
|
|
+ if (coupon != null) {
|
|
|
+ couponName = coupon.getName();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 5. 组装OrderInfoVO
|
|
|
+ OrderInfoVO vo = new OrderInfoVO();
|
|
|
+ vo.setOrderId(order.getId());
|
|
|
+ vo.setOrderNo(order.getOrderNo());
|
|
|
+ vo.setStoreName(storeName);
|
|
|
+ vo.setTableNumber(order.getTableNumber());
|
|
|
+ vo.setDinerCount(order.getDinerCount());
|
|
|
+ vo.setContactPhone(order.getContactPhone());
|
|
|
+ vo.setRemark(order.getRemark());
|
|
|
+ vo.setItems(items);
|
|
|
+ vo.setTotalAmount(order.getTotalAmount());
|
|
|
+ vo.setTablewareFee(order.getTablewareFee());
|
|
|
+ vo.setCouponId(order.getCouponId());
|
|
|
+ vo.setCouponName(couponName);
|
|
|
+ vo.setDiscountAmount(order.getDiscountAmount());
|
|
|
+ vo.setPayAmount(order.getPayAmount());
|
|
|
+ vo.setOrderStatus(order.getOrderStatus());
|
|
|
+ vo.setPayStatus(order.getPayStatus());
|
|
|
+ vo.setPayType(order.getPayType());
|
|
|
+ vo.setCreatedTime(order.getCreatedTime());
|
|
|
+ vo.setPayTime(order.getPayTime());
|
|
|
+
|
|
|
+ log.info("查询订单信息完成, orderId={}, itemCount={}", orderId, items.size());
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 生成订单号
|
|
|
*/
|