|
|
@@ -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();
|
|
|
}
|
|
|
-}
|
|
|
+}
|