qin 2 лет назад
Родитель
Сommit
e935fc69cf

+ 11 - 0
src/main/java/com/poteviohealth/ym/ipos/controller/ReceivePayAndRefundController.java

@@ -2,8 +2,11 @@ package com.poteviohealth.ym.ipos.controller;
 
 import com.poteviohealth.cgp.common.facade.log.OperateType;
 import com.poteviohealth.cgp.common.facade.log.OperationLog;
+import com.poteviohealth.cgp.common.integrated.LongParams;
+import com.poteviohealth.cgp.common.model.VaultsResponse;
 import com.poteviohealth.ym.ipos.model.payment.PayNotification;
 import com.poteviohealth.ym.ipos.service.IPaymentService;
+import com.poteviohealth.ym.ipos.service.ISplitService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
@@ -25,6 +28,8 @@ public class ReceivePayAndRefundController {
 
     @Resource
     private IPaymentService paymentService;
+    @Resource
+    private ISplitService splitService;
 
     @ApiOperation(value="支付回调")
     @RequestMapping(value = "/payNotify",method = RequestMethod.POST)
@@ -33,4 +38,10 @@ public class ReceivePayAndRefundController {
     public String payNotify(@RequestBody PayNotification payNotification){
         return paymentService.payNotification(payNotification);
     }
+
+    @ApiOperation(value="延时交易确认退回")
+    @RequestMapping(value = "/delayConfirmRefund",method = RequestMethod.POST)
+    public VaultsResponse delayConfirmRefund(@RequestBody LongParams params){
+        return splitService.delayConfirmRefund(params.getId());
+    }
 }

+ 3 - 1
src/main/java/com/poteviohealth/ym/ipos/controller/feign/IposFeignController.java

@@ -139,7 +139,9 @@ public class IposFeignController extends BaseFeignController {
                 //平台金额
                 BigDecimal ptDecimal = new BigDecimal(split).multiply(new BigDecimal(detail.getPrice()));
                 logger.info("ptDecimal==="+ptDecimal.longValue());
-                BigDecimal valDecimal = ptDecimal.longValue() == 0L ? new BigDecimal(1) : ptDecimal;
+                logger.info(String.valueOf(ptDecimal.longValue() == 0));
+                logger.info(String.valueOf(ptDecimal.longValue() == 0L));
+                BigDecimal valDecimal = ptDecimal.longValue() == 0 ? new BigDecimal(1) : ptDecimal;
                 price = price.subtract(valDecimal);
                 ptAmount.add(valDecimal);
 

+ 2 - 3
src/main/java/com/poteviohealth/ym/ipos/service/ISplitService.java

@@ -3,7 +3,6 @@ package com.poteviohealth.ym.ipos.service;
 import com.poteviohealth.cgp.common.model.VaultsResponse;
 import com.poteviohealth.ym.ipos.model.back.BaseBack;
 import com.poteviohealth.ym.ipos.model.payment.PayRefundQuery;
-import com.poteviohealth.ym.ipos.model.split.PayConfirmRefund;
 import com.poteviohealth.ym.ipos.model.split.SettlementQuery;
 import com.poteviohealth.ym.ipos.model.split.SplitRecords;
 import com.poteviohealth.ym.ipos.model.split.SplitRecordsDetail;
@@ -35,10 +34,10 @@ public interface ISplitService {
 
     /**
      * 延时交易确认退回
-     * @param payConfirmRefund
+     * @param splitId
      * @return
      */
-    BaseBack delayConfirmRefund(PayConfirmRefund payConfirmRefund);
+    VaultsResponse delayConfirmRefund(Long splitId);
 
     /**
      * 延时交易确认退回查询

+ 50 - 2
src/main/java/com/poteviohealth/ym/ipos/service/impl/SplitServiceImpl.java

@@ -1,5 +1,6 @@
 package com.poteviohealth.ym.ipos.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
 import com.poteviohealth.cgp.common.model.VaultsResponse;
 import com.poteviohealth.ym.ipos.model.back.BaseBack;
@@ -9,11 +10,14 @@ import com.poteviohealth.ym.ipos.model.split.back.PayConfirmBack;
 import com.poteviohealth.ym.ipos.model.split.back.PayConfirmQueryBack;
 import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
 import com.poteviohealth.ym.ipos.model.split.detail.*;
+import com.poteviohealth.ym.ipos.service.ISplitRecordsDetailService;
+import com.poteviohealth.ym.ipos.service.ISplitRecordsService;
 import com.poteviohealth.ym.ipos.service.ISplitService;
 import com.poteviohealth.ym.ipos.utils.YmUtil;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -26,6 +30,11 @@ public class SplitServiceImpl implements ISplitService {
     @Value("${pay.field.code}")
     private String code;
 
+    @Resource
+    private ISplitRecordsService splitRecordsService;
+    @Resource
+    private ISplitRecordsDetailService splitRecordsDetailService;
+
     @Override
     public VaultsResponse delayConfirm(SplitRecords records, List<SplitRecordsDetail> details) {
         PayConfirm payConfirm = new PayConfirm();
@@ -94,8 +103,47 @@ public class SplitServiceImpl implements ISplitService {
     }
 
     @Override
-    public BaseBack delayConfirmRefund(PayConfirmRefund payConfirmRefund) {
-        return null;
+    public VaultsResponse delayConfirmRefund(Long splitId) {
+        QueryWrapper queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("split_id",splitId);
+        SplitRecords splitRecords = splitRecordsService.getOne(queryWrapper);
+        List<SplitRecordsDetail> list = splitRecordsDetailService.list(queryWrapper);
+        PayConfirmRefund payConfirmRefund =  new PayConfirmRefund();
+        payConfirmRefund.setPos_id(code);
+        payConfirmRefund.setStore_id(splitRecords.getOperatorId().toString());
+        PayConfirmDetail detail = new PayConfirmDetail();
+        detail.setOrg_pos_seq(splitId.toString());
+        ExtendParamsConfirm extendParamsConfirm = new ExtendParamsConfirm();
+        SplitInfoConfirm splitInfoConfirm = new SplitInfoConfirm();
+        List<SplitListConfirm> split_list = Lists.newArrayList();
+        for (SplitRecordsDetail recordsDetail : list) {
+            if(recordsDetail.getSourceId().equals(0)){
+                splitInfoConfirm.setKeep_amt(recordsDetail.getDivAmt());
+            }else{
+                SplitListConfirm listConfirm = new SplitListConfirm();
+                listConfirm.setMerchant_id(recordsDetail.getMerchantId());
+                listConfirm.setDiv_amt(recordsDetail.getDivAmt());
+                split_list.add(listConfirm);
+            }
+
+        }
+        splitInfoConfirm.setSplit_list(split_list);
+        extendParamsConfirm.setSplit_info(splitInfoConfirm);
+        detail.setExtend_params(extendParamsConfirm);
+        payConfirmRefund.setDelay_confirmrefund_request(detail);
+        BaseBack back = null;
+        try {
+            back = (BaseBack) YmUtil.resultBack(payConfirmRefund,new BaseBack());
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+            return VaultsResponse.failed(e.getMessage());
+        }
+
+        if(YmUtil.SUCCESS.equals(back.getResult().getId())){
+            return VaultsResponse.success();
+        }
+
+        return VaultsResponse.failed(back.getResult().getComment());
     }
 
     @Override