|
@@ -2,9 +2,12 @@ package com.usky.dxtop.service.listener;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.usky.dxtop.common.exception.CustomException;
|
|
|
+import com.usky.dxtop.model.MsgLog;
|
|
|
import com.usky.dxtop.model.Order;
|
|
|
+import com.usky.dxtop.service.MsgLogService;
|
|
|
import com.usky.dxtop.service.OrderService;
|
|
|
import com.usky.dxtop.service.config.rabbitmq.charge.ChargeProduceConfig;
|
|
|
+import com.usky.dxtop.service.emun.MsgLogStatus;
|
|
|
import com.usky.dxtop.service.emun.OrderStatus;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.amqp.core.Message;
|
|
@@ -25,6 +28,8 @@ public class ChargeMqListener {
|
|
|
|
|
|
@Autowired
|
|
|
private OrderService orderService;
|
|
|
+ @Autowired
|
|
|
+ private MsgLogService msgLogService;
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@RabbitListener(queues = ChargeProduceConfig.NAME, containerFactory = ChargeProduceConfig.LISTENER)
|
|
|
public void dealDeclareMessage(Message message) {
|
|
@@ -35,14 +40,20 @@ public class ChargeMqListener {
|
|
|
String s = new String(message.getBody(), StandardCharsets.UTF_8);
|
|
|
log.info("charge_trans_produce:接受到的消息"+s);
|
|
|
JSONObject jsonObject = JSONObject.parseObject(s);
|
|
|
- Order order = new Order();
|
|
|
- order.setId(Long.parseLong(jsonObject.get("seq").toString()));
|
|
|
- if ("1".equals(jsonObject.get("code"))) {
|
|
|
- order.setOrderFlag(OrderStatus.COMPLETE.getCode());
|
|
|
- }else {
|
|
|
- order.setOrderFlag(OrderStatus.PAYMENT_ERROR_DEBIT.getCode());
|
|
|
+ Long msgId = Long.parseLong(jsonObject.get("seq").toString());
|
|
|
+ MsgLog msgLog = msgLogService.getById(msgId);
|
|
|
+ if (msgLogService.isRepetition(msgLog)){
|
|
|
+ Order order = new Order();
|
|
|
+ order.setId(msgLog.getBusinessId());
|
|
|
+ if ("1".equals(jsonObject.get("code"))) {
|
|
|
+ order.setOrderFlag(OrderStatus.COMPLETE.getCode());
|
|
|
+ }else {
|
|
|
+ order.setOrderFlag(OrderStatus.PAYMENT_ERROR_DEBIT.getCode());
|
|
|
+ }
|
|
|
+ orderService.updateById(order);
|
|
|
+ msgLog.setMsgFlag(MsgLogStatus.CONSUMER_SUCCESS.getCode());
|
|
|
+ msgLogService.updateById(msgLog);
|
|
|
}
|
|
|
- orderService.updateById(order);
|
|
|
} catch (Exception e) {
|
|
|
log.info("charge_trans_produce"+"异常信息:" + e.getMessage());
|
|
|
throw new CustomException(e.getMessage());
|