Przeglądaj źródła

fix:"汇付增加结算方式切换功能"

soobin 2 miesięcy temu
rodzic
commit
e9ea6aac11

+ 18 - 34
src/main/java/com/szwl/controller/THuifuMchController.java

@@ -173,6 +173,24 @@ public class THuifuMchController {
         return R.fail(ResponseCodesEnum.A0001, data);
     }
 
+    @ApiOperation("修改结算方式")
+    @PostMapping("/updateSettlement")
+    public ResponseModel<?> updateSettlement(@RequestBody THuifuMchCheck huifuMchCheck) {
+        // 找到用户id对应的审核信息
+        String result = "";
+        try {
+            THuifuMchCheck tHuifuMchCheck = tHuifuMchCheckService.getById(huifuMchCheck.getId());
+            tHuifuMchCheck.setSettType(huifuMchCheck.getSettType());
+            result = tHuifuMchService.changeSettleType(tHuifuMchCheck);
+            if (result.equals(HuifuConstant.SUCCESS)) {
+                return R.ok();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return R.fail(ResponseCodesEnum.A0001, result);
+    }
+
     @ApiOperation(value = "汇付用户开户或业务开通")
     @GetMapping("/openAccount")
     public ResponseModel<?> openAccount(Long id) throws Exception {
@@ -235,40 +253,6 @@ public class THuifuMchController {
         return R.ok(result);
     }
 
-    @ApiOperation(value = "商户入驻申请")
-    @PostMapping("/addMerchant")
-    public ResponseModel<?> addMerchant(@Valid @RequestBody THuifuMchCheck tHuifuMchCheck) {
-        if (tHuifuMchCheck.getAdminId() == null) {
-            return R.fail(ResponseCodesEnum.A0001);
-        }
-        LambdaQueryWrapper<THuifuMchCheck> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(THuifuMchCheck::getAdminId, tHuifuMchCheck.getAdminId());
-        THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
-        if (huifuMchCheck != null) {
-            tHuifuMchCheck.setModifyDate(new Date());
-            tHuifuMchCheck.setStatus("0");
-            if (tHuifuMchCheck.getType().equals("0")) {
-                if (StringUtils.isNotEmpty(huifuMchCheck.getCardFrontPic())
-                        && StringUtils.isNotEmpty(huifuMchCheck.getLegalCertBackPic()) && StringUtils.isNotEmpty(huifuMchCheck.getLegalCertFrontPic())) {
-                    tHuifuMchCheck.setStatus("1");
-                }
-            } else {
-                if (StringUtils.isNotEmpty(huifuMchCheck.getCertFrontPic())
-                        && StringUtils.isNotEmpty(huifuMchCheck.getCertBackPic()) && StringUtils.isNotEmpty(huifuMchCheck.getLicensePic())
-                        && StringUtils.isNotEmpty(huifuMchCheck.getRegAcctPic())) {
-                    tHuifuMchCheck.setStatus("1");
-                }
-            }
-            tHuifuMchCheckService.updateById(tHuifuMchCheck);
-            return R.ok();
-        }
-        tHuifuMchCheck.setCreateDate(new Date());
-        tHuifuMchCheck.setModifyDate(new Date());
-        tHuifuMchCheck.setStatus("0");
-        tHuifuMchCheckService.save(tHuifuMchCheck);
-        return R.ok();
-    }
-
     @ApiOperation(value = "商户修改申请")
     @PostMapping("/updateMerchant")
     public ResponseModel<?> updateMerchant(@Valid @RequestBody THuifuMchCheck tHuifuMchCheck) {

+ 1 - 1
src/main/java/com/szwl/mapper/THuifuMchCheckMapper.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * </p>
  *
  * @author wuhs
- * @since 2025-06-20
+ * @since 2025-06-24
  */
 public interface THuifuMchCheckMapper extends BaseMapper<THuifuMchCheck> {
 

Plik diff jest za duży
+ 3 - 13
src/main/java/com/szwl/mapper/xml/THuifuMchCheckMapper.xml


+ 8 - 38
src/main/java/com/szwl/model/entity/THuifuMchCheck.java

@@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
  * </p>
  *
  * @author wuhs
- * @since 2025-06-20
+ * @since 2025-06-24
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -40,9 +40,6 @@ public class THuifuMchCheck implements Serializable {
     @ApiModelProperty(value = "商户名称")
     private String regName;
 
-    @ApiModelProperty(value = "商户简称")
-    private String shortName;
-
     @ApiModelProperty(value = "商户类型,“0”为个人,“1”为企业")
     private String type;
 
@@ -67,9 +64,6 @@ public class THuifuMchCheck implements Serializable {
     @ApiModelProperty(value = "联系人邮箱")
     private String email;
 
-    @ApiModelProperty(value = "客服电话")
-    private String servicePhone;
-
     @ApiModelProperty(value = "身份证号")
     private String certNo;
 
@@ -109,21 +103,6 @@ public class THuifuMchCheck implements Serializable {
     @ApiModelProperty(value = "联行号")
     private String branchCode;
 
-    @ApiModelProperty(value = "结算卡正面")
-    private String cardFrontPic;
-
-    @ApiModelProperty(value = "结算卡反面")
-    private String cardBackPic;
-
-    @ApiModelProperty(value = "身份证人像面")
-    private String certBackPic;
-
-    @ApiModelProperty(value = "身份证国徽面")
-    private String certFrontPic;
-
-    @ApiModelProperty(value = "营业执照图片")
-    private String licensePic;
-
     @ApiModelProperty(value = "营业执照编号")
     private String licenseCode;
 
@@ -142,10 +121,7 @@ public class THuifuMchCheck implements Serializable {
     @ApiModelProperty(value = "注册详细地址")
     private String regDetail;
 
-    @ApiModelProperty(value = "核准号")
-    private String openLicenceNo;
-
-    @ApiModelProperty(value = "银行号")
+    @ApiModelProperty(value = "银行编号")
     private String bankCode;
 
     @ApiModelProperty(value = "营业执照有效期类型,0:非长期有效 ,1:长期有效 ")
@@ -157,26 +133,20 @@ public class THuifuMchCheck implements Serializable {
     @ApiModelProperty(value = "营业执照有效期截止日期,日期格式:yyyyMMdd")
     private String licenseEndDate;
 
-    @ApiModelProperty(value = "开户许可证")
-    private String regAcctPic;
-
     @ApiModelProperty(value = "审核状态:“0”为待上传材料图片,“1”为审核中,“2”为审核通过,“3”为审核未通过,“4”为申请撤回")
     private String status;
 
     @ApiModelProperty(value = "审核描述")
     private String auditDesc;
 
-    @ApiModelProperty(value = "修改验证码")
-    private String sms;
-
-    @ApiModelProperty(value = "法人身份证国徽面")
-    private String legalCertBackPic;
+    @ApiModelProperty(value = "签约状态:0:待签约,1:签约中,2:签约成功,3:签约失败")
+    private String conStat;
 
-    @ApiModelProperty(value = "法人身份证人像面")
-    private String legalCertFrontPic;
+    @ApiModelProperty(value = "开户状态:0:待开户,1:开户成功,2:开户失败")
+    private Integer openStatus;
 
-    @ApiModelProperty(value = "签约状态:2:创建合同异常	3:待签约	4:签约中	5:签约完成(电子协议只有签约完成才能做交易)	6:已失效	7:已拒签	8:签约失败")
-    private String conStat;
+    @ApiModelProperty(value = "开户描述")
+    private String openDesc;
 
     @ApiModelProperty(value = "结算方式:1:自动结算,2:手动提现")
     private Integer settType;

+ 1 - 1
src/main/java/com/szwl/service/THuifuMchCheckService.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * </p>
  *
  * @author wuhs
- * @since 2025-04-17
+ * @since 2025-06-24
  */
 public interface THuifuMchCheckService extends IService<THuifuMchCheck> {
 

+ 7 - 0
src/main/java/com/szwl/service/THuifuMchService.java

@@ -101,5 +101,12 @@ public interface THuifuMchService extends IService<THuifuMch> {
      */
     String addCashBusiness(THuifuMchCheck huifuMchCheck) throws Exception;
 
+    /**
+     * 切换结算方式
+     * @param huifuMchCheck
+     * @return
+     */
+    String changeSettleType(THuifuMchCheck huifuMchCheck) throws Exception;
+
     void withdrawStatus(TAdmin admin, WithdrawalRecord withdrawalRecord) throws Exception;
 }

+ 1 - 1
src/main/java/com/szwl/service/impl/THuifuMchCheckServiceImpl.java

@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
  * </p>
  *
  * @author wuhs
- * @since 2025-04-17
+ * @since 2025-06-24
  */
 @Service
 public class THuifuMchCheckServiceImpl extends ServiceImpl<THuifuMchCheckMapper, THuifuMchCheck> implements THuifuMchCheckService {

+ 119 - 0
src/main/java/com/szwl/service/impl/THuifuMchServiceImpl.java

@@ -164,6 +164,7 @@ public class THuifuMchServiceImpl extends ServiceImpl<THuifuMchMapper, THuifuMch
             tHuifuMchCheck.setModifyDate(new Date());
             tHuifuMchCheck.setStatus("1");
             tHuifuMchCheck.setHuifuId(huifuId);
+            tHuifuMchCheck.setOpenStatus(1);
             tHuifuMchCheckService.updateById(tHuifuMchCheck);
             return HuifuConstant.SUCCESS;
         } else {
@@ -171,6 +172,8 @@ public class THuifuMchServiceImpl extends ServiceImpl<THuifuMchMapper, THuifuMch
             tHuifuMchCheck.setModifyDate(new Date());
             tHuifuMchCheck.setStatus("3");
             tHuifuMchCheck.setAuditDesc(respDesc);
+            tHuifuMchCheck.setOpenStatus(2);
+            tHuifuMchCheck.setOpenDesc(respDesc);
             tHuifuMchCheckService.updateById(tHuifuMchCheck);
             return respDesc;
         }
@@ -769,6 +772,122 @@ public class THuifuMchServiceImpl extends ServiceImpl<THuifuMchMapper, THuifuMch
     }
 
     @Override
+    public String changeSettleType(THuifuMchCheck huifuMchCheck) throws Exception {
+        // 请求接口
+        String url = "https://api.huifu.com/v2/user/busi/modify";
+        HuifuBaseCommon.doInit(OppsMerchantConfig.getMerchantConfig());
+        // 请求参数:Data
+        JSONObject request = new JSONObject();
+        // 请求流水号
+        request.put("req_seq_id", HuifuUtils.initReqSeqId());
+        // 请求日期
+        request.put("req_date", DateTools.getCurrentDateYYYYMMDD());
+        // 汇付ID
+        request.put("huifu_id", huifuMchCheck.getHuifuId());
+        // 上级汇付Id:判断是申泽还是七云
+        TAdmin tAdmin = tAdminService.getById(huifuMchCheck.getAdminId());
+        if (StringUtils.isNotEmpty(tAdmin.getCompanyType()) && tAdmin.getCompanyType().equals("1")) {
+            request.put("upper_huifu_id", HuifuConstant.SC_DIV_HUIFU_ID);
+        } else {
+            request.put("upper_huifu_id", HuifuConstant.SZ_DIV_HUIFU_ID);
+        }
+        // 结算卡信息配置
+        JSONObject cardInfo = new JSONObject();
+        // 卡类型
+        cardInfo.put("card_type", huifuMchCheck.getCardType());
+        // 卡户名
+        cardInfo.put("card_name", huifuMchCheck.getCardName());
+        // 结算账号
+        cardInfo.put("card_no", huifuMchCheck.getCardNo());
+        // 银行所在省
+        cardInfo.put("prov_id", huifuMchCheck.getCardProvId());
+        // 银行所在市
+        cardInfo.put("area_id", huifuMchCheck.getCardAreaId());
+        // 如果是对私
+        if (StringUtils.isNotEmpty(huifuMchCheck.getCardType()) && huifuMchCheck.getCardType().equals("1")) {
+            // 持卡人证件类型
+            cardInfo.put("cert_type", "00");
+            // 持卡人证件号码
+            cardInfo.put("cert_no", huifuMchCheck.getCertNo());
+            // 持卡人证件有效期类型,1:长期有效,0:非长期有效;
+            cardInfo.put("cert_validity_type", huifuMchCheck.getCertValidityType());
+            // 持卡人证件有效期开始
+            cardInfo.put("cert_begin_date", huifuMchCheck.getCertBeginDate());
+            // 持卡人证件有效期截止日期
+            if (StringUtils.isNotEmpty(huifuMchCheck.getCertEndDate())) {
+                cardInfo.put("cert_end_date", huifuMchCheck.getCertEndDate());
+            }
+        }
+        if (StringUtils.isNotEmpty(huifuMchCheck.getCardType()) && huifuMchCheck.getCardType().equals("0")) {
+            // 银行号
+            cardInfo.put("bank_code", huifuMchCheck.getBankCode());
+            // 支行联行号
+            cardInfo.put("branch_code", huifuMchCheck.getBranchCode());
+        }
+        request.put("card_info", cardInfo);
+        // 结算方式
+        Integer settType = huifuMchCheck.getSettType();
+        JSONObject settleConfig = new JSONObject();
+        JSONArray cashConfig = new JSONArray();
+        if (settType != null && settType == 2) {
+            // 手动提现
+            settleConfig.put("settle_status", "0");
+            settleConfig.put("settle_cycle", "T1");
+            JSONObject cashConfigValue = new JSONObject();
+            cashConfigValue.put("switch_state", "1");
+            cashConfigValue.put("cash_type", "T1");
+            cashConfigValue.put("fee_rate", "0.00");
+            cashConfig.add(cashConfigValue);
+        } else {
+            // 自动结算
+            settleConfig.put("settle_status", "1");
+            settleConfig.put("settle_cycle", "T1");
+            JSONObject cashConfigValue = new JSONObject();
+            cashConfigValue.put("switch_state", "0");
+            cashConfigValue.put("cash_type", "T1");
+            cashConfigValue.put("fee_rate", "0.00");
+            cashConfig.add(cashConfigValue);
+        }
+        request.put("settle_config", settleConfig);
+        request.put("cash_config", cashConfig.toString());
+        // 签名:signCódigo invitación
+        String s = JSON.toJSONString(request);
+        String s1 = JSON.toJSONString(JSONObject.parseObject(s, TreeMap.class));
+        String sign = HuifuUtils.sign(s1, HuifuConstant.RSA_PRIVATE_KEY);
+
+        // 公共参数
+        System.out.println("请求参数:" + request);
+        JSONObject requestData = new JSONObject();
+        requestData.put("sys_id", HuifuConstant.SYS_ID);
+        requestData.put("product_id", HuifuConstant.PRODUCT_ID);
+        requestData.put("sign", sign);
+        requestData.put("data", request);
+        System.out.println("最终请求参数:" + requestData);
+
+        String result = OkHttpClientTools.httpPost(url, requestData.toString(), HuifuConstant.PRODUCT_ID);
+        System.out.println("返回的数据:" + result);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        JSONObject dataObject = jsonObject.getJSONObject("data");
+        String code = dataObject.getString("resp_code");
+        if (code.equals(HuifuConstant.RESP_CODE)) {
+            huifuMchCheck.setModifyDate(new Date());
+            tHuifuMchCheckService.updateById(huifuMchCheck);
+            LambdaQueryWrapper<THuifuMch> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(THuifuMch::getAdminId, huifuMchCheck.getAdminId());
+            THuifuMch huifuMch = tHuifuMchService.getOne(wrapper);
+            if (huifuMch != null) {
+                huifuMch.setModifyDate(new Date());
+                huifuMch.setSettType(huifuMchCheck.getSettType());
+                tHuifuMchService.updateById(huifuMch);
+            }
+            return HuifuConstant.SUCCESS;
+        } else {
+            String respDesc = dataObject.getString("resp_desc");
+            return respDesc;
+        }
+    }
+
+    @Override
     public void withdrawStatus(TAdmin admin, WithdrawalRecord withdrawalRecord) throws Exception {
         LambdaQueryWrapper<THuifuMch> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(THuifuMch::getAdminId, admin.getId());