通联签约支持临时表数据签约

This commit is contained in:
gityjf 2021-02-09 09:32:29 +08:00
parent a74155dbf2
commit ddf68ea50a
7 changed files with 124 additions and 81 deletions

View File

@ -65,7 +65,6 @@
</div>
</div>
<div class="item col-xs-12">
<span class="intelligent-label f-fl"><b class="ftx04">*</b>手机号:</span>
<div class="f-fl item-ifo">
@ -77,8 +76,6 @@
<span class="intelligent-label f-fl"><b class="ftx04">*</b>证件号码:</span>
<div class="f-fl item-ifo">
<input type="text" name="idCard" class="txt03 f-r3 required" onkeyup="validateIdCard();" data-valid="isNonEmpty||isSame:certIdShort" data-error="身份证号不能为空||身份证号不一致" tabindex="2" id="idCard" />
<span class="ie8 icon-close close hide"></span>
<label class="icon-sucessfill blank hide"></label>
<label class="focus" id="validateCard">请填写身份证后六位</label>
<label class="focus valid"></label>
</div>
@ -88,10 +85,12 @@
<%-- <input type="hidden" name="certId" value="${certId}" id="certId">
<input type="hidden" name="contractNumber" value="${contractNumber}" id="contractNumber">
<input type="hidden" name="userName" value="${userName}" id="userName">
<input type="hidden" name="accNumber" value="${accNumber}" id="accNumber">
<input type="hidden" name="phoneNumber" value="${phoneNumber}" id="phoneNumber"> --%>
<input type="hidden" name="accNumber" value="${accNumber}" id="accNumber"> --%>
<input type="hidden" name="phoneNumber" value="${phoneNumber}" id="phoneNumber">
<input type="hidden" name="projectId" value="${projectId}" id="projectId">
<input type="hidden" name="flowunid" value="${flowunid}" id="flowunid">
<input type="hidden" name="signType" value="${signType}" id="signType">
<input type="hidden" name="signSource" value="${signSource}" id="signSource">
<div class="item col-xs-12">
<span class="intelligent-label f-fl">&nbsp;</span>
<div class="f-fl item-ifo">
@ -163,15 +162,25 @@
$("#btn_part2").click(function(){
if(!verifyCheck._click()) return;
var projectId = $.trim($("#projectId").val());
var flowunid = $.trim($("#flowunid").val());
var signSource = $.trim($("#signSource").val());
//var contractNumber = encodeURI($.trim($("#contractNumber").val()));
var verifyNo = $.trim($("#verifyNo").val());
var signType = $.trim($("#signType").val());
var phoneNumber = $.trim($("#phoneNumber").val());
$.ajax({
type : "POST",
url : "sign",
async : true,
dataType: "json",
data : {"method":"allinPaySigning","projectId":projectId,"verCode":verifyNo,"signType":signType},
data : {"method":"allinPaySigning",
"projectId":projectId,
"flowunid":flowunid,
"signSource":signSource,
"verCode":verifyNo,
"phoneNumber":phoneNumber,
"signType":signType
},
success : function(data) {
if("success" == data.message){
$(".part2").hide();

View File

@ -117,7 +117,9 @@
if (b.code) {
$("#verifyYz").click(function() {
var projectId = $.trim($("#projectId").val());
var flowunid = $.trim($("#flowunid").val());
var signType = $.trim($("#signType").val());
var signSource = $.trim($("#signSource").val());
$.ajax({
type : "POST",
url : "sign",
@ -126,6 +128,8 @@
data : {
"method":"allinPaySendMessages",
"projectId":projectId,
"flowunid":flowunid,
"signSource":signSource,
"signType":signType
},
success : function(data) {
@ -136,7 +140,7 @@
d._sendVerify();
return true;
}else{
alert("短信验证码发送失败,请稍后再试");
alert(data.message||"短信验证码发送失败,请稍后再试");
return false;
}
},

View File

@ -67,7 +67,6 @@ public class AllinpayServiceImpl implements AllinpayService {
map.put("phoneNumber", phoneNumber);
map.put("userName", userName);
map.put("accNumber", accNumber);
map.put("phoneNumber", phoneNumber);
map.put("certId", certId);
map.put("subjectid", subjectid);
return map;

View File

@ -10,7 +10,6 @@ import com.amarsoft.app.lc.util.DateAssistant;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectManager;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.util.DataConvert;
import com.amarsoft.awe.util.ASResultSet;
import com.amarsoft.awe.util.SqlObject;
import com.amarsoft.awe.util.Transaction;
@ -24,36 +23,39 @@ import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@WebServlet(urlPatterns = {"/allinpay/sign"})
public class AllinpayServlet extends BaseServlet {
private static final long serialVersionUID = 1L;
private AllinpayProperties factory;
private AllinpayService allinpayService = new AllinpayServiceImpl();
// 通联卡扣短信发送
public String allinPaySendMessages(HttpServletRequest request, HttpServletResponse response)
throws MalformedURLException, Exception {
public String allinPaySendMessages(HttpServletRequest request, HttpServletResponse response) throws Exception {
String signType = request.getParameter("signType");
String projectId = request.getParameter("projectId");
if (signType.equals("YCcollect")) {
// return new YCPaySignServlet().ycDXNotice(request, response, getSignObj(projectId));
return "/error.jsp";
}
String flowunid = request.getParameter("flowunid");
String signSource = request.getParameter("signSource");
Map<String, String> msg = new HashMap<>();
msg.put("message", "error");
Map<String, String> xmlMap = allinpayService.allinPaySendMessages(projectId);
String phoneNumber = xmlMap.get("phoneNumber");
String subjectid = xmlMap.get("subjectid");
factory = new AllinpayProperties(subjectid);
SignDto signObj = getSignObj(projectId, flowunid);
if (signType.equals("YCcollect")) {
// return new YCPaySignServlet().ycDXNotice(request, response, getSignObj(projectId));
msg.put("message", "渠道错误");
response.getWriter().write(JSON.toJSONString(msg));
return null;
}
String phoneNumber = signObj.getPhoneNumber();
AllinpayProperties factory = new AllinpayProperties(signSource);
Map<String, String> xmlMap = new HashMap<>();
xmlMap.put("phoneNumber", phoneNumber);
xmlMap.put("userName", signObj.getUserName());
xmlMap.put("accNumber", signObj.getAccNumber());
xmlMap.put("certId", signObj.getCertId());
Map<String, String> map = factory.allinPaySendMessages(xmlMap);
if (!"success".equals(map.get("message"))) {
@ -66,10 +68,12 @@ public class AllinpayServlet extends BaseServlet {
AipgRsp rsp = XmlParser.parseRsp(responseContent);
InfoRsp infoRsp = rsp.getINFO();
FAGRARET ret = (FAGRARET) rsp.trxObj();
SqlObject sqlObject = null;
boolean isSucc = false; //短信发送状态
msg.put("message", infoRsp.getERR_MSG());
if ("0000".equals(infoRsp.getRET_CODE())) {
String retCode = ret.getRET_CODE();
if (retCode != null && "0000".equals(retCode)) {
isSucc = true;
msg.put("message", "success");
String reqSn = infoRsp.getREQ_SN();
Cookie[] cookies = request.getCookies();
@ -81,19 +85,17 @@ public class AllinpayServlet extends BaseServlet {
}
cookie.setMaxAge(60 * 10);
response.addCookie(cookie);
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
sqlObject.setParameter("customerLaunchTime", time);
sqlObject.setParameter("projectId", projectId);
} else {
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
sqlObject.setParameter("customerLaunchTime", time);
sqlObject.setParameter("requestContent", requestContent);
sqlObject.setParameter("responseContent", responseContent);
sqlObject.setParameter("projectId", projectId);
msg.put("message", ret.getERR_MSG());
}
}
SqlObject sqlObject = null;
if (isSucc) {
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
sqlObject.setParameter("customerLaunchTime", time);
sqlObject.setParameter("projectId", projectId);
} else {
String sql = "UPDATE LC_CARD_TLSIGN SET CUSTOMER_LAUNCH_TIME=:customerLaunchTime,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
@ -104,6 +106,7 @@ public class AllinpayServlet extends BaseServlet {
}
allinpayService.update(sqlObject);
}
String message = JSON.toJSONString(msg);
response.getWriter().write(message);
return null;
@ -112,22 +115,19 @@ public class AllinpayServlet extends BaseServlet {
// 通联卡扣协议签约
public String allinPaySigning(HttpServletRequest request, HttpServletResponse response) throws Exception {
String signType = request.getParameter("signType");
String signSource = request.getParameter("signSource");
String projectId = request.getParameter("projectId");
if (signType.equals("YCcollect")) {
// return new YCPaySignServlet().ycDXSign(request, response, getSignObj(projectId));
return "/error.jsp";
}
String phoneNumber = request.getParameter("phoneNumber");
Map<String, String> msg = new HashMap<>();
msg.put("message", "error");
if (signType.equals("YCcollect")) {
// return new YCPaySignServlet().ycDXSign(request, response, getSignObj(projectId));
msg.put("message", "渠道错误");
response.getWriter().write(JSON.toJSONString(msg));
return null;
}
String verCode = request.getParameter("verCode");
Map<String, String> messageMap = allinpayService.allinPaySigning(projectId);
String phoneNumber = messageMap.get("phoneNumber");
String subjectid = messageMap.get("subjectid");
factory = new AllinpayProperties(subjectid);
String time = DateAssistant.getTodayNow();
Cookie[] cookies = request.getCookies();
Cookie cookie = AllinpayUtil.getCookie(phoneNumber, cookies);
if (cookie == null) {
@ -140,6 +140,9 @@ public class AllinpayServlet extends BaseServlet {
Map<String, String> mapXml = new HashMap<>();
mapXml.put("reqSn", reqSn);
mapXml.put("verCode", verCode);
//调用签约接口
AllinpayProperties factory = new AllinpayProperties(signSource);
Map<String, String> map = factory.allinPaySigning(mapXml);
if (!"success".equals(map.get("message"))) {
@ -148,31 +151,35 @@ public class AllinpayServlet extends BaseServlet {
} else {
String requestContent = map.get("request");
String responseContent = map.get("response");
String time = DateAssistant.getTodayNow();
AipgRsp rsp = XmlParser.parseRsp(responseContent);
InfoRsp infoRsp = rsp.getINFO();
SqlObject sqlObject = null;
//签约成功返回值,失败不返回
String agrmNo = null;
boolean isSucc = false;
if ("0000".equals(infoRsp.getRET_CODE())) {
FAGRCRET ret = (FAGRCRET) rsp.trxObj();
String retCode = ret.getRET_CODE();
if (retCode != null && "0000".equals(retCode)) {
isSucc = true;
agrmNo = ret.getAGRMNO();
msg.put("message", "success");
String agrmNo = ret.getAGRMNO();
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,AGRMNO=:agrmno,SIGN_STATUS=:signStatus WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
sqlObject.setParameter("signTime", time);
sqlObject.setParameter("agrmno", agrmNo);
sqlObject.setParameter("signStatus", "sign_status2");
sqlObject.setParameter("projectId", projectId);
} else {
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,SIGN_STATUS=:signStatus,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
sqlObject.setParameter("signTime", time);
sqlObject.setParameter("signStatus", "sign_status3");
sqlObject.setParameter("requestContent", requestContent);
sqlObject.setParameter("responseContent", responseContent);
sqlObject.setParameter("projectId", projectId);
msg.put("msg", ret.getERR_MSG());
}
} else {
msg.put("msg", infoRsp.getERR_MSG());
}
SqlObject sqlObject = null;
if (isSucc) {
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,AGRMNO=:agrmno,SIGN_STATUS=:signStatus WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
sqlObject.setParameter("signTime", time);
sqlObject.setParameter("agrmno", agrmNo);
sqlObject.setParameter("signStatus", "sign_status2");
sqlObject.setParameter("projectId", projectId);
} else {
String sql = "UPDATE LC_CARD_TLSIGN SET SIGN_TIME=:signTime,SIGN_STATUS=:signStatus,REQUEST_CONTENT=:requestContent,RESPONSE_CONTENT=:responseContent WHERE PROJECT_ID=:projectId";
sqlObject = new SqlObject(sql);
@ -181,7 +188,6 @@ public class AllinpayServlet extends BaseServlet {
sqlObject.setParameter("requestContent", requestContent);
sqlObject.setParameter("responseContent", responseContent);
sqlObject.setParameter("projectId", projectId);
msg.put("msg", infoRsp.getERR_MSG());
}
allinpayService.update(sqlObject);
}
@ -194,9 +200,13 @@ public class AllinpayServlet extends BaseServlet {
public String allinPaySign(HttpServletRequest request, HttpServletResponse response) {
String errorPage = "/error.jsp";
try {
String projectId = DataConvert.toString(request.getParameter("con"));
SignDto signObj = getSignObj(projectId);
String userName = "", phoneNumber = "", accNumber = "", certId = "", collectType = "";
String signSource = request.getParameter("signSource");
// projectIdflowunid 同时有值,customer_account_temp数据签约
// projectId 有值,customer_account数据签约
String projectId = request.getParameter("projectId");
String flowunid = request.getParameter("flowunid");
SignDto signObj = getSignObj(projectId, flowunid);
String userName = "", phoneNumber = "", accNumber = "", certId = "", collectType = "", queryId = "";
if (signObj != null) {
userName = signObj.getUserName();
phoneNumber = signObj.getPhoneNumber();
@ -211,22 +221,23 @@ public class AllinpayServlet extends BaseServlet {
return errorPage;
}
if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(phoneNumber) || StringUtils.isEmpty(accNumber) || StringUtils.isEmpty(certId) || StringUtils.isEmpty(collectType)) {
logger.error("" + projectId + "】信息不完整:userName=" + userName + ",phoneNumber=" + phoneNumber + "accNumber=" + accNumber + "certId=" + certId + "collectType=" + collectType);
logger.error("" + queryId + "】信息不完整:userName=" + userName + ",phoneNumber=" + phoneNumber + "accNumber=" + accNumber + "certId=" + certId + "collectType=" + collectType);
request.setAttribute("state", "500");
request.setAttribute("title", "服务器内部异常");
request.setAttribute("message", "您的信息不完整,请联系业务人员");
return errorPage;
}
BizObjectManager bomLDC = JBOFactory.getBizObjectManager("jbo.app.tenwa.calc.LC_CARD_TLSIGN");
BizObject ldc = bomLDC.createQuery("O.PROJECT_ID=:PROJECT_ID").setParameter("PROJECT_ID", projectId).getSingleResult(true);
if (ldc == null) {
BizObject ldc = bomLDC.createQuery("O.PROJECT_ID=:projectId").setParameter("projectId", projectId).getSingleResult(true);
if (Objects.isNull(ldc)) {
ldc = bomLDC.newObject();
ldc.setAttributeValue("PROJECT_ID", projectId);
ldc.setAttributeValue("sign_type", collectType);
ldc.setAttributeValue("SIGN_TYPE", collectType);
ldc.setAttributeValue("SIGN_STATUS", "sign_status1");
ldc.setAttributeValue("SIGN_TIME", DateAssistant.getTodayNow());
bomLDC.saveObject(ldc);
} else if ("sign_status2".equals(ldc.getAttribute("SIGN_STATUS").toString())) {
logger.error("" + projectId + "】无签约业务需求");
logger.error("" + queryId + "】无签约业务需求");
request.setAttribute("state", "404");
request.setAttribute("title", "UH OH!页面丢失");
request.setAttribute("message", "已签约,不能重复签约");
@ -236,8 +247,10 @@ public class AllinpayServlet extends BaseServlet {
request.setAttribute("phoneNumber", phoneNumber);
request.setAttribute("accNumber", accNumber);
request.setAttribute("certId", certId);
request.setAttribute("projectId", projectId);
request.setAttribute("signType", collectType);
request.setAttribute("signSource", signSource);
request.setAttribute("projectId", projectId);
request.setAttribute("flowunid", flowunid);
String userNameShort = "*" + userName.substring(1, userName.length());
String phoneNumberShort = "*****" + phoneNumber.substring(phoneNumber.length() - 4);
@ -263,28 +276,34 @@ public class AllinpayServlet extends BaseServlet {
* 获取前台展示业务数据
*
* @param projectId
* @param flowunid
* @return
* @throws Exception
*/
private SignDto getSignObj(String projectId) throws Exception {
private SignDto getSignObj(String projectId, String flowunid) throws Exception {
Transaction Sqlca = null;
SignDto signDto = null;
try {
Sqlca = Transaction.createTransaction(JBOFactory.createJBOTransaction());
String sql = "SELECT ca.account customername,ca.mobile phonenumber,ca.acc_number accNumber,ca.certid certId,ca.collect_type collectType FROM lb_project_info lpi JOIN customer_account ca ON ca.project_id=lpi.ID WHERE lpi.id=:Id limit 1";
ASResultSet res = Sqlca.getASResultSet(new SqlObject(sql).setParameter("Id", projectId));
String queryId = projectId;
String sql = "SELECT ca.account customername,ca.mobile phonenumber,ca.acc_number accNumber,ca.certid certId,ca.collect_type collectType FROM customer_account ca WHERE ca.project_id=:queryId ";
if (StringUtils.isNotBlank(flowunid)) {
queryId = flowunid;
sql = "SELECT ca.account customername,ca.mobile phonenumber,ca.acc_number accNumber,ca.certid certId,ca.collect_type collectType FROM customer_account_temp ca WHERE ca.flowunid=:queryId ";
}
ASResultSet res = Sqlca.getASResultSet(new SqlObject(sql).setParameter("queryId", queryId));
if (res.next()) {
String userName = res.getString("customername");
String phoneNumber = res.getString("phonenumber");
String accNumber = res.getString("accNumber");
String certId = res.getString("certId");
String collectType = res.getString("collectType");
signDto = new SignDto(userName, phoneNumber, certId, accNumber, collectType);
signDto = new SignDto(userName, phoneNumber, certId, accNumber, collectType, queryId);
}
Sqlca.commit();
} catch (Exception e) {
e.printStackTrace();
Sqlca.rollback();
throw e;
}
return signDto;
}

View File

@ -11,16 +11,19 @@ public class SignDto {
private String certId;
private String collectType;
private String accNumber;
//数据查询id (临时表取值flowunid 正式表取值projectId)
private String queryId;
public SignDto() {
}
public SignDto(String userName, String phoneNumber, String certId, String accNumber, String collectType) {
public SignDto(String userName, String phoneNumber, String certId, String accNumber, String collectType ,String queryId) {
this.userName = userName;
this.phoneNumber = phoneNumber;
this.certId = certId;
this.accNumber = accNumber;
this.collectType = collectType;
this.queryId = queryId;
}
public String getUserName() {
@ -42,4 +45,12 @@ public class SignDto {
public String getCollectType() {
return collectType;
}
public String getQueryId() {
return queryId;
}
public void setQueryId(String queryId) {
this.queryId = queryId;
}
}

View File

@ -38,14 +38,14 @@ public class AllinpayProperties {
public AllinpayProperties(String channel) {
logger.info("ͨÁªÁ´½ÓÇþµÀ£º"+channel);
if(channel.equals(MultiSubjectUtil.SZSUBJECTID)) {
if(channel.equals(MultiSubjectUtil.SZ)) {
this.allinPayMerchantId=ConfigConstant.SZ_allinPayMerchantId;
this.allinPayUsername=ConfigConstant.SZ_allinPayUsername;
this.allinPayUserpass=ConfigConstant.SZ_allinPayUserpass;
this.allinPayPfxpass=ConfigConstant.SZ_allinPayPfxpass;
this.allinPayPathpfx=ConfigConstant.SZ_allinPayPathpfx;
this.allinBusinessCode=ConfigConstant.SZ_allinBusinessCode;
}else if(channel.equals(MultiSubjectUtil.TJSUBJECTID)) {
}else if(channel.equals(MultiSubjectUtil.TJ)) {
this.allinPayMerchantId=ConfigConstant.TJ_allinPayMerchantId;
this.allinPayUsername=ConfigConstant.TJ_allinPayUsername;
this.allinPayUserpass=ConfigConstant.TJ_allinPayUserpass;

View File

@ -1,7 +1,8 @@
package com.tenwa.util;
public class MultiSubjectUtil {
public static final String SZ="sz";//深圳
public static final String TJ="tj";//天津
public static final String SZSUBJECTID="aa740e4111c111eaaa0000163e0e11e6";//深圳主体标识
public static final String SZSUBJECTNAME="安鹏国际融资租赁(深圳)有限公司";//深圳主体名称
public static final String TJSUBJECTID="d989246c11c111eaaa0000163e0e11e6";//天津主体标识