From 5171fcf8ccf77a670632e54d2c88642377bfc2ae Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 10 三月 2026 16:55:21 +0800
Subject: [PATCH] 门票对接
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTicketOrderServiceImpl.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 50 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 5f9092a..6c3c92b 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,5 +1,7 @@
package com.ruoyi.system.service.impl;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.OrderNos;
import com.ruoyi.system.dto.CreateOrderDto;
@@ -20,6 +22,8 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -102,6 +106,10 @@
order.setPartnerOrderId(createOrderVo.getPartnerOrderId());
order.setOrderPrice(new BigDecimal(createOrderVo.getOrderAmount()).setScale(2, BigDecimal.ROUND_HALF_UP));
+ // 获取票价
+ BigDecimal ticketPrice = order.getOrderPrice().divide(new BigDecimal(dto.getQuantity()), 2, BigDecimal.ROUND_HALF_UP);
+ order.setTicketPrice(ticketPrice);
+
String result = dto.getVisitPersons().stream()
.map(String::valueOf) // Integer 转 String
@@ -112,6 +120,48 @@
order.setTicketInfo(dto.getProductName());
boolean save = this.save(order);
+
+
return save;
}
+
+ @Override
+ public boolean refundOrder(TTicketOrder order) throws Exception {
+ String nowTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ // 查询未使用的票
+ String visitPersons = order.getVisitPersons();
+ JSONArray jsonArray = JSONArray.parseArray(visitPersons);
+ List<String> ticketIds = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ Integer status = jsonObject.getInteger("status");
+ if(status==null || status==0){
+ String ticketId = jsonObject.getString("ticketId");
+ ticketIds.add(ticketId);
+ }
+ }
+ if(ticketIds.isEmpty()){
+ throw new RuntimeException("无未使用的票");
+ }
+ boolean refund = ticketUtil.cannelTicket(order.getOrderNo(), order.getPartnerOrderId(), ticketIds);
+ if(refund){
+ for (int i = 0; i < jsonArray.size(); i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ Integer status = jsonObject.getInteger("status");
+ if(status==null || status==0){
+ jsonObject.put("status",2);
+ jsonObject.put("refundTime",System.currentTimeMillis());
+ }
+ }
+
+ // jsonArray 转换为字符串
+ String result = jsonArray.toJSONString();
+ order.setVisitPersons(result);
+ order.setStatus(4);
+ order.setRefundMoney(order.getTicketPrice().multiply(new BigDecimal(ticketIds.size())));
+ boolean update = this.updateById(order);
+ return update;
+ }
+ return false;
+ }
}
--
Gitblit v1.7.1