Sfoglia il codice sorgente

接入支付中心

lyhzzz 2 anni fa
parent
commit
f484b6739c

+ 46 - 10
src/main/java/com/fdkankan/ucenter/mq/consumer/OrderDownConsumer.java

@@ -2,8 +2,15 @@ package com.fdkankan.ucenter.mq.consumer;
 
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
+import com.fdkankan.ucenter.entity.DownloadOrder;
+import com.fdkankan.ucenter.httpClient.vo.PayOrderVo;
+import com.fdkankan.ucenter.pay.strategy.impl.DownloadOrderImpl;
+import com.fdkankan.ucenter.pay.strategy.impl.EntityOrderImpl;
+import com.fdkankan.ucenter.pay.strategy.impl.IncrementOrderImpl;
+import com.fdkankan.ucenter.service.IIncrementOrderService;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.amqp.core.ExchangeTypes;
 import org.springframework.amqp.core.Message;
@@ -22,25 +29,54 @@ import java.nio.charset.StandardCharsets;
 @Component
 public class OrderDownConsumer {
 
-    @Value("${queue.orderPay.order-down:order-down}")
-    private String orderDownQueue;
-    @Value("${queue.orderPay.down-payResult:down-payResult}")
-    private String orderPayResultQueue;
 
     @Autowired
     RabbitMqProducer rabbitMqProducer;
+    @Autowired
+    IncrementOrderImpl incrementOrder;
+    @Autowired
+    DownloadOrderImpl downloadOrder;
+    @Autowired
+    EntityOrderImpl entityOrder;
 
 
     @RabbitListener(
             queuesToDeclare = @Queue("${queue.orderPay.down-payResult:down-payResult}")
     )
-    public void consumerQueue(Channel channel, Message message) throws Exception {
-        String messageId = message.getMessageProperties().getMessageId();
-        String msg = new String(message.getBody(), StandardCharsets.UTF_8);
-        log.info("接受下单结果mq--messageId:{},msg:{}",messageId,msg);
+    public void consumerQueue(Channel channel, Message message)  {
+        try {
+            String messageId = message.getMessageProperties().getMessageId();
+            String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+            log.info("接受下单结果mq--messageId:{},msg:{}",messageId,msg);
+
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+            msg = StringEscapeUtils.unescapeJava(msg);
+            PayOrderVo order = JSONObject.parseObject(msg, PayOrderVo.class);
+            if(order == null){
+                return;
+            }
+            //更新订单状态
+            Integer payType = 3;
+            //付款方式,0表示微信,1表示支付宝,2表示paypal,3表示其他
+            switch (order.getPayType()){
+                case 0 : case 1: case 2: payType = 0;break;
+                case 3 : case 4:  payType = 1;break;
+                case 5 :   payType = 2;break;
+            }
+            if("incrementOrder".equals(order.getOrderType())){
+                incrementOrder.handleOrder(order.getOrderSn(),order.getTradeNo(),order.getOpenId(),payType,null);
+            }
+            if("downOrder".equals(order.getOrderType())){
+                downloadOrder.handleOrder(order.getOrderSn(),order.getTradeNo(),order.getOpenId(),payType,null);
+            }
+            if("partOrder".equals(order.getOrderType())){
+                entityOrder.handleOrder(order.getOrderSn(),order.getTradeNo(),order.getOpenId(),payType,null);
+            }
+        }catch (Exception e){
+
+        }
+
 
-        channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
 
-        //更新订单状态
     }
 }

+ 13 - 1
src/main/java/com/fdkankan/ucenter/service/impl/DownloadOrderServiceImpl.java

@@ -5,11 +5,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.constant.TbStatus;
+import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.ucenter.common.PageInfo;
 import com.fdkankan.common.util.NumberUtils;
+import com.fdkankan.ucenter.constant.OrderConstant;
 import com.fdkankan.ucenter.entity.DownloadOrder;
 import com.fdkankan.ucenter.entity.Invoice;
 import com.fdkankan.ucenter.entity.User;
+import com.fdkankan.ucenter.httpClient.service.PayService;
+import com.fdkankan.ucenter.httpClient.vo.PayOrderVo;
 import com.fdkankan.ucenter.mapper.IDownloadOrderMapper;
 import com.fdkankan.ucenter.service.IDownloadOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -106,12 +110,20 @@ public class DownloadOrderServiceImpl extends ServiceImpl<IDownloadOrderMapper,
 
     }
 
