Browse Source

优化积分订单详情接口

wangzhijun 5 days ago
parent
commit
f08db22557

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/AfterSaleOrderFeeVo.java

@@ -10,6 +10,9 @@ import java.math.BigDecimal;
 @ApiModel("售后费用详情vo")
 public class AfterSaleOrderFeeVo {
 
+    @ApiModelProperty("费用ID")
+    private Long id;
+
     @ApiModelProperty("费用类型")
     private String type;
 

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/OrderAfterSaleVo.java

@@ -12,7 +12,7 @@ import java.util.List;
 public class OrderAfterSaleVo {
 
     @ApiModelProperty("售后信息ID")
-    private Long id;
+    private Long afterSaleOrderId;
 
     @ApiModelProperty("售后类型:1退货 2换货")
     private Integer afterSaleType;

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/OrderBaseInfoVo.java

@@ -58,4 +58,7 @@ public class OrderBaseInfoVo {
     @ApiModelProperty("订单备注")
     private String buyerRemark;
 
+    @ApiModelProperty("地址ID")
+    private Long addressId;
+
 }

+ 2 - 8
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/OrderItemVo.java

@@ -13,8 +13,8 @@ public class OrderItemVo {
     @ApiModelProperty("订单号")
     private String orderNo;
 
-    @ApiModelProperty("商品图片")
-    private String productImage;
+    @ApiModelProperty("商品规格图片")
+    private String skuImage;
 
     @ApiModelProperty("商品名称")
     private String productName;
@@ -22,12 +22,6 @@ public class OrderItemVo {
     @ApiModelProperty("规格")
     private String specName;
 
-    @ApiModelProperty("现金价格")
-    private BigDecimal priceMoney;
-
-    @ApiModelProperty("积分价格")
-    private Integer pricePoint;
-
     @ApiModelProperty("实付")
     private BigDecimal payAmount;
 

+ 2 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/mapper/ProductOrderInfoMapper.java

@@ -35,4 +35,6 @@ public interface ProductOrderInfoMapper extends BaseMapper<ProductOrderInfo> {
     Page<ProductOrderPageItemVo> adminPage(Page<ProductOrderInfo> page, @Param("dto") ProductOrderPageDTO dto);
 
     ProductOrderCountVo getOrderTotalCount();
+
+    OrderBaseInfoVo getOrderBaseInfoById(@Param("orderId") Long orderId);
 }

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/mapper/ProductOrderItemMapper.java

@@ -2,11 +2,14 @@ package com.ylx.massage.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ylx.massage.domain.ProductOrderItem;
+import com.ylx.massage.domain.vo.OrderItemVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 商品订单明细Mapper接口
  */
 @Mapper
 public interface ProductOrderItemMapper extends BaseMapper<ProductOrderItem> {
+    OrderItemVo getOrderItemVoByOrderId(@Param("orderId") Long orderId);
 }

+ 16 - 48
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/ProductOrderInfoServiceImpl.java

@@ -493,64 +493,21 @@ public class ProductOrderInfoServiceImpl extends ServiceImpl<ProductOrderInfoMap
     @Override
     public ProductOrderDetailAdminVo getOrderDetailForAdmin(Long orderId) {
 
-        ProductOrderInfo productOrderInfo = this.productOrderInfoMapper.selectById(orderId);
-        if (ObjectUtil.isNull(productOrderInfo)) {
-            throw new IllegalArgumentException("参数有误,订单不存在");
-        }
-
         ProductOrderDetailAdminVo vo = new ProductOrderDetailAdminVo();
 
         // 1. 订单基础信息
-        OrderBaseInfoVo orderBaseInfo = new OrderBaseInfoVo();
-        BeanUtil.copyProperties(productOrderInfo, orderBaseInfo);
-        orderBaseInfo.setBuyerRemark(productOrderInfo.getBuyerRemark());
-
-        // 获取用户电话号码
-        TWxUser wxUser = wxUserService.getByOpenId(productOrderInfo.getOpenId());
-        if (ObjectUtil.isNotNull(wxUser)) {
-            orderBaseInfo.setPhone(wxUser.getcPhone());
-        }
-
-        // 获取商品的信息
-        LambdaQueryWrapper<ProductOrderItem> itemQuery = new LambdaQueryWrapper<>();
-        itemQuery.eq(ProductOrderItem::getOrderId, productOrderInfo.getId());
-        itemQuery.last("LIMIT 1");
-        ProductOrderItem productOrderItem = productOrderItemMapper.selectOne(itemQuery);
-        if (ObjectUtil.isNotNull(productOrderItem)) {
-            BeanUtil.copyProperties(productOrderItem, orderBaseInfo);
+        OrderBaseInfoVo orderBaseInfo = this.productOrderInfoMapper.getOrderBaseInfoById(orderId);
+        if(ObjectUtil.isNull(orderBaseInfo)){
+            throw new ServiceException("订单不存在");
         }
-
         vo.setOrderBaseInfo(orderBaseInfo);
 
         // 2. 收货人信息
-        ReceiverInfoVo receiverInfo = new ReceiverInfoVo();
-        if (ObjectUtil.isNotNull(productOrderInfo.getAddressId())) {
-            ProductOrderAddress address = productOrderAddressService.getById(productOrderInfo.getAddressId());
-            if (ObjectUtil.isNotNull(address)) {
-                BeanUtil.copyProperties(address, receiverInfo);
-            }
-        }
+        ReceiverInfoVo receiverInfo = getReceiverInfo(orderBaseInfo.getAddressId());
         vo.setReceiverInfo(receiverInfo);
 
         // 3. 商品列表
-        LambdaQueryWrapper<ProductOrderItem> itemListQuery = new LambdaQueryWrapper<>();
-        itemListQuery.eq(ProductOrderItem::getOrderId, productOrderInfo.getId());
-        ProductOrderItem orderItem = productOrderItemMapper.selectOne(itemListQuery);
-        OrderItemVo itemVo = new OrderItemVo();
-        if (ObjectUtil.isNotNull(orderItem)) {
-            itemVo.setOrderNo(orderItem.getOrderNo());
-            itemVo.setProductImage(orderItem.getSkuImage());
-            itemVo.setProductName(orderItem.getProductName());
-            itemVo.setSpecName(orderItem.getSkuSpec());
-            itemVo.setPayAmount(orderItem.getActualAmount());
-
-            // 获取商品价格信息
-            ProductSku productSku = productSkuMapper.selectById(orderItem.getSkuId());
-            if (productSku != null) {
-                itemVo.setPriceMoney(productSku.getPriceMoney());
-                itemVo.setPricePoint(productSku.getPricePoint());
-            }
-        }
+        OrderItemVo itemVo = productOrderItemMapper.getOrderItemVoByOrderId(orderId);
         vo.setOrderItemInfo(itemVo);
 
         // 4. 售后信息
@@ -586,4 +543,15 @@ public class ProductOrderInfoServiceImpl extends ServiceImpl<ProductOrderInfoMap
         return orderInfo;
     }
 
+    private ReceiverInfoVo getReceiverInfo(Long addressId) {
+        ReceiverInfoVo receiverInfo = new ReceiverInfoVo();
+        if (ObjectUtil.isNotNull(addressId)) {
+            ProductOrderAddress address = productOrderAddressService.getById(addressId);
+            if (ObjectUtil.isNotNull(address)) {
+                BeanUtil.copyProperties(address, receiverInfo);
+            }
+        }
+        return receiverInfo;
+    }
+
 }

+ 4 - 2
nightFragrance-massage/src/main/resources/mapper/massage/AfterSaleOrderMapper.xml

@@ -4,6 +4,7 @@
 
     <!-- 费用VO映射 -->
     <resultMap id="AfterSaleFeeResultMap" type="com.ylx.massage.domain.vo.AfterSaleOrderFeeVo">
+        <id column="id" property="id"/>
         <result column="type" property="type"/>
         <result column="fee" property="fee"/>
         <result column="remark" property="remark"/>
@@ -11,7 +12,7 @@
 
     <!-- 主VO映射 + 集合自动封装 feeList -->
     <resultMap id="AfterSaleVoResultMap" type="com.ylx.massage.domain.vo.OrderAfterSaleVo">
-        <id column="id" property="id"/>
+        <id column="afterSaleOrderId" property="afterSaleOrderId"/>
         <result column="after_sale_type" property="afterSaleType"/>
         <result column="create_time" property="createTime"/>
         <result column="apply_reason" property="applyReason"/>
@@ -28,12 +29,13 @@
 
     <select id="selectAfterSaleVoByOrderId" resultMap="AfterSaleVoResultMap">
         SELECT
-            a.id,
+            a.id as afterSaleOrderId,
             a.after_sale_type,
             a.create_time,
             a.apply_reason,
             a.after_sale_status,
             a.logistics_no,
+            f.id,
             f.type,
             f.fee,
             f.remark

+ 28 - 0
nightFragrance-massage/src/main/resources/mapper/massage/ProductOrderInfoMapper.xml

@@ -147,4 +147,32 @@
             is_deleted = 0
     </select>
 
+    <select id="getOrderBaseInfoById" resultType="com.ylx.massage.domain.vo.OrderBaseInfoVo">
+        SELECT
+            poi.id,
+            poi.order_no,
+            poi.order_status,
+            poi.pay_status,
+            item.product_name,
+            item.product_id,
+            item.quantity,
+            CAST(poi.pay_amount / 100 AS DECIMAL(10,2)) AS payAmount,
+            poi.points_used,
+            p.payment_type,
+            u.c_phone AS phone,
+            poi.delivery_time,
+            poi.create_time,
+            poi.logistics_no,
+            poi.buyer_remark,
+            poi.address_id
+        FROM
+            product_order_info poi
+        LEFT JOIN product_order_item item ON poi.id = item.order_id
+        LEFT JOIN product p ON item.product_id = p.id
+        LEFT JOIN t_wx_user u ON poi.open_id = u.c_openid
+        WHERE
+            poi.id = #{orderId}
+        AND poi.is_deleted = 0
+    </select>
+
 </mapper>

+ 21 - 0
nightFragrance-massage/src/main/resources/mapper/massage/ProductOrderItemMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ylx.massage.mapper.ProductOrderItemMapper">
+
+    <select id="getOrderItemVoByOrderId" resultType="com.ylx.massage.domain.vo.OrderItemVo">
+        SELECT
+            poi.order_no,
+            poi.sku_image,
+            ps.spec_combo AS specName,
+            poi.product_name,
+            ps.price_money AS payAmount,
+            ps.price_point AS pointsUsed,
+            p.payment_type AS paymentType
+        FROM
+            product_order_item poi
+                LEFT JOIN product p ON poi.product_id = p.id
+                LEFT JOIN product_sku ps ON poi.sku_id = ps.id
+        WHERE
+            poi.order_id = #{orderId}
+    </select>
+</mapper>