提交 2c7c424b authored 作者: hzh's avatar hzh

订单回调功能实现

上级 7b568604
...@@ -35,4 +35,12 @@ public interface RemoteYsOrderService { ...@@ -35,4 +35,12 @@ public interface RemoteYsOrderService {
*/ */
void updateHotelOrder(); void updateHotelOrder();
/**
* 支付成功后调用
*
* @param orderType 订单类型
* @param orderNo 订单号
*/
void payed(String orderType, String orderNo);
} }
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
<dependency> <dependency>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>
<artifactId>ruoyi-common-ys</artifactId> <artifactId>ruoyi-api-server</artifactId>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -11,6 +11,7 @@ import io.seata.spring.annotation.GlobalTransactional; ...@@ -11,6 +11,7 @@ import io.seata.spring.annotation.GlobalTransactional;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.order.api.enums.OrderStatus; import org.dromara.order.api.enums.OrderStatus;
import org.dromara.order.config.WechatPayConfiguration; import org.dromara.order.config.WechatPayConfiguration;
import org.dromara.order.domain.bo.OrderBo; import org.dromara.order.domain.bo.OrderBo;
...@@ -20,6 +21,7 @@ import org.dromara.order.domain.vo.OrderVo; ...@@ -20,6 +21,7 @@ import org.dromara.order.domain.vo.OrderVo;
import org.dromara.order.service.IOrderPayService; import org.dromara.order.service.IOrderPayService;
import org.dromara.order.service.IOrderService; import org.dromara.order.service.IOrderService;
import org.dromara.order.service.IOrderTradeService; import org.dromara.order.service.IOrderTradeService;
import org.dromara.server.api.RemoteYsOrderService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -40,6 +42,8 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService { ...@@ -40,6 +42,8 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService {
private final WechatPayConfiguration config; private final WechatPayConfiguration config;
private final IOrderTradeService orderTradeService; private final IOrderTradeService orderTradeService;
private final IOrderService orderService; private final IOrderService orderService;
@DubboReference
private final RemoteYsOrderService ysOrderService;
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
@Override @Override
...@@ -95,8 +99,10 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService { ...@@ -95,8 +99,10 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService {
order.setPayTime(new Date()); order.setPayTime(new Date());
order.setStatus(OrderStatus.PAYED.getCode()); order.setStatus(OrderStatus.PAYED.getCode());
orderService.updateByBo(BeanUtil.copyProperties(order, OrderBo.class)); orderService.updateByBo(BeanUtil.copyProperties(order, OrderBo.class));
}
//跟新云上相关信息
ysOrderService.payed(order.getOrderType(), order.getOrderNo());
}
return true; return true;
} catch (Exception e) { } catch (Exception e) {
......
package org.dromara.server.base; package org.dromara.server.base;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -39,6 +40,13 @@ public abstract class AbstractBaseService<V, B, T> implements IBaseService<V, B, ...@@ -39,6 +40,13 @@ public abstract class AbstractBaseService<V, B, T> implements IBaseService<V, B,
return mapper().selectVoList(lqw); return mapper().selectVoList(lqw);
} }
@Override
public V queryOne(B bo) {
LambdaQueryWrapper<T> lqw = buildQueryWrapper(bo);
List<V> list = mapper().selectVoList(lqw);
return CollectionUtil.isEmpty(list) ? null : list.get(0);
}
@Override @Override
public Boolean insertByBo(B bo) { public Boolean insertByBo(B bo) {
Class<T> clazz = (Class<T>) GenericsUtils.getSuperClassGenricType(this.getClass(), 2); Class<T> clazz = (Class<T>) GenericsUtils.getSuperClassGenricType(this.getClass(), 2);
......
...@@ -34,10 +34,17 @@ public interface IBaseService<V, B, T> { ...@@ -34,10 +34,17 @@ public interface IBaseService<V, B, T> {
* 查询符合条件的列表 * 查询符合条件的列表
* *
* @param bo 查询条件 * @param bo 查询条件
* @return 雷彪 * @return 列表
*/ */
List<V> queryList(B bo); List<V> queryList(B bo);
/**
* 查询符合条件的对象
* @param bo 查询条件
* @return 对象
*/
V queryOne(B bo);
/** /**
* 新增 * 新增
* *
......
...@@ -2,9 +2,19 @@ package org.dromara.server.dubbo; ...@@ -2,9 +2,19 @@ package org.dromara.server.dubbo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.ys.constant.airport.OrderStatus; import org.dromara.common.ys.constant.airport.OrderStatus;
import org.dromara.common.ys.constant.train.RefundOrderStatus; import org.dromara.common.ys.constant.train.RefundOrderStatus;
import org.dromara.common.ys.model.req.airport.OrderConfirmModel;
import org.dromara.common.ys.model.req.hotel.PayOrderModel;
import org.dromara.common.ys.model.req.train.ConfirmOrderModel;
import org.dromara.common.ys.service.IAirportService;
import org.dromara.common.ys.service.IHotelService;
import org.dromara.common.ys.service.ITrainService;
import org.dromara.common.ys.service.IVehiclesService;
import org.dromara.order.api.enums.OrderType;
import org.dromara.server.api.RemoteYsOrderService; import org.dromara.server.api.RemoteYsOrderService;
import org.dromara.server.domain.bo.*; import org.dromara.server.domain.bo.*;
import org.dromara.server.domain.vo.*; import org.dromara.server.domain.vo.*;
...@@ -13,6 +23,7 @@ import org.springframework.stereotype.Service; ...@@ -13,6 +23,7 @@ import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -20,6 +31,7 @@ import java.util.stream.Collectors; ...@@ -20,6 +31,7 @@ import java.util.stream.Collectors;
* @date 2024-11-18 * @date 2024-11-18
* @desc 订单相关服务 * @desc 订单相关服务
**/ **/
@Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@DubboService @DubboService
...@@ -31,6 +43,10 @@ public class RemoteYsOrderServiceImpl implements RemoteYsOrderService { ...@@ -31,6 +43,10 @@ public class RemoteYsOrderServiceImpl implements RemoteYsOrderService {
private final IOrderVehiclesService orderVehiclesService; private final IOrderVehiclesService orderVehiclesService;
private final IOrderHotelService orderHotelService; private final IOrderHotelService orderHotelService;
private final IOrderAirportRefundService orderAirportRefundService; private final IOrderAirportRefundService orderAirportRefundService;
private final IAirportService airportService;
private final ITrainService trainService;
private final IVehiclesService vehiclesService;
private final IHotelService hotelService;
/** /**
...@@ -123,15 +139,47 @@ public class RemoteYsOrderServiceImpl implements RemoteYsOrderService { ...@@ -123,15 +139,47 @@ public class RemoteYsOrderServiceImpl implements RemoteYsOrderService {
/** /**
* 不需要更新的机票订单退款状态 * 不需要更新的机票订单退款状态
*/ */
private static final List<String> AIRPORT_REFUND_ORDER_STATUS_LIST = List.of( private static final List<String> AIRPORT_REFUND_ORDER_STATUS_LIST = List.of(org.dromara.common.ys.constant.airport.RefundOrderStatus.REFUNDING.getCode());
org.dromara.common.ys.constant.airport.RefundOrderStatus.REFUNDING.getCode()
);
@Override @Override
public void updateAirportRefundOrder() { public void updateAirportRefundOrder() {
List<OrderAirportRefundVo> orderList = orderAirportRefundService.queryList(new OrderAirportRefundBo()); List<OrderAirportRefundVo> orderList = orderAirportRefundService.queryList(new OrderAirportRefundBo());
orderAirportRefundService.updateOrderInfo( orderAirportRefundService.updateOrderInfo(orderList.stream().filter(item -> !AIRPORT_REFUND_ORDER_STATUS_LIST.contains(item.getRefundOrderStatus())).map(OrderAirportRefundVo::getRefundNo).collect(Collectors.toList()));
orderList.stream().filter(item -> !AIRPORT_REFUND_ORDER_STATUS_LIST.contains(item.getRefundOrderStatus())).map(OrderAirportRefundVo::getRefundNo).collect(Collectors.toList()) }
);
/**
* 支付成功后确认出票
*
* @param orderType 订单类型
* @param orderNo 订单号
*/
@Override
public void payed(String orderType, String orderNo) {
log.info("支付成功后确认出票,orderType:{},orderNo:{}", orderType, orderNo);
if (StringUtils.equals(orderType, OrderType.AIRPORT.getType())) {
//飞机票
Optional.ofNullable(orderAirportService.queryOne(new OrderAirportBo().setOrderNo(orderNo))).ifPresent(vo -> {
//确认出票
airportService.confirmOrder(vo.getPersonCode(), new OrderConfirmModel().setOrderNo(orderNo).setAutoDraw(1));
orderAirportService.updateOrderInfo(List.of(orderNo));
});
} else if (StringUtils.equals(orderType, OrderType.TRAIN.getType())) {
//火车票
Optional.ofNullable(orderTrainService.queryOne(new OrderTrainBo().setOrderNo(orderNo))).ifPresent(vo -> {
//确认出票
trainService.confirmOrder(vo.getPersonCode(), new ConfirmOrderModel().setOrderNo(orderNo));
orderTrainService.updateOrderInfo(List.of(orderNo));
});
} else if (StringUtils.equals(orderType, OrderType.CAR.getType())) {
} else if (StringUtils.equals(orderType, OrderType.HOTEL.getType())) {
//酒店
Optional.ofNullable(orderHotelService.queryOne(new OrderHotelBo().setOrderNo(orderNo))).ifPresent(vo -> {
//确认出票
hotelService.orderPay(vo.getPersonCode(), new PayOrderModel().setOrderNo(orderNo));
orderHotelService.updateOrderInfo(List.of(orderNo));
});
}
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论