Bladeren bron

苏商提款回调通知接口开发

liuj 1 dag geleden
bovenliggende
commit
0edf0f16db

+ 10 - 0
src/main/java/com/sunxung/factoring/service/financing/payment/IPaymentApplyService.java

@@ -1,6 +1,7 @@
 package com.sunxung.factoring.service.financing.payment;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.sunxung.factoring.entity.financing.apply.CFinancingBasicInfo;
 import com.sunxung.factoring.entity.financing.payment.PaymentApply;
 import com.sunxung.factoring.entity.financing.payment.PaymentApproval;
 import com.sunxung.factoring.entity.financing.payment.PaymentCondition;
@@ -52,4 +53,13 @@ public interface IPaymentApplyService extends IService<PaymentApply> {
      */
     List<PaymentCondition> findConditions(Long applyId);
 
+    /**
+     * 向sop推送融资信息
+     *
+     * @param financingBasicInfo
+     * @param management
+     * @param payoutDate
+     */
+    void financingToSop(CFinancingBasicInfo financingBasicInfo, String management, String payoutDate);
+
 }

+ 2 - 1
src/main/java/com/sunxung/factoring/service/financing/payment/impl/PaymentApplyServiceImpl.java

@@ -851,7 +851,8 @@ public class PaymentApplyServiceImpl extends ServiceImpl<PaymentApplyMapper, Pay
      * @param management         资方名称
      * @param payoutDate         放款日期
      */
-    private void financingToSop(CFinancingBasicInfo financingBasicInfo, String management, String payoutDate) {
+    @Override
+    public void financingToSop(CFinancingBasicInfo financingBasicInfo, String management, String payoutDate) {
         //查询sop对应的业务编号
         String getBusinessNoByTradeUrl = getBusinessNoByTrade + "?businessNumber=" + financingBasicInfo.getBusinessNumber();
         ResponseEntity<String> responseEntity = restTemplate.getForEntity(getBusinessNoByTradeUrl, String.class);

+ 21 - 0
src/main/java/com/sunxung/factoring/service/smb/impl/FinancingLoanInfoServiceImpl.java

@@ -5,12 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
+import com.sunxung.factoring.component.util.ConstantUtil;
 import com.sunxung.factoring.entity.GridPage;
 import com.sunxung.factoring.entity.entprise.Enterprise;
+import com.sunxung.factoring.entity.financing.apply.CFinancingBasicInfo;
 import com.sunxung.factoring.entity.smb.FinancingLoanInfo;
 import com.sunxung.factoring.entity.smb.vo.FinancingLoanInfoSearch;
 import com.sunxung.factoring.mapper.smb.FinancingLoanInfoMapper;
 import com.sunxung.factoring.service.entprise.IEnterpriseService;
+import com.sunxung.factoring.service.financing.apply.ICFinancingBasicInfoService;
+import com.sunxung.factoring.service.financing.payment.IPaymentApplyService;
 import com.sunxung.factoring.service.smb.IFinancingLoanInfoService;
 import com.sunxung.factoring.service.smbApi.api.SMBApiService;
 import com.sunxung.factoring.service.smbApi.resp.LoanApplyStatusResp;
@@ -35,6 +39,10 @@ public class FinancingLoanInfoServiceImpl extends ServiceImpl<FinancingLoanInfoM
     private IEnterpriseService enterpriseService;
     @Autowired
     private SMBApiService smbApiService;
+    @Autowired
+    private ICFinancingBasicInfoService financingBasicInfoService;
+    @Autowired
+    private IPaymentApplyService paymentApplyService;
 
     @Override
     public GridPage<FinancingLoanInfo> findBySearch(FinancingLoanInfoSearch search) {
@@ -78,7 +86,20 @@ public class FinancingLoanInfoServiceImpl extends ServiceImpl<FinancingLoanInfoM
                     loanInfo.setPayoutStatus(loanApplyStatusResp.getStatus());
                     //放款金额
                     loanInfo.setLoanAmount(loanApplyStatusResp.getBusiAmt());
+                    if ("03".equals(loanApplyStatusResp.getStatus())) {
+                        //如果提款失败,添加失败原因
+                        loanInfo.setFailMsg(loanApplyStatusResp.getRemark());
+                    }
                     updateById(loanInfo);
+                    if ("02".equals(loanApplyStatusResp.getStatus())) {
+                        //如果提款成功后、需要向sop推送融资信息
+                        if (loanInfo.getcFinancingBasicInfoId() != null) {
+                            CFinancingBasicInfo financingBasicInfo = financingBasicInfoService.getById(loanInfo.getcFinancingBasicInfoId());
+                            if (financingBasicInfo != null) {
+                                paymentApplyService.financingToSop(financingBasicInfo, ConstantUtil.JIANGSU_SUSHANG_BANK, loanInfo.getPayoutDate());
+                            }
+                        }
+                    }
                 }
             }
         }

