sync_pay_state

This commit is contained in:
sxu 2025-02-20 19:23:22 +08:00
parent 19edf755ea
commit db5899faa2
9 changed files with 120 additions and 7 deletions

View File

@ -3,12 +3,13 @@ package com.bonus.core.order.common.business;
import com.bonus.core.order.common.model.OrderDetail; import com.bonus.core.order.common.model.OrderDetail;
import com.bonus.core.order.common.model.OrderInfo; import com.bonus.core.order.common.model.OrderInfo;
import com.bonus.core.pay.api.vo.UnifyPaySelectVO;
import java.util.List; import java.util.List;
public interface OrderResultBusiness { public interface OrderResultBusiness {
// UnifyPaySelectVO reSyncOrderPayResult(Long orderId); UnifyPaySelectVO reSyncOrderPayResult(Long orderId);
//
// UnifyRefundSelectVO reSyncOrderRefundResult(Long orderRefundId); // UnifyRefundSelectVO reSyncOrderRefundResult(Long orderRefundId);
// //
// String asyncPayResultHandler(PayResultPO payResultPO); // String asyncPayResultHandler(PayResultPO payResultPO);

View File

@ -14,6 +14,7 @@ import com.bonus.core.order.mobile.dto.*;
import com.bonus.core.order.mobile.vo.*; import com.bonus.core.order.mobile.vo.*;
import com.bonus.core.order.mq.po.OrderSavePO; import com.bonus.core.order.mq.po.OrderSavePO;
import com.bonus.core.pay.api.dto.UnifyPayDTO; import com.bonus.core.pay.api.dto.UnifyPayDTO;
import com.bonus.core.pay.api.vo.UnifyPaySelectVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
@ -67,11 +68,11 @@ public class OrderCustomMobileBusiness implements CustomBusiness {
public OrderInfoMobileVO didQueryOrderInfo(OrderInfoMobileVO orderInfoMobileVO) { public OrderInfoMobileVO didQueryOrderInfo(OrderInfoMobileVO orderInfoMobileVO) {
return orderInfoMobileVO; return orderInfoMobileVO;
} }
//
// public UnifyPaySelectVO willReSyncOrderPayResult(Long orderId) { public UnifyPaySelectVO willReSyncOrderPayResult(Long orderId) {
// return null; return null;
// } }
//
public List<OrderShoppingCartListMobileVO> didListShoppingCartByCust(OrderShoppingSearchDTO searchDTO, List<OrderShoppingCartListMobileVO> resultList) { public List<OrderShoppingCartListMobileVO> didListShoppingCartByCust(OrderShoppingSearchDTO searchDTO, List<OrderShoppingCartListMobileVO> resultList) {
return resultList; return resultList;
} }

View File

@ -0,0 +1,28 @@
package com.bonus.core.order.mobile.dto;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotNull;
public class OrderSyncPayStateMobileDTO {
@ApiModelProperty("订单号")
private @NotNull Long orderId;
@ApiModelProperty("是否手动同步")
private Integer ifManualSync;
public Long getOrderId() {
return this.orderId;
}
public Integer getIfManualSync() {
return this.ifManualSync;
}
public void setOrderId(final Long orderId) {
this.orderId = orderId;
}
public void setIfManualSync(final Integer ifManualSync) {
this.ifManualSync = ifManualSync;
}
}

View File

@ -5,12 +5,14 @@ import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.bonus.constant.LeConstants;
import com.bonus.core.common.page.PageVO; import com.bonus.core.common.page.PageVO;
import com.bonus.core.device.api.DeviceApi; import com.bonus.core.device.api.DeviceApi;
import com.bonus.core.device.manage.dto.DeviceSearchDTO; import com.bonus.core.device.manage.dto.DeviceSearchDTO;
import com.bonus.core.device.manage.model.DeviceInfo; import com.bonus.core.device.manage.model.DeviceInfo;
import com.bonus.core.menu.api.MenuDishesApi; import com.bonus.core.menu.api.MenuDishesApi;
import com.bonus.core.menu.utils.NutritionEntity; import com.bonus.core.menu.utils.NutritionEntity;
import com.bonus.core.order.common.business.OrderResultBusiness;
import com.bonus.core.order.common.constants.CheckStateEnum; import com.bonus.core.order.common.constants.CheckStateEnum;
import com.bonus.core.order.common.constants.DetailTypeEnum; import com.bonus.core.order.common.constants.DetailTypeEnum;
import com.bonus.core.order.common.constants.OrderTypeEnum; import com.bonus.core.order.common.constants.OrderTypeEnum;
@ -22,6 +24,7 @@ import com.bonus.core.order.common.service.*;
import com.bonus.core.order.common.vo.OrderIdDateVO; import com.bonus.core.order.common.vo.OrderIdDateVO;
import com.bonus.core.order.custom.OrderCustomBusiness; import com.bonus.core.order.custom.OrderCustomBusiness;
import com.bonus.core.order.mobile.dto.OrderListMobileDTO; import com.bonus.core.order.mobile.dto.OrderListMobileDTO;
import com.bonus.core.order.mobile.dto.OrderSyncPayStateMobileDTO;
import com.bonus.core.order.mobile.service.OrderInfoMobileBusiness; import com.bonus.core.order.mobile.service.OrderInfoMobileBusiness;
import com.bonus.core.order.mobile.vo.OrderDetailMobileVO; import com.bonus.core.order.mobile.vo.OrderDetailMobileVO;
import com.bonus.core.order.mobile.vo.OrderInfoMobileVO; import com.bonus.core.order.mobile.vo.OrderInfoMobileVO;
@ -32,6 +35,9 @@ import com.bonus.core.order.web.dto.OrderUserPermissionDTO;
import com.bonus.core.order.weight.service.MacPlateidBindSerialService; import com.bonus.core.order.weight.service.MacPlateidBindSerialService;
import com.bonus.core.order.weight.model.MacPlateidBindSerial; import com.bonus.core.order.weight.model.MacPlateidBindSerial;
import com.bonus.core.order.weight.vo.RefundDetailStateVO; import com.bonus.core.order.weight.vo.RefundDetailStateVO;
import com.bonus.core.pay.api.TradeRecordApi;
import com.bonus.core.pay.api.vo.UnifyPaySelectVO;
import com.bonus.core.pay.common.model.TradeRecord;
import com.bonus.utils.AesEncryptUtil; import com.bonus.utils.AesEncryptUtil;
import com.bonus.core.menu.model.MenuDishesTypeModel; import com.bonus.core.menu.model.MenuDishesTypeModel;
import com.github.pagehelper.page.PageMethod; import com.github.pagehelper.page.PageMethod;
@ -67,6 +73,9 @@ public class OrderInfoMobileBusinessImpl implements OrderInfoMobileBusiness {
protected OrderCustomBusiness orderCustomBusiness; protected OrderCustomBusiness orderCustomBusiness;
@Lazy @Lazy
@Autowired @Autowired
protected OrderResultBusiness orderResultBusiness;
@Lazy
@Autowired
protected DeviceApi deviceApi; protected DeviceApi deviceApi;
@Lazy @Lazy
@Autowired @Autowired
@ -80,6 +89,9 @@ public class OrderInfoMobileBusinessImpl implements OrderInfoMobileBusiness {
@Lazy @Lazy
@Autowired @Autowired
protected OrderRefundDetailService orderRefundDetailService; protected OrderRefundDetailService orderRefundDetailService;
@Lazy
@Autowired
protected TradeRecordApi tradeRecordApi;
@Override @Override
public PageVO<OrderListMobileVO> orderList(OrderListMobileDTO orderListDTO, RequestHeaderDTO headerDTO) { public PageVO<OrderListMobileVO> orderList(OrderListMobileDTO orderListDTO, RequestHeaderDTO headerDTO) {
@ -251,4 +263,16 @@ public class OrderInfoMobileBusinessImpl implements OrderInfoMobileBusiness {
} }
public UnifyPaySelectVO orderSyncPayState(OrderSyncPayStateMobileDTO dto) {
UnifyPaySelectVO unifyPaySelectVO = this.orderCustomBusiness.mobile().willReSyncOrderPayResult(dto.getOrderId());
if (ObjectUtil.isNotNull(unifyPaySelectVO)) {
return unifyPaySelectVO;
} else if (LeConstants.COMMON_YES.equals(dto.getIfManualSync())) {
return this.orderResultBusiness.reSyncOrderPayResult(dto.getOrderId());
} else {
TradeRecord tradeRecord = this.tradeRecordApi.getLastTradeRecordByOrderId(dto.getOrderId());
return UnifyPaySelectVO.of(tradeRecord);
}
}
} }

View File

@ -91,4 +91,8 @@ public class TradeRecordApi {
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
} }
} }
public TradeRecord getLastTradeRecordByOrderId(Long orderId) {
return (TradeRecord)this.tradeRecordService.queryTradeRecordInfoList((String)null, orderId, (Integer)null, (Integer)null).stream().sorted(Comparator.comparing(TradeRecord::getId).reversed()).findFirst().orElse((TradeRecord) null);
}
} }

