Просмотр исходного кода

feat:“优化汇付商户入驻接口”

soobin 1 год назад
Родитель
Сommit
ad4b5b94a3

+ 2 - 0
src/main/java/com/szwl/constant/HuifuConstant.java

@@ -115,6 +115,8 @@ public class HuifuConstant {
     public final static String TRANS_STAT_S = "S";
     public final static String TRANS_STAT_P = "P";
     public final static String TRANS_STAT_F = "F";
+    public final static String RESP_CODE = "00000000";
+    public final static String SUCCESS = "success";
 
     /**
      * >>>>>>>>>>>>> 签名类型 >>>>>>>>>>>>>

+ 46 - 0
src/main/java/com/szwl/controller/THuifuMchController.java

@@ -47,6 +47,52 @@ public class THuifuMchController {
     @Autowired
     private THuifuMchCheckService tHuifuMchCheckService;
 
+    @ApiOperation(value = "商户入驻申请")
+    @PostMapping("/addApplication")
+    public ResponseModel<?> addApplication(@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");
+            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 = "汇付用户开户或业务开通")
+    @GetMapping ("/openAccount")
+    public ResponseModel<?> openAccount(Long id) throws Exception {
+        if (id == null) {
+            return R.fail(ResponseCodesEnum.A0001);
+        }
+        // 找到用户id对应的审核信息
+        THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getById(id);
+        String data = "";
+        // 用户开户或业务开通
+        if (huifuMchCheck.getStatus().equals("0")) {
+            data = tHuifuMchService.openAccount(huifuMchCheck);
+        } else if (huifuMchCheck.getStatus().equals("1") || huifuMchCheck.getStatus().equals("4")){
+            data = tHuifuMchService.openBusiness(huifuMchCheck);
+        } else {
+            return R.fail(ResponseCodesEnum.A0001);
+        }
+        // 判断是否开户成功或业务开通成功
+        if(data.equals(HuifuConstant.SUCCESS)) {
+            return R.ok();
+        } else {
+            return R.fail(ResponseCodesEnum.A0001, data);
+        }
+    }
 
     @ApiOperation(value = "商户入驻申请")
     @PostMapping("/addMerchant")

+ 17 - 25
src/main/java/com/szwl/model/entity/TAd.java

@@ -30,52 +30,44 @@ public class TAd implements Serializable {
     private Date createDate;
 
     private Date modifyDate;
-    //广告类型 0:图片,1:视频
+
+    @ApiModelProperty(value = "广告类型 0:图片,1:视频")
     private Integer adType;
 
     private String adminId;
-    //位置类型 0:棉花糖宣传广告,1:外接广告
+
+    @ApiModelProperty(value = "位置类型 0:棉花糖宣传广告,1:外接广告")
     private Integer locationType;
 
     private String name;
 
     private String username;
-    /**
-     * 广告地址
-     */
+
+    @ApiModelProperty(value = "广告地址")
     private String url;
 
     private Integer orders;
-    /**
-     * 广告时长
-     */
+
+    @ApiModelProperty(value = "广告时长")
     private Long duration;
-    /**
-     * 视屏缩略图
-     */
+
+    @ApiModelProperty(value = "视屏缩略图")
     private String mediaPreview;
-    /**
-     * 播放次数
-     */
+
+    @ApiModelProperty(value = "播放次数")
     private Long plays;
-    /**
-     * 状态
-     */
+
+    @ApiModelProperty(value = "状态")
     private String status;
 
     private String timeRule;
-    /**
-     * 0代表A屏
-     * 1代表B屏
-     */
+
+    @ApiModelProperty(value = "0代表A屏,1代表B屏")
     private Integer screenType;
 
     @ApiModelProperty(value = "适用机器类型")
     private String equipmentType;
 
-    /**
-     * 0默认下载
-     * 1不默认下载
-     */
+    @ApiModelProperty(value = "0默认下载,1不默认下载")
     private String type;
 }

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

