瀏覽代碼

第三方支付

qin 2 年之前
父節點
當前提交
94ac24a76c

+ 12 - 0
src/main/java/com/poteviohealth/ym/ipos/mapper/SplitWithdrawMapper.java

@@ -0,0 +1,12 @@
+package com.poteviohealth.ym.ipos.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.poteviohealth.ym.ipos.model.split.SplitWithdraw;
+
+/**
+ * 分账提现记录
+ * @author Qin
+ */
+public interface SplitWithdrawMapper extends BaseMapper<SplitWithdraw> {
+
+}

+ 51 - 0
src/main/java/com/poteviohealth/ym/ipos/model/split/SplitWithdraw.java

@@ -0,0 +1,51 @@
+package com.poteviohealth.ym.ipos.model.split;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.poteviohealth.cgp.common.model.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * 分账提现记录
+ * @author Qin
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("ipos_split_withdraw")
+public class SplitWithdraw extends BaseEntity {
+
+    @ApiModelProperty(value = "运营商id")
+    private Integer operatorId;
+
+    @ApiModelProperty(value = "提现Id")
+    private Long withdrawId;
+
+    @ApiModelProperty(value = "提现流水号")
+    private String withdrawSeq;
+
+    @ApiModelProperty(value = "商户Id")
+    private String merchantId;
+
+    @ApiModelProperty(value = "金额")
+    private Long amount;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "取现日期")
+    private Date transDate;
+
+    @ApiModelProperty(value = "取现状态,交易状态:s-成功 p-处理中 f-失败")
+    private String transStatus;
+
+    @ApiModelProperty(value = "账务状态,交易状态:s-成功 p-处理中 f-失败 b-回账成功")
+    private String acctStatus;
+
+    @ApiModelProperty(value = "失败原因")
+    private String errorMsg;
+}

+ 12 - 0
src/main/java/com/poteviohealth/ym/ipos/service/ISplitWithdrawService.java

@@ -0,0 +1,12 @@
+package com.poteviohealth.ym.ipos.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.poteviohealth.ym.ipos.model.split.SplitWithdraw;
+
+/**
+ * 分账提现记录
+ * @author Qin
+ */
+public interface ISplitWithdrawService extends IService<SplitWithdraw> {
+
+}

+ 5 - 4
src/main/java/com/poteviohealth/ym/ipos/service/impl/MerchantServiceImpl.java

@@ -141,7 +141,7 @@ public class MerchantServiceImpl implements IMerchantService {
                         return entregisterVault;
                     }
                 }
