Просмотр исходного кода

S-cfc-174: 实现 shop.order.queryRefund 退款状态查询

Sisyphus Agent 3 часов назад
Родитель
Сommit
1915a32722

+ 7 - 0
cfc-backend/src/main/java/com/etotem/cfc/controller/product/ProductOrderController.java

@@ -127,6 +127,13 @@ private QrCodeService qrCodeService;
         return orderService.applyRefund(orderNo, userId, reason);
         return orderService.applyRefund(orderNo, userId, reason);
     }
     }
 
 
+    @PostMapping("/refund/query")
+    public Result<ProductOrderDTO> queryRefund(@RequestBody Map<String, Object> params,
+                                               @RequestAttribute("userId") Long userId) {
+        String orderNo = (String) params.get("orderNo");
+        return orderService.queryRefund(orderNo, userId);
+    }
+
     @PostMapping("/handlePaymentSuccess")
     @PostMapping("/handlePaymentSuccess")
     public Result<String> handlePaymentSuccess(@RequestBody Map<String, Object> params) {
     public Result<String> handlePaymentSuccess(@RequestBody Map<String, Object> params) {
         String orderNo = (String) params.get("orderNo");
         String orderNo = (String) params.get("orderNo");

+ 17 - 0
cfc-backend/src/main/java/com/etotem/cfc/service/ProductOrderService.java

@@ -1894,6 +1894,23 @@ public class ProductOrderService {
         return Result.success("已拒绝退款申请");
         return Result.success("已拒绝退款申请");
     }
     }
 
 
+    /**
+     * 查询订单退款状态/详情(能力键 shop.order.queryRefund)。
+     * 按买家归属作用域:仅订单购买者本人可查,非归属用户返回无权。
+     */
+    public Result<ProductOrderDTO> queryRefund(String orderNo, Long userId) {
+        ProductOrder order = orderMapper.selectOne(
+            new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getOrderNo, orderNo));
+        if (order == null) {
+            return Result.error("订单不存在");
+        }
+        if (!order.getBuyerId().equals(userId)) {
+            return Result.error("无权操作此订单");
+        }
+        ProductOrderDTO dto = ProductOrderDTO.from(order);
+        return Result.success(dto);
+    }
+
     private void syncAfterSalesRequestStatus(String orderNo, String status, Long adminId) {
     private void syncAfterSalesRequestStatus(String orderNo, String status, Long adminId) {
         try {
         try {
             LambdaQueryWrapper<AfterSalesRequest> wrapper = new LambdaQueryWrapper<AfterSalesRequest>()
             LambdaQueryWrapper<AfterSalesRequest> wrapper = new LambdaQueryWrapper<AfterSalesRequest>()