@@ -21,6 +21,22 @@ import java.math.BigDecimal;
 public interface THuifuMchService extends IService<THuifuMch> {
 
     /**
+     * 汇付用户开户
+     * @param tHuifuMchCheck
+     * @return
+     * @throws Exception
+     */
+    String openAccount(THuifuMchCheck tHuifuMchCheck) throws Exception;
+
+    /**
+     * 用户业务开通
+     * @param tHuifuMchCheck
+     * @return
+     * @throws Exception
+     */
+    String openBusiness(THuifuMchCheck tHuifuMchCheck) throws Exception;
+
+    /**
      * 汇付个人商户入驻
      * @param tHuifuMchCheck
      * @return

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

@@ -16,9 +16,11 @@ import com.szwl.common.myAnnotation.HuifuBaseCommon;
 import com.szwl.config.OppsMerchantConfig;
 import com.szwl.constant.HuifuConstant;
 import com.szwl.model.bo.R;
+import com.szwl.model.entity.TAdmin;
 import com.szwl.model.entity.THuifuMch;
 import com.szwl.mapper.THuifuMchMapper;
 import com.szwl.model.entity.THuifuMchCheck;
+import com.szwl.service.TAdminService;
 import com.szwl.service.THuifuMchCheckService;
 import com.szwl.service.THuifuMchService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -66,6 +68,240 @@ public class THuifuMchServiceImpl extends ServiceImpl<THuifuMchMapper, THuifuMch
     @Autowired
     private THuifuMchService tHuifuMchService;
 
+    @Autowired
+    private TAdminService tAdminService;
+
+    /**
+     * 汇付用户开户
+     * @param tHuifuMchCheck
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public String openAccount(THuifuMchCheck tHuifuMchCheck) throws Exception {
+        // 请求接口
+        String url = "https://api.huifu.com/v2/user/basicdata/indv";
+        HuifuBaseCommon.doInit(OppsMerchantConfig.getMerchantConfig());
+        // 请求参数:Data
+        JSONObject request = new JSONObject();
+        // 请求流水号
+        request.put("req_seq_id", HuifuUtils.initReqSeqId());
+        // 请求日期
+        request.put("req_date", DateTools.getCurrentDateYYYYMMDD());
+        // 判断商户类型,“0”为个人,“1”为企业
+        if(tHuifuMchCheck.getType().equals("0")) {
+            // 个人姓名
+            request.put("name", tHuifuMchCheck.getRegName());
+            // 个人证件类型
+            request.put("cert_type", "00");
+            // 个人证件号码
+            request.put("cert_no", tHuifuMchCheck.getCertNo());
+            // 个人证件有效期类型,1:长期有效;0:非长期有效
+            request.put("cert_validity_type", tHuifuMchCheck.getCertValidityType());
+            // 个人证件有效期开始日期
+            request.put("cert_begin_date", tHuifuMchCheck.getCertBeginDate());
+            // 个人证件有效期截止日期
+            if (StrUtil.isNotEmpty(tHuifuMchCheck.getCertEndDate())) {
+                request.put("cert_end_date", tHuifuMchCheck.getCertEndDate());
+            }
+            // 手机号
+            request.put("mobile_no", tHuifuMchCheck.getPhone());
+        } else {
+            url = "https://api.huifu.com/v2/user/basicdata/ent";
+            // 企业用户名称
+            request.put("reg_name", tHuifuMchCheck.getRegName());
+            // 营业执照编号
+            request.put("license_code", tHuifuMchCheck.getLicenseCode());
+            // 营业执照有效期类型,0:非长期有效 ,1:长期有效
+            request.put("license_validity_type", tHuifuMchCheck.getLicenseValidityType());
+            // 营业执照有效期开始日期
+            request.put("license_begin_date", tHuifuMchCheck.getLicenseBeginDate());
+            // 营业执照有效期截止日期
+            if (StrUtil.isNotEmpty(tHuifuMchCheck.getLicenseEndDate())) {
+                request.put("license_end_date", tHuifuMchCheck.getLicenseEndDate());
+            }
+            // 注册省
+            request.put("reg_prov_id", tHuifuMchCheck.getRegProvId());
+            // 注册市
+            request.put("reg_area_id", tHuifuMchCheck.getRegAreaId());
+            // 注册区
+            request.put("reg_district_id", tHuifuMchCheck.getRegDistrictId());
+            // 注册详细地址
+            request.put("reg_detail", tHuifuMchCheck.getRegDetail());
+            // 法人姓名
+            request.put("legal_name", tHuifuMchCheck.getName());
+            // 法人证件类型
+            request.put("legal_cert_type", "00");
+            // 法人证件号码
+            request.put("legal_cert_no", tHuifuMchCheck.getCertNo());
+            // 法人证件有效期类型,1:长期有效;0:非长期有效 ;
+            request.put("legal_cert_validity_type", tHuifuMchCheck.getCertValidityType());
+            // 法人证件有效期开始日期
+            request.put("legal_cert_begin_date", tHuifuMchCheck.getCertBeginDate());
+            // 法人证件有效期截止日期
+            if (StrUtil.isNotEmpty(tHuifuMchCheck.getCertEndDate())) {
+                request.put("legal_cert_end_date", tHuifuMchCheck.getCertEndDate());
+            }
+            // 联系人姓名
+            request.put("contact_name", tHuifuMchCheck.getRegName());
+            // 联系人手机号
+            request.put("contact_mobile", tHuifuMchCheck.getPhone());
+        }
+
+        // 签名:sign
+        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);
+
+        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)) {
+            String huifuId = dataObject.getString("huifu_id");
+            tHuifuMchCheck.setModifyDate(new Date());
+            tHuifuMchCheck.setStatus("1");
+            tHuifuMchCheck.setHuifuId(huifuId);
+            tHuifuMchCheckService.updateById(tHuifuMchCheck);
+            return HuifuConstant.SUCCESS;
+        }else {
+            String respDesc = dataObject.getString("resp_desc");
+            tHuifuMchCheck.setModifyDate(new Date());
+            tHuifuMchCheck.setStatus("3");
+            tHuifuMchCheck.setAuditDesc(respDesc);
+            tHuifuMchCheckService.updateById(tHuifuMchCheck);
+            return respDesc;
+        }
+    }
+
+    /**
+     * 用户业务入驻
+     * @param tHuifuMchCheck
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public String openBusiness(THuifuMchCheck tHuifuMchCheck) throws Exception {
+        // 请求接口
+        String url = "https://api.huifu.com/v2/user/busi/open";
+        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", tHuifuMchCheck.getHuifuId());
+        // 上级汇付Id:判断是申泽还是七云
+        TAdmin tAdmin = tAdminService.getById(tHuifuMchCheck.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", tHuifuMchCheck.getCardType());
+        // 卡户名
+        cardInfo.put("card_name", tHuifuMchCheck.getCardName());
+        // 结算账号
+        cardInfo.put("card_no", tHuifuMchCheck.getCardNo());
+        // 银行所在省
+        cardInfo.put("prov_id", tHuifuMchCheck.getCardProvId());
+        // 银行所在市
+        cardInfo.put("area_id", tHuifuMchCheck.getCardAreaId());
+        // 持卡人证件类型
+        cardInfo.put("cert_type", "00");
+        // 持卡人证件号码
+        cardInfo.put("cert_no", tHuifuMchCheck.getCertNo());
+        // 持卡人证件有效期类型,1:长期有效,0:非长期有效;
+        cardInfo.put("cert_validity_type", tHuifuMchCheck.getCertValidityType());
+        // 持卡人证件有效期开始
+        cardInfo.put("cert_begin_date", tHuifuMchCheck.getCertBeginDate());
+        if (StringUtils.isNotEmpty(tHuifuMchCheck.getCertEndDate())) {
+            cardInfo.put("cert_end_date", tHuifuMchCheck.getCertEndDate());
+        }
+        // 持卡人证件有效期截止日期
+        request.put("card_info", cardInfo);
+        JSONObject settleConfig = new JSONObject();
+        // 结算周期
+        // 如果是修改接口
+        if (tHuifuMchCheck.getStatus().equals("4")) {
+            url = "https://api.huifu.com/v2/user/busi/modify";
+            settleConfig.put("settle_status", "1");
+        }
+        settleConfig.put("settle_cycle", "T1");
+        request.put("settle_config", settleConfig);
+
+        // 签名:sign
+        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);
+
+        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)) {
+            String huifuId = dataObject.getString("huifu_id");
+            tHuifuMchCheck.setModifyDate(new Date());
+            tHuifuMchCheck.setStatus("2");
+            tHuifuMchCheck.setHuifuId(huifuId);
+            LambdaQueryWrapper<THuifuMch> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(THuifuMch::getAdminId, tHuifuMchCheck.getAdminId());
+            THuifuMch huifuMch = tHuifuMchService.getOne(wrapper);
+            if (huifuMch != null) {
+                String[] ignoreProperties = {"id", "createDate","adminId"};
+                BeanUtil.copyProperties(tHuifuMchCheck, huifuMch, ignoreProperties);
+                huifuMch.setModifyDate(new Date());
+                tHuifuMchService.updateById(huifuMch);
+            } else {
+                THuifuMch tHuifuMch = new THuifuMch();
+                BeanUtil.copyProperties(tHuifuMchCheck, tHuifuMch);
+                // 判断持卡人证件有效期类型,1:长期有效,0:非长期有效
+                if(tHuifuMchCheck.getCertValidityType().equals("0")) {
+                    LocalDate date = LocalDate.parse(tHuifuMchCheck.getCertEndDate(), DateTimeFormatter.ofPattern("yyyyMMdd"));
+                    String certEndDate = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    tHuifuMch.setCertDate(certEndDate);
+                } else {
+                    tHuifuMch.setCertDate("长期");
+                }
+                tHuifuMch.setCreateDate(new Date());
+                tHuifuMch.setModifyDate(new Date());
+                tHuifuMch.setHuifuId(huifuId);
+                tHuifuMchService.save(tHuifuMch);
+            }
+            tHuifuMchCheckService.updateById(tHuifuMchCheck);
+            return HuifuConstant.SUCCESS;
+        }else {
+            String respDesc = dataObject.getString("resp_desc");
+            tHuifuMchCheck.setModifyDate(new Date());
+            tHuifuMchCheck.setStatus("3");
+            tHuifuMchCheck.setAuditDesc(respDesc);
+            tHuifuMchCheckService.updateById(tHuifuMchCheck);
+            return respDesc;
+        }
+    }
 
     /**
      * 汇付个人商户入驻