From 33afc5c00a5b41f81a2049b25f91259d88281cd6 Mon Sep 17 00:00:00 2001
From: shinnosuke <tantao@1hoper.com>
Date: 星期二, 04 八月 2026 12:00:50 +0800
Subject: [PATCH] feat: rebuild admin order detail page

---
 talent-card-server/src/main/java/com/talentcard/server/business/order/OrderService.java |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/talent-card-server/src/main/java/com/talentcard/server/business/order/OrderService.java b/talent-card-server/src/main/java/com/talentcard/server/business/order/OrderService.java
index d20ec0f..ac62b49 100644
--- a/talent-card-server/src/main/java/com/talentcard/server/business/order/OrderService.java
+++ b/talent-card-server/src/main/java/com/talentcard/server/business/order/OrderService.java
@@ -111,7 +111,8 @@
 		List<Map<String, Object>> rows = query("""
 				select o.id, o.order_no, o.talent_id, tu.name as talent_name, tu.mobile as talent_mobile,
 				       o.card_id, tc.card_no, tc.card_level, o.benefit_id, b.benefit_name,
-				       o.merchant_id, m.merchant_name, o.store_id, o.order_type,
+				       o.merchant_id, m.merchant_name, m.merchant_type, m.contact_mobile,
+				       m.cover_url as merchant_cover_url, o.store_id, o.order_type,
 				       o.order_amount, o.subsidy_amount, o.pay_amount, o.order_status,
 				       o.verify_status, o.created_at, o.updated_at
 				from benefit_order o
@@ -124,7 +125,34 @@
 		if (rows.isEmpty()) {
 			throw new BusinessException(ErrorCode.NOT_FOUND, "订单不存在");
 		}
-		return rows.get(0);
+		Map<String, Object> detail = rows.get(0);
+		List<Map<String, Object>> verificationRows = query("""
+				select verify_time
+				from verify_record
+				where order_id = ?
+				order by id desc limit 1
+				""", detail.get("id"));
+		detail.put("verifyTime", verificationRows.isEmpty() ? null : verificationRows.get(0).get("verifyTime"));
+		detail.put("items", List.of(Map.of(
+				"id", detail.get("benefitId") == null ? "-" : String.valueOf(detail.get("benefitId")),
+				"name", detail.get("benefitName") == null ? "-" : detail.get("benefitName"),
+				"coverUrl", detail.get("merchantCoverUrl") == null ? "" : detail.get("merchantCoverUrl"),
+				"amount", detail.get("orderAmount") == null ? 0 : detail.get("orderAmount")
+		)));
+		detail.put("payments", query("""
+				select payment_no, provider, amount, status, provider_transaction_no, paid_at, created_at
+				from payment_transaction
+				where order_no = ?
+				order by id desc
+				""", orderNo));
+		detail.put("refunds", query("""
+				select refund_no, provider, paid_amount, refund_amount, refundable_amount,
+				       refund_status, reason, provider_refund_no, refund_time, created_at
+				from order_refund
+				where deleted = 0 and order_no = ?
+				order by id desc
+				""", orderNo));
+		return detail;
 	}
 
 	@Transactional(readOnly = true)

--
Gitblit v1.7.1