sync_pay_state

This commit is contained in:
sxu 2025-02-20 19:07:20 +08:00
parent 4f7505ec52
commit 1455266a43
6 changed files with 178 additions and 88 deletions

View File

@ -10,8 +10,10 @@ import com.bonus.constant.RetCodeEnum;
import com.bonus.constant.SourceTypeEnum;
import com.bonus.core.account.v3.api.AccTradeApi;
import com.bonus.core.account.v3.api.vo.AccTradeOrderBalanceVO;
import com.bonus.core.allocation.api.AllocStallApi;
import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryDTO;
import com.bonus.core.allocation.canteen.dto.AllocCanteenDeliveryModel;
import com.bonus.core.allocation.canteen.model.AllocStall;
import com.bonus.core.common.enums.DeliveryTypeEnum;
import com.bonus.core.common.enums.MetadataModelTypeEnum;
import com.bonus.core.common.redis.RedisUtil;
@ -137,9 +139,9 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness {
// @Autowired
// @Lazy
// protected DeviceApi deviceApi;
// @Autowired
// @Lazy
// protected AllocStallApi allocStallApi;
@Autowired
@Lazy
protected AllocStallApi allocStallApi;
@Autowired
@Lazy
protected AccTradeApi accTradeApi;
@ -982,19 +984,19 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness {
this.orderCustomBusiness.place().didUpdateOrderFieldAfterPay(orderInfo, didPayInfoDTO);
}
// public boolean ifUseCall(OrderInfo orderInfo) {
// if (LocalDate.now().isAfter(orderInfo.getOrderDate())) {
// log.warn("[叫号] 今天之前的订单不叫号");
// } else if ((OrderTypeEnum.isAndroidType(orderInfo.getOrderType()) || OrderTypeEnum.isCurrMealType(orderInfo.getOrderType())) && LeNumUtil.isValidId(orderInfo.getStallId())) {
// AllocStall allocStall = this.allocStallApi.getAllocStall(orderInfo.getStallId());
// if (allocStall != null && LeConstants.COMMON_YES.equals(allocStall.getIfUseCallNum())) {
// log.info("[当餐点餐下单] 开启叫号");
// return true;
// }
// }
//
// return false;
// }
public boolean ifUseCall(OrderInfo orderInfo) {
if (LocalDate.now().isAfter(orderInfo.getOrderDate())) {
log.warn("[叫号] 今天之前的订单不叫号");
} else if ((OrderTypeEnum.isAndroidType(orderInfo.getOrderType()) || OrderTypeEnum.isCurrMealType(orderInfo.getOrderType())) && LeNumUtil.isValidId(orderInfo.getStallId())) {
AllocStall allocStall = this.allocStallApi.getAllocStall(orderInfo.getStallId());
if (allocStall != null && LeConstants.COMMON_YES.equals(allocStall.getIfUseCallNum())) {
log.info("[当餐点餐下单] 开启叫号");
return true;
}
}
return false;
}
protected void calcOrderAndDetailTotalAmount(OrderInfo orderInfo, List<OrderDetail> orderDetailList) {
boolean usePrefPrice = !OrderTypeEnum.isShopCategory(orderInfo.getOrderType()) || this.supermarketApi.ifSupermarketMember(orderInfo.getCustId(), orderInfo.getCanteenId());
@ -1016,9 +1018,8 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness {
s.setAccPayResultVO(AccPayResultVO.of((AccTradeOrderBalanceVO)accPayDetailMap.get(s.getTradeChannelId())));
});
}
}
// }
//
// protected OrderAmountChange packageOrderAmountChange(Long orderId, LocalDate orderDate, BigDecimal changeAmount, ChangeDetailTypeEnum changeDetailType) {
// return this.packageOrderAmountChange(orderId, orderDate, changeAmount, changeDetailType, (String)null);
// }
@ -1027,34 +1028,34 @@ public class OrderPlaceBusinessImpl implements OrderPlaceBusiness {
// return OrderAmountChange.newInstance(orderId, orderDate, changeDetailType, changeAmount, remark);
// }
// protected RulePriceDTO packageRulePriceDTO(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, boolean isTrail) {
// RulePriceDTO rulePriceDTO = new RulePriceDTO();
// rulePriceDTO.setTryFlag(isTrail ? LeConstants.COMMON_YES : LeConstants.COMMON_NO);
// rulePriceDTO.setVerifyFlag(LeConstants.COMMON_NO);
// List<RulePriceOrderDTO> ruleOrderList = (List<RulePriceOrderDTO>)orderInfoList.stream().map((orderInfo) -> {
// RulePriceOrderDTO orderDTO = (new RulePriceOrderDTO()).setOrderId(orderInfo.getOrderId()).setMacOrderId(orderInfo.getMacOrderId()).setCustId(LeNumUtil.isValidId(orderInfo.getCustId()) ? orderInfo.getCustId() : LeConstants.DATA_DEFAULT_LONG).setOrderType(orderInfo.getOrderType()).setDeviceSn(orderInfo.getMachineSn()).setMealtimeType(orderInfo.getMealtimeType()).setOrderDate(orderInfo.getOrderDate()).setOrderTime(orderInfo.getOrderTime()).setCanteenId(orderInfo.getCanteenId()).setStallId(orderInfo.getStallId()).setPayableAmount(orderInfo.calcNeedPayAmount()).setIfOnline(orderInfo.getIfOnline());
// List<RulePriceOrderDetailDTO> detailDtoList = (List<RulePriceOrderDetailDTO>)orderDetailList.stream().filter((s) -> {
// return s.getOrderId().equals(orderDTO.getOrderId());
// }).map((s) -> {
// return (new RulePriceOrderDetailDTO()).setDetailId(s.getDetailId()).setGoodsDishesId(s.getGoodsDishesId()).setPrice(s.getPrice()).setQuantity(s.getQuantity()).setCalcTotalAmount(s.getCalcTotalAmount());
// }).collect(Collectors.toList());
// orderDTO.setDetails(detailDtoList);
// return orderDTO;
// }).collect(Collectors.toList());
// rulePriceDTO.setOrders(ruleOrderList);
// rulePriceDTO.setCustId(LeNumUtil.isValidId(((OrderInfo)orderInfoList.get(0)).getCustId()) ? ((OrderInfo)orderInfoList.get(0)).getCustId() : LeConstants.DATA_DEFAULT_LONG);
// rulePriceDTO.setPayChannel(((OrderInfo)orderInfoList.get(0)).getPayChannel());
// return rulePriceDTO;
// }
// protected boolean ifMealtimeAfterCurrent(OrderInfo orderInfo) {
// if (orderInfo.getOrderDate().isBefore(LocalDate.now())) {
// return false;
// } else if (orderInfo.getOrderDate().isAfter(LocalDate.now())) {
// return true;
// } else {
// AllocMealtimeModel currentMealtime = this.orderModuleClient.mealtimeQuery(MealtimeQueryParam.ofAssignTime(orderInfo.getOrderTime().toLocalTime(), orderInfo.getCanteenId(), orderInfo.getStallId()));
// return currentMealtime != null && currentMealtime.getMealtimeType().compareTo(orderInfo.getMealtimeType()) < 0;
// }
// }
protected RulePriceDTO packageRulePriceDTO(List<OrderInfo> orderInfoList, List<OrderDetail> orderDetailList, boolean isTrail) {
RulePriceDTO rulePriceDTO = new RulePriceDTO();
rulePriceDTO.setTryFlag(isTrail ? LeConstants.COMMON_YES : LeConstants.COMMON_NO);
rulePriceDTO.setVerifyFlag(LeConstants.COMMON_NO);
List<RulePriceOrderDTO> ruleOrderList = (List<RulePriceOrderDTO>)orderInfoList.stream().map((orderInfo) -> {
RulePriceOrderDTO orderDTO = (new RulePriceOrderDTO()).setOrderId(orderInfo.getOrderId()).setMacOrderId(orderInfo.getMacOrderId()).setCustId(LeNumUtil.isValidId(orderInfo.getCustId()) ? orderInfo.getCustId() : LeConstants.DATA_DEFAULT_LONG).setOrderType(orderInfo.getOrderType()).setDeviceSn(orderInfo.getMachineSn()).setMealtimeType(orderInfo.getMealtimeType()).setOrderDate(orderInfo.getOrderDate()).setOrderTime(orderInfo.getOrderTime()).setCanteenId(orderInfo.getCanteenId()).setStallId(orderInfo.getStallId()).setPayableAmount(orderInfo.calcNeedPayAmount()).setIfOnline(orderInfo.getIfOnline());
List<RulePriceOrderDetailDTO> detailDtoList = (List<RulePriceOrderDetailDTO>)orderDetailList.stream().filter((s) -> {
return s.getOrderId().equals(orderDTO.getOrderId());
}).map((s) -> {
return (new RulePriceOrderDetailDTO()).setDetailId(s.getDetailId()).setGoodsDishesId(s.getGoodsDishesId()).setPrice(s.getPrice()).setQuantity(s.getQuantity()).setCalcTotalAmount(s.getCalcTotalAmount());
}).collect(Collectors.toList());
orderDTO.setDetails(detailDtoList);
return orderDTO;
}).collect(Collectors.toList());
rulePriceDTO.setOrders(ruleOrderList);
rulePriceDTO.setCustId(LeNumUtil.isValidId(((OrderInfo)orderInfoList.get(0)).getCustId()) ? ((OrderInfo)orderInfoList.get(0)).getCustId() : LeConstants.DATA_DEFAULT_LONG);
rulePriceDTO.setPayChannel(((OrderInfo)orderInfoList.get(0)).getPayChannel());
return rulePriceDTO;
}
protected boolean ifMealtimeAfterCurrent(OrderInfo orderInfo) {
if (orderInfo.getOrderDate().isBefore(LocalDate.now())) {
return false;
} else if (orderInfo.getOrderDate().isAfter(LocalDate.now())) {
return true;
} else {
AllocMealtimeModel currentMealtime = this.orderModuleClient.mealtimeQuery(MealtimeQueryParam.ofAssignTime(orderInfo.getOrderTime().toLocalTime(), orderInfo.getCanteenId(), orderInfo.getStallId()));
return currentMealtime != null && currentMealtime.getMealtimeType().compareTo(orderInfo.getMealtimeType()) < 0;
}
}
}

