zoujiajian hai 1 semana
pai
achega
abbb3a895a

+ 21 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/group/CmsGroupRelationController.java

@@ -19,6 +19,7 @@ import com.cyksj.enums.BusinessType;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.cms.CmsUserMapper;
+import com.cyksj.mapper.order.OrderDonTicketRecordMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelGptRechargeStatisticsData;
 import com.cyksj.model.excel.ExcelRechargeAccountData;
@@ -79,6 +80,8 @@ public class CmsGroupRelationController {
 
     private final OrderDonMapper orderDonMapper;
 
+    private final OrderDonTicketRecordMapper orderDonTicketRecordMapper;
+
     private final GoodsDonSkuMapper goodsDonSkuMapper;
 
     private final GroupsRelationIndependentRenewMapper groupsRelationIndependentRenewMapper;
@@ -153,6 +156,23 @@ public class CmsGroupRelationController {
                     .notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
                     .orderByDesc(OrderDon::getId)
                     .last("limit 1"));
+            // A multi-quantity order has one order_don row but multiple ticket relations.
+            // Only the legacy/primary relation can be stored in order_don.relation_id;
+            // resolve every other ticket through its durable ticket slot.
+            if (orderDon == null) {
+                OrderDonTicketRecord ticketRecord = orderDonTicketRecordMapper.selectOne(
+                        Wrappers.lambdaQuery(OrderDonTicketRecord.class)
+                                .eq(OrderDonTicketRecord::getRelationId, data.getRelationId())
+                                .eq(OrderDonTicketRecord::getStatus, OrderDonTicketRecord.Status.success)
+                                .orderByDesc(OrderDonTicketRecord::getId)
+                                .last("limit 1"));
+                if (ticketRecord != null) {
+                    OrderDon slotOrder = orderDonMapper.selectById(ticketRecord.getOrderId());
+                    if (slotOrder != null && !Constant.noOrderAllStatus.contains(slotOrder.getStatus())) {
+                        orderDon = slotOrder;
+                    }
+                }
+            }
             if (orderDon != null) {
                 data.setOrderNo(orderDon.getOrderNo());
             }
@@ -784,4 +804,4 @@ public class CmsGroupRelationController {
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
-}
+}