From e1bbc0cf1d8bb72fbd41976712bb847d242f3671 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 09 三月 2026 20:59:36 +0800
Subject: [PATCH] 门票对接

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTicketOrderServiceImpl.java |   70 +++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTicketOrderServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTicketOrderServiceImpl.java
index e1ed51b..5f9092a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTicketOrderServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTicketOrderServiceImpl.java
@@ -1,16 +1,28 @@
 package com.ruoyi.system.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.OrderNos;
+import com.ruoyi.system.dto.CreateOrderDto;
+import com.ruoyi.system.dto.CreateOrderRequest;
+import com.ruoyi.system.dto.VisitPerson;
 import com.ruoyi.system.model.TTicketOrder;
 import com.ruoyi.system.mapper.TTicketOrderMapper;
+import com.ruoyi.system.model.TTourist;
 import com.ruoyi.system.query.AppletOrderListQuery;
 import com.ruoyi.system.query.TTicketOrderQuery;
+import com.ruoyi.system.service.TAppUserService;
 import com.ruoyi.system.service.TTicketOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.service.TTouristService;
+import com.ruoyi.system.utils.ticketUtil.TicketUtil;
+import com.ruoyi.system.vo.CreateOrderVo;
 import com.ruoyi.system.vo.TTicketOrderVo;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -22,6 +34,19 @@
  */
 @Service
 public class TTicketOrderServiceImpl extends ServiceImpl<TTicketOrderMapper, TTicketOrder> implements TTicketOrderService {
+
+
+    private final TicketUtil ticketUtil;
+    private final TTouristService tTouristService;
+
+
+
+
+    public TTicketOrderServiceImpl(TicketUtil ticketUtil, TTouristService tTouristService) {
+        this.ticketUtil = ticketUtil;
+        this.tTouristService = tTouristService;
+    }
+
 
     @Override
     public Page<TTicketOrderVo> pageList(Page<TTicketOrderVo> page, TTicketOrderQuery query) {
@@ -44,4 +69,49 @@
         page.setRecords( list);
         return page;
     }
+
+    @Override
+    public boolean addOrder(CreateOrderDto dto, Integer userId) throws Exception {
+
+        CreateOrderRequest request = new CreateOrderRequest();
+        String did = OrderNos.getDid();
+        request.setOrderId(did);
+        request.setTravelDate(dto.getTravelDate());
+        request.setQuantity(dto.getQuantity());
+        request.setProductId(dto.getProductId());
+
+        if (dto.getQuantity()!=dto.getVisitPersons().size()) {
+            throw new RuntimeException("人数不匹配");
+        }
+
+        List<TTourist> tTourists = tTouristService.listByIds(dto.getVisitPersons());
+        ArrayList<VisitPerson> visitPeople = new ArrayList<>();
+        for (TTourist tTourist : tTourists) {
+            VisitPerson visitPerson = new VisitPerson();
+            visitPerson.setName(tTourist.getName());
+            visitPerson.setMobile(tTourist.getPhone());
+            visitPerson.setIdCard(tTourist.getIdCard());
+            visitPeople.add(visitPerson);
+        }
+        request.setVisitPersons(visitPeople);
+        CreateOrderVo createOrderVo = ticketUtil.saveOrder(request);
+
+        TTicketOrder order = new TTicketOrder();
+        order.setAppUserId(userId);
+        order.setOrderNo(did);
+        order.setPartnerOrderId(createOrderVo.getPartnerOrderId());
+        order.setOrderPrice(new BigDecimal(createOrderVo.getOrderAmount()).setScale(2, BigDecimal.ROUND_HALF_UP));
+
+
+        String result = dto.getVisitPersons().stream()
+                .map(String::valueOf)  // Integer 转 String
+                .collect(Collectors.joining(","));
+        order.setTourist(result);
+        order.setTicketNum(dto.getQuantity());
+        order.setStatus(0);
+
+        order.setTicketInfo(dto.getProductName());
+        boolean save = this.save(order);
+        return save;
+    }
 }

--
Gitblit v1.7.1