| | |
| | | log.info("个人用户基本信息开户返回参数:{}", response); |
| | | return response; |
| | | } |
| | | |
| | | /** 企业用户基础资料进件。 */ |
| | | public Map<String, Object> userBasicDataEnt(DouGongUserWithdrawalProfile userWithdrawal) throws Exception { |
| | | DouGongRequestSupport.initBasePay(huiFuProperties); |
| | | Map<String, Object> paramsInfo = enterpriseParams(userWithdrawal); |
| | | paramsInfo.put("req_seq_id", DouGongRequestSupport.generateForHuiFu()); |
| | | paramsInfo.put("req_date", DouGongRequestSupport.todayForHuiFu()); |
| | | log.info("企业用户基本信息开户请求参数:{}", paramsInfo); |
| | | Map<String, Object> response = BasePayRequest.requestBasePay( |
| | | "v2/user/basicdata/ent", paramsInfo, null, false); |
| | | log.info("企业用户基本信息开户返回参数:{}", response); |
| | | return response; |
| | | } |
| | | /** |
| | | * 个人用户基本信息修改 |
| | | * @return |
| | |
| | | // 3. 发起API调用 |
| | | Map<String, Object> response = BasePayRequest.requestBasePay("v2/user/basicdata/indv/modify", paramsInfo, null, false); |
| | | log.info("个人用户基本信息修改返回参数:{}", response); |
| | | return response; |
| | | } |
| | | |
| | | /** 企业用户基础资料修改,用于审核驳回后的重新提交。 */ |
| | | public Map<String, Object> userBasicDataEntModify(DouGongUserWithdrawalProfile userWithdrawal) throws Exception { |
| | | DouGongRequestSupport.initBasePay(huiFuProperties); |
| | | Map<String, Object> paramsInfo = enterpriseParams(userWithdrawal); |
| | | paramsInfo.put("req_seq_id", DouGongRequestSupport.generateForHuiFu()); |
| | | paramsInfo.put("req_date", DouGongRequestSupport.todayForHuiFu()); |
| | | paramsInfo.put("huifu_id", userWithdrawal.getHuifuId()); |
| | | log.info("企业用户基本信息修改请求参数:{}", paramsInfo); |
| | | Map<String, Object> response = BasePayRequest.requestBasePay( |
| | | "v2/user/basicdata/ent/modify", paramsInfo, null, false); |
| | | log.info("企业用户基本信息修改返回参数:{}", response); |
| | | return response; |
| | | } |
| | | |
| | | /** 查询个人或企业用户的进件申请状态。 */ |
| | | public Map<String, Object> userApplyQuery(DouGongUserWithdrawalProfile userWithdrawal, |
| | | String applyNo) throws Exception { |
| | | if (applyNo == null || applyNo.trim().isEmpty() || applyNo.trim().length() > 18) { |
| | | throw new IllegalArgumentException("斗拱进件状态查询申请单号不能为空且长度不能超过18个字符"); |
| | | } |
| | | DouGongRequestSupport.initBasePay(huiFuProperties); |
| | | Map<String, Object> paramsInfo = new HashMap<>(); |
| | | paramsInfo.put("huifu_id", userWithdrawal.getHuifuId()); |
| | | paramsInfo.put("req_seq_id", DouGongRequestSupport.generateForHuiFu()); |
| | | paramsInfo.put("req_date", DouGongRequestSupport.todayForHuiFu()); |
| | | paramsInfo.put("apply_no", applyNo.trim()); |
| | | log.info("用户进件申请状态查询请求参数:{}", paramsInfo); |
| | | Map<String, Object> response = BasePayRequest.requestBasePay( |
| | | "v2/user/apply/query", paramsInfo, null, false); |
| | | log.info("用户进件申请状态查询返回参数:{}", response); |
| | | return response; |
| | | } |
| | | /** |
| | |
| | | // 3. 发起API调用 |
| | | Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/balance/query", paramsInfo, null, false); |
| | | log.info("账户余额信息查询返回参数:{}", response); |
| | | String string = response.get("acctInfo_list").toString(); |
| | | JSONArray accountList = JSONArray.parseArray(string); |
| | | if (accountList != null && !accountList.isEmpty()) { |
| | | JSONObject acctInfo = accountList.getJSONObject(0); |
| | | log.info("账户余额信息查询返回余额:{}", acctInfo.getString("avail_bal")); |
| | | return acctInfo.getBigDecimal("avail_bal"); |
| | | return availableBalance(response); |
| | | } |
| | | |
| | | static BigDecimal availableBalance(Map<String, Object> response) { |
| | | if (response == null) return BigDecimal.ZERO; |
| | | Object accountData = response.get("acctInfo_list"); |
| | | if (accountData == null) accountData = response.get("acct_info_list"); |
| | | if (accountData == null) return BigDecimal.ZERO; |
| | | JSONArray accountList = accountData instanceof JSONArray |
| | | ? (JSONArray) accountData |
| | | : JSONArray.parseArray(accountData instanceof String |
| | | ? (String) accountData : JSONObject.toJSONString(accountData)); |
| | | if (accountList == null || accountList.isEmpty()) return BigDecimal.ZERO; |
| | | JSONObject acctInfo = accountList.getJSONObject(0); |
| | | if (acctInfo == null || acctInfo.get("avail_bal") == null) return BigDecimal.ZERO; |
| | | BigDecimal balance = acctInfo.getBigDecimal("avail_bal"); |
| | | return balance == null ? BigDecimal.ZERO : balance; |
| | | } |
| | | |
| | | private Map<String, Object> enterpriseParams(DouGongUserWithdrawalProfile profile) { |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("reg_name", profile.getEnterpriseName()); |
| | | params.put("license_code", profile.getCreditCode()); |
| | | params.put("license_validity_type", validityType(profile.getLicenseValidityType())); |
| | | params.put("license_begin_date", compactDate(profile.getLicenseBeginDate())); |
| | | putFixedEndDate(params, "license_end_date", profile.getLicenseValidityType(), profile.getLicenseEndDate()); |
| | | params.put("reg_prov_id", profile.getRegisteredProvinceCode()); |
| | | params.put("reg_area_id", profile.getRegisteredCityCode()); |
| | | params.put("reg_district_id", profile.getRegisteredDistrictCode()); |
| | | params.put("reg_detail", profile.getRegisteredAddress()); |
| | | params.put("legal_name", profile.getCertificateName()); |
| | | params.put("legal_cert_type", "00"); |
| | | params.put("legal_cert_no", profile.getCertificateCode()); |
| | | String[] certificateDates = certificateDates(profile.getCertificateExpireTime()); |
| | | params.put("legal_cert_validity_type", "长期".equals(certificateDates[1]) ? "1" : "0"); |
| | | params.put("legal_cert_begin_date", compactDate(certificateDates[0])); |
| | | if (!"长期".equals(certificateDates[1])) { |
| | | params.put("legal_cert_end_date", compactDate(certificateDates[1])); |
| | | } |
| | | return BigDecimal.ZERO; |
| | | params.put("legal_cert_nationality", "CHN"); |
| | | params.put("contact_name", profile.getContactName()); |
| | | params.put("contact_mobile", profile.getPhone()); |
| | | return params; |
| | | } |
| | | |
| | | private String validityType(String value) { |
| | | return "long_term".equals(value) ? "1" : "0"; |
| | | } |
| | | |
| | | private void putFixedEndDate(Map<String, Object> params, String key, String validityType, String value) { |
| | | if (!"long_term".equals(validityType) && value != null && !value.trim().isEmpty()) { |
| | | params.put(key, compactDate(value)); |
| | | } |
| | | } |
| | | |
| | | private String compactDate(String value) { |
| | | return value == null ? null : value.replace("-", ""); |
| | | } |
| | | |
| | | private String[] certificateDates(String value) { |
| | | String normalized = value == null ? "" : value.replace(",", ","); |
| | | String[] values = normalized.split(",", -1); |
| | | return values.length >= 2 ? values : new String[]{normalized, "长期"}; |
| | | } |
| | | } |