浏览代码

提交“积分订单管理详情接口”

wangzhijun 6 天之前
父节点
当前提交
fa4b72f622

+ 16 - 6
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/ProductOrderController.java

@@ -4,8 +4,9 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.core.controller.BaseController;
 import com.ylx.common.core.domain.R;
-import com.ylx.massage.domain.Product;
+import com.ylx.massage.domain.ProductOrderInfo;
 import com.ylx.massage.domain.dto.*;
+import com.ylx.massage.domain.vo.ProductOrderDetailAdminVo;
 import com.ylx.massage.domain.vo.ProductOrderDetailVo;
 import com.ylx.massage.domain.vo.ProductOrderListVo;
 import com.ylx.massage.domain.vo.ProductOrderPageVo;
@@ -140,10 +141,19 @@ public class ProductOrderController extends BaseController {
     }
 
     @PreAuthorize("@ss.hasPermi('product:order:query')")
-    @GetMapping("/admin/page")
-    @ApiOperation("PC查询商品管理列表")
-    public R<Page<ProductOrderPageVo>> adminPage(Page<Product> page, @RequestBody ProductOrderPageDTO dto) {
-        Page<ProductOrderPageVo> pageData = this.productOrderInfoService.adminPage(page, dto);
-        return R.ok(pageData);
+    @PostMapping("/admin/page")
+    @ApiOperation("积分订单管理分页接口")
+    public R<ProductOrderPageVo> adminPage(Page<ProductOrderInfo> page, @RequestBody ProductOrderPageDTO dto) {
+        ProductOrderPageVo vo = this.productOrderInfoService.adminPage(page, dto);
+        return R.ok(vo);
     }
+
+    @PreAuthorize("@ss.hasPermi('product:order:query')")
+    @GetMapping("/admin/detail/{orderId}")
+    @ApiOperation("积分订单管理详情接口")
+    public R<ProductOrderDetailAdminVo> getOrderDetailForAdmin(@PathVariable String orderId) {
+        ProductOrderDetailAdminVo detailVO = productOrderInfoService.getOrderDetailForAdmin(orderId);
+        return R.ok(detailVO);
+    }
+
 }

+ 2 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/domain/AfterSaleOrder.java

@@ -24,8 +24,8 @@ public class AfterSaleOrder implements Serializable {
     /** 原订单编号 */
     private String orderNo;
 
-    /** 用户ID */
-    private Long userId;
+    /** 用户openId */
+    private String openId;
 
     /**
      * 收货状态

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

@@ -0,0 +1,103 @@
+package com.ylx.massage.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("商品售后vo")
+public class OrderAfterSaleVo {
+
+    @ApiModelProperty("售后信息ID")
+    private Long id;
+
+    /** 售后单号(唯一) */
+    private String afterSaleNo;
+
+    /** 原订单ID */
+    private Long orderId;
+
+    /** 原订单编号 */
+    private String orderNo;
+
+    /** 用户ID */
+    private Long userId;
+
+    /**
+     * 收货状态
+     * 1未收货 2已收货
+     */
+    private Integer receiptStatus;
+
+    @ApiModelProperty("售后类型:1退货 2换货")
+    private Integer afterSaleType;
+
+    /**
+     * 售后状态
+     * 0待审核 1审核通过 2审核拒绝 3待买家退货 4待商家收货 5退款处理中 6售后完成
+     */
+    private Integer afterSaleStatus;
+
+    @ApiModelProperty("申请原因")
+    private Integer applyReason;
+
+    /** 问题描述 */
+    private String applyDesc;
+
+    /** 凭证图片URL,多个逗号分隔(最多3张) */
+    private String applyImages;
+
+    /** 申请退款金额(分) */
+    private Integer applyAmount;
+
+    /** 实际退款金额(分) */
+    private Integer actualRefundAmount;
+
+    /**
+     * 退款方式
+     * 1原路退回 2退至余额
+     */
+    private Integer refundType;
+
+    /** 审核人ID */
+    private Long auditUserId;
+
+    /** 审核时间 */
+    private LocalDateTime auditTime;
+
+    /** 审核备注(拒绝原因等) */
+    private String auditRemark;
+
+    /**
+     * 拒绝原因
+     * 1超过售后期限 2不符合售后条件 3凭证不足 4其他
+     */
+    private Integer rejectReason;
+
+    /** 退款完成时间 */
+    private LocalDateTime refundTime;
+
+    /** 退款流水号(第三方) */
+    private String refundNo;
+
+    /** 换货新订单ID */
+    private Long exchangeOrderId;
+
+    /** 换货新订单编号 */
+    private String exchangeOrderNo;
+
+    /** 售后申请过期时间 */
+    private LocalDateTime expireTime;
+
+    /** 售后完成时间 */
+    private LocalDateTime finishTime;
+
+    /** 备注 */
+    private String remark;
+
+    @ApiModelProperty("申请时间")
+    private LocalDateTime createTime;
+
+}

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