View File

@ -18,6 +18,7 @@ import com.bonus.core.order.common.service.OrderDeliveryService;
import com.bonus.core.order.common.service.OrderDetailService;
import com.bonus.core.order.common.service.OrderInfoService;
import com.bonus.core.order.custom.OrderCustomBusiness;
import com.bonus.core.order.mq.OrderMessageSend;
import com.bonus.core.order.mq.po.OrderSavePO;
import com.bonus.core.order.repair.service.OrderRepairService;
import com.bonus.core.pay.api.PayApi;
@ -212,7 +213,7 @@ public class OrderResultBusinessImpl implements OrderResultBusiness {
}
}
}
//
// public void asyncRefundResultHandler(RefundResultPO refundResultPO) {
// LogUtil.info("订单异步退款|支付结果处理", refundResultPO);
// if (this.orderCustomBusiness.result().willHandleAsyncRefundResult(refundResultPO)) {

View File

@ -7,6 +7,7 @@ import com.bonus.core.order.mobile.vo.OrderInfoMobileVO;
import com.bonus.core.order.mobile.vo.OrderListMobileVO;
import com.bonus.core.order.web.dto.OrderUserPermissionDTO;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.Collection;
import java.util.List;
@ -68,7 +69,7 @@ public interface OrderInfoService {
//
List<OrderInfo> getPlacedOrderInfoList(Long custId, LocalDate nowDate);
//
// void initOrderCustInfo(List<OrderInfo> orderInfoList, Long custId);
void initOrderCustInfo(List<OrderInfo> orderInfoList, Long custId);
//
// <T extends OrderInfoWithCustName> void fillOrderCustName(List<T> orderInfoList, boolean skipIfNameExists);
//

View File

@ -13,6 +13,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.constant.LeConstants;
import com.bonus.core.common.constant.LeRetCodeEnum;
import com.bonus.core.customer.vo.CustPayVO;
import com.bonus.core.order.client.OrderModuleClient;
import com.bonus.core.order.client.po.CustPayInfoQueryParam;
import com.bonus.core.order.common.constants.OrderStateEnum;
import com.bonus.core.order.common.constants.OrderTips;
import com.bonus.core.order.common.dto.OrderSearchParam;
@ -31,6 +34,7 @@ import com.bonus.core.pay.common.model.TradeOrderRecharge;
import com.bonus.i18n.I18n;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -62,9 +66,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
@Resource
@Lazy
protected TradeRecordApi tradeRecordApi;
// @Autowired
// @Lazy
// private OrderModuleClient orderModuleClient;
@Autowired
@Lazy
private OrderModuleClient orderModuleClient;
@Transactional(
rollbackFor = {Exception.class}
@ -174,21 +178,20 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
.eq(OrderInfo::getCustId, custId).ge(OrderInfo::getOrderDate, nowDate)
.eq(OrderInfo::getOrderState, OrderStateEnum.PLACE.getKey()));
}
//
// public void initOrderCustInfo(List<OrderInfo> orderInfoList, Long custId) {
// if (!CollUtil.isEmpty(orderInfoList)) {
// if (orderInfoList.stream().anyMatch((s) -> {
// return !s.hasCustInfo(custId);
// })) {
// CustPayVO custInfo = this.orderModuleClient.custPayInfoQuery(CustPayInfoQueryParam.ofCustId(LeNumUtil.idOrDefault(custId)));
// orderInfoList.forEach((s) -> {
// s.fillCustInfo(custInfo);
// });
// }
//
// }
// }
//
public void initOrderCustInfo(List<OrderInfo> orderInfoList, Long custId) {
if (!CollUtil.isEmpty(orderInfoList)) {
if (orderInfoList.stream().anyMatch((s) -> {
return !s.hasCustInfo(custId);
})) {
CustPayVO custInfo = this.orderModuleClient.custPayInfoQuery(CustPayInfoQueryParam.ofCustId(LeNumUtil.idOrDefault(custId)));
orderInfoList.forEach((s) -> {
s.fillCustInfo(custInfo);
});
}
}
}
// public <T extends OrderInfoWithCustName> void fillOrderCustName(List<T> orderInfoList, boolean skipIfNameExists) {
// if (!CollUtil.isEmpty(orderInfoList)) {
// List<Long> custIds = (List)orderInfoList.stream().filter((orderInfox) -> {

