Jelajahi Sumber

Merge branch 'feature/asyncOrder' of http://git.aseanbusiness.cn/qzyReal/market-server into feature/asyncOrder

qzy 6 bulan lalu
induk
melakukan
aa1a598eaf

+ 41 - 21
sp-service/level-one-server/src/main/java/com/pj/tb_order/TbOrderService.java

@@ -41,6 +41,8 @@ import com.pj.tb_people.TbPeopleMapper;
 import com.pj.tb_people.TbPeopleService;
 import com.pj.tb_shop.TbShop;
 import com.pj.tb_shop.TbShopService;
+import com.pj.tb_trade_area.TbTradeArea;
+import com.pj.tb_trade_area.TbTradeAreaService;
 import com.pj.utils.sg.AjaxError;
 import com.pj.utils.so.SoMap;
 import lombok.extern.slf4j.Slf4j;
@@ -50,7 +52,6 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestMapping;
 
 import javax.annotation.Resource;
 
@@ -101,6 +102,8 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
     private HtTradeSettlementService htTradeSettlementService;
     @Autowired
     private PaymentServerInterface paymentServerInterface;
+    @Autowired
+    private TbTradeAreaService tbTradeAreaService;
 
     /**
      * 远程调用
@@ -459,9 +462,9 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
                 .setPeopleConfirmStatus(ConfirmStatus.CONFIRM_STATUS_ONE.getCode())
                 .setUpdateTime(new Date());
         //测试用,跳过银行接口
-        tbOrder.setTradeStatus(TradeStatus.TRADE_STATUS_ONE.getCode()); //已支付
-        tbOrder.setTradeTime(new Date()); //支付回执时间
-        tbOrder.setPayType(0); //支付类型
+        //tbOrder.setTradeStatus(TradeStatus.TRADE_STATUS_ONE.getCode()); //已支付
+        //tbOrder.setTradeTime(new Date()); //支付回执时间
+        //tbOrder.setPayType(0); //支付类型
         if ("1".equals(tbOrder.getDeclareType())) {
            // tbOrder.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode()); //已完成->完成后可以进行转售
             tbOrder.setFinishTime(new Date());
@@ -470,13 +473,13 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         boolean update = super.updateById(tbOrder);
         // TODO: 2023/8/28 边民发起支付申请,调用银行接口:验证边民支付信息,将货款先存入银行第三方账户,并给出回执
         PaymentDto paymentDto = this.getPaymentData(tbOrder);
+        StaticLog.info("\nsendSXB010——PaymentDto——:{}",JSONUtil.toJsonStr(paymentDto));
         paymentServerInterface.sendSXB010(paymentDto);
-        //paymentServerInterface.sendCXB001(paymentDto);
 
        return update;
     }
     /**
-     * 边民订单确认-收到银行扣款回执
+     * 边民订单确认-收到银行扣款回执——SXB011——SXB012
      * @param tradeNo 一级市场边民订单-订单编号
      * @param SXB010Status 回执状态-1=扣款成功 2=扣款失败
      */
@@ -498,9 +501,9 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
             tbOrder.setSxb010Status(1)
                     .setSxb010StatusTime(new Date());
 
-            tbOrder.setPeopleConfirmTime(new Date())
+            /*tbOrder.setPeopleConfirmTime(new Date())
                     .setPeopleConfirmStatus(ConfirmStatus.CONFIRM_STATUS_ONE.getCode())
-                    .setUpdateTime(new Date());
+                    .setUpdateTime(new Date());*/
             if ("1".equals(tbOrder.getDeclareType())) {
                 // TODO: 2023/8/29 调用航通009接口,发送信息
                 sendConfirmMsgToHt(tbOrder);
@@ -647,7 +650,7 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
             throw new ServiceException("当前订单状态已改变,不可做退款操作,请刷新后操作!");
 
         PaymentDto paymentDto = this.getPaymentData(order);
-        log.info("sendSXB013:{}",JSONUtil.toJsonStr(paymentDto));
+        StaticLog.info("\nsendSXB013(边民退货退款)——PaymentDto——:{}",JSONUtil.toJsonStr(paymentDto));
         paymentServerInterface.sendSXB013(paymentDto);
 
         LambdaUpdateWrapper<TbOrder> updateWrapper = new LambdaUpdateWrapper<>();
@@ -675,6 +678,7 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         // TODO: 2023/11/27 查验不通过,车辆不通过卡3,调用银行退款划扣申请,从银行第三方账户,退回至边民借记卡账户
         tbOrderList.forEach(order -> {
             PaymentDto paymentDto = this.getPaymentData(order);
+            StaticLog.info("\nsendSXB013(进出口申报单退单)——PaymentDto——:{}",JSONUtil.toJsonStr(paymentDto));
             paymentServerInterface.sendSXB013(paymentDto);
         });
 
@@ -698,7 +702,7 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
 
         return update && update1;
     }
-    //收到银行退款回执
+    //收到银行退款回执——SXB014——SXB015
     public boolean chargebackFromBank(String tradeNo, Integer SXB013Status, String note) {
         LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(TbOrder::getTradeNo, tradeNo);
@@ -717,7 +721,7 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         return updateById(tbOrder);
     }
 
