PushPaySuccessMsgService.java
2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.zteits.ipay.biz;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSON;
import com.aliyun.openservices.ons.api.SendResult;
import com.zteits.clouds.api.apibase.constants.OrderStateEnum;
import com.zteits.clouds.api.dto.order.payorder.dto.PayOrderDTO;
import com.zteits.clouds.api.dto.rocketmq.constants.MQTopicConstants;
import com.zteits.clouds.api.dto.rocketmq.constants.tags.OrderTags;
import com.zteits.clouds.api.dto.rocketmq.order.payorder.PayOrderSuccess;
import com.zteits.clouds.api.dto.rocketmq.order.payorder.PayOrderSuccessMsgVO;
import zteits.rocketmq.spring.starter.core.RocketMQTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 公共推送支付成功消息服务
*/
@Service
public class PushPaySuccessMsgService {
private static final Logger logger = LoggerFactory.getLogger(PushPaySuccessMsgService.class);
@Autowired
private RocketMQTemplate rocketMQTemplate;
/**
* 发送支付成功消息,用于处理其他非紧急事件,例如激光推送支付消息,根据赠送规则赠送积分,代金券等
* 2018/11/21 15:05 zhaowg
* @param payOrders
*/
public void sendPaySuccessMsg(List<PayOrderDTO> payOrders) {
if(CollectionUtils.isEmpty(payOrders)){
return;
}
List<PayOrderSuccess> payOrderSuccessS = new ArrayList<>();
String keys = "";
for (PayOrderDTO payOrder:payOrders){
if(payOrder.getPayOrderState().intValue() != OrderStateEnum.PAYED.value().intValue()){
continue;
}
keys += payOrder.getPayOrderId()+",";
PayOrderSuccess payOrderSuccessMsgVO = new PayOrderSuccess();
BeanUtils.copyProperties(payOrder,payOrderSuccessMsgVO);
payOrderSuccessS.add(payOrderSuccessMsgVO);
}
try{
PayOrderSuccessMsgVO payOrderSuccessMsgVO = new PayOrderSuccessMsgVO();
payOrderSuccessMsgVO.setPayOrderSuccessList(payOrderSuccessS);
logger.info("发送支付成功消息,参数:"+ JSON.toJSONString(payOrderSuccessMsgVO));
SendResult sendResult = rocketMQTemplate.syncSend(MQTopicConstants.ZTEITS_RNT_CLOUD, OrderTags.PAY_SUCCESS, keys, payOrderSuccessMsgVO);
logger.info("发送结果:"+JSON.toJSONString(sendResult));
if(StringUtils.isBlank(sendResult.getMessageId())){
//发送失败,后期可以使用定时任务辅助,针对发送失败的,定时重发
}
}catch (Exception e){
//发送失败,后期可以使用定时任务辅助,针对发送失败的,定时重发
logger.error("支付成功消息发送失败",e);
}
}
}