From 5ad8d714d43ecf06aa9d900a69e7b22018ce7ed6 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 15 四月 2026 23:09:44 +0800
Subject: [PATCH] feat:APP个人中心

---
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/MemberPurchaseOrderAppService.java |   84 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 82 insertions(+), 2 deletions(-)

diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/MemberPurchaseOrderAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/MemberPurchaseOrderAppService.java
index eb886b5..649b403 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/MemberPurchaseOrderAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/MemberPurchaseOrderAppService.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.tcm.training.admin.app.auth.service.AppAuthSessionService;
+import com.tcm.training.admin.app.member.vo.AppMemberPurchaseOrderItemVO;
 import com.tcm.training.admin.common.DateTimes;
 import com.tcm.training.admin.common.PageResponse;
 import com.tcm.training.admin.common.PhoneMasker;
@@ -37,11 +39,20 @@
     private static final String PAYMENT_METHOD_ALIPAY = "ALIPAY";
 
     private final MemberPurchaseOrderMapper memberPurchaseOrderMapper;
+    private final AppAuthSessionService appAuthSessionService;
 
-    public MemberPurchaseOrderAppService(MemberPurchaseOrderMapper memberPurchaseOrderMapper) {
+    /**
+     * 注入会员订单查询能力。
+     */
+    public MemberPurchaseOrderAppService(MemberPurchaseOrderMapper memberPurchaseOrderMapper,
+                                         AppAuthSessionService appAuthSessionService) {
         this.memberPurchaseOrderMapper = memberPurchaseOrderMapper;
+        this.appAuthSessionService = appAuthSessionService;
     }
 
+    /**
+     * 分页查询后台会员购买订单。
+     */
     public PageResponse<MemberPurchaseOrderListItemVO> page(int page,
                                                             int pageSize,
                                                             String orderNo,
@@ -64,6 +75,21 @@
         return PageResponse.of(toList(result.getRecords()), result.getTotal(), result.getCurrent(), result.getSize());
     }
 
+    /**
+     * 分页查询当前登录用户的 APP 会员购买记录。
+     */
+    public PageResponse<AppMemberPurchaseOrderItemVO> appUserPage(int page, int pageSize) {
+        Long userId = appAuthSessionService.requireLoginUserId();
+        IPage<MemberPurchaseOrderRow> result = memberPurchaseOrderMapper.selectAppUserOrderPage(
+                new Page<MemberPurchaseOrderRow>(page, pageSize),
+                userId
+        );
+        return PageResponse.of(toAppList(result.getRecords()), result.getTotal(), result.getCurrent(), result.getSize());
+    }
+
+    /**
+     * 导出后台会员购买订单。
+     */
     public void export(String orderNo,
                        String userPhone,
                        String memberType,
@@ -116,6 +142,9 @@
         throw new IllegalArgumentException("退款功能待支付方案确认后接入");
     }
 
+    /**
+     * 删除后台已退款会员订单。
+     */
     @Transactional
     public void delete(Long id) {
         MemberPurchaseOrder order = requireOrder(id);
@@ -125,6 +154,9 @@
         memberPurchaseOrderMapper.deleteById(id);
     }
 
+    /**
+     * 校验会员购买订单存在。
+     */
     private MemberPurchaseOrder requireOrder(Long id) {
         MemberPurchaseOrder order = memberPurchaseOrderMapper.selectOne(new LambdaQueryWrapper<MemberPurchaseOrder>()
                 .eq(MemberPurchaseOrder::getId, id)
@@ -136,6 +168,9 @@
         return order;
     }
 
+    /**
+     * 将后台订单查询结果转换为后台列表响应。
+     */
     private List<MemberPurchaseOrderListItemVO> toList(List<MemberPurchaseOrderRow> rows) {
         List<MemberPurchaseOrderListItemVO> list = new ArrayList<MemberPurchaseOrderListItemVO>();
         for (MemberPurchaseOrderRow row : rows) {
@@ -159,6 +194,33 @@
         return list;
     }
 
+    /**
+     * 将订单查询结果转换为 APP 购买记录列表响应。
+     */
+    private List<AppMemberPurchaseOrderItemVO> toAppList(List<MemberPurchaseOrderRow> rows) {
+        List<AppMemberPurchaseOrderItemVO> list = new ArrayList<AppMemberPurchaseOrderItemVO>();
+        for (MemberPurchaseOrderRow row : rows) {
+            AppMemberPurchaseOrderItemVO item = new AppMemberPurchaseOrderItemVO();
+            item.setId(row.getId());
+            item.setOrderNo(row.getOrderNo());
+            item.setMemberType(row.getMemberType());
+            item.setMemberTypeText(memberTypeText(row.getMemberType()));
+            item.setOrderAmount(row.getOrderAmount());
+            item.setPaymentMethod(row.getPaymentMethod());
+            item.setPaymentMethodText(paymentMethodText(row.getPaymentMethod()));
+            item.setStatus(row.getStatus());
+            // APP 购买记录页在退款场景下要展示退款金额标签,没有单独退款额时回退订单金额。
+            item.setRefundAmount(resolveRefundAmount(row.getStatus(), row.getOrderAmount(), row.getRefundAmount()));
+            item.setShowRefundTag(Boolean.valueOf(STATUS_REFUNDED.equals(row.getStatus())));
+            item.setPaidAt(row.getPaidAt());
+            list.add(item);
+        }
+        return list;
+    }
+
+    /**
+     * 解析订单应展示的退款金额。
+     */
     private BigDecimal resolveRefundAmount(String status, BigDecimal orderAmount, BigDecimal refundAmount) {
         if (!STATUS_REFUNDED.equals(status)) {
             return null;
@@ -177,6 +239,9 @@
         return null;
     }
 
+    /**
+     * 将空白文本归一化为 null。
+     */
     private String trimToNull(String value) {
         if (value == null) {
             return null;
@@ -185,24 +250,36 @@
         return trimmed.isEmpty() ? null : trimmed;
     }
 
+    /**
+     * 缺省文本展示兜底。
+     */
     private String defaultText(String value) {
         return value == null || value.trim().isEmpty() ? "-" : value.trim();
     }
 
+    /**
+     * 将会员天数转换为展示文案。
+     */
     private String memberDaysText(Integer memberDays) {
         return memberDays == null ? "-" : memberDays + "天";
     }
 
+    /**
+     * 将会员类型转换为展示文案。
+     */
     private String memberTypeText(String memberType) {
         if (MEMBER_TYPE_MONTH_CARD.equals(memberType)) {
             return "月卡";
         }
         if (MEMBER_TYPE_QUARTER_CARD.equals(memberType)) {
-            return "季卡";
+            return "季度会员";
         }
         return "-";
     }
 
+    /**
+     * 将支付方式转换为展示文案。
+     */
     private String paymentMethodText(String paymentMethod) {
         if (PAYMENT_METHOD_WECHAT.equals(paymentMethod)) {
             return "微信支付";
@@ -213,6 +290,9 @@
         return "-";
     }
 
+    /**
+     * 将订单状态转换为展示文案。
+     */
     private String statusText(String status) {
         if (STATUS_WAITING_PAYMENT.equals(status)) {
             return "待支付";

--
Gitblit v1.7.1