View File

@ -13,5 +13,6 @@ import java.util.List;
@InterceptorIgnore @InterceptorIgnore
public interface TradeRecordMapper extends BaseMapper<TradeRecord> { public interface TradeRecordMapper extends BaseMapper<TradeRecord> {
List<TradeRecord> queryTradeRecordInfo(@Param("macOrderId") String macOrderId, @Param("orderRechargeId") Long orderRechargeId, @Param("tradeState") Integer tradeState, @Param("tradeType") Integer tradeType, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
List<TradeRecord> listTradeRecordByOrderRechargeId(@Param("orderRechargeId") Long orderRechargeId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("tradeState") Integer... tradeState); List<TradeRecord> listTradeRecordByOrderRechargeId(@Param("orderRechargeId") Long orderRechargeId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("tradeState") Integer... tradeState);
} }

View File

@ -30,4 +30,6 @@ public interface TradeRecordService {
void insertOrderRechargeTrade(List<TradeOrderRecharge> tradeOrderRechargeList); void insertOrderRechargeTrade(List<TradeOrderRecharge> tradeOrderRechargeList);
void deleteOrderRechargeTrade(Long tradeId); void deleteOrderRechargeTrade(Long tradeId);
List<TradeRecord> queryTradeRecordInfoList(String macOrderId, Long orderRechargeId, Integer tradeState, Integer tradeType);
} }