View File

@ -6,7 +6,9 @@ import com.bonus.core.common.utils.JacksonUtil;
import com.bonus.core.common.utils.LogUtil;
import com.bonus.core.common.utils.TenantContextHolder;
import com.bonus.core.order.android.dto.MacOrderImageSaveDTO;
import com.bonus.core.order.common.model.*;
import com.bonus.core.order.mq.po.OrderCancelPO;
import com.bonus.core.order.mq.po.OrderPlacedPO;
import com.bonus.core.pay.common.po.PayResultPO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -166,27 +168,27 @@ public class OrderMessageSend {
//
// }
// }
//
// public static void orderV3Placed(String outTradeNo, List<OrderInfo> orderInfoList, List<OrderDetail> detailList, List<OrderDelivery> orderDeliveryList, List<OrderAmountChange> amountChangeList, List<OrderAmountDetail> amountDetailList) {
// log.info("[订单MQv3]发送订单已下单通知");
// OrderPlacedPO orderSavePO = new OrderPlacedPO();
// orderSavePO.setTraceId(LogUtil.getCurrentTraceId());
// orderSavePO.setTenantId(TenantContextHolder.getTenantId());
// orderSavePO.setOutTradeNo(outTradeNo);
// orderSavePO.setOrderInfoList(orderInfoList);
// orderSavePO.setDetailList(detailList);
// orderSavePO.setOrderDeliveryList(orderDeliveryList);
// orderSavePO.setAmountChangeList(amountChangeList);
// orderSavePO.setAmountDetailList(amountDetailList);
//
// try {
// MqUtil.sendByTxEnd(JacksonUtil.writeValueAsString(orderSavePO), LeMqConstant.Topic.ORDER_V3_PLACED);
// } catch (Exception var8) {
// log.error("发送MQ消息失败", var8);
// }
//
// }
//
public static void orderV3Placed(String outTradeNo, List<OrderInfo> orderInfoList, List<OrderDetail> detailList, List<OrderDelivery> orderDeliveryList, List<OrderAmountChange> amountChangeList, List<OrderAmountDetail> amountDetailList) {
log.info("[订单MQv3]发送订单已下单通知");
OrderPlacedPO orderSavePO = new OrderPlacedPO();
orderSavePO.setTraceId(LogUtil.getCurrentTraceId());
orderSavePO.setTenantId(TenantContextHolder.getTenantId());
orderSavePO.setOutTradeNo(outTradeNo);
orderSavePO.setOrderInfoList(orderInfoList);
orderSavePO.setDetailList(detailList);
orderSavePO.setOrderDeliveryList(orderDeliveryList);
orderSavePO.setAmountChangeList(amountChangeList);
orderSavePO.setAmountDetailList(amountDetailList);
try {
MqUtil.sendByTxEnd(JacksonUtil.writeValueAsString(orderSavePO), LeMqConstant.Topic.ORDER_V3_PLACED);
} catch (Exception var8) {
log.error("发送MQ消息失败", var8);
}
}
// public static void orderV3Canceled(OrderInfo orderInfo, List<OrderDetail> detailList) {
// log.info("[订单MQv3]发送订单已取消通知");
// OrderCanceledPO po = new OrderCanceledPO();

View File

@ -0,0 +1,82 @@
package com.bonus.core.order.mq.po;
import cn.hutool.core.collection.CollUtil;
import com.bonus.core.order.common.model.*;
import java.util.List;
public class OrderPlacedPO {
private String traceId;
private Long tenantId;
private String outTradeNo;
private List<OrderInfo> orderInfoList = CollUtil.newArrayList(new OrderInfo[0]);
private List<OrderDetail> detailList = CollUtil.newArrayList(new OrderDetail[0]);
private List<OrderDelivery> orderDeliveryList = CollUtil.newArrayList(new OrderDelivery[0]);
private List<OrderAmountChange> amountChangeList = CollUtil.newArrayList(new OrderAmountChange[0]);
private List<OrderAmountDetail> amountDetailList = CollUtil.newArrayList(new OrderAmountDetail[0]);
public String getTraceId() {
return this.traceId;
}
public Long getTenantId() {
return this.tenantId;
}
public String getOutTradeNo() {
return this.outTradeNo;
}
public List<OrderInfo> getOrderInfoList() {
return this.orderInfoList;
}
public List<OrderDetail> getDetailList() {
return this.detailList;
}
public List<OrderDelivery> getOrderDeliveryList() {
return this.orderDeliveryList;
}
public List<OrderAmountChange> getAmountChangeList() {
return this.amountChangeList;
}
public List<OrderAmountDetail> getAmountDetailList() {
return this.amountDetailList;
}
public void setTraceId(final String traceId) {
this.traceId = traceId;
}
public void setTenantId(final Long tenantId) {
this.tenantId = tenantId;
}
public void setOutTradeNo(final String outTradeNo) {
this.outTradeNo = outTradeNo;
}
public void setOrderInfoList(final List<OrderInfo> orderInfoList) {
this.orderInfoList = orderInfoList;
}
public void setDetailList(final List<OrderDetail> detailList) {
this.detailList = detailList;
}
public void setOrderDeliveryList(final List<OrderDelivery> orderDeliveryList) {
this.orderDeliveryList = orderDeliveryList;
}
public void setAmountChangeList(final List<OrderAmountChange> amountChangeList) {
this.amountChangeList = amountChangeList;
}
public void setAmountDetailList(final List<OrderAmountDetail> amountDetailList) {
this.amountDetailList = amountDetailList;
}
}