-                updateMerchantId(dto.getId(), dto.getSourceId(), dto.getMerchant_id(),3);
+                updateMerchantId(dto.getId(), dto.getSourceId(), dto.getMerchant_id(),3,dto.getRemained_amt());
             }else{
                 VaultsResponse<String> indvmodifyVault = this.modifyVault(dto);
                 if(!indvmodifyVault.validate()){
@@ -155,7 +155,7 @@ public class MerchantServiceImpl implements IMerchantService {
                 return openVault;
             }
             if(status != 2){
-               VaultsResponse<String> stringVault = updateMerchantId(dto.getId(), dto.getSourceId(), dto.getMerchant_id(),2);
+               VaultsResponse<String> stringVault = updateMerchantId(dto.getId(), dto.getSourceId(), dto.getMerchant_id(),2,dto.getRemained_amt());
 
                if(!stringVault.validate()){
                    return stringVault;
@@ -218,12 +218,12 @@ public class MerchantServiceImpl implements IMerchantService {
         }
 
         if(YmUtil.SUCCESS.equals(back.getResult().getId())){
-            return updateMerchantId(dto.getId(), dto.getSourceId(), back.getMerchant_id(),0);
+            return updateMerchantId(dto.getId(), dto.getSourceId(), back.getMerchant_id(),0,dto.getRemained_amt());
         }
         return VaultsResponse.failed(back.getResult().getComment());
     }
 
-    private VaultsResponse updateMerchantId(Integer id, Integer source, String merchantId,Integer status) {
+    private VaultsResponse updateMerchantId(Integer id, Integer source, String merchantId,Integer status,Long remainedAmt) {
         VaultsResponse vaultsResponse = VaultsResponse.failed();
         OperatorIdParams operatorIdParams = new OperatorIdParams();
         operatorIdParams.setOperatorId(id);
@@ -231,6 +231,7 @@ public class MerchantServiceImpl implements IMerchantService {
         operatorIdParams.setSource(source);
         operatorIdParams.setStatus(status);
         operatorIdParams.setCode(code);
+        operatorIdParams.setRemainedAmt(remainedAmt);
         if(source.equals(3)){
             VaultsResponse cus =  customerFeignClient.updateMerchantId(operatorIdParams);
             if(!cus.validate()){

+ 27 - 1
src/main/java/com/poteviohealth/ym/ipos/service/impl/SplitServiceImpl.java

@@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
+import com.poteviohealth.cgp.common.filter.TokenContext;
 import com.poteviohealth.cgp.common.model.VaultsResponse;
+import com.poteviohealth.cgp.common.utils.CgpTool;
 import com.poteviohealth.ym.ipos.model.back.BaseBack;
 import com.poteviohealth.ym.ipos.model.payment.PayRefundQuery;
 import com.poteviohealth.ym.ipos.model.split.*;
@@ -15,11 +17,13 @@ import com.poteviohealth.ym.ipos.model.split.dto.WithdrawDto;
 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.service.ISplitWithdrawService;
 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.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -37,6 +41,8 @@ public class SplitServiceImpl implements ISplitService {
     private ISplitRecordsService splitRecordsService;
     @Resource
     private ISplitRecordsDetailService splitRecordsDetailService;
+    @Resource
+    private ISplitWithdrawService splitWithdrawService;
 
     @Override
     public VaultsResponse delayConfirm(SplitRecords records, List<SplitRecordsDetail> details) {
@@ -210,7 +216,9 @@ public class SplitServiceImpl implements ISplitService {
 
     @Override
     public VaultsResponse<WithdrawBack> withdraw(WithdrawDto dto) {
+        Long withdrawId = CgpTool.generateKey();
         Withdraw withdraw =  new Withdraw();
+        withdraw.setPos_seq(withdrawId.toString());
         WithdrawDetail detail = new WithdrawDetail();
         detail.setMerchant_id(dto.getMerchantId());
         detail.setAmount(dto.getAmount());
@@ -223,6 +231,18 @@ public class SplitServiceImpl implements ISplitService {
             return VaultsResponse.failed(e.getMessage());
         }
 
+        SplitWithdraw splitWithdraw = new SplitWithdraw();
+        splitWithdraw.setOperatorId(TokenContext.cureOperatorId());
+        splitWithdraw.setWithdrawId(withdrawId);
+        splitWithdraw.setWithdrawSeq(back.getWithdraw_seq());
+        splitWithdraw.setMerchantId(dto.getMerchantId());
+        splitWithdraw.setAmount(dto.getAmount());
+        splitWithdraw.setTransDate(new Date());
+        splitWithdraw.setTransStatus(back.getTrans_status());
+        splitWithdraw.setAcctStatus(back.getAcct_status());
+        splitWithdraw.setErrorMsg(back.getError_msg());
+        splitWithdrawService.save(splitWithdraw);
+
         if(YmUtil.SUCCESS.equals(back.getResult().getId())){
             return VaultsResponse.success(back);
         }
@@ -245,11 +265,17 @@ public class SplitServiceImpl implements ISplitService {
             return VaultsResponse.failed(e.getMessage());
         }
 
+        QueryWrapper<SplitWithdraw> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("withdraw_seq",withdrawSeq);
+        SplitWithdraw splitWithdraw = new SplitWithdraw();
+        splitWithdraw.setTransStatus(back.getTrans_status());
+        splitWithdraw.setAcctStatus(back.getAcct_status());
+        splitWithdrawService.update(splitWithdraw,queryWrapper);
+
         if(YmUtil.SUCCESS.equals(back.getResult().getId())){
             return VaultsResponse.success(back);
         }
 
         return VaultsResponse.failed(back.getResult().getComment());
-
     }
 }

+ 16 - 0
src/main/java/com/poteviohealth/ym/ipos/service/impl/SplitWithdrawServiceImpl.java

@@ -0,0 +1,16 @@
+package com.poteviohealth.ym.ipos.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.poteviohealth.ym.ipos.mapper.SplitWithdrawMapper;
+import com.poteviohealth.ym.ipos.model.split.SplitWithdraw;
+import com.poteviohealth.ym.ipos.service.ISplitWithdrawService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 分账提现记录
+ * @author Qin
+ */
+@Service
+public class SplitWithdrawServiceImpl extends ServiceImpl<SplitWithdrawMapper, SplitWithdraw> implements ISplitWithdrawService {
+
+}

+ 4 - 0
src/main/resources/mapper/ipos/SplitWithdrawMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.poteviohealth.ym.ipos.mapper.SplitWithdrawMapper">
+</mapper>

+ 1 - 1
src/main/resources/uat/application.yml

@@ -46,7 +46,7 @@ logging:
 
 pay:
   field:
-    code: ZKY
+    code: 北京普天大健康
     ip: 101.201.117.73
     split: 0.007
     notifyUrl : https://dev.poteviohealth.com/gateway/ipos/receive/payNotify