View File

@ -124,4 +124,16 @@ public class TradeRecordServiceImpl extends ServiceImpl<TradeRecordMapper, Trade
this.tradeOrderRechargeMapper.delete((Wrapper)Wrappers.lambdaQuery(TradeOrderRecharge.class).eq(TradeOrderRecharge::getTradeId, tradeId)); this.tradeOrderRechargeMapper.delete((Wrapper)Wrappers.lambdaQuery(TradeOrderRecharge.class).eq(TradeOrderRecharge::getTradeId, tradeId));
} }
public List<TradeRecord> queryTradeRecordInfoList(String macOrderId, Long orderRechargeId, Integer tradeState, Integer tradeType) {
if (CharSequenceUtil.isEmpty(macOrderId) && !LeNumUtil.isValidId(orderRechargeId)) {
return CollUtil.newArrayList(new TradeRecord[0]);
} else {
log.info("[交易记录] queryTradeRecordInfoList 开始");
List<LocalDateTime> timeRange = LeOrderUtil.queryCreateTimeRange();
List<TradeRecord> tradeRecordList = ((TradeRecordMapper)this.baseMapper).queryTradeRecordInfo(macOrderId, orderRechargeId, tradeState, tradeType, (LocalDateTime)timeRange.get(0), (LocalDateTime)timeRange.get(1));
log.info("[交易记录] queryTradeRecordInfoList 结束");
return tradeRecordList;
}
}
} }

View File

@ -4,6 +4,46 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.core.pay.common.mapper.TradeRecordMapper"> <mapper namespace="com.bonus.core.pay.common.mapper.TradeRecordMapper">
<!--根据设备订单号查询支付结果-->
<select id="queryTradeRecordInfo" resultType="com.bonus.core.pay.common.model.TradeRecord">
SELECT tr.id,
tr.related_trade_id,
tr.trade_state tradeState,
tr.amount,
tr.cust_id custId,
tr.pay_type payType,
tr.pay_channel payChannel,
tr.source_type sourceType,
tr.out_trade_no outTradeNo,
tr.trade_result tradeResult,
tr.param
FROM trade_record tr
INNER JOIN trade_order_recharge ort ON tr.id = ort.trade_id
<where>
<if test="macOrderId != null and macOrderId != ''">
AND ort.mac_order_id = #{macOrderId}
</if>
<if test="orderRechargeId != null">
AND ort.order_recharge_id = #{orderRechargeId}
</if>
<if test="tradeState != null">
AND tr.trade_state = #{tradeState}
</if>
<if test="tradeType != null">
AND tr.trade_type = #{tradeType}
</if>
<if test="startTime != null">
AND tr.create_time <![CDATA[ >= ]]> #{startTime}
AND ort.create_time <![CDATA[ >= ]]> #{startTime}
</if>
<if test="endTime != null">
AND tr.create_time <![CDATA[ <= ]]> #{endTime}
AND ort.create_time <![CDATA[ <= ]]> #{endTime}
</if>
</where>
order by tr.create_time
</select>
<select id="listTradeRecordByOrderRechargeId" resultType="com.bonus.core.pay.common.model.TradeRecord"> <select id="listTradeRecordByOrderRechargeId" resultType="com.bonus.core.pay.common.model.TradeRecord">
SELECT tr.id, SELECT tr.id,
tr.related_trade_id, tr.related_trade_id,