use of com.itrus.portal.exception.UserInfoServiceException in project portal by ixinportal.
the class PersonAppController method personApp.
@RequestMapping("/personApp")
@ResponseBody
public Map<String, Object> personApp(@RequestBody String params, HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> retMap = new HashMap<String, Object>();
retMap.put("retCode", 0);
JSONObject jsonObject = JSON.parseObject(params);
String method = jsonObject.getString("method");
// 获取认证项(新)
if (method.equals("getItems")) {
AppServiceExample as = new AppServiceExample();
AppServiceExample.Criteria criteria2 = as.or();
criteria2.andAppServiceIdEqualTo(jsonObject.getString("serviceId"));
AppService apps = appService.selectOneByExample(as);
if (null == apps) {
retMap.put("retCode", "0");
retMap.put("retMsg", "serviceId有误");
} else if (apps.getIsAppServiceStatus() != 1) {
retMap.put("retCode", "0");
retMap.put("retMsg", "服务已关闭");
} else {
retMap.put("retCode", "1");
PersonalServiceAuthentication ps = personalServiceAuthenticationService.selectById(apps.getServiceConfigId());
retMap.put("items", ps.getServiceAuthenticationItem());
}
} else // 根据手机号获取用户信息
if (method.equals("personInfo")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
// 根据用户id获取银行卡信息,返回最新认证的银行卡卡号
BankcardInfoExample example = new BankcardInfoExample();
BankcardInfoExample.Criteria criteria = example.or();
criteria.andUniqueIdEqualTo(personInfo.getId());
example.setOrderByClause("create_time asc");
List<BankcardInfo> bcs = personCertificationService.getBankcardList(example);
retMap.put("bankNo", null);
if (bcs.size() > 0) {
BankcardInfo bc = bcs.get(bcs.size() - 1);
retMap.put("bankNo", bc.getBankNo());
}
// 用户姓名,身份证号,实名认证情况
retMap.put("personId", personInfo.getId());
retMap.put("realName", personInfo.getRealName());
retMap.put("idCode", personInfo.getIdCode());
retMap.put("mPhone", personInfo.getmPhone());
if (null == personInfo.getBareheadedImg()) {
retMap.put("certified", 0);
} else {
retMap.put("certified", 1);
}
// 用户可用的认证
ProductExample ex1 = new ProductExample();
ProductExample.Criteria crt1 = ex1.or();
crt1.andProjectEqualTo(personInfo.getProject());
List<Product> products = personalReviewService.getProductsByProject(ex1);
for (int i = 0; i < products.size(); i++) {
Certification auth = personalReviewService.getCertification(products.get(i).getAuthentication());
if ((auth.getCertItems().contains("0"))) {
retMap.put("cert1", products.get(i).getId());
} else {
retMap.put("cert2", products.get(i).getId());
}
}
retMap.put("retCode", 1);
} else // 查询手机号是否存在
if (method.equals("check")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
retMap.put("mPhone", jsonObject.getString("mPhone"));
if (null != personInfo) {
retMap.put("retCode", 1);
} else {
return retMap;
}
} else // 发送动态验证码
if (method.equals("sendCode")) {
if (StringUtils.isBlank(jsonObject.getString("mPhone"))) {
retMap.put("retMsg", "手机号不能为空");
return retMap;
}
try {
// DTM表示短信模版类型为‘动态码’。
dynamicCodeService.sendCode(jsonObject.getString("mPhone"), sysconfigService.getPersonProject(), "DTM");
retMap.put("retCode", 1);
retMap.put("retMsg", "验证码已成功发送");
} catch (UserInfoServiceException e) {
retMap.put("retMsg", e.getMessage());
return retMap;
}
} else // 手机号验证,通过后在数据库生成用户,密码固定为"password",通过第三方接入实际上不需要密码
if (method.equals("register")) {
try {
// 验证动态码,
if (!dynamicCodeService.verifyCode(jsonObject.getString("mPhone"), jsonObject.getString("code"))) {
// 验证码不通过
retMap.put("retMsg", "动态码验证失败");
return retMap;
} else {
// 验证手机号是否已经注册过用户
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
if (null != personInfo) {
retMap.put("retMsg", "该手机号已注册,跳转主页面");
retMap.put("retCode", 1);
return retMap;
} else {
// 注册用户
// 101L为暂定写死的项目id
personInfo = personCertificationService.registerPersonInfo(jsonObject.getString("mPhone"), "password");
// 记录系统日志
String info = jsonObject.getString("mPhone") + "个人用户注册成功";
LogUtil.syslog(sqlSession, "注册个人用户", info);
retMap.put("retCode", 1);
retMap.put("mPhone", jsonObject.getString("mPhone"));
}
}
} catch (UserInfoServiceException e) {
retMap.put("retMsg", e.getMessage());
return retMap;
} catch (Exception e) {
retMap.put("retMsg", "出现未知异常,请联系管理员处理");
String info = jsonObject.getString("mPhone") + "注册失败,原因:" + e.getMessage();
LogUtil.syslog(sqlSession, "注册个人用户", info);
return retMap;
}
} else // 银行卡预留手机验证
if (method.equals("verifyB")) {
try {
// 验证动态码,
if (!dynamicCodeService.verifyCode(jsonObject.getString("mPhone"), jsonObject.getString("code"))) {
// 验证码不通过
retMap.put("retMsg", "动态码验证失败");
return retMap;
} else {
retMap.put("retCode", 1);
}
} catch (Exception e) {
retMap.put("retMsg", e.getMessage());
return retMap;
}
} else // 银行卡认证详情页面,传该用户认证过的银行卡列表
if (method.equals("bcInfo")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
BankcardInfoExample example = new BankcardInfoExample();
BankcardInfoExample.Criteria criteria = example.or();
criteria.andUniqueIdEqualTo(personInfo.getId());
example.setOrderByClause("create_time asc");
List<BankcardInfo> bcs = personCertificationService.getBankcardList(example);
retMap.put("bcs", bcs);
ProductExample ex1 = new ProductExample();
ProductExample.Criteria crt1 = ex1.or();
crt1.andProjectEqualTo(personInfo.getProject());
List<Product> products = personalReviewService.getProductsByProject(ex1);
for (int i = 0; i < products.size(); i++) {
Certification auth = personalReviewService.getCertification(products.get(i).getAuthentication());
if (!(auth.getCertItems().contains("0"))) {
retMap.put("product", products.get(i));
}
}
} else // 身份认证详情页面
if (method.equals("details")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
retMap.put("details", personInfo);
retMap.put("photo", "idCertification/app/img/" + (personInfo.getId()).toString());
retMap.put("front", "idCertification/app/front/img/" + (personInfo.getId()).toString());
retMap.put("back", "idCertification/app/back/img/" + (personInfo.getId()).toString());
} else // 进入身份认证页面
if (method.equals("idAuthPage")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
retMap.put("details", personInfo);
retMap.put("cert1", Long.parseLong(jsonObject.getString("cert1")));
String items = personalReviewService.getCertificationItems(Long.parseLong(jsonObject.getString("cert1")));
retMap.put("authItems1", items);
} else // 认证+存储身份认证信息
if (method.equals("idAuthentication")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
// 得到当前产品信息
Product product = productService.getProductById(Long.parseLong(jsonObject.getString("cert1")));
// 判断是否已经存在订单
List list = personalBillService.selectPersonalBillByPersonId(1, personInfo.getId(), product.getId(), 8);
PersonalBill personalBill = null;
if (list.size() == 0) {
// 产生新订单
personalBill = personalBillService.saveBill(personInfo.getId(), personInfo.getmPhone(), product.getId(), 1, product.getProject(), 1, product.getPrice(), personInfo.getId(), 3);
} else {
personalBill = (PersonalBill) list.get(0);
}
// 调用人像认证接口
String appId = sysconfigService.getPersonAppid();
String personUrl = sysconfigService.getPersonUrl();
String str = personalService.personal(jsonObject.getString("Content-Signature"), appId, jsonObject.getString("realName"), jsonObject.getString("idCode"), jsonObject.getString("bhImg"), personUrl);
JSONObject jasonObject = JSONObject.parseObject(str);
Map map = (Map) jasonObject;
String status = (String) map.get("status");
try {
if (status.equals("200")) {
File bhPhoto = personInfoService.saveBareheadedImgApp(jsonObject.getString("bhImg"));
File frontPhoto = personInfoService.saveFrongtImg(jsonObject.getString("frontImg"));
File backPhoto = personInfoService.saveBackImg(jsonObject.getString("backImg"));
if (bhPhoto != null && bhPhoto.isFile()) {
personInfo.setBareheadedImg(bhPhoto.getName());
personInfo.setBareheadedImgHash(HMACSHA1.genSha1HashOfFile(bhPhoto));
}
if (frontPhoto != null && frontPhoto.isFile()) {
personInfo.setFrontImg(frontPhoto.getName());
personInfo.setFrontImgHash(HMACSHA1.genSha1HashOfFile(frontPhoto));
}
if (backPhoto != null && backPhoto.isFile()) {
personInfo.setBackImg(backPhoto.getName());
personInfo.setBackImgHash(HMACSHA1.genSha1HashOfFile(backPhoto));
}
personInfo.setRealName(jsonObject.getString("realName"));
personInfo.setPersonName(jsonObject.getString("realName"));
personInfo.setIdCode(jsonObject.getString("idCode"));
personInfoService.updateByPersonInfo(personInfo);
// 修改订单信息
personalBill.setIdCode(jsonObject.getString("idCode"));
personalBill.setRealName(jsonObject.getString("realName"));
if (bhPhoto != null && bhPhoto.isFile()) {
personalBill.setBareheadedImg(bhPhoto.getName());
personalBill.setBareheadedImgHash(HMACSHA1.genSha1HashOfFile(bhPhoto));
}
personalBill.setBillStatus(8);
personalBill.setCheckTime(new Date());
personalBillService.updateByPersonalBill(personalBill);
// 生成认证记录
personalReviewLogService.saveReviewLog(1, null, 1, null, personalBill.getId(), personInfo.getId(), null);
// 添加系统日志
retMap.put("retCode", "1");
LogUtil.syslog(sqlSession, "个人实名认证认证通过", "产品ID" + jsonObject.getString("cert1") + "个人用户手机号:" + personInfo.getmPhone() + "订单ID:" + personalBill.getBillId());
} else {
if ("201".equals(status)) {
retMap.put("retMsg", map.get("message"));
// 生成认证记录
personalReviewLogService.saveReviewLog(1, null, 2, map.get("message").toString(), personalBill.getId(), personInfo.getId(), null);
} else if ("205".equals(status)) {
retMap.put("retMsg", map.get("error"));
// 生成认证记录
personalReviewLogService.saveReviewLog(1, null, 2, map.get("error").toString(), personalBill.getId(), personInfo.getId(), null);
}
// 认证失败修改订单状态
personalBill.setBillStatus(4);
personalBillService.updateByPersonalBill(personalBill);
// 添加系统日志
LogUtil.syslog(sqlSession, "个人实名认证认证失败", "产品ID" + personalBill.getProduct() + "订单ID:" + personalBill.getBillId());
}
} catch (Exception e) {
// TODO: handle exception
retMap.put("retMsg", "出现未知异常,请联系管理员处理");
String info = jsonObject.getString("realName") + "认证失败,原因:" + e.getMessage();
LogUtil.syslog(sqlSession, "个人实名认证", info);
return retMap;
}
} else // 进入银行卡认证页面
if (method.equals("bcAuthPage")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone(jsonObject.getString("mPhone"));
retMap.put("details", personInfo);
retMap.put("cert2", Long.parseLong(jsonObject.getString("cert2")));
String items = personalReviewService.getCertificationItems(Long.parseLong(jsonObject.getString("cert2")));
retMap.put("authItems2", items);
} else // 认证+存储银行卡认证信息
if (method.equals("bcAuthentication")) {
PersonInfo personInfo = personCertificationService.getPersonInfoByMphone((jsonObject.getString("mPhone")));
// 判断有没有认证过该银行卡
BankcardInfoExample example = new BankcardInfoExample();
BankcardInfoExample.Criteria criteria = example.or();
criteria.andBankNoEqualTo(jsonObject.getString("bankNo"));
BankcardInfo bc = personCertificationService.getBankCard(example);
if (null != bc) {
retMap.put("retCode", "0");
retMap.put("retMsg", "该银行卡已认证");
return retMap;
}
// 得到当前产品信息
Product product = productService.getProductById(Long.parseLong(jsonObject.getString("cert2")));
// 判断是否已经存在订单
List list = personalBillService.selectPersonalBillByPersonId(2, personInfo.getId(), product.getId(), 8);
PersonalBill personalBill = null;
if (list.size() == 0) {
// 产生新订单
personalBill = personalBillService.saveBill(personInfo.getId(), personInfo.getmPhone(), product.getId(), 2, product.getProject(), 1, product.getPrice(), personInfo.getId(), 3);
} else {
personalBill = (PersonalBill) list.get(0);
}
String status = "";
Map map = null;
// 调用银行卡认证
if (jsonObject.getString("4elements").equals("1")) {
String appId = sysconfigService.getPersonAppid();
String personUrl = sysconfigService.getPersonUrl();
String str = personalService.pbankreal(jsonObject.getString("Content-Signature"), appId, jsonObject.getString("realName"), jsonObject.getString("idCode"), jsonObject.getString("bankNo"), jsonObject.getString("rPhone"), "1", personUrl);
retMap.put("retCode", 1);
JSONObject jasonObject = JSONObject.parseObject(str);
map = (Map) jasonObject;
status = (String) map.get("status");
}
if (jsonObject.getString("4elements").equals("0")) {
// 调用银行卡认证接口
String appId = sysconfigService.getPersonAppid();
String personUrl = sysconfigService.getPersonUrl();
String str = personalService.pbankreal(jsonObject.getString("Content-Signature"), appId, jsonObject.getString("realName"), jsonObject.getString("idCode"), jsonObject.getString("bankNo"), personUrl);
JSONObject jasonObject = JSONObject.parseObject(str);
map = (Map) jasonObject;
status = (String) map.get("status");
}
PersonInfo personInfo1 = personInfoService.getSelectById(personInfo.getId());
// 因个人银行卡无法通过验证,测试用,所有银行卡都默认通过
BankcardInfo bank = bankcardInfoService.saveBankcardInfo(jsonObject.getString("realName"), jsonObject.getString("rPhone"), jsonObject.getString("idCode"), jsonObject.getString("bankNo"), personInfo.getId(), jsonObject.getString("bankName"));
// 认证成功修改订单信息
personalBill.setBankName(jsonObject.getString("bankName"));
personalBill.setRealName(jsonObject.getString("realName"));
personalBill.setBillStatus(8);
personalBill.setIdCode(jsonObject.getString("idCode"));
personalBill.setCheckTime(new Date());
personalBillService.updateByPersonalBill(personalBill);
if (null != jsonObject.getString("realName")) {
personInfo.setRealName(jsonObject.getString("realName"));
personInfo.setPersonName(jsonObject.getString("realName"));
}
if (null != jsonObject.getString("idCode")) {
personInfo.setIdCode(jsonObject.getString("idCode"));
personInfoService.updateByPersonInfo(personInfo);
}
retMap.put("retCode", "1");
// 生成认证记录
personalReviewLogService.saveReviewLog(1, null, 1, null, personalBill.getId(), personInfo.getId(), bank.getId());
LogUtil.syslog(sqlSession, "银行卡认证送审成功", "产品ID" + jsonObject.getString("cert2") + "订单ID:" + personalBill.getBillId() + "个人用户手机号:" + personInfo.getmPhone());
/* try {
if (status.equals("200")) {
BankcardInfo bank = bankcardInfoService.saveBankcardInfo(jsonObject.getString("realName"), jsonObject.getString("rPhone"),
jsonObject.getString("idCode"), jsonObject.getString("bankNo"), personInfo.getId(), jsonObject.getString("bankName"));
//认证成功修改订单信息
personalBill.setBankNo(jsonObject.getString("bankName"));
personalBill.setRealName(jsonObject.getString("realName"));
personalBill.setBillStatus(8);
personalBill.setIdCode(jsonObject.getString("idCode"));
personalBill.setCheckTime(new Date());
personalBillService.updateByPersonalBill(personalBill);
if (null != jsonObject.getString("realName")) {
personInfo.setRealName(jsonObject.getString("realName"));
personInfo.setPersonName(jsonObject.getString("realName"));
}
if (null != jsonObject.getString("idCode")) {
personInfo.setIdCode(jsonObject.getString("idCode"));
personInfoService.updateByPersonInfo(personInfo);
}
retMap.put("retCode", "1");
//生成认证记录
personalReviewLogService.saveReviewLog(1, null, 1, null, personalBill.getId(), personInfo.getId(), bank.getId());
LogUtil.syslog(sqlSession, "银行卡认证送审成功", "产品ID" + jsonObject.getString("cert2")+ "订单ID:" + personalBill.getBillId()
+ "个人用户手机号:" + personInfo.getmPhone());
}
else{
if("201".equals(status)){
retMap.put("retMsg", map.get("message"));
}else if("205".equals(status)){
retMap.put("retMsg", map.get("error"));
}
// 添加系统日志
LogUtil.syslog(sqlSession, "银行卡认证送审失败", "产品ID" + personalBill.getProduct()
+ "订单ID:" + personalBill.getBillId());
//认证失败修改订单状态
personalBill.setBillStatus(4);
personalBillService.updateByPersonalBill(personalBill);
//生成认证记录
personalReviewLogService.saveReviewLog(1, null, 2, map.get("error").toString(), personalBill.getId(), personInfo.getId(), null);
}
}
catch (Exception e) {
// TODO: handle exception
retMap.put("retMsg", "出现未知异常,请联系管理员处理");
String info = jsonObject.getString("realName") + "认证失败,原因:" + e.getMessage();
LogUtil.syslog(sqlSession, "银行卡认证", info);
return retMap;
}*/
}
return retMap;
}
use of com.itrus.portal.exception.UserInfoServiceException in project portal by ixinportal.
the class APIService method entAuth.
/**
* 提交企业认证申请
*
* @param authHmac
* hmac签名值,采用HmacSHA1算法
* @param appId
* 应用标识
* @param productId
* 项目产品标识
* @param orderNumber
* 申请流水号,审核拒绝修改提交时必填 (创建申请为空,修改申请不为空)
* @param enterpriseType
* 企业类型 1.企业,2.个体工商户,3.事业单位/政府机关
* @param isThreeInOne
* 是否三证合一
* @param enterpriseName
* 企业名称,事业单位名称
* @param licenseNo
* 营业执照注册号或统一社会信用代码,事业单位法人证书编号
* @param orgCode
* 组织机构代码(三证合一时非必填)
* @param taxNo
* 税务登记证号码(三证合一时非必填,或根据业务需要选填)
* @param legalName
* 法定代表人姓名(根据业务需要选填)
* @param legalCardType
* 证件类型(1代表身份证,2护照,3其他)
* @param legalIdCardNo
* 证件号码
* @param agentName
* 代理人姓名
* @param agentPhone
* 代理人手机号
* @param agentEmail
* 代理人邮箱
* @param agentTelephone
* 代理人固定电话(非必填)
* @param agentCardType
* 证件类型(1代表身份证,2护照,3其他)
* @param agentIdCardNo
* 证件号码
* @return status 1: 表示处理正常, billId: 订单编号, orderNumber: 申请流水号 status 0:
* 表示处理失败, message: 失败原因
*/
@PostMapping(value = "/auth/entAuth")
@ResponseBody
public Map<String, Object> entAuth(@RequestHeader("Content-Signature") String authHmac, @RequestParam(value = "appId", required = true) String appId, @RequestParam(value = "productId", required = true) String productId, @RequestParam(value = "orderNumber", required = false) String orderNumber, @RequestParam(value = "enterpriseType", required = false) String enterpriseType, @RequestParam(value = "isThreeInOne", required = true) boolean isThreeInOne, @RequestParam(value = "enterpriseName", required = false) String enterpriseName, @RequestParam(value = "licenseNo", required = false) String licenseNo, @RequestParam(value = "orgCode", required = false) String orgCode, @RequestParam(value = "taxNo", required = false) String taxNo, @RequestParam(value = "legalName", required = false) String legalName, @RequestParam(value = "legalCardType", required = false) Integer legalCardType, @RequestParam(value = "legalIdCardNo", required = false) String legalIdCardNo, @RequestParam(value = "agentName", required = false) String agentName, @RequestParam(value = "agentPhone", required = false) String agentPhone, @RequestParam(value = "agentEmail", required = false) String agentEmail, @RequestParam(value = "agentTelephone", required = false) String agentTelephone, @RequestParam(value = "agentCardType", required = false) Integer agentCardType, @RequestParam(value = "agentIdCardNo", required = false) String agentIdCardNo, HttpServletRequest request) {
log.error("【APIService 提交申请日志】appId=" + appId + ",productId=" + productId + ",orderNumber=" + orderNumber + ",enterpriseType=" + enterpriseType + ",isThreeInOne=" + isThreeInOne + ",enterpriseName" + enterpriseName + ",licenseNo=" + licenseNo + ",orgCode=" + orgCode + ",taxNo=" + taxNo + ",legalName=" + legalName + ",legalCardType=" + legalCardType + ",legalIdCardNo=" + legalIdCardNo + ",agentName=" + agentName + ",agentPhone=" + agentPhone + ",agentEmail=" + agentEmail + ",agentTelephone=" + agentTelephone + ",agentCardType=" + agentCardType + ",agentIdCardNo=" + agentIdCardNo);
Map<String, Object> result = new HashMap<String, Object>();
result.put("status", 0);
// 验证参数是否完整
if (StringUtils.isEmpty(authHmac) || StringUtils.isEmpty(appId) || StringUtils.isEmpty(productId) || StringUtils.isEmpty(enterpriseType) || StringUtils.isEmpty(enterpriseName) || StringUtils.isEmpty(licenseNo) || StringUtils.isEmpty(agentName) || StringUtils.isEmpty(agentPhone) || StringUtils.isEmpty(agentEmail)) {
result.put("status", 0);
result.put("message", "提交的参数信息不完整");
return result;
}
// 得到对应产品信息
Product product = productService.getProductById(StringTools.getLong(productId)[0]);
if (product == null) {
result.put("status", 0);
result.put("message", "提交的项目产品标识有误");
return result;
}
// 得到应用信息 改成service
Map<String, ApplicationInfo> appInfoMap = CacheCustomer.getAPP_INFO_MAP();
ApplicationInfo applicationInfo = appInfoMap.get(appId);
if (applicationInfo == null) {
ApplicationInfoExample applicationInfoExample = new ApplicationInfoExample();
ApplicationInfoExample.Criteria appInfoExampleCriteria = applicationInfoExample.createCriteria();
appInfoExampleCriteria.andAppIdEqualTo(appId);
applicationInfo = sqlSession.selectOne("com.itrus.portal.db.ApplicationInfoMapper.selectByExample", applicationInfoExample);
}
if (applicationInfo == null) {
result.put("message", "应用标识不存在");
return result;
}
if (!applicationInfo.getAccessIp().contains(request.getRemoteAddr()) && "1".equals(applicationInfo.getIsIpStatus())) {
result.put("status", -1);
result.put("message", "没有此服务权限");
log.error("APIService_AccsessIp : " + request.getRemoteAddr());
return result;
}
// 验证hmac有效性
try {
String macVal = CertService.hmacSha1(applicationInfo.getSecretKey().getBytes(), (appId + productId + orderNumber + enterpriseType + isThreeInOne + enterpriseName + licenseNo + orgCode + taxNo + legalName + legalCardType + legalIdCardNo + agentName + agentPhone + agentEmail + agentTelephone + agentCardType + agentIdCardNo).getBytes("utf-8"));
// sc.getAddressKey()), false);
if (!authHmac.equals("HMAC-SHA1 " + macVal)) {
result.put("status", -2);
result.put("message", "服务密钥错误");
return result;
}
} catch (Exception e) {
result.put("status", -3);
result.put("message", "Hmac验证错误");
e.printStackTrace();
return result;
}
// orderNumber==null true:新建 , false:审核拒绝修改提交
if (StringUtils.isEmpty(orderNumber)) {
UserInfo userInfo = null;
Certification certification = null;
// 获取产品的认证等级需要认证的项
certification = certificationService.getSelectById(product.getAuthentication());
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
// 判断手机号是否存在
userInfo = userInfoService.getUserInfoByMphone(agentPhone);
if (userInfo != null) {
/*
* result.put("status", 0); result.put("message",
* "该手机号已经存在关联用户"); return result;
*/
} else {
try {
int passNumber = (int) ((Math.random() * 9 + 1) * 10000000);
// 新建用户 随机密码默认
userInfo = userInfoService.registerUserInfo(agentPhone, String.valueOf(passNumber), product.getProject());
} catch (Exception e) {
result.put("status", 0);
result.put("message", "新建用户失败,请重试");
return result;
}
}
/**
* 需要认证的项:0营业执照,1组织机构代码,2税务登记证,3授权书,4法定代表人/经营者 5代理人
*/
Long[] items = StringTools.getLong(certification.getCertItems());
// 保存企业信息
Enterprise enterprise = new Enterprise();
enterprise.setEnterpriseName(enterpriseName);
enterprise.setEnterpriseNature(Integer.parseInt(enterpriseType));
enterprise.setAuthenticationLevel(product.getAuthentication());
enterprise = enterpriseService.saveOrUpdateEnterprise(enterprise);
// 保存代理人信息
userInfo.setEmail(agentEmail);
userInfo.setRealName(agentName);
userInfo = userInfoService.updateUserInfo(userInfo);
// 添加企业-代理人关联关系
userInfoEnterpriseServiceImpl.saveUserInfoEnterprise(userInfo.getId(), enterprise.getId());
// 生成订单
Bill bill = billService.saveBill(userInfo.getId(), enterprise.getId(), product.getId(), null, null, null, null, product.getProject(), 1, product.getPrice(), userInfo.getId(), ComNames.BILL_STATUS_3);
String billId = UniqueIDUtils.genBilUID(bill);
bill.setBillId(billId);
bill.setAppId(appId);
bill.setUid("{}");
bill.setUid0("{}");
bill.setOrderNumber(billId.substring(4, billId.length()));
sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKey", bill);
sqlSession.flushStatements();
// 保持执照证件信息
// 是否有营业执照信息,默认false没有
boolean hasBl = false;
BusinessLicense businessLicense = new BusinessLicense();
OrgCode org = new OrgCode();
TaxRegisterCert taxregisterCert = new TaxRegisterCert();
IdentityCard identityCard = new IdentityCard();
Agent agent = new Agent();
Proxy proxy = new Proxy();
for (Long item : items) {
if (ComNames.BUSINESS_ITEM.equals(item) && !enterprise.getEnterpriseNature().equals(3)) {
// 事业单位不填写营业执照
hasBl = true;
// 设置企业唯一标识
if (enterprise.getEnterpriseNature().equals(1) || enterprise.getEnterpriseNature().equals(2)) {
// 类型为企业和个体工商户:当三证合一时,企业标识为统一社会信用代码;当非三证合一时,企业标识为营业执照注册号;
enterprise.setEnterpriseSn(licenseNo);
}
// 保存营业执照
businessLicense.setEnterpriseName(enterpriseName);
if (isThreeInOne) {
businessLicense.setBusinessType(1);
} else {
businessLicense.setBusinessType(0);
}
businessLicense.setLicenseNo(licenseNo);
businessLicense = businessService.portSaveBusiness(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), businessLicense, null != businessLicense.getId() ? 2 : 1);
} else if (ComNames.ORG_CODE_ITEM.equals(item)) {
if (hasBl && businessLicense.getBusinessType().equals(1))
// 五证合一企业不用提交组织机构代码、税务登记信息
continue;
if (enterprise.getEnterpriseNature().equals(3)) {
// 类型为政府机关/事业单位:企业标识为组织机构代码
enterprise.setEnterpriseSn(orgCode);
}
// 保存组织机构代码
org.setEnterpriseName(enterpriseName);
org.setOrgCode(orgCode);
org = orgCodeService.saveOrgCode(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), org, null != org.getId() ? 2 : 1);
} else if (ComNames.TAX_CERT_ITEM.equals(item)) {
if (hasBl && businessLicense.getBusinessType().equals(1))
// 五证合一企业不用提交组织机构代码、税务登记信息
continue;
// 保存税务登记证
if (enterprise.getEnterpriseNature().equals(3))
// 事业单位不填写税务登记信息
continue;
taxregisterCert.setEnterpriseName(enterpriseName);
taxregisterCert.setCertNo(taxNo);
taxregisterCert = taxCertService.saveTaxCert(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), taxregisterCert, null != taxregisterCert.getId() ? 2 : 1);
} else if (ComNames.IDENTITY_CARD_ITEM.equals(item)) {
// 保存法定代表人
identityCard.setEnterpriseName(enterpriseName);
identityCard.setName(legalName);
identityCard.setCardType(legalCardType);
identityCard.setIdCode(legalIdCardNo);
identityCard = identityCardService.portSaveIdentityCard(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), identityCard, null != identityCard.getId() ? 2 : 1);
} else if (ComNames.AGENT_ITEM.equals(item)) {
// 保存代理人
agent.setEnterpriseName(enterpriseName);
agent.setName(agentName);
agent.setIdCode(agentIdCardNo);
agent.setCardType(agentCardType);
agent = agentService.portSaveAgent(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), agent, null != agent.getId() ? 2 : 1);
} else if (ComNames.PROXY_ITEM.equals(item)) {
// 保存授权书
proxy = proxyService.portSaveProxy(enterprise.getId(), userInfo.getUniqueId(), bill.getId(), userInfo.getId(), proxy);
}
}
// 更新企业唯一标识
enterprise = enterpriseService.updateEnterpriseSn(enterprise);
transactionManager.commit(status);
// 返回第三方数据
result.put("status", 1);
result.put("billId", bill.getBillId());
result.put("orderNumber", bill.getOrderNumber());
// 记录日志
UserLog userlog = new UserLog();
userlog.setProject(userInfo.getProject());
userlog.setType("购买产品");
userlog.setInfo(userInfo.getmPhone() + "购买了" + product.getName() + ",应用标识:" + appId);
userlog.setHostId("未知");
userlog.setSn(null == userInfo.getUniqueId() ? null : userInfo.getUniqueId());
LogUtil.userlog(sqlSession, userlog);
return result;
} catch (Exception e) {
e.printStackTrace();
if (!status.isCompleted())
transactionManager.rollback(status);
UserLog userlog = new UserLog();
userlog.setProject(product.getProject());
userlog.setType("购买产品");
userlog.setInfo("url:/api/auth/search,应用标识:" + appId + ",详细错误:" + e.getMessage());
userlog.setHostId("未知");
userlog.setSn(null == userInfo.getUniqueId() ? null : userInfo.getUniqueId());
LogUtil.userlog(sqlSession, userlog);
if (e.getMessage().contains("请提交完整") || e.getMessage().contains("请确认输入是否有误")) {
result.put("message", e.getMessage());
return result;
}
result.put("message", "服务端出现未知错误,请联系管理员");
return result;
} finally {
if (!status.isCompleted())
transactionManager.rollback(status);
}
} else {
// 提交企业认证申请(审核拒绝修改提交时)
Bill bill = billService.getBillByOrderNumber(orderNumber);
if (bill == null) {
result.put("message", "申请流水号不存在");
return result;
}
UserInfo userInfo = userInfoService.getUserInfoByBillId(bill.getId());
Enterprise enterprise = enterpriseService.getEnterpriseById(bill.getEnterprise());
if (bill.getBillStatus() != ComNames.BILL_STATUS_4) {
result.put("message", "该订单未审核拒绝");
return result;
}
// 根据订单id获取产品需要认证项,
List<String> certItems = sqlSession.selectList("com.itrus.portal.db.CertificationMapper.selectCertItemsByBillId", bill.getId());
if (null == certItems || certItems.isEmpty()) {
result.put("message", "服务端出现异常,请联系管理员");
return result;
}
// 记录旧的企业唯一标识:
String oldEnterpriseSn = enterprise.getEnterpriseSn();
// 设置企业唯一标识
if (enterpriseType.equals(1) || enterpriseType.equals(2)) {
// 类型为企业和个体工商户:当三证合一时,企业标识为统一社会信用代码;当非三证合一时,企业标识为营业执照注册号;
enterprise.setEnterpriseSn(licenseNo);
}
if (enterpriseType.equals(3)) {
// 类型为政府机关/事业单位:企业标识为组织机构代码
enterprise.setEnterpriseSn(orgCode);
}
// 修改企业名称
enterprise.setEnterpriseName(enterpriseName.replace(" ", ""));
// 修改企业性质
enterprise.setEnterpriseNature(Integer.parseInt(enterpriseType));
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
// 将参数传入对象
BusinessLicense businessLicense = new BusinessLicense();
OrgCode orgCd = new OrgCode();
TaxRegisterCert taxregisterCert = new TaxRegisterCert();
IdentityCard identityCard = new IdentityCard();
Agent agent = new Agent();
Proxy proxy = new Proxy();
businessLicense.setEnterpriseName(enterpriseName);
if (isThreeInOne) {
businessLicense.setBusinessType(1);
} else {
businessLicense.setBusinessType(0);
}
businessLicense.setLicenseNo(licenseNo);
orgCd.setEnterpriseName(enterpriseName);
orgCd.setOrgCode(orgCode);
taxregisterCert.setEnterpriseName(enterpriseName);
taxregisterCert.setCertNo(taxNo);
identityCard.setEnterpriseName(enterpriseName);
identityCard.setName(legalName);
identityCard.setCardType(legalCardType);
identityCard.setIdCode(legalIdCardNo);
agent.setEnterpriseName(enterpriseName);
agent.setName(agentName);
agent.setIdCode(agentIdCardNo);
agent.setCardType(agentCardType);
// 删除订单关联的旧认证项,新增订单对应的新认证项
billWebService.portSaveBillAuthenticationItems(certItems.get(0), Integer.parseInt(enterpriseType), bill.getId(), businessLicense, orgCd, taxregisterCert, identityCard, agent, proxy, enterprise, userInfo);
// 3、判断该订单对应的企业的认证项是否为通过,若是通过,则重新设置为不通过
if (null != enterprise.getAuthenticationLevel())
enterprise.setAuthenticationLevel(product.getAuthentication());
if (null != enterprise.getHasBl())
enterprise.setHasBl(null);
if (null != enterprise.getHasOrgCode())
enterprise.setHasOrgCode(null);
if (null != enterprise.getHasTaxCert())
enterprise.setHasTaxCert(null);
if (null != enterprise.getHasIdCard())
enterprise.setHasIdCard(null);
if (null != enterprise.getHasAgent())
enterprise.setHasAgent(null);
sqlSession.update("com.itrus.portal.db.EnterpriseMapper.updateByPrimaryKey", enterprise);
bill.setBillStatus(ComNames.BILL_STATUS_3);
sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective", bill);
transactionManager.commit(status);
// 企业标识改变后,将旧目录中的图片复制到新目录中
if (!oldEnterpriseSn.equals(enterprise.getEnterpriseSn())) {
CopyFile.copyFile(systemConfigService.getTrustDir().getPath() + File.separator + oldEnterpriseSn, systemConfigService.getTrustDir().getPath() + File.separator + enterprise.getEnterpriseSn());
}
// 判断代理人手机号是否存在 true:把全部订单关联到新手机号用户
UserInfo userInfo1 = userInfoService.getUserInfoByMphone(agentPhone);
if (userInfo1 != null) {
BillExample be = new BillExample();
BillExample.Criteria bec = be.createCriteria();
bec.andUniqueIdEqualTo(userInfo.getId());
List<Bill> billList = sqlSession.selectList("com.itrus.portal.db.BillMapper.selectByExample", be);
// 循环修改订单关联的用户信息
for (Bill b : billList) {
b.setUniqueId(userInfo1.getId());
sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective", b);
}
userInfo1.setEnterprise(userInfo.getEnterprise());
sqlSession.update("com.itrus.portal.db.UserInfoMapper.updateByPrimaryKeySelective", userInfo1);
userInfo.setEnterprise(null);
sqlSession.update("com.itrus.portal.db.UserInfoMapper.updateByPrimaryKeySelective", userInfo);
UserinfoEnterpriseExample uee = new UserinfoEnterpriseExample();
UserinfoEnterpriseExample.Criteria ueec = uee.createCriteria();
ueec.andUserInfoEqualTo(userInfo.getId());
List<UserinfoEnterprise> ueList = sqlSession.selectList("com.itrus.portal.db.UserinfoEnterpriseMapper.selectByExample", uee);
for (UserinfoEnterprise ue : ueList) {
ue.setUserInfo(userInfo1.getId());
sqlSession.update("com.itrus.portal.db.UserinfoEnterpriseMapper.updateByPrimaryKeySelective", ue);
}
} else {
userInfo.setmPhone(agentPhone);
sqlSession.update("com.itrus.portal.db.UserInfoMapper.updateByPrimaryKeySelective", userInfo);
}
result.put("status", 1);
result.put("billId", bill.getBillId());
} catch (UserInfoServiceException e) {
if (!status.isCompleted())
transactionManager.rollback(status);
result.put("message", "服务端出现未知错误,请联系管理员");
return result;
} catch (Exception e) {
e.printStackTrace();
if (!status.isCompleted())
transactionManager.rollback(status);
UserLog userlog = new UserLog();
userlog.setType("修改订单");
userlog.setInfo("url:/api/auth/search,应用标识:" + appId + ",详细错误:" + e.getMessage());
userlog.setHostId("未知");
userlog.setProject(userInfo.getProject());
LogUtil.userlog(sqlSession, userlog);
result.put("message", "服务端出现未知错误,请联系管理员");
if (e.getMessage().contains("有误")) {
result.put("message", e.getMessage());
}
return result;
} finally {
if (!status.isCompleted())
transactionManager.rollback(status);
}
return result;
}
}
use of com.itrus.portal.exception.UserInfoServiceException in project portal by ixinportal.
the class APIService method entAuth1.
/*
* @PostMapping(value= "/auth/entAuthPay") public String entAuthPay(
*
* @RequestHeader("Content-Signature") String authHmac,
*
* @RequestParam("appId") String appId,
*
* @RequestParam("productId") String productId,
*
* @RequestParam("orderNumber") String orderNumber,
*
* @RequestParam("enterpriseType") String enterpriseType,
*
* @RequestParam("isThreeInOne") boolean isThreeInOne,
*
* @RequestParam("enterpriseName") String enterpriseName,
*
* @RequestParam("licenseNo") String licenseNo,
*
* @RequestParam("orgCode") String orgCode,
*
* @RequestParam("taxNo") String taxNo,
*
* @RequestParam("legalName") String legalName,
*
* @RequestParam("legalCardType") Integer legalCardType,
*
* @RequestParam("legalIdCardNo") String legalIdCardNo,
*
* @RequestParam("agentName") String agentName,
*
* @RequestParam("agentPhone") String agentPhone,
*
* @RequestParam("agentEmail") String agentEmail,
*
* @RequestParam("agentTelephone")String agentTelephone,
*
* @RequestParam("agentCardType") Integer agentCardType,
*
* @RequestParam("agentIdCardNo")String agentIdCardNo, HttpServletRequest
* request,Model uiModel){ HttpSession session = request.getSession();
* //新创建订单设置为 代支付状态 if(StringUtils.isEmpty(orderNumber)){
*
* //String authHmac = "123";
*
* Map<String, Object> result = this.entAuth(authHmac, appId, productId,
* orderNumber, enterpriseType, isThreeInOne, enterpriseName , licenseNo,
* orgCode, taxNo, legalName, legalCardType, legalIdCardNo, agentName,
* agentPhone , agentEmail, agentTelephone, agentCardType, agentIdCardNo,
* request);
*
* if(result != null && (int)result.get("status") == 1){ Bill bill =
* billService.getBillByOrderNumber(result.get("orderNumber").toString());
* Product product = sqlSession.selectOne(
* "com.itrus.portal.db.ProductMapper.selectByPrimaryKey",
* bill.getProduct()); uiModel.addAttribute("product", product);
*
* bill.setBillStatus(1); bill.setBillSum(product.getPrice()); sqlSession
* .update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective",
* bill); //uiModel.addAttribute("webbill", bill);
* session.setAttribute("webbill", bill); UserInfo userInfo =
* sqlSession.selectOne(
* "com.itrus.portal.db.UserInfoMapper.selectByPrimaryKey",
* bill.getUniqueId()); session.setAttribute("webuserInfo", userInfo);
* session.setAttribute("webverifyCodeStatus", true);// 通过 if
* (product.getOnpay() != null && product.getOnpay() != ""){ List<Long>
* onlinepays = new ArrayList<Long>(); String[] onpay =
* (product.getOnpay()).split(","); Map<Integer, String> map = new
* HashMap<Integer, String>(); for (int i = 0; i < onpay.length; i++) {
* OnlinePay op = sqlSession .selectOne(
* "com.itrus.portal.db.OnlinePayMapper.selectByPrimaryKey", onpay[i]);
* map.put(op.getSort(), onpay[i]); } Set<Integer> set = map.keySet();
* Object[] obj = set.toArray(); Arrays.sort(obj); for (int i =
* (onpay.length - 1); i >= 0; i--) { String a = map.get(obj[i]);
* onlinepays.add(Long.parseLong(a)); }
*
* Map<Long, OnlinePay> opMap = sqlSession .selectMap(
* "com.itrus.portal.db.OnlinePayMapper.selectByExample", "id");
* uiModel.addAttribute("opMap", opMap); uiModel.addAttribute("onlinepays",
* onlinepays); Map<Long, PayConfig> pcMap = sqlSession .selectMap(
* "com.itrus.portal.db.PayConfigMapper.selectByExample", "id");
* uiModel.addAttribute("pcMap", pcMap); } Enterprise emterprise =
* sqlSession.selectOne(
* "com.itrus.portal.db.EnterpriseMapper.selectByPrimaryKey",
* bill.getEnterprise()); session.setAttribute("webenterprise",
* emterprise);//得到付款方姓名 DigitalCert digitalCert = sqlSession.selectOne(
* "com.itrus.portal.db.DigitalCertMapper.selectByPrimaryKey",
* product.getCert()); uiModel.addAttribute("digitalCert", digitalCert);
* //期限
*
* if(StringUtils.isNotBlank(product.getPay())){ Transfer transfer =
* sqlSession.selectOne(
* "com.itrus.portal.db.TransferMapper.selectByPrimaryKey",
* Long.parseLong(product.getPay())); uiModel.addAttribute("transfer",
* transfer);//银行账户汇款 } return "ixinweb/zhifu"; } return
* "ixinweb/tijiaoshibai"; }else{ return "ixinweb/tijiaoshibai"; } }
*
* @RequestMapping(value = "/to") public String to(){ return
* "ixinweb/apiResult"; }
*/
/**
* 提交企业认证申请(新加)
*
* @param authHmac
* hmac签名值,采用HmacSHA1算法
* @param appId
* 应用标识
* @param productId
* 项目产品标识
* @param orderNumber
* 申请流水号,审核拒绝修改提交时必填 (创建申请为空,修改申请不为空)
* @param enterpriseType
* 企业类型 1.企业,2.个体工商户,3.事业单位/政府机关
* @param isThreeInOne
* 是否三证合一
* @param enterpriseName
* 企业名称,事业单位名称
* @param licenseNo
* 营业执照注册号或统一社会信用代码,事业单位法人证书编号
* @param orgCode
* 组织机构代码(三证合一时非必填)
* @param taxNo
* 税务登记证号码(三证合一时非必填,或根据业务需要选填)
* @param legalName
* 法定代表人姓名(根据业务需要选填)
* @param legalCardType
* 证件类型(1代表身份证,2护照,3其他)
* @param legalIdCardNo
* 证件号码
* @param agentName
* 代理人姓名
* @param agentPhone
* 代理人手机号
* @param agentEmail
* 代理人邮箱
* @param agentTelephone
* 代理人固定电话(非必填)
* @param agentCardType
* 证件类型(1代表身份证,2护照,3其他)
* @param agentIdCardNo
* 证件号码
* @param detailAdds
* 配送地址
* @param certUid
* 特定证书信息
* @param certsize
* 企业用户证书数量
* @param isenterprisecert
* 是否购买企业证书
* @param productType
* 产品业务类型
* @return status 1: 表示处理正常, billId: 订单编号, orderNumber: 申请流水号 status 0:
* 表示处理失败, message: 失败原因
*/
@PostMapping(value = "/auth/entAuth1")
@ResponseBody
public Map<String, Object> entAuth1(@RequestHeader("Content-Signature") String authHmac, @RequestParam(value = "appId", required = true) String appId, @RequestParam(value = "productId", required = true) String productId, @RequestParam(value = "orderNumber", required = false) String orderNumber, @RequestParam(value = "enterpriseType", required = false) String enterpriseType, @RequestParam(value = "isThreeInOne", required = true) boolean isThreeInOne, @RequestParam(value = "enterpriseName", required = false) String enterpriseName, @RequestParam(value = "licenseNo", required = false) String licenseNo, @RequestParam(value = "orgCode", required = false) String orgCode, @RequestParam(value = "taxNo", required = false) String taxNo, @RequestParam(value = "legalName", required = false) String legalName, @RequestParam(value = "legalCardType", required = false) Integer legalCardType, @RequestParam(value = "legalIdCardNo", required = false) String legalIdCardNo, @RequestParam(value = "agentName", required = false) String agentName, @RequestParam(value = "agentPhone", required = false) String agentPhone, @RequestParam(value = "agentEmail", required = false) String agentEmail, @RequestParam(value = "agentTelephone", required = false) String agentTelephone, @RequestParam(value = "agentCardType", required = false) Integer agentCardType, @RequestParam(value = "agentIdCardNo", required = false) String agentIdCardNo, @RequestParam(value = "detailAdds", required = false) String detailAdds, @RequestParam(value = "certUid", required = false) String certUid, @RequestParam(value = "certsize", required = false) Integer certsize, @RequestParam(value = "isenterprisecert", required = false) Boolean isenterprisecert, @RequestParam(value = "courier", required = false) Integer courier, @RequestParam(value = "cost", required = false) Integer cost, /* @RequestParam(value = "productType", required = false)String
* productType,
*/
HttpServletRequest request) {
log.error("【APIService 提交申请日志】appId=" + appId + ",authHmac=" + authHmac + ",productId=" + productId + ",orderNumber=" + orderNumber + ",enterpriseType=" + enterpriseType + ",isThreeInOne=" + isThreeInOne + ",enterpriseName" + enterpriseName + ",licenseNo=" + licenseNo + ",orgCode=" + orgCode + ",taxNo=" + taxNo + ",legalName=" + legalName + ",legalCardType=" + legalCardType + ",legalIdCardNo=" + legalIdCardNo + ",agentName=" + agentName + ",agentPhone=" + agentPhone + ",agentEmail=" + agentEmail + ",agentTelephone=" + agentTelephone + ",agentCardType=" + agentCardType + ",agentIdCardNo=" + agentIdCardNo + ",detailAdds=" + detailAdds + ",certUid=" + certUid + ",certsize=" + certsize + ",courier=" + courier + ",cost=" + cost + ",isenterprisecert" + isenterprisecert);
Map<String, Object> result = new HashMap<String, Object>();
// 验证参数是否完整
if (StringUtils.isEmpty(authHmac) || StringUtils.isEmpty(appId) || StringUtils.isEmpty(productId) || StringUtils.isEmpty(enterpriseType) || StringUtils.isEmpty(enterpriseName) || StringUtils.isEmpty(licenseNo) || /* 营业执照 */
StringUtils.isEmpty(agentName) || StringUtils.isEmpty(agentPhone) || StringUtils.isEmpty(agentEmail)) {
result.put("status", 0);
result.put("message", "提交的参数信息不完整");
return result;
}
log.error("企业名称位数=" + enterpriseName.length());
if (enterpriseName.length() > 32) {
result.put("status", -7);
result.put("message", "企业名称超过32个汉字,请检查企业名称或联系管理员");
return result;
}
// 得到对应产品信息
Product product = productService.getProductById(StringTools.getLong(productId)[0]);
if (product == null) {
result.put("status", 0);
result.put("message", "提交的项目产品标识有误");
return result;
}
DigitalCert dcert = sqlSession.selectOne("com.itrus.portal.db.DigitalCertMapper.selectByPrimaryKey", product.getCert());
if ("3".equals(dcert.getInitBuy())) {
if (null != isenterprisecert) {
if (isenterprisecert == false) {
isenterprisecert = false;
} else {
isenterprisecert = true;
}
} else {
isenterprisecert = true;
}
} else {
if (null != isenterprisecert) {
if (isenterprisecert == false) {
isenterprisecert = false;
} else {
isenterprisecert = true;
}
} else {
isenterprisecert = null;
}
}
if ("2".equals(dcert.getCertType())) {
if (StringUtils.isEmpty(certUid)) {
result.put("status", 0);
result.put("message", "提交的参数信息不完整,证书信息项不能为空");
return result;
}
}
if (StringUtils.isNotEmpty(product.getDelivery())) {
if (StringUtils.isEmpty(detailAdds)) {
result.put("status", 0);
result.put("message", "提交的参数信息不完整,配送地址不能为空");
return result;
}
}
// 得到应用信息 改成service
Map<String, ApplicationInfo> appInfoMap = CacheCustomer.getAPP_INFO_MAP();
ApplicationInfo applicationInfo = appInfoMap.get(appId);
if (applicationInfo == null) {
ApplicationInfoExample applicationInfoExample = new ApplicationInfoExample();
ApplicationInfoExample.Criteria appInfoExampleCriteria = applicationInfoExample.createCriteria();
appInfoExampleCriteria.andAppIdEqualTo(appId);
applicationInfo = sqlSession.selectOne("com.itrus.portal.db.ApplicationInfoMapper.selectByExample", applicationInfoExample);
}
if (applicationInfo == null) {
result.put("status", 0);
result.put("message", "应用标识不存在");
return result;
}
if (!applicationInfo.getAccessIp().contains(request.getRemoteAddr()) && "1".equals(applicationInfo.getIsIpStatus())) {
result.put("status", -1);
result.put("message", "此IP没有此服务权限");
log.error("APIService_AccsessIp : " + request.getRemoteAddr());
return result;
}
// 验证hmac有效性
log.error("打印isenterprisecert=" + isenterprisecert);
try {
if (isenterprisecert != null) {
String macVal = CertService.hmacSha1(applicationInfo.getSecretKey().getBytes(), (appId + productId + orderNumber + enterpriseType + isThreeInOne + enterpriseName + licenseNo + orgCode + taxNo + legalName + legalCardType + legalIdCardNo + agentName + agentPhone + agentEmail + agentTelephone + agentCardType + agentIdCardNo + detailAdds + certUid + certsize + courier + cost + isenterprisecert).getBytes("utf-8"));
if (!authHmac.equals("HMAC-SHA1 " + macVal)) {
result.put("status", -3);
result.put("message", "服务密钥错误");
return result;
}
} else {
String macVal = CertService.hmacSha1(applicationInfo.getSecretKey().getBytes(), (appId + productId + orderNumber + enterpriseType + isThreeInOne + enterpriseName + licenseNo + orgCode + taxNo + legalName + legalCardType + legalIdCardNo + agentName + agentPhone + agentEmail + agentTelephone + agentCardType + agentIdCardNo + detailAdds + certUid + certsize + courier + cost).getBytes("utf-8"));
if (!authHmac.equals("HMAC-SHA1 " + macVal)) {
result.put("status", -3);
result.put("message", "服务密钥错误");
return result;
}
}
// Base64.encode(HMACSHA1.getHmacSHA1(csr+billId+uid+userId,
// sc.getAddressKey()), false);
} catch (Exception e) {
result.put("status", -2);
result.put("message", "Hmac验证错误");
e.printStackTrace();
return result;
}
// orderNumber==null true:新建 , false:审核拒绝修改提交
if (StringUtils.isEmpty(orderNumber)) {
UserInfo userInfo = null;
Certification certification = null;
// 获取产品的认证等级需要认证的项
certification = certificationService.getSelectById(product.getAuthentication());
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
// 判断手机号是否存在
userInfo = userInfoService.getUserInfoByMphone(agentPhone);
if (userInfo != null) {
/*
* result.put("status", 0); result.put("message",
* "该手机号已经存在关联用户"); return result;
*/
} else {
try {
int passNumber = (int) ((Math.random() * 9 + 1) * 10000000);
// 新建用户 随机密码默认
userInfo = userInfoService.registerUserInfo(agentPhone, String.valueOf(passNumber), product.getProject());
} catch (Exception e) {
result.put("status", -4);
result.put("message", "新建用户失败,请重试");
return result;
}
}
/**
* 需要认证的项:0营业执照,1组织机构代码,2税务登记证,3授权书,4法定代表人/经营者 5代理人
*/
if (certification == null) {
result.put("status", -6);
result.put("message", "产品的认证等级未配置需要认证的项");
return result;
}
Long[] items = StringTools.getLong(certification.getCertItems());
// 保存企业信息
Enterprise enterprise = new Enterprise();
enterprise.setEnterpriseName(enterpriseName);
enterprise.setEnterpriseNature(Integer.parseInt(enterpriseType));
enterprise.setAuthenticationLevel(product.getAuthentication());
enterprise = enterpriseService.saveOrUpdateEnterprise(enterprise);
// 保存代理人信息
userInfo.setEmail(agentEmail);
userInfo.setRealName(agentName);
userInfo = userInfoService.updateUserInfo(userInfo);
Delivery deliver = null;
// 判断是否配送
if (StringUtils.isNotEmpty(product.getDelivery())) {
// 保存配送信息
Delivery delivery = new Delivery();
if (courier != null && cost != null) {
delivery.setCourier(courier);
delivery.setCost(cost);
} else {
// 0:1,0:0
String[] deliverPrices = product.getDeliveryPrice().split(",");
for (int j = 0; j < deliverPrices.length; j++) {
// [0]:0,1;[1]:0,0
String[] deliverpi = deliverPrices[j].split(":");
if (Integer.parseInt(deliverpi[0].toString()) != 0) {
String courier1 = deliverpi[0].toString();
String cost1 = deliverpi[1].toString();
delivery.setCourier(Integer.parseInt(courier1));
delivery.setCost(Integer.parseInt(cost1));
}
}
/*String courier1 = product.getDeliveryPrice().split(":")[0];
String cost1 = product.getDeliveryPrice().split(":")[1];
delivery.setCourier(Integer.parseInt(courier1));
delivery.setCost(Integer.parseInt(cost1));*/
}
delivery.setDetailAdds(detailAdds);
delivery.setUserInfo(userInfo.getId());
delivery.setReceiver(agentName);
delivery.setRvPhone(agentPhone);
deliveryService.saveDelivery(userInfo.getId(), agentName, agentPhone, delivery);
deliver = deliveryService.getDelibery(userInfo.getId());
}
/*
String[] uid = {};
JSONArray jsonArray = new JSONArray(product.getCertinfo());
for(int i=0;i<jsonArray.length();i++){
JSONObject jsob = JSONObject.parseObject(jsonArray.get(i).toString());
jsob.getString("inputName");
}*/
// Delivery deliver = deliveryService.getDelibery(userInfo.getId());
// 添加企业-代理人关联关系
userInfoEnterpriseServiceImpl.saveUserInfoEnterprise(userInfo.getId(), enterprise.getId());
// 生成订单
Bill bill = billService.saveBill(userInfo.getId(), enterprise.getId(), product.getId(), null, null, null, null, product.getProject(), 1, product.getPrice(), userInfo.getId(), ComNames.BILL_STATUS_3);
String billId = UniqueIDUtils.genBilUID(bill);
bill.setBillId(billId);
bill.setAppId(appId);
if (deliver != null) {
bill.setDelivery(deliver.getId());
}
if ("2".equals(dcert.getCertType())) {
/*try {
String[] cuid = certUid.split(",");
String s2 = null;
String s3 = null;
JSONArray jsonArray = new JSONArray(product.getCertinfo());
for(int i=0;i<jsonArray.length();i++){
JSONObject jsob = JSONObject.parseObject(jsonArray.get(i).toString());
String iput = jsob.getString("inputName");
System.out.println(iput);
if(iput!=null){
for(int j=0;j<cuid.length;j++){
s2 = ""+iput+"_"+(j+1)+":"+cuid[j]+"";
if(s2!=null){
s2 = ","+iput+"_"+(j+1)+""+":"+""+cuid[j]+"";
}
System.out.println(s2);
}
}
}
s3="{"+s2+"}";*/
// 证书信息项
bill.setUid(certUid);
/*} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
} else {
// 证书信息项
bill.setUid("{}");
}
// bill.setUid("{}");// 证书信息项
bill.setUid0("{}");
bill.setOrderNumber(billId.substring(4, billId.length()));
// 判断证书数量是否为空
if (certsize != null && certsize > 0) {
// 购买数量
bill.setProductNum(certsize);
} else {
// 购买数量
bill.setProductNum(1);
}
bill.setIsenterprisecert(isenterprisecert);
sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKey", bill);
sqlSession.flushStatements();
// 保持执照证件信息
// 是否有营业执照信息,默认false没有
boolean hasBl = false;
BusinessLicense businessLicense = new BusinessLicense();
OrgCode org = new OrgCode();
TaxRegisterCert taxregisterCert = new TaxRegisterCert();
IdentityCard identityCard = new IdentityCard();
Agent agent = new Agent();
Proxy proxy = new Proxy();
for (Long item : items) {
if (ComNames.BUSINESS_ITEM.equals(item) && !enterprise.getEnterpriseNature().equals(3)) {
// 事业单位不填写营业执照
hasBl = true;
// 设置企业唯一标识
if (enterprise.getEnterpriseNature().equals(1) || enterprise.getEnterpriseNature().equals(2)) {
// 类型为企业和个体工商户:当三证合一时,企业标识为统一社会信用代码;当非三证合一时,企业标识为营业执照注册号;
enterprise.setEnterpriseSn(licenseNo);
}
// 保存营业执照
businessLicense.setEnterpriseName(enterpriseName);
if (isThreeInOne) {
businessLicense.setBusinessType(1);
} else {
businessLicense.setBusinessType(0);
}
businessLicense.setLicenseNo(licenseNo);
businessLicense = businessService.portSaveBusiness(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), businessLicense, null != businessLicense.getId() ? 2 : 1);
} else if (ComNames.ORG_CODE_ITEM.equals(item)) {
if (hasBl && businessLicense.getBusinessType().equals(1))
// 五证合一企业不用提交组织机构代码、税务登记信息
continue;
if (enterprise.getEnterpriseNature().equals(3)) {
// 类型为政府机关/事业单位:企业标识为组织机构代码
enterprise.setEnterpriseSn(orgCode);
}
// 保存组织机构代码
org.setEnterpriseName(enterpriseName);
org.setOrgCode(orgCode);
org = orgCodeService.saveOrgCode(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), org, null != org.getId() ? 2 : 1);
} else if (ComNames.TAX_CERT_ITEM.equals(item)) {
if (hasBl && businessLicense.getBusinessType().equals(1))
// 五证合一企业不用提交组织机构代码、税务登记信息
continue;
// 保存税务登记证
if (enterprise.getEnterpriseNature().equals(3))
// 事业单位不填写税务登记信息
continue;
taxregisterCert.setEnterpriseName(enterpriseName);
taxregisterCert.setCertNo(taxNo);
taxregisterCert = taxCertService.saveTaxCert(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), taxregisterCert, null != taxregisterCert.getId() ? 2 : 1);
} else if (ComNames.IDENTITY_CARD_ITEM.equals(item)) {
// 保存法定代表人
identityCard.setEnterpriseName(enterpriseName);
identityCard.setName(legalName);
identityCard.setCardType(legalCardType);
identityCard.setIdCode(legalIdCardNo);
identityCard = identityCardService.portSaveIdentityCard(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), identityCard, null != identityCard.getId() ? 2 : 1);
} else if (ComNames.AGENT_ITEM.equals(item)) {
// 保存代理人
agent.setEnterpriseName(enterpriseName);
agent.setName(agentName);
agent.setIdCode(agentIdCardNo);
agent.setCardType(agentCardType);
agent = agentService.portSaveAgent(enterprise.getId(), enterprise.getEnterpriseSn(), bill.getId(), userInfo.getId(), agent, null != agent.getId() ? 2 : 1);
} else if (ComNames.PROXY_ITEM.equals(item)) {
// 保存授权书
proxy = proxyService.portSaveProxy(enterprise.getId(), userInfo.getUniqueId(), bill.getId(), userInfo.getId(), proxy);
}
}
// 更新企业唯一标识
enterprise = enterpriseService.updateEnterpriseSn(enterprise);
transactionManager.commit(status);
// 返回第三方数据
result.put("status", 1);
result.put("billId", bill.getBillId());
result.put("orderNumber", bill.getOrderNumber());
// 记录日志
UserLog userlog = new UserLog();
userlog.setProject(userInfo.getProject());
userlog.setType("购买产品");
userlog.setInfo(userInfo.getmPhone() + "购买了" + product.getName() + ",应用标识:" + appId);
userlog.setHostId("未知");
userlog.setSn(null == userInfo.getUniqueId() ? null : userInfo.getUniqueId());
LogUtil.userlog(sqlSession, userlog);
return result;
} catch (Exception e) {
e.printStackTrace();
if (!status.isCompleted())
transactionManager.rollback(status);
UserLog userlog = new UserLog();
userlog.setProject(product.getProject());
userlog.setType("购买产品");
userlog.setInfo("url:/api/auth/search,应用标识:" + appId + ",详细错误:" + e.getMessage());
userlog.setHostId("未知");
userlog.setSn(null == userInfo.getUniqueId() ? null : userInfo.getUniqueId());
LogUtil.userlog(sqlSession, userlog);
if (e.getMessage().contains("请提交完整") || e.getMessage().contains("请确认输入是否有误")) {
result.put("status", 0);
result.put("message", e.getMessage());
return result;
}
result.put("status", -4);
result.put("message", "服务端出现未知错误,请联系管理员");
return result;
} finally {
if (!status.isCompleted())
transactionManager.rollback(status);
}
} else {
// 提交企业认证申请(审核拒绝修改提交时)
Bill bill = billService.getBillByOrderNumber(orderNumber);
if (bill == null) {
result.put("status", -5);
result.put("message", "申请流水号不存在");
return result;
}
UserInfo userInfo = userInfoService.getUserInfoByBillId(bill.getId());
Enterprise enterprise = enterpriseService.getEnterpriseById(bill.getEnterprise());
if (bill.getBillStatus() != ComNames.BILL_STATUS_4) {
result.put("status", -5);
result.put("message", "该订单未审核拒绝");
return result;
}
// 根据订单id获取产品需要认证项,
List<String> certItems = sqlSession.selectList("com.itrus.portal.db.CertificationMapper.selectCertItemsByBillId", bill.getId());
if (null == certItems || certItems.isEmpty()) {
result.put("status", -4);
result.put("message", "服务端出现异常,请联系管理员");
return result;
}
// 记录旧的企业唯一标识:
String oldEnterpriseSn = enterprise.getEnterpriseSn();
// 设置企业唯一标识
if (enterpriseType.equals(1) || enterpriseType.equals(2)) {
// 类型为企业和个体工商户:当三证合一时,企业标识为统一社会信用代码;当非三证合一时,企业标识为营业执照注册号;
enterprise.setEnterpriseSn(licenseNo);
}
if (enterpriseType.equals(3)) {
// 类型为政府机关/事业单位:企业标识为组织机构代码
enterprise.setEnterpriseSn(orgCode);
}
// 修改企业名称
enterprise.setEnterpriseName(enterpriseName.replace(" ", ""));
// 修改企业性质
enterprise.setEnterpriseNature(Integer.parseInt(enterpriseType));
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
// 将参数传入对象
BusinessLicense businessLicense = new BusinessLicense();
OrgCode orgCd = new OrgCode();
TaxRegisterCert taxregisterCert = new TaxRegisterCert();
IdentityCard identityCard = new IdentityCard();
Agent agent = new Agent();
Proxy proxy = new Proxy();
businessLicense.setEnterpriseName(enterpriseName);
if (isThreeInOne) {
businessLicense.setBusinessType(1);
} else {
businessLicense.setBusinessType(0);
}
businessLicense.setLicenseNo(licenseNo);
orgCd.setEnterpriseName(enterpriseName);
orgCd.setOrgCode(orgCode);
taxregisterCert.setEnterpriseName(enterpriseName);
taxregisterCert.setCertNo(taxNo);
identityCard.setEnterpriseName(enterpriseName);
identityCard.setName(legalName);
identityCard.setCardType(legalCardType);
identityCard.setIdCode(legalIdCardNo);
agent.setEnterpriseName(enterpriseName);
agent.setName(agentName);
agent.setIdCode(agentIdCardNo);
agent.setCardType(agentCardType);
// 删除订单关联的旧认证项,新增订单对应的新认证项
billWebService.portSaveBillAuthenticationItems(certItems.get(0), Integer.parseInt(enterpriseType), bill.getId(), businessLicense, orgCd, taxregisterCert, identityCard, agent, proxy, enterprise, userInfo);
// 3、判断该订单对应的企业的认证项是否为通过,若是通过,则重新设置为不通过
if (null != enterprise.getAuthenticationLevel())
enterprise.setAuthenticationLevel(product.getAuthentication());
if (null != enterprise.getHasBl())
enterprise.setHasBl(null);
if (null != enterprise.getHasOrgCode())
enterprise.setHasOrgCode(null);
if (null != enterprise.getHasTaxCert())
enterprise.setHasTaxCert(null);
if (null != enterprise.getHasIdCard())
enterprise.setHasIdCard(null);
if (null != enterprise.getHasAgent())
enterprise.setHasAgent(null);
sqlSession.update("com.itrus.portal.db.EnterpriseMapper.updateByPrimaryKey", enterprise);
bill.setBillStatus(ComNames.BILL_STATUS_3);
sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective", bill);
transactionManager.commit(status);
// 企业标识改变后,将旧目录中的图片复制到新目录中
if (!oldEnterpriseSn.equals(enterprise.getEnterpriseSn())) {
CopyFile.copyFile(systemConfigService.getTrustDir().getPath() + File.separator + oldEnterpriseSn, systemConfigService.getTrustDir().getPath() + File.separator + enterprise.getEnterpriseSn());
}
// 判断代理人手机号是否存在 true:把全部订单关联到新手机号用户
UserInfo userInfo1 = userInfoService.getUserInfoByMphone(agentPhone);
if (userInfo1 != null) {
BillExample be = new BillExample();
BillExample.Criteria bec = be.createCriteria();
bec.andUniqueIdEqualTo(userInfo.getId());
List<Bill> billList = sqlSession.selectList("com.itrus.portal.db.BillMapper.selectByExample", be);
// 循环修改订单关联的用户信息
for (Bill b : billList) {
b.setUniqueId(userInfo1.getId());
sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective", b);
}
userInfo1.setEnterprise(userInfo.getEnterprise());
sqlSession.update("com.itrus.portal.db.UserInfoMapper.updateByPrimaryKeySelective", userInfo1);
userInfo.setEnterprise(null);
sqlSession.update("com.itrus.portal.db.UserInfoMapper.updateByPrimaryKeySelective", userInfo);
UserinfoEnterpriseExample uee = new UserinfoEnterpriseExample();
UserinfoEnterpriseExample.Criteria ueec = uee.createCriteria();
ueec.andUserInfoEqualTo(userInfo.getId());
List<UserinfoEnterprise> ueList = sqlSession.selectList("com.itrus.portal.db.UserinfoEnterpriseMapper.selectByExample", uee);
for (UserinfoEnterprise ue : ueList) {
ue.setUserInfo(userInfo1.getId());
sqlSession.update("com.itrus.portal.db.UserinfoEnterpriseMapper.updateByPrimaryKeySelective", ue);
}
} else {
userInfo.setmPhone(agentPhone);
sqlSession.update("com.itrus.portal.db.UserInfoMapper.updateByPrimaryKeySelective", userInfo);
}
result.put("status", 1);
result.put("billId", bill.getBillId());
} catch (UserInfoServiceException e) {
if (!status.isCompleted())
transactionManager.rollback(status);
result.put("status", -4);
result.put("message", "服务端出现未知错误,请联系管理员");
return result;
} catch (Exception e) {
e.printStackTrace();
if (!status.isCompleted())
transactionManager.rollback(status);
UserLog userlog = new UserLog();
userlog.setType("修改订单");
userlog.setInfo("url:/api/auth/entAuth1,应用标识:" + appId + ",详细错误:" + e.getMessage());
userlog.setHostId("未知");
userlog.setProject(userInfo.getProject());
LogUtil.userlog(sqlSession, userlog);
result.put("status", -4);
result.put("message", "服务端出现未知错误,请联系管理员");
if (e.getMessage().contains("有误")) {
result.put("status", 0);
result.put("message", e.getMessage());
}
return result;
} finally {
if (!status.isCompleted())
transactionManager.rollback(status);
}
return result;
}
}
use of com.itrus.portal.exception.UserInfoServiceException in project portal by ixinportal.
the class ReviewWebController method changeTrust.
// 处理变更实名认证:认证项的id提交了就做变更处理
@RequestMapping("/changeTrust")
@ResponseBody
public Map<String, Object> changeTrust(@RequestParam(value = "billId", required = true) Long billId, @ModelAttribute("businessLicense") BusinessLicense businessLicense, @ModelAttribute("orgCode") OrgCode orgCode, @ModelAttribute("taxregisterCert") TaxRegisterCert taxregisterCert, @ModelAttribute("identityCard") IdentityCard identityCard, @ModelAttribute("agent") Agent agent, HttpSession session) {
Map<String, Object> retMap = new HashMap<String, Object>();
// 0标识失败,1标识成功
retMap.put("retCode", 0);
Boolean verifyCodeStatus = (Boolean) session.getAttribute("webverifyCodeStatus");
UserInfo webuserInfo = (UserInfo) session.getAttribute("webuserInfo");
Enterprise webenterprise = (Enterprise) session.getAttribute("webenterprise");
if (null == verifyCodeStatus || !verifyCodeStatus || null == webuserInfo || null == webenterprise) {
// 登录状态失效,跳转到注册页面
// 2表示登录失效
retMap.put("retCode", 2);
retMap.put("retMsg", "登录已经失效,请重新登录");
return retMap;
}
Bill oldbill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByPrimaryKey", billId);
if (null == oldbill) {
retMap.put("retMsg", "未找到对应的实名信息记录");
return retMap;
}
Project project = billService.getProjectByBillId(billId);
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
// 生成订单
Bill bill = billService.saveBill(webuserInfo.getId(), webenterprise.getId(), oldbill.getProduct(), oldbill.getDelivery(), oldbill.getInvoice(), oldbill.geteInvoice(), oldbill.getUid(), oldbill.getProject(), oldbill.getProductNum(), oldbill.getBillSum(), webuserInfo.getId(), ComNames.BILL_STATUS_3);
try {
if (null != businessLicense && null != businessLicense.getId()) {
// 保存营业执照
businessLicense = businessService.saveBusiness(webenterprise.getId(), webenterprise.getEnterpriseSn(), bill.getId(), webuserInfo.getId(), businessLicense, 1);
}
if (null != orgCode && null != orgCode.getId()) {
// 保存组织机构代码
orgCode = orgCodeService.saveOrgCode(webenterprise.getId(), webenterprise.getEnterpriseSn(), bill.getId(), webuserInfo.getId(), orgCode, 1);
}
if (null != taxregisterCert && null != taxregisterCert.getId()) {
// 保存税务登记证
taxregisterCert = taxCertService.saveTaxCert(webenterprise.getId(), webenterprise.getEnterpriseSn(), bill.getId(), webuserInfo.getId(), taxregisterCert, 1);
}
if (null != identityCard && StringUtils.isNotBlank(identityCard.getEnterpriseName())) {
// 保存法定代表人
identityCard = identityCardService.saveIdentityCard(webenterprise.getId(), webenterprise.getEnterpriseSn(), bill.getId(), webuserInfo.getId(), identityCard, 1);
}
if (null != agent && StringUtils.isNotBlank(agent.getEnterpriseName())) {
// 保存代理人
agent = agentService.saveAgent(webenterprise.getId(), webenterprise.getEnterpriseSn(), bill.getId(), webuserInfo.getId(), agent, 1);
}
// 添加授权书
Proxy proxy = proxyService.getProxyByBillId(oldbill.getId());
proxy.setId(null);
proxy.setBill(bill.getId());
proxy.setUserInfo(webuserInfo.getId());
proxy.setEnterprise(webenterprise.getId());
proxy.setItemStatus(1);
sqlSession.insert("com.itrus.portal.db.ProxyMapper.insert", proxy);
// 将企业的认证等级、认证项设置为null
webenterprise.setAuthenticationLevel(null);
webenterprise.setHasBl(null);
webenterprise.setHasOrgCode(null);
webenterprise.setHasTaxCert(null);
webenterprise.setHasIdCard(null);
webenterprise.setHasAgent(null);
sqlSession.update("com.itrus.portal.db.EnterpriseMapper.updateByPrimaryKey", webenterprise);
session.setAttribute("webenterprise", webenterprise);
transactionManager.commit(status);
retMap.put("retCode", 1);
} catch (UserInfoServiceException e) {
if (!status.isCompleted())
transactionManager.rollback(status);
retMap.put("retMsg", e.getMessage());
return retMap;
} catch (Exception e) {
if (!status.isCompleted())
transactionManager.rollback(status);
UserLog userlog = new UserLog();
userlog.setProject(webuserInfo.getProject());
userlog.setType("变更实名认证");
userlog.setInfo("url:changeTrust,详细错误:" + e.getMessage());
userlog.setHostId("未知");
userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
LogUtil.userlog(sqlSession, userlog);
retMap.put("retMsg", "服务端出现未知错误,请联系管理员");
return retMap;
}
return retMap;
}
use of com.itrus.portal.exception.UserInfoServiceException in project portal by ixinportal.
the class ReviewWebController method updateTrust.
// 处理重新提交实名认证信息:认证项的id提交了才做重新提交处理
@RequestMapping("/updateTrust")
@ResponseBody
public Map<String, Object> updateTrust(@RequestParam(value = "billId", required = true) Long billId, @ModelAttribute("businessLicense") BusinessLicense businessLicense, @ModelAttribute("orgCode") OrgCode orgCode, @ModelAttribute("taxregisterCert") TaxRegisterCert taxregisterCert, @ModelAttribute("identityCard") IdentityCard identityCard, @ModelAttribute("agent") Agent agent, @ModelAttribute("proxy") Proxy proxy, HttpSession session) {
Map<String, Object> retMap = new HashMap<String, Object>();
// 0标识失败,1标识成功
retMap.put("retCode", 0);
Boolean verifyCodeStatus = (Boolean) session.getAttribute("webverifyCodeStatus");
UserInfo webuserInfo = (UserInfo) session.getAttribute("webuserInfo");
Enterprise webenterprise = (Enterprise) session.getAttribute("webenterprise");
if (null == verifyCodeStatus || !verifyCodeStatus || null == webuserInfo || null == webenterprise) {
// 登录状态失效,跳转到注册页面
// 2表示登录失效
retMap.put("retCode", 2);
retMap.put("retMsg", "登录已经失效,请重新登录");
return retMap;
}
Bill bill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByPrimaryKey", billId);
if (null == bill) {
retMap.put("retMsg", "未找到对应的实名信息记录");
return retMap;
}
Project project = billService.getProjectByBillId(billId);
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
// 更新营业执照信息
if (null != businessLicense.getId()) {
businessLicense = businessService.updateBusinessLicense(null, null, businessLicense, 1, webenterprise.getId(), billId, webuserInfo.getId(), webenterprise.getEnterpriseSn());
}
// 更新组织机构代码信息
if (null != orgCode.getId()) {
orgCode = orgCodeService.updateOrgCode(orgCode, 1, webenterprise.getId(), billId, webuserInfo.getId(), webenterprise.getEnterpriseSn());
} else {
// 删除原来的组织机构代码
orgCode = orgCodeService.getOrgCodeByBillId(billId, null);
if (null != orgCode) {
sqlSession.delete("com.itrus.portal.db.OrgCodeMapper.deleteByPrimaryKey", orgCode.getId());
}
}
// 更新税务登记证
if (null != taxregisterCert.getId()) {
taxregisterCert = taxCertService.updateTaxRegisterCert(taxregisterCert, 1, webenterprise.getId(), billId, webuserInfo.getId(), webenterprise.getEnterpriseSn());
} else {
// 删除原来的税务登记证信息
taxregisterCert = taxCertService.getTaxRegisterCertByBillId(billId, null);
if (null != taxregisterCert) {
sqlSession.delete("com.itrus.portal.db.TaxRegisterCertMapper.deleteByPrimaryKey", taxregisterCert.getId());
}
}
// 更新法人信息
if (null != identityCard.getId()) {
identityCard = identityCardService.updateIdentityCard(identityCard, 1, webenterprise.getId(), billId, webuserInfo.getId(), webenterprise.getEnterpriseSn());
}
// 更新代理人信息
if (null != agent.getId()) {
agent = agentService.updateAgent(agent, 1, webenterprise.getId(), billId, webuserInfo.getId(), webenterprise.getEnterpriseSn());
}
// 更新授权书
proxy = proxyService.updateProxy(proxy, 1, webenterprise.getId(), billId, webuserInfo.getId(), webuserInfo.getUniqueId(), project);
// 更新订单状态
bill.setBillStatus(ComNames.BILL_STATUS_3);
sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKey", bill);
transactionManager.commit(status);
retMap.put("retCode", 1);
} catch (UserInfoServiceException e) {
if (!status.isCompleted())
transactionManager.rollback(status);
retMap.put("retMsg", e.getMessage());
return retMap;
} catch (Exception e) {
if (!status.isCompleted())
transactionManager.rollback(status);
UserLog userlog = new UserLog();
userlog.setProject(webuserInfo.getProject());
userlog.setType("重新提交实名认证");
userlog.setInfo("url:updateTrust,详细错误:" + e.getMessage());
userlog.setHostId("未知");
userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
LogUtil.userlog(sqlSession, userlog);
retMap.put("retMsg", "服务端出现未知错误,请联系管理员");
return retMap;
}
return retMap;
}
Aggregations