412 lines
16 KiB
Java
412 lines
16 KiB
Java
package com.tenwa.flow.Bigdata;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
|
||
import jbo.com.tenwa.lease.comm.LB_BAIRONG_BEFORELOAN;
|
||
import jbo.com.tenwa.lease.comm.LB_BAIRONG_LOG;
|
||
import jbo.com.tenwa.lease.comm.LB_BAIRONG_LOGIN;
|
||
import jbo.com.tenwa.lease.comm.LB_BAIRONG_VERIFICATION;
|
||
import net.sf.json.JSONObject;
|
||
|
||
import org.apache.commons.lang.StringUtils;
|
||
|
||
import com.amarsoft.are.jbo.BizObject;
|
||
import com.amarsoft.are.jbo.BizObjectManager;
|
||
import com.amarsoft.are.jbo.JBOFactory;
|
||
import com.amarsoft.are.jbo.JBOTransaction;
|
||
import com.amarsoft.context.ASUser;
|
||
import com.base.util.DateUtil;
|
||
import com.bfd.facade.MerchantServer;
|
||
import com.bfd.util.HttpConnectionManager4;
|
||
import com.bfd.util.MD5Utils;
|
||
import com.tenwa.comm.util.date.DateAssistant;
|
||
import com.tenwa.httpclient.resources.BaiRongPropertiesUtil;
|
||
import com.tenwa.reckon.util.UUIDUtil;
|
||
import com.tenwa.util.MultiSubjectUtil;
|
||
|
||
public class BaiRongVerification {
|
||
//深圳主体信息
|
||
private static String sz_userName=BaiRongPropertiesUtil.get("sz_userName");
|
||
private static String sz_password=BaiRongPropertiesUtil.get("sz_password");
|
||
private static String sz_apiCode=BaiRongPropertiesUtil.get("sz_apiCode");
|
||
private static String sz_loginName=BaiRongPropertiesUtil.get("sz_loginName");
|
||
private static String sz_apiName=BaiRongPropertiesUtil.get("sz_apiName");
|
||
private static String sz_verification=BaiRongPropertiesUtil.get("sz_verification");
|
||
private static String sz_downloadUrl=BaiRongPropertiesUtil.get("sz_downloadUrl");
|
||
private static String sz_downloadPath=BaiRongPropertiesUtil.get("sz_downloadPath");
|
||
|
||
//天津主体信息
|
||
private static String tj_userName=BaiRongPropertiesUtil.get("tj_userName");
|
||
private static String tj_password=BaiRongPropertiesUtil.get("tj_password");
|
||
private static String tj_apiCode=BaiRongPropertiesUtil.get("tj_apiCode");
|
||
private static String tj_loginName=BaiRongPropertiesUtil.get("tj_loginName");
|
||
private static String tj_apiName=BaiRongPropertiesUtil.get("tj_apiName");
|
||
private static String tj_verification=BaiRongPropertiesUtil.get("tj_verification");
|
||
private static String tj_downloadUrl=BaiRongPropertiesUtil.get("tj_downloadUrl");
|
||
private static String tj_downloadPath=BaiRongPropertiesUtil.get("tj_downloadPath");
|
||
|
||
private String subjectId;
|
||
private String flowUnid;
|
||
private String projectId;
|
||
private String contractId;
|
||
private String name;
|
||
private String certid;
|
||
private String phone;
|
||
private String userId;
|
||
|
||
private static MerchantServer ms = new MerchantServer();
|
||
|
||
public String getData(JBOTransaction tx){
|
||
String datePath = DateUtil.getSystemTimeByFormat("yyyy/MM/dd");
|
||
String apiCode = "";
|
||
String url = "";
|
||
String filePath = "";
|
||
String apiName = "";
|
||
String verification = "";
|
||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){//深圳主体
|
||
apiName= sz_apiName ;
|
||
apiCode= sz_apiCode ;
|
||
url = sz_downloadUrl;
|
||
filePath = sz_downloadPath+datePath+"/";
|
||
verification = sz_verification;
|
||
}else if(MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){//天津主体
|
||
apiName= tj_apiName ;
|
||
apiCode=tj_apiCode;
|
||
url = tj_downloadUrl;
|
||
filePath = tj_downloadPath+datePath+"/";
|
||
verification = tj_verification;
|
||
}else{
|
||
System.out.println("主体id="+subjectId);
|
||
return "为找到对应的主体信息!!!";
|
||
}
|
||
String dMessage = this.doIdentityVerification(tx, apiName, apiCode, url, filePath,"0");
|
||
System.out.println("贷前信用数据:"+dMessage);
|
||
String yMessage = this.doIdentityVerification(tx, verification, apiCode, url, filePath,"1");
|
||
System.out.println("验证信用数据:"+yMessage);
|
||
if(dMessage.equals("success") && yMessage.equals("success") ){
|
||
return "success";
|
||
}else {
|
||
return "获取数据失败!";
|
||
}
|
||
|
||
}
|
||
|
||
|
||
//获取贷前校验
|
||
public String doIdentityVerification(JBOTransaction tx,String apiName,String apiCode,String url,String filePath,String sign){
|
||
String swiftNumber = "";
|
||
String fileName = "";
|
||
String code = "" ;
|
||
String messge= "" ;
|
||
String res = "";
|
||
ASUser user = new ASUser(userId);
|
||
|
||
try {
|
||
BizObjectManager manage = null ;
|
||
String logid = UUIDUtil.getUUID();
|
||
JSONObject jsonData = new JSONObject();
|
||
JSONObject reqData = new JSONObject();
|
||
jsonData.put("apiName",apiName);
|
||
//贷前的策略编号(请查看策略配置表)
|
||
if("0".equals(sign)){
|
||
manage = JBOFactory.getBizObjectManager(LB_BAIRONG_BEFORELOAN.CLASS_NAME,tx);
|
||
fileName = name+"的贷前校验";
|
||
reqData.put("strategy_id","STR0030820");
|
||
}else if ("1".equals(sign)){
|
||
manage = JBOFactory.getBizObjectManager(LB_BAIRONG_VERIFICATION.CLASS_NAME,tx);
|
||
fileName = name+"的验证报告";
|
||
reqData.put("conf_id","MCP0030821");
|
||
}
|
||
BizObject bj= manage.createQuery(" flow_unid=:flow_unid ").setParameter("flow_unid", flowUnid).getSingleResult(true);
|
||
String codeStatus = bj == null ? "" : bj.getAttribute("code_status").toString();
|
||
if(!(codeStatus.equals("00")||codeStatus.equals("100002 "))){
|
||
if(bj == null){
|
||
bj = manage.newObject();
|
||
}
|
||
String tokenid = this.getTokenid(tx , user);
|
||
if(tokenid.isEmpty()){
|
||
return "获取tokenid失败!!!";
|
||
}
|
||
jsonData.put("tokenid",tokenid);
|
||
//请求参数 id cell name (如产品文档有其他必传参数按照文档为主)
|
||
reqData.put("id",certid);
|
||
reqData.put("cell",phone);
|
||
reqData.put("name",name);
|
||
jsonData.put("reqData",reqData);
|
||
System.out.println("请求参数:"+jsonData.toString());
|
||
res = ms.getApiData(jsonData.toString(),apiCode);
|
||
if(StringUtils.isNotBlank(res)){
|
||
JSONObject json = JSONObject.fromObject(res);
|
||
code = json.containsKey("code") ? json.getString("code") : "" ;
|
||
if(code.equals("100007")){
|
||
tokenid = this.getTokenid(tx, user);
|
||
jsonData = JSONObject.fromObject(jsonData.toString());
|
||
jsonData.put("tokenid",tokenid);
|
||
res = ms.getApiData(jsonData.toString(),apiCode);
|
||
json = JSONObject.fromObject(res);
|
||
}else if(code.equals("00") || code.equals("100002 ")){
|
||
swiftNumber = JSONObject.fromObject(res).getString("swift_number");
|
||
String download = this.download(tx, user, swiftNumber, apiCode, tokenid, url, filePath, bj ,fileName);
|
||
if(download.indexOf("下载成功")>=0){
|
||
messge = "success";
|
||
}else{
|
||
messge = "下载失败!";
|
||
System.out.println(sign+"类型下载pdf失败!");
|
||
}
|
||
}else{
|
||
System.out.println("返回参数:"+res);
|
||
}
|
||
}
|
||
bj.setAttributeValue("certid", certid);
|
||
bj.setAttributeValue("name", name);
|
||
bj.setAttributeValue("code_status", code);
|
||
bj.setAttributeValue("swift_number", swiftNumber);
|
||
bj.setAttributeValue("log_id", logid);
|
||
bj.setAttributeValue("project_id", projectId);
|
||
bj.setAttributeValue("flow_unid", flowUnid);
|
||
bj.setAttributeValue("subjectId", subjectId);
|
||
bj.setAttributeValue("inputuserid", user.getUserID());
|
||
bj.setAttributeValue("inputorgid", user.getOrgID());
|
||
bj.setAttributeValue("inputtime", DateUtil.getSystemTimeByFormat("yyyy/MM/dd HH:mm:ss"));
|
||
manage.saveObject(bj);
|
||
|
||
}else if (!(bj.getAttribute("dcode_status").toString().equals("00"))){
|
||
String tokenid = this.getTokenid(tx , user);
|
||
if(tokenid.isEmpty()){
|
||
return "获取tokenid失败!!!";
|
||
}
|
||
swiftNumber = bj.getAttribute("swift_number").toString();
|
||
String download = this.download(tx, user, swiftNumber, apiCode, tokenid, url, filePath, bj ,fileName);
|
||
manage.saveObject(bj);
|
||
if(download.indexOf("下载成功")>=0){
|
||
messge = "success";
|
||
}else{
|
||
messge = "下载失败!";
|
||
System.out.println(sign+"类型下载pdf失败!");
|
||
}
|
||
}else{
|
||
return "success";
|
||
}
|
||
//保存日志信息
|
||
BizObjectManager lblManage = JBOFactory.getBizObjectManager(LB_BAIRONG_LOG.CLASS_NAME,tx);
|
||
BizObject lbl = lblManage.newObject();
|
||
lbl.setAttributeValue("id", logid);
|
||
lbl.setAttributeValue("request_content", reqData);
|
||
lbl.setAttributeValue("content_type", sign);
|
||
lbl.setAttributeValue("response_content", res);
|
||
lbl.setAttributeValue("project_id", projectId);
|
||
lbl.setAttributeValue("flow_unid", flowUnid);
|
||
lbl.setAttributeValue("subjectId", subjectId);
|
||
lbl.setAttributeValue("inputuserid", user.getUserID());
|
||
lbl.setAttributeValue("inputorgid", user.getOrgID());
|
||
lbl.setAttributeValue("inputtime", DateUtil.getSystemTimeByFormat("yyyy/MM/dd HH:mm:ss"));
|
||
lblManage.saveObject(lbl);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
messge = "false";
|
||
}
|
||
return messge;
|
||
}
|
||
|
||
public String download(JBOTransaction tx,ASUser user,String swiftNumber,String apiCode,String tokenid,String url,String filePath,BizObject bj,String fileName) throws Exception{
|
||
JSONObject jsonData = new JSONObject();
|
||
jsonData.put("swift_number", swiftNumber);
|
||
String checkCode = getCheckData(jsonData.toString(), apiCode, tokenid);
|
||
|
||
Map<String,Object> paramMap = new HashMap<String,Object>();
|
||
paramMap.put("tokenid", tokenid);
|
||
paramMap.put("apiCode",apiCode);
|
||
paramMap.put("jsonData",jsonData);
|
||
paramMap.put("checkCode",checkCode);
|
||
System.out.println("paramMap->"+paramMap.toString());
|
||
String downFile = HttpConnectionManager4.downFile(url, paramMap,filePath);
|
||
String logid = UUIDUtil.getUUID();
|
||
if(downFile.indexOf("下载成功")>=0){
|
||
bj.setAttributeValue("dcode_status", "00");
|
||
bj.setAttributeValue("file_path", filePath+"/"+swiftNumber+".pdf");
|
||
bj.setAttributeValue("file_name", fileName);
|
||
}else{
|
||
bj.setAttributeValue("dcode_status", downFile);
|
||
System.out.println("下载返回参数:"+downFile);
|
||
}
|
||
bj.setAttributeValue("dlog_id", logid);
|
||
//保存日志信息
|
||
BizObjectManager lblManage = JBOFactory.getBizObjectManager(LB_BAIRONG_LOG.CLASS_NAME,tx);
|
||
BizObject lbl = lblManage.newObject();
|
||
lbl.setAttributeValue("id", logid);
|
||
lbl.setAttributeValue("request_content", paramMap);
|
||
lbl.setAttributeValue("content_type", "d");
|
||
lbl.setAttributeValue("response_content", downFile);
|
||
lbl.setAttributeValue("project_id", projectId);
|
||
lbl.setAttributeValue("flow_unid", flowUnid);
|
||
lbl.setAttributeValue("subjectId", subjectId);
|
||
lbl.setAttributeValue("inputuserid", user.getUserID());
|
||
lbl.setAttributeValue("inputorgid", user.getOrgID());
|
||
lbl.setAttributeValue("inputtime", DateUtil.getSystemTimeByFormat("yyyy/MM/dd HH:mm:ss"));
|
||
lblManage.saveObject(lbl);
|
||
return downFile;
|
||
}
|
||
|
||
private String getCheckData(String jsonData, String apiCode, String tokenId) {
|
||
return MD5Utils.genMd5(jsonData + MD5Utils.genMd5(apiCode + tokenId));
|
||
}
|
||
|
||
//获取tokenid的值
|
||
public String getTokenid(JBOTransaction tx,ASUser user){
|
||
String token="";
|
||
String codeStatus = "";
|
||
String login_res_str = "" ;
|
||
JSONObject reqData = new JSONObject();
|
||
try{
|
||
BizObjectManager lblManage = JBOFactory.getBizObjectManager(LB_BAIRONG_LOGIN.CLASS_NAME,tx);
|
||
BizObject lbl = lblManage.createQuery(" v.ROUND((v.UNIX_TIMESTAMP('"+DateUtil.getSystemTimeByFormat("yyyy/MM/dd HH:mm:ss")+"')-v.UNIX_TIMESTAMP(inputtime))/60)<28 ").getSingleResult(false);
|
||
if( lbl!=null && lbl.getAttribute("tokenid")!=null){
|
||
token = lbl.getAttribute("tokenid").getString();
|
||
}else{
|
||
BizObjectManager lbllManage = JBOFactory.getBizObjectManager(LB_BAIRONG_LOG.CLASS_NAME,tx);
|
||
lbl = lblManage.newObject();
|
||
BizObject lbll = lbllManage.newObject();
|
||
if(MultiSubjectUtil.SZSUBJECTID.equals(subjectId)){//深圳主体
|
||
reqData.put("userName", sz_userName);
|
||
reqData.put("password", sz_password);
|
||
reqData.put("loginName", sz_loginName);
|
||
reqData.put("apiCode", sz_apiCode);
|
||
login_res_str = ms.login(sz_userName,sz_password,sz_loginName,sz_apiCode);
|
||
}else if (MultiSubjectUtil.TJSUBJECTID.equals(subjectId)){//天津主体
|
||
reqData.put("userName", tj_userName);
|
||
reqData.put("password", tj_password);
|
||
reqData.put("loginName", tj_loginName);
|
||
reqData.put("apiCode", tj_apiCode);
|
||
login_res_str = ms.login(tj_userName,tj_password,tj_loginName,tj_apiCode);
|
||
}else{
|
||
System.out.println("主体id="+subjectId);
|
||
return "未找到对应的主体信息!!";
|
||
}
|
||
if(StringUtils.isNotBlank(login_res_str)){
|
||
JSONObject loginJson = JSONObject.fromObject(login_res_str);
|
||
codeStatus = loginJson.getString("code");
|
||
if(loginJson.containsKey("tokenid")){
|
||
token = loginJson.getString("tokenid");
|
||
}else {
|
||
System.out.println("返回结果异常,无token!结果为:"+login_res_str);
|
||
}
|
||
}
|
||
String logid = UUIDUtil.getUUID();
|
||
//保存登录日志
|
||
lbl.setAttributeValue("code_status", codeStatus);
|
||
lbl.setAttributeValue("tokenid", token);
|
||
lbl.setAttributeValue("status_name", "");
|
||
lbl.setAttributeValue("log_id", logid);
|
||
lbl.setAttributeValue("project_id", projectId);
|
||
lbl.setAttributeValue("flow_unid", flowUnid);
|
||
lbl.setAttributeValue("subjectId", subjectId);
|
||
lbl.setAttributeValue("inputuserid", user.getUserID());
|
||
lbl.setAttributeValue("inputorgid", user.getOrgID());
|
||
lbl.setAttributeValue("inputtime", DateUtil.getSystemTimeByFormat("yyyy/MM/dd HH:mm:ss"));
|
||
lblManage.saveObject(lbl);
|
||
//保存日志信息
|
||
lbll.setAttributeValue("id", logid);
|
||
lbll.setAttributeValue("request_content", reqData);
|
||
lbll.setAttributeValue("content_type", "tokenid");
|
||
lbll.setAttributeValue("response_content", login_res_str);
|
||
lbll.setAttributeValue("project_id", projectId);
|
||
lbll.setAttributeValue("flow_unid", flowUnid);
|
||
lbll.setAttributeValue("subjectId", subjectId);
|
||
lbll.setAttributeValue("inputuserid", user.getUserID());
|
||
lbll.setAttributeValue("inputorgid", user.getOrgID());
|
||
lbll.setAttributeValue("inputtime", DateUtil.getSystemTimeByFormat("yyyy/MM/dd HH:mm:ss"));
|
||
lbllManage.saveObject(lbll);
|
||
}
|
||
}catch (Exception e){
|
||
e.printStackTrace();
|
||
}
|
||
return token;
|
||
}
|
||
|
||
public static void main(String[] arg ){
|
||
System.out.println(DateUtil.getSystemTimeByFormat("yyyy/MM/dd HH:mm:ss"));
|
||
System.out.println(DateAssistant.getToday());
|
||
}
|
||
public String getSubjectId() {
|
||
return subjectId;
|
||
}
|
||
|
||
|
||
public void setSubjectId(String subjectId) {
|
||
this.subjectId = subjectId;
|
||
}
|
||
|
||
|
||
public String getFlowUnid() {
|
||
return flowUnid;
|
||
}
|
||
|
||
|
||
public void setFlowUnid(String flowUnid) {
|
||
this.flowUnid = flowUnid;
|
||
}
|
||
|
||
|
||
public String getProjectId() {
|
||
return projectId;
|
||
}
|
||
|
||
|
||
public void setProjectId(String projectId) {
|
||
this.projectId = projectId;
|
||
}
|
||
|
||
|
||
public String getContractId() {
|
||
return contractId;
|
||
}
|
||
|
||
|
||
public void setContractId(String contractId) {
|
||
this.contractId = contractId;
|
||
}
|
||
|
||
|
||
public String getName() {
|
||
return name;
|
||
}
|
||
|
||
|
||
public void setName(String name) {
|
||
this.name = name;
|
||
}
|
||
|
||
|
||
public String getCertid() {
|
||
return certid;
|
||
}
|
||
|
||
|
||
public void setCertid(String certid) {
|
||
this.certid = certid;
|
||
}
|
||
|
||
|
||
public String getPhone() {
|
||
return phone;
|
||
}
|
||
|
||
|
||
public void setPhone(String phone) {
|
||
this.phone = phone;
|
||
}
|
||
|
||
|
||
public String getUserId() {
|
||
return userId;
|
||
}
|
||
|
||
|
||
public void setUserId(String userId) {
|
||
this.userId = userId;
|
||
}
|
||
|
||
|
||
}
|