-    // TODO: 2023/8/28 系统接收到航通接口信息:车辆已出一级市场(系统接收到这个信息时,证明已经查验通过,不会有进出口申报单退单)
+    // TODO: 2023/8/28 系统接收到航通007接口信息:车辆已出一级市场(系统接收到这个信息时,证明已经查验通过,不会有进出口申报单退单)
     public boolean orderFinish(HtPassCardDTO htPassCardDTO) {
         String billCode = htPassCardDTO.getBillCode();
         //获取出了一级市场的所有边民订单
@@ -725,24 +729,40 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         wrapper.eq(TbOrder::getPreNo, billCode);
         List<TbOrder> tbOrders = tbOrderMapper.selectList(wrapper);
         if (tbOrders.isEmpty()) {
-            return false;
+            throw new ServiceException(" ------接收到航通007车辆出卡三接口信息,当前获取到的一级市场的边民订单为空。 单证代码billCode = " + billCode + "\n");
         }
+
+        TbTradeArea area = tbTradeAreaService.getById(tbOrders.get(0).getTradeAreaId());
         String tradeNos = "";
+        PaymentDto paymentDto = new PaymentDto();
         for (TbOrder tbOrder : tbOrders) {
             tradeNos += tbOrder.getTradeNo() + ",";
-            tbOrder.setFinishTime(new Date());
-            tbOrder.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode());
+            //收到007结关信息后还需转发给银行,银行打款给采购商,系统收到打款成功回执SXB017才能完成订单,然后边民才可上架订单
+            //tbOrder.setFinishTime(new Date());
+            //tbOrder.setFinishStatus(FinishStatus.FINISH_STATUS_ONE.getCode());
+
+            //todo: 收到航通007报文即收到海关结关信息,转发结关信息给到银行
+            paymentDto.setTradeNo(tbOrder.getTradeNo());
+            paymentDto.setDeclTime(htPassCardDTO.getCheckTime());
+            paymentDto.setFieldCode(area.getCode());
+            StaticLog.info("\nsendCXB001——PaymentDto——:{}",JSONUtil.toJsonStr(paymentDto));
+            paymentServerInterface.sendCXB001(paymentDto);
         }
-        this.updateBatchById(tbOrders);
+        //this.updateBatchById(tbOrders);
+
+
         //todo: 调用银行接口发起划扣:将边民划扣至银行第三方账户的货款,支付至外籍商户的账户
-        PaymentDto paymentDto = this.getPaymentData(tbOrders.get(0));
-        paymentDto.setTradeNos(tradeNos);
-        log.info("sendSXB023:{}",JSONUtil.toJsonStr(paymentDto));
-        paymentServerInterface.sendSXB023(paymentDto);
+        PaymentDto paymentDto2 = new PaymentDto();
+        paymentDto2.setTradeNos(tradeNos);
+        paymentDto2.setVoyageNo(htPassCardDTO.getManifestId());
+        paymentDto2.setVeNo(tbOrders.get(0).getVeNo());
+        paymentDto2.setFieldCode(area.getCode());
+        StaticLog.info("\nsendSXB023——PaymentDto——:{}",JSONUtil.toJsonStr(paymentDto2));
+        paymentServerInterface.sendSXB023(paymentDto2);
 
         return true;
     }
-    // TODO: 收到(一级市场-通车批信息)订单打款回执, tradeNos:订单号 n个
+    // TODO: 收到(一级市场-通车批信息)银行订单打款回执, tradeNos:订单号 n个——SXB017——SXB018
     public boolean orderFinishFromBank(String tradeNos, Integer SXB023Status) {
         String[] tradeNoArr = tradeNos.split(",");
         LambdaQueryWrapper<TbOrder> wrapper = new LambdaQueryWrapper<>();
@@ -751,7 +771,7 @@ public class TbOrderService extends ServiceImpl<TbOrderMapper, TbOrder> implemen
         }
         List<TbOrder> tbOrderList = this.list(wrapper);
         if (tbOrderList.size() <= 0) {
-            throw new RuntimeException("收到(一级市场-通车批信息)订单打款回执:订单不存在");
+            throw new RuntimeException("收到(一级市场-通车批信息)银行订单打款回执——SXB017——SXB018:订单不存在");
         }
 
         // 更新状态保存交易记录

+ 2 - 1
sp-service/payment-server/src/main/java/com/pj/utils/CryptoUtil.java

@@ -11,7 +11,8 @@ import java.security.Security;
 
 //报文验签&解密
 public class CryptoUtil {
-    private final static String sm4Key="56b5f803c4eeaf9bc9322b46c95b8145";//c9931a6c5219610179d7f6c6ec8fd328
+    //private final static String sm4Key="56b5f803c4eeaf9bc9322b46c95b8145";//测试
+    private final static String sm4Key="0c1a54cf431473b8f11d74da7e1fa504";//生产
 
     private static Logger logger = LoggerFactory.getLogger(CryptoUtil.class);
     static{