mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-30 08:00:00 +08:00
通过 RabbitMQ调用增加积分
This commit is contained in:
@@ -198,6 +198,9 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
@Autowired
|
||||
private AdapayRefundRecordService adapayRefundRecordService;
|
||||
|
||||
@Autowired
|
||||
private com.jsowell.pile.mq.producer.PointsRewardProducer pointsRewardProducer;
|
||||
|
||||
@Override
|
||||
public int deleteByPrimaryKey(Integer id) {
|
||||
return orderBasicInfoMapper.deleteByPrimaryKey(id);
|
||||
@@ -2229,12 +2232,67 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
logger.error("realTimeOrderSplit-订单:{}, 订单结算金额,汇付分账异常", afterSettleOrderDTO.getOrderCode(), e);
|
||||
}
|
||||
|
||||
// 发放积分奖励(异步)
|
||||
// 条件:1.结算金额大于0 2.在线支付(微信支付、支付宝支付)
|
||||
try {
|
||||
sendPointsRewardMessage(afterSettleOrderDTO, orderBasicInfo);
|
||||
} catch (Exception e) {
|
||||
logger.error("realTimeOrderSplit-订单:{}, 发送积分奖励消息异常", afterSettleOrderDTO.getOrderCode(), e);
|
||||
}
|
||||
|
||||
// 组装结果集
|
||||
OrderSplitResult result = new OrderSplitResult();
|
||||
result.setOrderCode(afterSettleOrderDTO.getOrderCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送积分奖励消息
|
||||
* 条件:1.结算金额大于0 2.在线支付(微信支付、支付宝支付)
|
||||
*
|
||||
* @param afterSettleOrderDTO 订单结算信息
|
||||
* @param orderBasicInfo 订单基本信息
|
||||
*/
|
||||
private void sendPointsRewardMessage(AfterSettleOrderDTO afterSettleOrderDTO, OrderBasicInfo orderBasicInfo) {
|
||||
String orderCode = afterSettleOrderDTO.getOrderCode();
|
||||
String payMode = orderBasicInfo.getPayMode();
|
||||
BigDecimal settleAmount = afterSettleOrderDTO.getOrderSettleAmount();
|
||||
|
||||
// 校验:结算金额必须大于0
|
||||
if (settleAmount == null || settleAmount.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
logger.info("积分奖励-订单:{}, 结算金额({})不大于0,不发放积分", orderCode, settleAmount);
|
||||
return;
|
||||
}
|
||||
|
||||
// 校验:只有在线支付(微信支付、支付宝支付)才发放积分
|
||||
boolean isOnlinePayment = StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue())
|
||||
|| StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue());
|
||||
if (!isOnlinePayment) {
|
||||
logger.info("积分奖励-订单:{}, 支付方式({})不是在线支付,不发放积分", orderCode, payMode);
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取会员ID
|
||||
String memberId = orderBasicInfo.getMemberId();
|
||||
if (StringUtils.isBlank(memberId)) {
|
||||
logger.warn("积分奖励-订单:{}, 会员ID为空,不发放积分", orderCode);
|
||||
return;
|
||||
}
|
||||
|
||||
// 构建积分奖励消息,积分数量等于实际结算金额
|
||||
com.jsowell.pile.dto.PointsRewardMessage message = com.jsowell.pile.dto.PointsRewardMessage.builder()
|
||||
.memberId(memberId)
|
||||
.points(settleAmount)
|
||||
.orderCode(orderCode)
|
||||
.payMode(payMode)
|
||||
.settleAmount(settleAmount)
|
||||
.build();
|
||||
|
||||
// 发送积分奖励消息到 RabbitMQ
|
||||
pointsRewardProducer.sendPointsRewardMessage(message);
|
||||
logger.info("积分奖励-订单:{}, 会员:{}, 积分:{}, 消息已发送", orderCode, memberId, settleAmount);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单待分账信息
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user