@@ -0,0 +1,55 @@
+package com.ylx.massage.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+@Data
+@ApiModel("订单基础信息 VO")
+public class OrderBaseInfoVo {
+
+    @ApiModelProperty("订单ID")
+    private Long id;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("订单状态:0待付款 1待发货 2已发货 3待收货 4已收货 5换货待审核 6换货中 7退货待审核")
+    private Integer orderStatus;
+
+    @ApiModelProperty("支付状态:0未支付 1已支付 2支付失败 3已退款")
+    private Integer payStatus;
+
+    @ApiModelProperty("商品名称")
+    private String productName;
+
+    @ApiModelProperty("商品ID")
+    private Long productId;
+
+    @ApiModelProperty("购买数量")
+    private Integer quantity;
+
+    @ApiModelProperty("实付金额")
+    private BigDecimal payAmount;
+
+    @ApiModelProperty("电话号码")
+    private String phone;
+
+    @ApiModelProperty("发货时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime deliveryTime;
+
+    @ApiModelProperty("下单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("快递单号")
+    private String logisticsNo;
+
+    @ApiModelProperty("订单备注")
+    private String buyerRemark;
+
+}

+ 34 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/OrderItemVo.java

@@ -0,0 +1,34 @@
+package com.ylx.massage.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("商品列表vo")
+public class OrderItemVo {
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("商品图片")
+    private String productImage;
+
+    @ApiModelProperty("商品名称")
+    private String productName;
+
+    @ApiModelProperty("规格")
+    private String specName;
+
+    @ApiModelProperty("现金价格")
+    private BigDecimal priceMoney;
+
+    @ApiModelProperty("积分价格")
+    private Integer pricePoint;
+
+    @ApiModelProperty("实付")
+    private BigDecimal payAmount;
+
+}

+ 23 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ProductOrderDetailAdminVo.java

@@ -0,0 +1,23 @@
+package com.ylx.massage.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("积分订单管理分页列表详情VO")
+public class ProductOrderDetailAdminVo {
+
+    @ApiModelProperty("订单基础信息")
+    private OrderBaseInfoVo orderBaseInfo;
+
+    @ApiModelProperty("收货人信息")
+    private ReceiverInfoVo receiverInfo;
+
+    @ApiModelProperty("商品信息")
+    private OrderItemVo orderItemInfo;
+
+    @ApiModelProperty("售后信息")
+    private OrderAfterSaleVo afterSaleInfo;
+
+}

+ 20 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ReceiverInfoVo.java

@@ -0,0 +1,20 @@
+package com.ylx.massage.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("收货人信息vo")
+public class ReceiverInfoVo {
+
+    @ApiModelProperty("收货人姓名")
+    private String receiverName;
+
+    @ApiModelProperty("收货人手机号")
+    private String receiverPhone;
+
+    @ApiModelProperty("完整地址")
+    private String fullAddress;
+
+}

+ 3 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/IProductOrderInfoService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ylx.common.core.domain.R;
 import com.ylx.massage.domain.ProductOrderInfo;
 import com.ylx.massage.domain.dto.*;
+import com.ylx.massage.domain.vo.ProductOrderDetailAdminVo;
 import com.ylx.massage.domain.vo.ProductOrderDetailVo;
 import com.ylx.massage.domain.vo.ProductOrderListVo;
 import com.ylx.massage.domain.vo.ProductOrderPageVo;
@@ -61,4 +62,6 @@ public interface IProductOrderInfoService extends IService<ProductOrderInfo> {
     boolean cancelReturn(ProductOrderOperateDTO dto);
 
     ProductOrderPageVo adminPage(Page<ProductOrderInfo> page, ProductOrderPageDTO dto);
+
+    ProductOrderDetailAdminVo getOrderDetailForAdmin(String orderId);
 }

+ 86 - 5
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/ProductOrderInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ylx.massage.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -12,9 +13,7 @@ import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.SecurityUtils;
 import com.ylx.massage.domain.*;
 import com.ylx.massage.domain.dto.*;
-import com.ylx.massage.domain.vo.ProductOrderDetailVo;
-import com.ylx.massage.domain.vo.ProductOrderListVo;
-import com.ylx.massage.domain.vo.ProductOrderPageVo;
+import com.ylx.massage.domain.vo.*;
 import com.ylx.massage.enums.BillTypeEnum;
 import com.ylx.massage.enums.PaymentStatusEnum;
 import com.ylx.massage.enums.ProductOrderStatusEnum;
@@ -38,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 商品订单信息Service实现类
@@ -486,8 +487,88 @@ public class ProductOrderInfoServiceImpl extends ServiceImpl<ProductOrderInfoMap
     }
 
     @Override
-    public Page<ProductOrderPageVo> adminPage(Page<Product> page, ProductOrderPageDTO dto) {
-        return null;
+    public ProductOrderPageVo adminPage(Page<ProductOrderInfo> page, ProductOrderPageDTO dto) {
+        ProductOrderPageVo vo = new ProductOrderPageVo();
+
+        // 1. 分页查询订单列表
+        Page<ProductOrderPageItemVo> list = this.productOrderInfoMapper.adminPage(page, dto);
+        vo.setList(list);
+
+        // 2. 查询订单总数
+        ProductOrderCountVo count = this.productOrderInfoMapper.getOrderTotalCount();
+        vo.setCount(count);
+
+        return vo;
+    }
+
+    @Override
+    public ProductOrderDetailAdminVo getOrderDetailForAdmin(String 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);
+        }
+
+        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);
+            }
+        }
+        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());
+            }
+        }
+        vo.setOrderItemInfo(itemVo);
+
+        // 4. 售后列表
+        OrderAfterSaleVo orderAfterSaleVo = new OrderAfterSaleVo();
+        vo.setAfterSaleInfo(orderAfterSaleVo);
+
+        return vo;
     }
 
     private WxLoginUser getCurrentWxLoginUser() {