+ 66 - 0
src/main/java/com/sunxung/factoring/start/impl/StartLoadImpl.java

@@ -1,13 +1,25 @@
 package com.sunxung.factoring.start.impl;
 
+import com.sunxung.factoring.component.util.ConstantUtil;
 import com.sunxung.factoring.component.util.MockAdminThreadLocalUtil;
+import com.sunxung.factoring.entity.financing.apply.CFinancingBasicInfo;
+import com.sunxung.factoring.entity.smb.FinancingLoanInfo;
 import com.sunxung.factoring.entity.sys.SqlVersion;
+import com.sunxung.factoring.service.financing.apply.ICFinancingBasicInfoService;
+import com.sunxung.factoring.service.financing.payment.IPaymentApplyService;
+import com.sunxung.factoring.service.smb.IFinancingLoanInfoService;
+import com.sunxung.factoring.service.smbApi.dto.SMBNotifyRespDto;
+import com.sunxung.factoring.service.smbApi.dto.WithdrawNotifyPayloadDto;
+import com.sunxung.factoring.service.smbApi.spi.SMBSpiRegister;
 import com.sunxung.factoring.start.StartLoad;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.util.function.Function;
+
 /**
  * 系统启动环境加载实现
  */
@@ -15,6 +27,16 @@ import org.springframework.stereotype.Component;
 public class StartLoadImpl implements StartLoad {
 
     private static Logger log = LogManager.getLogger(StartLoadImpl.class);
+
+    @Autowired
+    private SMBSpiRegister smbSpiRegister;
+    @Autowired
+    private IFinancingLoanInfoService financingLoanInfoService;
+    @Autowired
+    private ICFinancingBasicInfoService financingBasicInfoService;
+    @Autowired
+    private IPaymentApplyService paymentApplyService;
+
     /**
      * 是否初始化
      */
@@ -58,10 +80,54 @@ public class StartLoadImpl implements StartLoad {
         new WorkingDayInit().run();
         log.error("开始初始化脚本升级最大版本号");
         addSqlVersion();
+        smbNoticeInit();
         log.error("成功初始化,耗时:" + (System.currentTimeMillis() - startTime) / 1000.0 + "秒");
         MockAdminThreadLocalUtil.destroy();
     }
 
+    /**
+     * 苏商注册提款结果通知回调函数初始化
+     */
+    private void smbNoticeInit() {
+        Function<WithdrawNotifyPayloadDto, SMBNotifyRespDto> withdrawNotifyHandler = withdrawNotifyPayloadDto -> {
+            if (withdrawNotifyPayloadDto.getPayoutNo() != null) {
+                FinancingLoanInfo loanInfo = financingLoanInfoService.lambdaQuery().eq(FinancingLoanInfo::getPayoutNo, withdrawNotifyPayloadDto.getPayoutNo()).one();
+                if (loanInfo != null) {
+                    //借据编号
+                    loanInfo.setDueBillNo(withdrawNotifyPayloadDto.getDuebillNo());
+                    //到期日期
+                    loanInfo.setMaturityDate(withdrawNotifyPayloadDto.getMaturity());
+                    //提款申请日期
+                    loanInfo.setLoanApplyDate(withdrawNotifyPayloadDto.getLoanApplyTime());
+                    //放款日期
+                    loanInfo.setPayoutDate(withdrawNotifyPayloadDto.getPayoutDate());
+                    //放款状态
+                    loanInfo.setPayoutStatus(withdrawNotifyPayloadDto.getStatus());
+                    //放款金额
+                    loanInfo.setLoanAmount(withdrawNotifyPayloadDto.getBusiAmt());
+                    if ("03".equals(withdrawNotifyPayloadDto.getStatus())) {
+                        //如果提款失败,添加失败原因
+                        loanInfo.setFailMsg(withdrawNotifyPayloadDto.getRemark());
+                    }
+                    financingLoanInfoService.updateById(loanInfo);
+                    if ("02".equals(withdrawNotifyPayloadDto.getStatus())) {
+                        //如果提款成功后、需要向sop推送融资信息
+                        if (loanInfo.getcFinancingBasicInfoId() != null) {
+                            CFinancingBasicInfo financingBasicInfo = financingBasicInfoService.getById(loanInfo.getcFinancingBasicInfoId());
+                            if (financingBasicInfo != null) {
+                                paymentApplyService.financingToSop(financingBasicInfo, ConstantUtil.JIANGSU_SUSHANG_BANK, loanInfo.getPayoutDate());
+                            }
+                        }
+                    }
+                }
+            }
+            SMBNotifyRespDto respDto = new SMBNotifyRespDto();
+            respDto.setRespResult(true);
+            return respDto;
+        };
+        smbSpiRegister.registerWithdrawNotifyHandler(withdrawNotifyHandler);
+    }
+
     /**
      * 添加升级脚本
      */