+    @Autowired
+    PayService payService;
+
     @Override
     public DownloadOrder insertDownloadOrder(Long userId, DownNumParam param, BigDecimal price) {
         BigDecimal total = price.multiply(new BigDecimal(param.getCount()));
 
+        PayOrderVo payOrderVo = payService.downOrder(total, "downOrder");
+        if(payOrderVo == null){
+            throw new BusinessException(OrderConstant.FAILURE_CODE_8005,OrderConstant.FAILURE_MSG_8005);
+        }
+
         DownloadOrder downloadOrderEntity = new DownloadOrder();
-        downloadOrderEntity.setOrderSn(NumberUtils.getOrderSn());
+        downloadOrderEntity.setOrderSn(payOrderVo.getOrderSn());
         downloadOrderEntity.setAmount(total);
         downloadOrderEntity.setPayType(param.getPayType());
         downloadOrderEntity.setPayStatus(-1);

+ 1 - 1
src/main/java/com/fdkankan/ucenter/service/impl/IncrementOrderServiceImpl.java

@@ -159,7 +159,7 @@ public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper
         }
 
         IncrementOrder incrementOrderEntity = new IncrementOrder();
-        PayOrderVo payOrderVo = payService.downOrder(total, "increment");
+        PayOrderVo payOrderVo = payService.downOrder(total, "incrementOrder");
         if(payOrderVo == null){
             throw new BusinessException(OrderConstant.FAILURE_CODE_8005,OrderConstant.FAILURE_MSG_8005);
         }

+ 10 - 1
src/main/java/com/fdkankan/ucenter/service/impl/OrderServiceImpl.java

@@ -13,6 +13,8 @@ import com.fdkankan.redis.util.RedisUtil;
 import com.fdkankan.ucenter.common.RedisKeyUtil;
 import com.fdkankan.ucenter.constant.*;
 import com.fdkankan.ucenter.entity.*;
+import com.fdkankan.ucenter.httpClient.service.PayService;
+import com.fdkankan.ucenter.httpClient.vo.PayOrderVo;
 import com.fdkankan.ucenter.mapper.IOrderMapper;
 import com.fdkankan.ucenter.pay.alipay.sdk.AlipayService;
 import com.fdkankan.ucenter.pay.wx.WXPay;
@@ -121,6 +123,9 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
         this.update(wrapper);
     }
 
+   @Autowired
+    PayService payService;
+
     @Override
     public Order placeOrder(PlaceOrderParam param) {
         List<Long> id = param.getGoods().parallelStream().map(CartParam::getId).collect(Collectors.toList());
@@ -167,8 +172,12 @@ public class OrderServiceImpl extends ServiceImpl<IOrderMapper, Order> implement
             goodsAmount = goodsAmount.add(orderItemEntity.getGoodsPrice().multiply(new BigDecimal(orderItemEntity.getGoodsCount())));
         }
 
+        PayOrderVo payOrderVo = payService.downOrder(goodsAmount, "partOrder");
+        if(payOrderVo == null){
+            throw new BusinessException(OrderConstant.FAILURE_CODE_8005,OrderConstant.FAILURE_MSG_8005);
+        }
         Order orderEntity = new Order();
-        orderEntity.setOrderSn(NumberUtils.getOrderSn());
+        orderEntity.setOrderSn(payOrderVo.getOrderSn());
         orderEntity.setOrderTime(DateUserUtil.getDate(new Date()));
         orderEntity.setOrderStatus(OrderStatus.unprocessed.name());
         orderEntity.setPaymentStatus(PaymentStatus.unpaid.name());