From 9d8ffd27e93325903422d98389a84881066ecbfb Mon Sep 17 00:00:00 2001 From: 13009 Date: Wed, 20 Mar 2024 12:10:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=B7=E6=AC=BE=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scfs/api/service/v1/loan/LoanService.java | 91 ++ .../v1/loan/model/ApplyCompanyRequest.java | 867 ++++++++++++++++++ .../v1/loan/model/ApplyCompanyResponse.java | 44 + .../v1/loan/model/ApplyPersonRequest.java | 256 ++++++ .../v1/loan/model/ApplyPersonResponse.java | 44 + .../v1/loan/model/ApplyQueryRequest.java | 66 ++ .../v1/loan/model/ApplyQueryResponse.java | 151 +++ .../v1/loan/model/RepayQueryRequest.java | 58 ++ .../v1/loan/model/RepayQueryResponse.java | 106 +++ .../service/v1/loan/model/RepayRequest.java | 94 ++ .../service/v1/loan/model/RepayResponse.java | 37 + .../czcb/scfs/api/test/ApiGatewayTest.java | 21 + 12 files changed, 1835 insertions(+) create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/LoanService.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyResponse.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonResponse.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryResponse.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryResponse.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayRequest.java create mode 100644 scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayResponse.java diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/LoanService.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/LoanService.java new file mode 100644 index 0000000..fc5432e --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/LoanService.java @@ -0,0 +1,91 @@ +package com.czcb.scfs.api.service.v1.loan; + +import com.czcb.scfs.api.core.ApiClient; +import com.czcb.scfs.api.core.http.HttpHeaders; +import com.czcb.scfs.api.core.http.HttpResponse; +import com.czcb.scfs.api.service.v1.loan.model.*; + +import static com.czcb.scfs.api.core.Constants.API_VERSION; +import static com.czcb.scfs.api.core.Constants.V_1; + +/** + * @author wangwei + * @date 2024/3/20 + */ +public class LoanService { + private final ApiClient apiClient; + + public LoanService(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * 贷款申请 + * + * @param applyPersonRequest ApplyPersonRequest + * @return ApplyPersonResponse + */ + public ApplyPersonResponse applyPerson(ApplyPersonRequest applyPersonRequest) { + String url = "/loanapi/apply"; + HttpHeaders headers = new HttpHeaders(); + headers.addHeader(API_VERSION, V_1); + HttpResponse httpResponse = apiClient.post(url, headers, applyPersonRequest.toJsonRequest(), ApplyPersonResponse.class); + return httpResponse.getServiceResponse(); + } + + /** + * 企业贷款申请 + * + * @param applyCompanyRequest ApplyCompanyRequest + * @return ApplyCompanyResponse + */ + public ApplyCompanyResponse applyCompany(ApplyCompanyRequest applyCompanyRequest) { + String url = "/loanapi/qyapply"; + HttpHeaders headers = new HttpHeaders(); + headers.addHeader(API_VERSION, V_1); + HttpResponse httpResponse = apiClient.post(url, headers, applyCompanyRequest.toJsonRequest(), ApplyCompanyResponse.class); + return httpResponse.getServiceResponse(); + } + + /** + * 贷款申请进度查询 + * + * @param applyQueryRequest ApplyQueryRequest + * @return ApplyQueryResponse + */ + public ApplyQueryResponse applyQuery(ApplyQueryRequest applyQueryRequest) { + String url = "/loanapi/applyquery"; + HttpHeaders headers = new HttpHeaders(); + headers.addHeader(API_VERSION, V_1); + HttpResponse httpResponse = apiClient.post(url, headers, applyQueryRequest.toJsonRequest(), ApplyQueryResponse.class); + return httpResponse.getServiceResponse(); + } + + /** + * 贷款还款信息查询 + * + * @param repayQueryRequest RepayQueryRequest + * @return RepayQueryResponse + */ + public RepayQueryResponse repayQuery(RepayQueryRequest repayQueryRequest) { + String url = "/loanapi/repayquery"; + HttpHeaders headers = new HttpHeaders(); + headers.addHeader(API_VERSION, V_1); + HttpResponse httpResponse = apiClient.post(url, headers, repayQueryRequest.toJsonRequest(), RepayQueryResponse.class); + return httpResponse.getServiceResponse(); + } + + /** + * 贷款还款信息查询 + * + * @param repayRequest RepayRequest + * @return RepayResponse + */ + public RepayResponse repay(RepayRequest repayRequest) { + String url = "/loanapi/repay"; + HttpHeaders headers = new HttpHeaders(); + headers.addHeader(API_VERSION, V_1); + HttpResponse httpResponse = apiClient.post(url, headers, repayRequest.toJsonRequest(), RepayResponse.class); + return httpResponse.getServiceResponse(); + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyRequest.java new file mode 100644 index 0000000..c3f687c --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyRequest.java @@ -0,0 +1,867 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiRequest; +import com.czcb.scfs.api.service.TransType; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 企业贷款申请 + * + * @author wangwei + * @date 2024/3/20 + */ +@Data +@Accessors(chain = true) +@TransType("102017") +public class ApplyCompanyRequest implements ApiRequest { + /** + * 渠道编号 + */ + @SerializedName("channel_no") + private String channelNo; + + /** + * 应用编号 + */ + @SerializedName("app_no") + private String appNo; + + /** + * 流水号 + */ + @SerializedName("serial_no") + private String serialNo; + + /** + * 产品编号 + */ + @SerializedName("product_id") + private String productId; + + /** + * 账号,申请人A1账户账号 + */ + @SerializedName("account_no") + private String accountNo; + + /** + * 户名,申请人A1账户户名 + */ + @SerializedName("account_name") + private String accountName; + + /** + * 验证码,短信验证码(申请人A1账户的手机号) + */ + @SerializedName("verify_code") + private String verifyCode; + + /** + * 申请金额 + */ + @SerializedName("business_apply_sum") + private BigDecimal businessApplySum; + + /** + * 申请利率 + */ + @SerializedName("business_rate") + private BigDecimal businessRate; + + /** + * 贷款投向,具体由业务提供(1位字母+4位数字) + */ + @SerializedName("direction") + private String direction; + + /** + * 还贷资金来源,业务提供、一个平台统一措辞 + */ + @SerializedName("repay_fund_source") + private String repay_fund_source; + + /** + * 支农用途,见字典 + */ + @SerializedName("accept_int_type") + private String accept_int_type; + + /** + * 产业结构调整类型,010-鼓励020-限制030-淘汰040-未列入目录,建议默认040 + */ + @SerializedName("industry_adjust") + private String industry_adjust; + + /** + * 工业转型升级标识,1-是 2-否,建议默认2 + */ + @SerializedName("industry_upgrade") + private String industry_upgrade; + + /** + * 战略新兴产业类型,010-节能环保020-新一代信息技术030-生物医药040-高端装备制造050-新能源060-新材料070-新能源汽车080-数据创意090-相关服务业999-未列入目录,建议默认999 + */ + @SerializedName("new_industry_type") + private String new_industry_type; + + + /** + * 企业组织机构代码 + */ + @SerializedName("qy_corp_id") + private String qy_corp_id; + + /** + * 企业企业经济类型,码值见字典 + */ + @SerializedName("qy_org_type") + private String qy_org_type; + + /** + * 企业国民经济部门,码值见字典 + */ + @SerializedName("qy_economy_type") + private String qy_economy_type; + + /** + * 企业经营品种 + */ + @SerializedName("qy_most_business") + private String qy_most_business; + + /** + * 企业营业执照登记日yyyy-MM-dd + */ + @SerializedName("qy_licensedate") + private String qy_licensedate; + + /** + * 企业营业执照到期日yyyy-MM-dd + */ + @SerializedName("qy_license_maturity") + private String qy_license_maturity; + + /** + * 企业企业成立日期yyyy-MM-dd + */ + @SerializedName("qy_setup_date") + private String qy_setup_date; + + /** + * 企业所在国家(地区),默认CHN + */ + @SerializedName("qy_country_code") + private String qy_country_code; + + /** + * 企业省份、直辖市、自治区,地区代码 + */ + @SerializedName("qy_region_code") + private String qy_region_code; + + /** + * 企业注册地址 + */ + @SerializedName("qy_register_add") + private String qy_register_add; + + /** + * 企业国内办公行政区划代码 + */ + @SerializedName("qy_office_area_code") + private String qy_office_area_code; + + /** + * 企业办公地址 + */ + @SerializedName("qy_office_add") + private String qy_office_add; + + /** + * 企业国内办公地址更新日期yyyy-MM-dd + */ + @SerializedName("qy_office_add_change_date") + private String qy_office_add_change_date; + + /** + * 企业是否市场经营户1-是 2-否,默认2 + */ + @SerializedName("qy_finance_ornot") + private String qy_finance_ornot; + + /** + * 企业国标行业分类(新标准) + */ + @SerializedName("qy_industry_type2") + private String qy_industry_type2; + + /** + * 企业上年末企业从业人员(人) + */ + @SerializedName("qy_employee_number") + private String qy_employee_number; + + /** + * 企业上年营业收入(万元) + */ + @SerializedName("qy_previous_income") + private String qy_previous_income; + + /** + * 企业上年末资产总额(万元) + */ + @SerializedName("qy_previous_asset") + private String qy_previous_asset; + + /** + * 企业企业类型(新标准) + * 2-大型企业 + * 3-中型企业 + * 4-小型企业 + * 5-微型企业 + * 9-其他 + */ + @SerializedName("qy_scope1") + private String qy_scope1; + + /** + * 企业基本账户是否在本行开立1-是 2-否 + */ + @SerializedName("qy_budget_type") + private String qy_budget_type; + + /** + * 企业基本帐户行,我行贷款客户必输 + */ + @SerializedName("qy_basic_bank") + private String qy_basic_bank; + + /** + * 企业基本帐户号,我行贷款客户必输 + */ + @SerializedName("qy_basic_account") + private String qy_basic_account; + + /** + * 企业贷款卡号 + */ + @SerializedName("qy_loan_card_no") + private String qy_loan_card_no; + + /** + * 企业贷款卡密码 + */ + @SerializedName("qy_loan_card_password") + private String qy_loan_card_password; + + /** + * 企业贷款卡是否有效,1-是2-否,若已填写贷款卡号,该字段必输 + */ + @SerializedName("qy_loan_flag") + private String qy_loan_flag; + + /** + * 企业注册资本币种 01-人民币 + */ + @SerializedName("qy_rc_currency") + private String qy_rc_currency; + + /** + * 企业注册资本(元) + */ + @SerializedName("qy_register_capital") + private String qy_register_capital; + + /** + * 企业实收资本币种01-人民币 + */ + @SerializedName("qy_pc_currency") + private String qy_pc_currency; + + /** + * 企业实收资本(元) + */ + @SerializedName("qy_paicl_up_capital") + private String qy_paicl_up_capital; + + /** + * 企业企业隶属 + * 01-中央 + * 02-省部属 + * 03-市属 + * 04-区、县属及以下 + */ + @SerializedName("qy_enterprise_belong") + private String qy_enterprise_belong; + + /** + * 企业是否上市公司 1-是 2-否 + */ + @SerializedName("qy_listing_corp_ornot") + private String qy_listing_corp_ornot; + + /** + * 企业是否私人控股 1-是 2-否 + */ + @SerializedName("qy_private_lyheld") + private String qy_private_lyheld; + + /** + * 企业上市情况(若上市) + * A-A股上市 + * B-B股上市 + * H-香港上市 + * F-海外上市 + */ + @SerializedName("qy_listed_company") + private String qy_listed_company; + + /** + * 企业邮政编码 + */ + @SerializedName("qy_office_zip") + private String qy_office_zip; + + /** + * 企业他行开户行 + */ + @SerializedName("qy_other_bank") + private String qy_other_bank; + + /** + * 企业他行开户帐号 + */ + @SerializedName("qy_other_bank_account") + private String qy_other_bank_account; + + /** + * 企业在我行首次开立账户时间 + */ + @SerializedName("qy_account_date") + private String qy_account_date; + + /** + * 企业首贷时间 + */ + @SerializedName("qy_first_credit_date") + private String qy_first_credit_date; + + /** + * 企业与我行建立信贷关系时间 + */ + @SerializedName("qy_first_loan_date") + private String qy_first_loan_date; + + /** + * 企业财务报表类型 + * 000-通用财务报表(完整版) + * 010-通用财务报表(简易版) + * 019-事业类单位财务报表 + * 020-新会计财务报表 + * 030-同业客户财务报表 + * 040-通用财务报表(完整版) + * 050-通用财务报表(简易版) + */ + @SerializedName("qy_finance_belong") + private String qy_finance_belong; + + /** + * 企业退税登记证 + */ + @SerializedName("qy_exchange_id") + private String qy_exchange_id; + + /** + * 企业有无进出口经营权 1-有 2-无 + */ + @SerializedName("qy_has_ieright") + private String qy_has_ieright; + + /** + * 企业是否培育重点中小企业1-是 2-否 + */ + @SerializedName("qy_private") + private String qy_private; + + /** + * 企业是否集团客户1-是 2-否 + */ + @SerializedName("qy_ecgroup_flag") + private String qy_ecgroup_flag; + + /** + * 企业是否政府融资平台(银监)1-是 2-否,默认2 + */ + @SerializedName("qy_back_ground_flag") + private String qy_back_ground_flag; + + /** + * 企业环境、安全等重大风险企业 默认0 + * 0-非环境、安全等重大风险企业 + * 1-涉及环境保护违法违规且尚未完成整改的企业 + * 2-涉及安全生产违法违规且尚未完成整改的企业 + * 3-涉及落后产能且尚未完成淘汰的企业 + * 4-涉及职业病预防控制措施不达标且尚未完成整改的企业 + */ + @SerializedName("qy_environment_safe_risk") + private String qy_environment_safe_risk; + + /** + * 企业联系电话 + */ + @SerializedName("qy_office_tel") + private String qy_office_tel; + + /** + * 企业财务部联系电话 + */ + @SerializedName("qy_finance_dept_tel") + private String qy_finance_dept_tel; + + /** + * 企业公司E-Mail + */ + @SerializedName("qy_email_add") + private String qy_email_add; + + /** + * 企业公司网址 + */ + @SerializedName("qy_web_add") + private String qy_web_add; + + /** + * 企业传真电话 + */ + @SerializedName("qy_office_fax") + private String qy_office_fax; + + /** + * 企业客户历史沿革、管理水平简介 + */ + @SerializedName("qy_customer_history") + private String qy_customer_history; + + /** + * 企业主要产品情况 + */ + @SerializedName("qy_main_production") + private String qy_main_production; + + /** + * 企业经营场地面积(平方米) + */ + @SerializedName("qy_work_field_area") + private String qy_work_field_area; + + /** + * 企业经营场地所有权 + * 1-自有 + * 2-租赁 + * 3-其他 + */ + @SerializedName("qy_work_field_fee") + private String qy_work_field_fee; + + /** + * 企业上级公司名称 + */ + @SerializedName("qy_super_corp_name") + private String qy_super_corp_name; + + /** + * 企业上级公司组织机构代码 + */ + @SerializedName("qy_super_cert_id") + private String qy_super_cert_id; + + /** + * 企业上级公司贷款卡编号 + */ + @SerializedName("qy_super_loan_card_no") + private String qy_super_loan_card_no; + + /** + * 企业客户备注 + */ + @SerializedName("qy_remark") + private String qy_remark; + + /** + * 个人姓名 + */ + @SerializedName("gr_full_name") + private String gr_full_name; + + /** + * 个人证件类型,默认Ind01-身份证 + * Ind01-身份证 + * Ind02-户口簿 + * Ind03-护照 + * Ind04-军官证 + * Ind05-士兵证 + * Ind06-港澳居民来往内地通行证 + * Ind07-台湾同胞来往内地通行证 + * Ind08-临时身份证 + * Ind09-外国人居留证 + * Ind10-警官证 + * Ind11-其他个人证件 + */ + @SerializedName("gr_cert_type") + private String gr_cert_type; + + /** + * 个人证件号码 + */ + @SerializedName("gr_cert_id") + private String gr_cert_id; + /** + * 个人性别 + * 0-未知的性别 + * 1-男性 + * 2-女性 + * 9-未说明性别 + */ + @SerializedName("gr_sex") + private String gr_sex; + + /** + * 个人出生日期 + */ + @SerializedName("gr_birthday") + private String gr_birthday; + + /** + * 个人证件到期日 + */ + @SerializedName("gr_cert_enddate") + private String gr_cert_enddate; + + /** + * 个人最高学历 + * 05-博士 + * 10-研究生 + * 20-大学本科 + * 30-大学专科 + * 40-中专/中等技校 + * 50-技术学校 + * 60-高中 + * 70-初中 + * 80-小学 + * 90-文盲或半文盲 + * 99-未知 + */ + @SerializedName("gr_edu_experience") + private String gr_edu_experience; + + /** + * 个人最高学位 + * 0-其他 + * 1-名誉博士 + * 2-博士 + * 3-硕士 + * 4-学士 + * 9-未知 + */ + @SerializedName("gr_edu_degree") + private String gr_edu_degree; + + /** + * 个人社会保险号 + */ + @SerializedName("gr_sino") + private String gr_sino; + + /** + * 个人是否在本地购置房产 1-是 2-否 + */ + @SerializedName("gr_is_localhouse") + private String gr_is_localhouse; + + /** + * 个人子女是否在本地就学(大学除外) 1-是 2-否 + */ + @SerializedName("gr_is_localread") + private String gr_is_localread; + + /** + * 个人客户分类 + * 010-本地客户 + * 020-户籍在外客户 + * 030-实体在外客户 + * 040-两头在外客户 + */ + @SerializedName("gr_ind_customer_type") + private String gr_ind_customer_type; + + /** + * 个人户口性质1-本地户籍2-非本地户籍 + */ + @SerializedName("gr_hk_atr") + private String gr_hk_atr; + + /** + * 个人是否农户 1-是 2-否 + */ + @SerializedName("gr_if_farmer") + private String gr_if_farmer; + + /** + * 个人是否市场经营户 1-是 2-否 + */ + @SerializedName("gr_farmer_sort") + private String gr_farmer_sort; + + /** + * 个人市场名称 + */ + @SerializedName("gr_market_name") + private String gr_market_name; + + /** + * 个人民族01-汉02-其他少数民族 + */ + @SerializedName("gr_nationality") + private String gr_nationality; + + /** + * 个人婚姻状况 + * 10-未婚 + * 20-已婚 + * 21-初婚 + * 22-再婚 + * 23-复婚 + * 30-丧偶 + * 40-离婚 + * 90-未说明 + */ + @SerializedName("gr_marriage") + private String gr_marriage; + + /** + * 个人所在国家(地区) 默认:CHN-中华人民共和国 + */ + @SerializedName("gr_country_code") + private String gr_country_code; + + /** + * 个人省份、直辖市、自治区 + */ + @SerializedName("gr_region_code") + private String gr_region_code; + + /** + * 个人居住地址 + */ + @SerializedName("gr_family_add") + private String gr_family_add; + + /** + * 个人居住地址邮编 + */ + @SerializedName("gr_family_zip") + private String gr_family_zip; + + /** + * 个人经营企业名称,默认填申请企业名称 + */ + @SerializedName("gr_corp_name") + private String gr_corp_name; + + /** + * 个人经营企业营业执照号码,默认填申请企业的 + */ + @SerializedName("gr_license_no") + private String gr_license_no; + + /** + * 个人经营地址,默认填申请企业的 + */ + @SerializedName("gr_office_add") + private String gr_office_add; + + /** + * 个人经营品种 + */ + @SerializedName("gr_most_business") + private String gr_most_business; + + /** + * 个人住宅/经营地址电话 + */ + @SerializedName("gr_family_tel") + private String gr_family_tel; + + /** + * 个人居住状况 + * 1-自置 + * 2-按揭 + * 3-亲属楼宇 + * 4-集体宿舍 + * 5-租房 + * 6-共有住宅 + * 7-其他 + * 9-未知 + */ + @SerializedName("gr_family_status") + private String gr_family_status; + + /** + * 个人手机号码 + */ + @SerializedName("gr_mobile_telephone") + private String gr_mobile_telephone; + + /** + * 个人电子邮箱 + */ + @SerializedName("gr_email_add") + private String gr_email_add; + + /** + * 个人通讯地址 + */ + @SerializedName("gr_comm_add") + private String gr_comm_add; + + /** + * 个人通讯地址邮编 + */ + @SerializedName("gr_comm_zip") + private String gr_comm_zip; + + /** + * 个人家庭月收入(元) + */ + @SerializedName("gr_family_month_income") + private String gr_family_month_income; + + /** + * 个人个人年收入(元) + */ + @SerializedName("gr_year_income") + private String gr_year_income; + + /** + * 个人从业时间 + */ + @SerializedName("gr_work_begindate") + private String gr_work_begindate; + + /** + * 个人基本帐户行 + */ + @SerializedName("gr_pay_account") + private String gr_pay_account; + + /** + * 个人基本帐户帐号 + */ + @SerializedName("gr_pay_account_bank") + private String gr_pay_account_bank; + + /** + * 个人首贷时间 + */ + @SerializedName("gr_first_creditdate") + private String gr_first_creditdate; + + /** + * 个人与我行建立信贷关系时间 + */ + @SerializedName("gr_first_loandate") + private String gr_first_loandate; + + /** + * 个人备注 + */ + @SerializedName("gr_remark") + private String gr_remark; + + /** + * 配偶姓名,当已婚时必输 + */ + @SerializedName("po_customer_name") + private String po_customer_name; + + /** + * 配偶电话,当已婚时必输 + */ + @SerializedName("po_mobile_telephone") + private String po_mobile_telephone; + + /** + * 配偶证件类型 默认 Ind01-身份证,当已婚时必输 + * Ind01-身份证 + * Ind02-户口簿 + * Ind03-护照 + * Ind04-军官证 + * Ind05-士兵证 + * Ind06-港澳居民来往内地通行证 + * Ind07-台湾同胞来往内地通行证 + * Ind08-临时身份证 + * Ind09-外国人居留证 + * Ind10-警官证 + * Ind11-其他个人证件 + */ + @SerializedName("po_cert_type") + private String po_cert_type; + + /** + * 配偶性别,当已婚时必输 + * 0-未知的性别 + * 1-男性 + * 2-女性 + * 9-未说明性别 + */ + @SerializedName("po_sex") + private String po_sex; + + /** + * 配偶身份证,当已婚时必输 + */ + @SerializedName("po_cert_id") + private String po_cert_id; + + /** + * 贷款申请结果通知URL + */ + @SerializedName("notify_url") + private String notify_url; + + @SerializedName("file_list") + private List fileList; + + /** + * 操作日期 + */ + @SerializedName("trans_date") + private String transDate; + + /** + * 操作时间 + */ + @SerializedName("trans_tradetime") + private String transTradeTime; + + @Data + public static class FileList implements Serializable { + /** + * 文件编号 + */ + @SerializedName("file_no") + private String fileNo; + + /** + * 文件类型 + */ + @SerializedName("file_type") + private String fileType; + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyResponse.java new file mode 100644 index 0000000..dfa6ee0 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyCompanyResponse.java @@ -0,0 +1,44 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiResponse; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +/** + * 企业贷款申请 + * + * @author wangwei + * @date 2024/3/20 + */ +@Data +public class ApplyCompanyResponse implements ApiResponse { + /** + * 000000:表示成功 + */ + @SerializedName("recode") + private String recode; + + /** + * 结果信息 + */ + @SerializedName("recode_Info") + private String recodeInfo; + + /** + * 任务流水号 + */ + @SerializedName("online_serial_no") + private String onlineSerialNo; + + /** + * 系统日期(YYYY-MM-DD) + */ + @SerializedName("sys_date") + private String sysDate; + + /** + * 系统时间(YYYY-MM-DD hh:mm:ss) + */ + @SerializedName("sys_time") + private String sysTime; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonRequest.java new file mode 100644 index 0000000..e18efc6 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonRequest.java @@ -0,0 +1,256 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiRequest; +import com.czcb.scfs.api.service.TransType; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * 贷款申请 + * + * @author wangwei + * @date 2024/3/20 + */ +@Data +@Accessors(chain = true) +@TransType("102001") +public class ApplyPersonRequest implements ApiRequest { + /** + * 渠道编号 + */ + @SerializedName("channel_no") + private String channelNo; + + /** + * 应用编号 + */ + @SerializedName("app_no") + private String appNo; + + /** + * 流水号 + */ + @SerializedName("serial_no") + private String serialNo; + + /** + * 产品编号 + */ + @SerializedName("product_id") + private String productId; + + /** + * 账号,申请人A1账户账号 + */ + @SerializedName("account_no") + private String accountNo; + + /** + * 户名,申请人A1账户户名 + */ + @SerializedName("account_name") + private String accountName; + + @SerializedName("verify_code") + private String verifyCode; + + /** + * 申请金额 + */ + @SerializedName("business_apply_sum") + private BigDecimal businessApplySum; + + /** + * 申请利率 + */ + @SerializedName("business_rate") + private BigDecimal businessRate; + + /** + * 贷款投向,具体由业务提供(1位字母+4位数字) + */ + @SerializedName("direction") + private String direction; + + /** + * 紧急联系人名称 + */ + @SerializedName("relative_name") + private String relativeName; + + /** + * 紧急联系人电话 + */ + @SerializedName("relative_telephone") + private String relativeTelephone; + + /** + * 与紧急联系人关系:01 配偶 02 子女 03 父母 04 亲属 05 朋友 06 同事 07 其他 + */ + @SerializedName("relation_ship") + private String relationShip; + + /** + * 配偶姓名 已婚必输 + */ + @SerializedName("p_customer_name") + private String pCustomerName; + + /** + * 配偶电话 已婚必输 + */ + @SerializedName("p_mobile_telephone") + private String pMobileTelephone; + + /** + * 配偶证件类型 已婚必输 Ind01:身份证 + */ + @SerializedName("p_cert_type") + private String pCertType; + + /** + * 配偶性别 已婚必输 1 男性 2 女性 0 未知的性别 9 未说明性别 + */ + @SerializedName("p_sex") + private String pSex; + + /** + * 配偶证件编号 已婚必输 + */ + @SerializedName("p_cert_id") + private String pCertId; + + /** + * 婚姻状态:10 未婚 20 已婚 21 初婚 22 再婚 23 复婚 30 丧偶 40 离婚 90 未说明 + */ + @SerializedName("marriage") + private String marriage; + + /** + * 经营实体证件类型 Ent04 统一社会信用代码 + */ + @SerializedName("e_cert_type") + private String eCertType; + + /** + * 经营实体证件号码 + */ + @SerializedName("e_cert_id") + private String eCertId; + + /** + * 经营实体名称 + */ + @SerializedName("e_customer_name") + private String eCustomerName; + + /** + * 与经营企业关系 010 法定代表人(业主) 020 股东 030 合伙人 040 承包人 050 实控人 + */ + @SerializedName("whethen1") + private String whethen1; + + /** + * 企业类型01 机构客户0101 法人企业0102 非法人企业0103 经营性个人客户0104 事业单位0105 社会团体0106 + * 党政机关0107 金融机构0199 其他02 关联集团0201 单一集团客户0202 综合集团客户0203 准集团客户0204 + * 联保体客户03 消费类个人客户04 个体工商户05 同业客户06 专业市场客户07 产/行业集群08 网格化商圈 + */ + @SerializedName("ent_type") + private String entType; + + /** + * 省份、直辖市、自治区 + */ + @SerializedName("region_code") + private String regionCode; + + /** + * 户籍地址 + */ + @SerializedName("native_place") + private String nativePlace; + + /** + * 民族:01-汉族02-蒙古族03-回族04-藏族05-维吾尔族06-苗族07-彝族08-壮族09-布依族10-朝鲜族11-满族 + * 12-侗族13-瑶族14-白族15-土家族16-哈尼族17-哈萨克族18-傣族19-黎族20-傈僳族21-佤族22-畲族23-高山族 + * 24-拉祜族25-水族26-东乡族27-纳西族28-景颇族29-柯尔克孜族30-土族31-达斡尔族32-仫佬族33-羌族34-布朗族35-撒拉族 + * 36-毛南族37-仡佬族38-锡伯族39-阿昌族40-普米族41-塔吉克族42-怒族43-乌孜别克族44-俄罗斯族45-鄂温克族46-德昂族47-保安族 + * 48-裕固族49-京族50-塔塔尔族51-独龙族52-鄂伦春族53-赫哲族54-门巴族55-珞巴族56-基诺族57-其他58-外国血统 + */ + @SerializedName("nationality") + private String nationality; + + /** + * 学历 05 博士 10 研究生 99 未知 20 大学本科 30 大学专科 40 中专/中等技校 50 技术学校 60 高中 70 初中 80 小学 90 文盲或半文盲 + */ + @SerializedName("eduexperience") + private String eduExperience; + + /** + * 个人年收入(万元) + */ + @SerializedName("year_income") + private BigDecimal yearIncome; + + /** + * 家庭年收入(万元) + */ + @SerializedName("family_year_income") + private BigDecimal familyYearIncome; + + /** + * 经营范围、经营活动描述、经营活动证明(无经营实体填经营活动证明)大于10个中文 + */ + @SerializedName("scope") + private String scope; + + /** + * 经营起始日 + */ + @SerializedName("start_time") + private String startTime; + + /** + * 贷款申请结果通知URL + */ + @SerializedName("notify_url") + private String notifyUrl; + + @SerializedName("special_data") + private String specialData; + + @SerializedName("file_list") + private List fileList; + + /** + * 操作日期 + */ + @SerializedName("trans_date") + private String transDate; + + /** + * 操作时间 + */ + @SerializedName("trans_tradetime") + private String transTradeTime; + + @Data + public static class FileList implements Serializable { + /** + * 文件编号 + */ + @SerializedName("file_no") + private String fileNo; + + /** + * 文件类型 + */ + @SerializedName("file_type") + private String fileType; + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonResponse.java new file mode 100644 index 0000000..e8e8461 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyPersonResponse.java @@ -0,0 +1,44 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiResponse; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +/** + * 贷款申请 + * + * @author wangwei + * @date 2024/3/20 + */ +@Data +public class ApplyPersonResponse implements ApiResponse { + /** + * 000000:表示成功 + */ + @SerializedName("recode") + private String recode; + + /** + * 结果信息 + */ + @SerializedName("recode_Info") + private String recodeInfo; + + /** + * 任务流水号 + */ + @SerializedName("online_serial_no") + private String onlineSerialNo; + + /** + * 系统日期(YYYY-MM-DD) + */ + @SerializedName("sys_date") + private String sysDate; + + /** + * 系统时间(YYYY-MM-DD hh:mm:ss) + */ + @SerializedName("sys_time") + private String sysTime; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryRequest.java new file mode 100644 index 0000000..17ec959 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryRequest.java @@ -0,0 +1,66 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiRequest; +import com.czcb.scfs.api.service.TransType; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 贷款申请进度查询 + * + * @author wangwei + * @date 2024/3/20 + */ +@Data +@Accessors(chain = true) +@TransType("102002") +public class ApplyQueryRequest implements ApiRequest { + /** + * 渠道编号 + */ + @SerializedName("channel_no") + private String channelNo; + + /** + * 应用编号 + */ + @SerializedName("app_no") + private String appNo; + + /** + * 流水号 + */ + @SerializedName("serial_no") + private String serialNo; + + /** + * 产品编号 + */ + @SerializedName("product_id") + private String productId; + + /** + * 账号,申请人A1账户账号 + */ + @SerializedName("account_no") + private String accountNo; + + /** + * 户名,申请人A1账户户名 + */ + @SerializedName("account_name") + private String accountName; + + /** + * 操作日期 + */ + @SerializedName("trans_date") + private String transDate; + + /** + * 操作时间 + */ + @SerializedName("trans_tradetime") + private String transTradeTime; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryResponse.java new file mode 100644 index 0000000..f9f7978 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/ApplyQueryResponse.java @@ -0,0 +1,151 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiResponse; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * @author wangwei + * @date 2024/3/20 + */ +@Data +public class ApplyQueryResponse implements ApiResponse { + /** + * 000000:表示成功 + */ + @SerializedName("recode") + private String recode; + + /** + * 结果信息 + */ + @SerializedName("recode_Info") + private String recodeInfo; + + @SerializedName("recode_list") + private List recodeList; + + /** + * 系统日期(YYYY-MM-DD) + */ + @SerializedName("sys_date") + private String sysDate; + + /** + * 系统时间(YYYY-MM-DD hh:mm:ss) + */ + @SerializedName("sys_time") + private String sysTime; + + @Data + public static class RecodeList implements Serializable { + /** + * 产品编号 + */ + @SerializedName("product_id") + private String productId; + + /** + * 账号,申请人A1账户账号 + */ + @SerializedName("account_no") + private String accountNo; + + /** + * 户名,申请人A1账户户名 + */ + @SerializedName("account_name") + private String accountName; + + /** + * 授信金额 + */ + @SerializedName("business_sum") + private BigDecimal businessSum; + + /** + * 已用额度 + */ + @SerializedName("user_balance") + private BigDecimal userBalance; + + /** + * 利率 + */ + @SerializedName("rate") + private BigDecimal rate; + + /** + * 合同编号 + */ + @SerializedName("contract_no") + private String contractNo; + + /** + * 起始日 + */ + @SerializedName("putout_date") + private String putoutDate; + + /** + * 到期日 + */ + @SerializedName("maturity") + private String maturity; + + /** + * 状态码 01-未申请 02-审批中 03-审批拒绝 04-审批通过未签约 05-额度已过期 06-已签约 07-无权限 08-类型错误 + */ + @SerializedName("status") + private String status; + + /** + * 状态描述 + */ + @SerializedName("status_desc") + private String statusDesc; + + /** + * 经办机构 + */ + @SerializedName("operate_org_id") + private String operateOrgId; + + /** + * 任务流水号 + */ + @SerializedName("online_serial_no") + private String onlineSerialNo; + + /** + * 贷款用途 + */ + @SerializedName("purpose") + private String purpose; + + /** + * 贷款申请资料List + */ + @SerializedName("file_list") + private List fileList; + } + + @Data + public static class FileList implements Serializable { + /** + * 文件编号 + */ + @SerializedName("file_no") + private String fileNo; + + /** + * 文件类型 + */ + @SerializedName("file_type") + private String fileType; + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryRequest.java new file mode 100644 index 0000000..f710a3e --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryRequest.java @@ -0,0 +1,58 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiRequest; +import com.czcb.scfs.api.service.TransType; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author wangwei + * @date 2024/3/20 + */ +@Data +@Accessors(chain = true) +@TransType("102005") +public class RepayQueryRequest implements ApiRequest { + /** + * 渠道编号 + */ + @SerializedName("channel_no") + private String channelNo; + + /** + * 应用编号 + */ + @SerializedName("app_no") + private String appNo; + + /** + * 流水号 + */ + @SerializedName("serial_no") + private String serialNo; + + /** + * 账号,申请人A1账户账号 + */ + @SerializedName("account_no") + private String accountNo; + + /** + * 户名,申请人A1账户户名 + */ + @SerializedName("account_name") + private String accountName; + + /** + * 操作日期 + */ + @SerializedName("trans_date") + private String transDate; + + /** + * 操作时间 + */ + @SerializedName("trans_tradetime") + private String transTradeTime; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryResponse.java new file mode 100644 index 0000000..ebfdba9 --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayQueryResponse.java @@ -0,0 +1,106 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiResponse; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * @author wangwei + * @date 2024/3/20 + */ +@Data +public class RepayQueryResponse implements ApiResponse { + /** + * 000000:表示成功 + */ + @SerializedName("recode") + private String recode; + + /** + * 结果信息 + */ + @SerializedName("recode_Info") + private String recodeInfo; + + @SerializedName("recode_list") + private List recodeList; + + /** + * 系统日期(YYYY-MM-DD) + */ + @SerializedName("sys_date") + private String sysDate; + + /** + * 系统时间(YYYY-MM-DD hh:mm:ss) + */ + @SerializedName("sys_time") + private String sysTime; + + @Data + public static class RecodeList implements Serializable { + /** + * 贷款类型 + */ + @SerializedName("loantp") + private String loantp; + + /** + * 本月应还本金 + */ + @SerializedName("crnrpyblamtb") + private BigDecimal crnrpyblamtb; + + /** + * 本月应还利息 + */ + @SerializedName("crnrpyblamtl") + private BigDecimal crnrpyblamtl; + + /** + * 剩余本金 + */ + @SerializedName("rmanpnpamt") + private BigDecimal rmanpnpamt; + + /** + * 还款日 + */ + @SerializedName("rpybldt") + private String rpybldt; + + /** + * 合同编号 + */ + @SerializedName("ctrno") + private String ctrno; + + /** + * 贷款账号 + */ + @SerializedName("loanacctno") + private String loanacctno; + + /** + * 贷款账号序号 + */ + @SerializedName("acctseqno") + private String acctseqno; + + /** + * 币种 + */ + @SerializedName("buyexgccycd") + private String buyexgccycd; + + /** + * 年利率 + */ + @SerializedName("yrintrate") + private BigDecimal yrintRate; + } +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayRequest.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayRequest.java new file mode 100644 index 0000000..4cbf4da --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayRequest.java @@ -0,0 +1,94 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiRequest; +import com.czcb.scfs.api.service.TransType; +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author wangwei + * @date 2024/3/20 + */ +@Data +@Accessors(chain = true) +@TransType("102006") +public class RepayRequest implements ApiRequest { + /** + * 渠道编号 + */ + @SerializedName("channel_no") + private String channelNo; + + /** + * 应用编号 + */ + @SerializedName("app_no") + private String appNo; + + /** + * 流水号 + */ + @SerializedName("serial_no") + private String serialNo; + + /** + * 账号,申请人A1账户账号 + */ + @SerializedName("account_no") + private String accountNo; + + /** + * 户名,申请人A1账户户名 + */ + @SerializedName("account_name") + private String accountName; + + /** + * 验证码,短信验证码(申请人A1账户的手机号) + */ + @SerializedName("verify_code") + private String verifyCode; + + /** + * 贷款账号 + */ + @SerializedName("loanacctno") + private String loanacctno; + + /** + * 还款方式 0、部分还款 1、全部还款 + */ + @SerializedName("repymtmd") + private String repymtmd; + + /** + * 合同编号(贷款申请通过后的返回) + */ + @SerializedName("ctrno") + private String ctrno; + + /** + * 还款金额 全部还款为本息合计,如果平台还息则上送的是本金 + */ + @SerializedName("repymtcorpus") + private String repymtcorpus; + + /** + * 摘要 + */ + @SerializedName("remork") + private String remork; + + /** + * 操作日期 + */ + @SerializedName("trans_date") + private String transDate; + + /** + * 操作时间 + */ + @SerializedName("trans_tradetime") + private String transTradeTime; +} diff --git a/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayResponse.java b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayResponse.java new file mode 100644 index 0000000..30656ec --- /dev/null +++ b/scfs-api-service/src/main/java/com/czcb/scfs/api/service/v1/loan/model/RepayResponse.java @@ -0,0 +1,37 @@ +package com.czcb.scfs.api.service.v1.loan.model; + +import com.czcb.scfs.api.core.ApiResponse; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +/** + * @author wangwei + * @date 2024/3/20 + */ +@Data +public class RepayResponse implements ApiResponse { + /** + * 000000:表示成功 + */ + @SerializedName("recode") + private String recode; + + /** + * 结果信息 + */ + @SerializedName("recode_Info") + private String recodeInfo; + + /** + * 系统日期(YYYY-MM-DD) + */ + @SerializedName("sys_date") + private String sysDate; + + /** + * 系统时间(YYYY-MM-DD hh:mm:ss) + */ + @SerializedName("sys_time") + private String sysTime; + +} diff --git a/scfs-api-test/src/test/java/com/czcb/scfs/api/test/ApiGatewayTest.java b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/ApiGatewayTest.java index ea6e0b3..8c0d52e 100644 --- a/scfs-api-test/src/test/java/com/czcb/scfs/api/test/ApiGatewayTest.java +++ b/scfs-api-test/src/test/java/com/czcb/scfs/api/test/ApiGatewayTest.java @@ -1,10 +1,14 @@ package com.czcb.scfs.api.test; import com.czcb.scfs.api.service.health.EchoService; +import com.czcb.scfs.api.service.v1.account.AccountService; +import com.czcb.scfs.api.service.v1.account.model.QueryBalanceRequest; +import com.czcb.scfs.api.service.v1.account.model.QueryBalanceResponse; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; +import java.util.UUID; /** * @author wangwei @@ -16,8 +20,25 @@ class ApiGatewayTest { @Resource private EchoService echoService; + @Resource + private AccountService accountService; + @Test void test() { echoService.echo(); } + + @Test + void testQuery() { + QueryBalanceRequest queryBalanceRequest = new QueryBalanceRequest(); + queryBalanceRequest.setChannelNo("1012"); + queryBalanceRequest.setAppNo(""); + queryBalanceRequest.setSerialNo(UUID.randomUUID().toString().replace("-", "")); + queryBalanceRequest.setAccountNo("1012230221000010"); + queryBalanceRequest.setRelationAcct("1"); + queryBalanceRequest.setTransDate("2024-03-20"); + + QueryBalanceResponse response = accountService.queryBalance(queryBalanceRequest); + System.out.println(response); + } }