diff --git a/WebContent/Sign_index.jsp b/WebContent/Sign_index.jsp index a66b6d47f..a380720a5 100644 --- a/WebContent/Sign_index.jsp +++ b/WebContent/Sign_index.jsp @@ -65,7 +65,6 @@ -
*手机号:
@@ -77,8 +76,6 @@ *证件号码:
- -
@@ -88,10 +85,12 @@ <%-- - - --%> + --%> + + +
 
@@ -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(); diff --git a/WebContent/js/jquery/register.js b/WebContent/js/jquery/register.js index a5246f9ae..7b13547e7 100644 --- a/WebContent/js/jquery/register.js +++ b/WebContent/js/jquery/register.js @@ -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; } }, diff --git a/src/com/tenwa/lease/app/allinpay/service/impl/AllinpayServiceImpl.java b/src/com/tenwa/lease/app/allinpay/service/impl/AllinpayServiceImpl.java index 99f074be7..5be8c8f29 100644 --- a/src/com/tenwa/lease/app/allinpay/service/impl/AllinpayServiceImpl.java +++ b/src/com/tenwa/lease/app/allinpay/service/impl/AllinpayServiceImpl.java @@ -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; diff --git a/src/com/tenwa/lease/app/allinpay/servlet/AllinpayServlet.java b/src/com/tenwa/lease/app/allinpay/servlet/AllinpayServlet.java index c82c3ab3a..a7ea1448d 100644 --- a/src/com/tenwa/lease/app/allinpay/servlet/AllinpayServlet.java +++ b/src/com/tenwa/lease/app/allinpay/servlet/AllinpayServlet.java @@ -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 msg = new HashMap<>(); - msg.put("message", "error"); - Map 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 xmlMap = new HashMap<>(); + xmlMap.put("phoneNumber", phoneNumber); + xmlMap.put("userName", signObj.getUserName()); + xmlMap.put("accNumber", signObj.getAccNumber()); + xmlMap.put("certId", signObj.getCertId()); Map 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 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 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 mapXml = new HashMap<>(); mapXml.put("reqSn", reqSn); mapXml.put("verCode", verCode); + + //调用签约接口 + AllinpayProperties factory = new AllinpayProperties(signSource); Map 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"); + // projectId、flowunid 同时有值,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; } diff --git a/src/com/tenwa/lease/app/allinpay/servlet/SignDto.java b/src/com/tenwa/lease/app/allinpay/servlet/SignDto.java index 1686d136e..a338edaf1 100644 --- a/src/com/tenwa/lease/app/allinpay/servlet/SignDto.java +++ b/src/com/tenwa/lease/app/allinpay/servlet/SignDto.java @@ -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; + } } diff --git a/src/com/tenwa/lease/app/allinpay/util/AllinpayProperties.java b/src/com/tenwa/lease/app/allinpay/util/AllinpayProperties.java index c3082b356..f1da5b826 100644 --- a/src/com/tenwa/lease/app/allinpay/util/AllinpayProperties.java +++ b/src/com/tenwa/lease/app/allinpay/util/AllinpayProperties.java @@ -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; diff --git a/src_tenwa/com/tenwa/util/MultiSubjectUtil.java b/src_tenwa/com/tenwa/util/MultiSubjectUtil.java index a7d005a49..90b6446c8 100644 --- a/src_tenwa/com/tenwa/util/MultiSubjectUtil.java +++ b/src_tenwa/com/tenwa/util/MultiSubjectUtil.java @@ -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";//天津主体标识