Search in sources :

Example 21 with DigitalCert

use of com.itrus.portal.db.DigitalCert in project portal by ixinportal.

the class DownLoadCertWebController method downLoadCert.

@RequestMapping("/{id}")
@ResponseBody
public Map<String, Object> downLoadCert(@PathVariable(value = "id") Long id, @RequestParam(value = "uidIdx", required = true) Integer uidIdx, @RequestParam(value = "csr", required = true) String csr, @RequestParam(value = "keySn", required = false) String keySn, HttpSession session) {
    Map<String, Object> retMap = new HashMap<String, Object>();
    retMap.put("retCode", 0);
    UserInfo webuserInfo = (UserInfo) session.getAttribute("webuserInfo");
    Enterprise webenterprise = (Enterprise) session.getAttribute("webenterprise");
    if (null == webuserInfo || null == webenterprise) {
        // 2标识登录已经失效,需跳转到登录页面
        retMap.put("retCode", 2);
        retMap.put("retMsg", "登录状态失效");
        return retMap;
    }
    Bill bill = billService.getBill(id);
    if (null == bill) {
        retMap.put("retMsg", "该订单不存在");
        return retMap;
    }
    // 订单是否为当前用户当前企业
    if (!webuserInfo.getId().equals(bill.getUniqueId()) || !webenterprise.getId().equals(bill.getEnterprise())) {
        retMap.put("retMsg", "您不能操作该订单");
        return retMap;
    }
    // 判断该订单状态是否为待下载,是否已经关联了证书
    List<String> certStatus = new ArrayList<String>();
    certStatus.add(ComNames.CERT_STATUS_1);
    certStatus.add(ComNames.CERT_STATUS_2);
    List<UserCert> userCerts = userCertService.getUserCertByBill(bill.getId(), certStatus);
    if (!bill.getBillStatus().equals(ComNames.BILL_STATUS_13) || !userCerts.isEmpty()) {
        retMap.put("retMsg", "该证书状态为已下载或订单还未审核");
        return retMap;
    }
    Product product = productService.getProduct(bill.getProduct());
    DigitalCert digitalCert = digitalCertService.getDigitalCert(product.getCert());
    RaAccount ra = raAccountService.getRaAccount(product.getRa());
    // 下载证书
    String autoidType = "";
    Integer autoidValue = 0;
    try {
        // 下载证书
        CertInfo racertinfo = downLoadCertService.downLoadCert(product, ra, bill, digitalCert, uidIdx, csr, autoidType, autoidValue);
        // 保存证书
        downLoadCertService.saveCertInfo(racertinfo, bill, ra.getId(), uidIdx, keySn, autoidType, autoidValue);
        // 返回数字证书
        retMap.put("retCode", 1);
        retMap.put("certChain", racertinfo.getCertSignBufP7());
        retMap.put("certSn", racertinfo.getCertSerialNumber());
        retMap.put("certSignBuf", racertinfo.getCertSignBuf());
        retMap.put("certKmcRep1", racertinfo.getCertKmcRep1());
        retMap.put("certKmcRep2", racertinfo.getCertKmcRep2());
        // 加密证书
        retMap.put("encUserCert", racertinfo.getCertSignBufKmc());
        // 记录日志
        UserLog userlog = new UserLog();
        userlog.setProject(webuserInfo.getProject());
        userlog.setType("用户下载证书");
        userlog.setInfo(webenterprise.getEnterpriseName() + "下载证书成功");
        userlog.setHostId("未知");
        userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
        LogUtil.userlog(sqlSession, userlog);
    } catch (Exception e) {
        e.printStackTrace();
        retMap.put("retMsg", e.getMessage());
        // 记录日志
        UserLog userlog = new UserLog();
        userlog.setProject(webuserInfo.getProject());
        userlog.setType("用户下载证书");
        userlog.setInfo("url:downLoadCert,详细错误:" + e.getMessage());
        userlog.setHostId("未知");
        userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
        LogUtil.userlog(sqlSession, userlog);
        return retMap;
    }
    return retMap;
}
Also used : CertInfo(cn.topca.tca.ra.service.CertInfo) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Product(com.itrus.portal.db.Product) UserInfo(com.itrus.portal.db.UserInfo) UserLog(com.itrus.portal.db.UserLog) GenP10Exception(com.itrus.Exception.GenP10Exception) IOException(java.io.IOException) DigitalCert(com.itrus.portal.db.DigitalCert) RaAccount(com.itrus.portal.db.RaAccount) Enterprise(com.itrus.portal.db.Enterprise) Bill(com.itrus.portal.db.Bill) JSONObject(com.alibaba.fastjson.JSONObject) UserCert(com.itrus.portal.db.UserCert) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 22 with DigitalCert

use of com.itrus.portal.db.DigitalCert in project portal by ixinportal.

the class UnlockKeyBillController method zhifuPage.

/**
 * 3进入支付页面
 *
 * @param billId
 * @param request
 * @param uiModel
 * @return
 */
@RequestMapping("/zhifu/{billId}")
public String zhifuPage(@PathVariable("billId") Long billId, @RequestParam(value = "certSn", required = false) String certSn, @RequestParam(value = "keySn", required = false) String keySn, @RequestParam(value = "enterpriseName", required = false) String enterpriseName, HttpServletRequest request, Model uiModel) {
    HttpSession session = request.getSession();
    String ip = request.getRemoteAddr();
    uiModel.addAttribute("ip", ip);
    Bill bill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByPrimaryKey", billId);
    if (null == bill) {
        return "resourceNotFound";
    }
    // 产品
    Product product = sqlSession.selectOne("com.itrus.portal.db.ProductMapper.selectByPrimaryKey", bill.getProduct());
    if (null == product) {
        // 产品不存在
        uiModel.addAttribute("errorMsg", "您购买的产品不存在");
        return ComNames.CLIENTFW_ERRORPAGE;
    }
    if (null == product.getOnpay() && StringUtils.isBlank(product.getPay()) && bill.getBillSum().equals(0.00)) {
        // 跳转到订单支付成功页面,并将订单状态设置为3已支付 待审核
        if (null != product.getKeyUnlockType()) {
            bill = unLockKeyBillService.updateBillStatusWhileHasPay(bill, product);
        } else {
            bill.setBillStatus(ComNames.BILL_STATUS_3);
        }
        sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKey", bill);
        session.setAttribute("webbill", bill);
        if (null != product.getKeyUnlockType()) {
            UserCert userCert = userCertService.selectByPrimaryKey(bill.getUnlockUserCert());
            Enterprise enterprise = enterpriseService.getEnterpriseById(bill.getEnterprise());
            return "redirect:/doUnlockKey/toUnlockKeyPage?" + "billId=" + billId + "&certSn=" + userCert.getCertSn() + "&keySn=" + userCert.getKeySn() + "&enterpriseName=" + enterprise.getEnterpriseName();
        } else {
            return "redirect:/billClient";
        }
    }
    // 获取产品对应的线上支付服务
    if (product.getOnpay() != null && product.getOnpay() != "") {
        List<Long> onlinepays = new ArrayList<Long>();
        String[] onpay = (product.getOnpay()).split(",");
        // 过滤掉不是服务型客户的在线支付
        onpay = onlinePayService.removeOnlinePayWithOutClientFw(onpay);
        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);
    }
    // 获取产品对应的银行汇款服务
    if (!StringUtils.isBlank(product.getPay())) {
        Transfer transfer = sqlSession.selectOne("com.itrus.portal.db.TransferMapper.selectByPrimaryKey", Long.parseLong(product.getPay()));
        uiModel.addAttribute("transfer", transfer);
    }
    if (null != product.getTransferNotes()) {
        product.setTransferNotes(product.getTransferNotes().replace("\r\n", "<br/><span ></span>"));
    }
    // 解锁订单,返回keysn,certsn,enterprisename
    if (null != product.getKeyUnlockType() && (StringUtils.isBlank(keySn) || StringUtils.isBlank(certSn) || StringUtils.isBlank(enterpriseName))) {
        Enterprise enterprise = enterpriseService.getEnterpriseById(bill.getEnterprise());
        enterpriseName = enterprise.getEnterpriseName();
        UserCert userCert = userCertService.selectByPrimaryKey(bill.getUnlockUserCert());
        if (null != userCert && StringUtils.isNotBlank(userCert.getKeySn())) {
            keySn = userCert.getKeySn();
        }
        if (null != userCert && StringUtils.isNotBlank(userCert.getCertSn())) {
            certSn = userCert.getCertSn();
        }
    }
    uiModel.addAttribute("product", product);
    uiModel.addAttribute("certSn", certSn);
    uiModel.addAttribute("keySn", keySn);
    uiModel.addAttribute("enterpriseName", enterpriseName);
    session.setAttribute("webbill", bill);
    if (null != product.getCert()) {
        // 产品关联的数字证书
        DigitalCert digitalCert = sqlSession.selectOne("com.itrus.portal.db.DigitalCertMapper.selectByPrimaryKey", product.getCert());
        // 用于获取产品期限(数字证书的期限)
        uiModel.addAttribute("digitalCert", digitalCert);
    }
    return "clientFW/pay";
}
Also used : PayConfig(com.itrus.portal.db.PayConfig) HashMap(java.util.HashMap) HttpSession(javax.servlet.http.HttpSession) ArrayList(java.util.ArrayList) Product(com.itrus.portal.db.Product) DigitalCert(com.itrus.portal.db.DigitalCert) Bill(com.itrus.portal.db.Bill) Enterprise(com.itrus.portal.db.Enterprise) UserinfoEnterprise(com.itrus.portal.db.UserinfoEnterprise) Transfer(com.itrus.portal.db.Transfer) UserCert(com.itrus.portal.db.UserCert) OnlinePay(com.itrus.portal.db.OnlinePay) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 23 with DigitalCert

use of com.itrus.portal.db.DigitalCert in project portal by ixinportal.

the class APIService method lookup.

/**
 * 证书查询接口
 * @param authHmac
 * @param appId
 * @param billId
 * @param request
 * @return
 */
@PostMapping(value = "/cert/search")
@ResponseBody
public Map<String, Object> lookup(@RequestHeader("Content-Signature") String authHmac, @RequestParam(value = "appId", required = true) String appId, @RequestParam(value = "billId", required = true) String billId, HttpServletRequest request) {
    Map<String, Object> result = new HashMap<String, Object>();
    result.put("status", 0);
    log.error("appId=" + appId + "billId=" + billId);
    // 验证参数是否完整
    if (StringUtils.isEmpty(authHmac) || StringUtils.isEmpty(appId) || StringUtils.isEmpty(billId)) {
        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 + billId).getBytes("utf-8"));
        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;
    }
    BillExample billExample = new BillExample();
    BillExample.Criteria criteria = billExample.or();
    criteria.andBillIdEqualTo(billId);
    Bill bill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByExample", billExample);
    if (bill == null) {
        result.put("message", "没有此订单");
        return result;
    }
    Product product = productService.getProduct(bill.getProduct());
    DigitalCert dcert = sqlSession.selectOne("com.itrus.portal.db.DigitalCertMapper.selectByPrimaryKey", product.getCert());
    List<String> listcert = new ArrayList<String>();
    if ("3".equals(dcert.getCertType())) {
        Integer uidIdx = 1;
        // 用户已经下载过了,再次下载
        boolean downLoadFlag = bill.getBillStatus().equals(ComNames.BILL_STATUS_6) || bill.getBillStatus().equals(ComNames.BILL_STATUS_7) || bill.getBillStatus().equals(ComNames.BILL_STATUS_8);
        if (downLoadFlag) {
            // 根据订单号,找到订单对应的证书信息
            CertBuf certBuf = sqlSession.selectOne("com.itrus.portal.db.CertBufMapper.selectPfxCertByBillId", bill.getId());
            listcert.add(certBuf.getPfxCert());
            result.put("status", 1);
            result.put("pfxData", listcert);
        } else {
            // 用户未下载过,第一次下载
            if (bill.getBillStatus().equals(ComNames.BILL_STATUS_13)) {
                // 查询项目产品
                // Product product = productService.getProduct(bill.getProduct());
                // 企业
                Enterprise enterprise = enterpriseService.getEnterpriseById(bill.getEnterprise());
                // 获取产品、RA配置
                RaAccount ra = raAccountService.getRaAccount(product.getRa());
                // 证书配置
                DigitalCert digitalcert = digitalCertService.getDigitalCert(product.getCert());
                // 下载证书
                String autoidType = "";
                Integer autoidValue = 0;
                String pfxCert = "";
                // 用户ID,用来最终匹配公钥证书和密钥对
                String userid = bill.getBillId() + (Math.random() * 1000 + 9000);
                // TODO 20170410pfx私钥证书保护密码:需要根据产品配置的密码或获取
                String certPass = product.getPassword();
                // 产生CSR证书请求
                String certReqBuf = "";
                // 算法
                String algorithm = digitalCertService.getAlgorithm(digitalcert);
                // 下载证书
                CertInfo racertinfo = null;
                try {
                    certReqBuf = GenUtil.GenP10(userid, "", algorithm);
                    racertinfo = downLoadCertService.downLoadCert(product, ra, bill, digitalcert, uidIdx, certReqBuf, autoidType, autoidValue);
                    // pfxCert = GenUtil.GenPFX(userid, certPass,
                    // racertinfo.getCertSignBuf(), false);
                    // pfxCert = GenUtil2.GenPFX(userid, certPass, racertinfo.getCertSignBuf(), pfxCert, false, enterprise.getEnterpriseName());
                    pfxCert = GenUtil.GenPFX(userid, certPass, racertinfo.getCertSignBuf(), false, enterprise.getEnterpriseName());
                    // 保存证书
                    downLoadCertService.savePfxCertInfo(racertinfo, bill, ra.getId(), uidIdx, "", autoidType, autoidValue, pfxCert);
                    listcert.add(pfxCert);
                    result.put("status", 1);
                    result.put("pfxData", listcert);
                } catch (Exception e) {
                    result.put("status", -1);
                    result.put("message", "pfx证书下载错误" + e.getMessage());
                }
            }
        }
    } else {
        List<UserCert> certlist = userCertService.getUserCertByBill(bill.getId(), null);
        for (UserCert uc : certlist) {
            CertBuf cb = sqlSession.selectOne("com.itrus.portal.db.CertBufMapper.selectByPrimaryKey", uc.getCertBuf());
            listcert.add(cb.getCertBuf());
        }
        if (listcert.size() > 0) {
            result.put("status", 1);
            result.put("cerData", listcert);
        } else {
            result.put("message", "没有查找到相应证书");
        }
    }
    return result;
}
Also used : CertInfo(cn.topca.tca.ra.service.CertInfo) ApplicationInfoExample(com.itrus.portal.db.ApplicationInfoExample) HashMap(java.util.HashMap) ApplicationInfo(com.itrus.portal.db.ApplicationInfo) ArrayList(java.util.ArrayList) Product(com.itrus.portal.db.Product) JSONException(org.json.JSONException) UserInfoServiceException(com.itrus.portal.exception.UserInfoServiceException) DigitalCert(com.itrus.portal.db.DigitalCert) BillExample(com.itrus.portal.db.BillExample) RaAccount(com.itrus.portal.db.RaAccount) Bill(com.itrus.portal.db.Bill) CertBuf(com.itrus.portal.db.CertBuf) Enterprise(com.itrus.portal.db.Enterprise) UserinfoEnterprise(com.itrus.portal.db.UserinfoEnterprise) JSONObject(com.alibaba.fastjson.JSONObject) UserCert(com.itrus.portal.db.UserCert) PostMapping(org.springframework.web.bind.annotation.PostMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 24 with DigitalCert

use of com.itrus.portal.db.DigitalCert 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;
    }
}
Also used : DefaultTransactionDefinition(org.springframework.transaction.support.DefaultTransactionDefinition) HashMap(java.util.HashMap) ApplicationInfo(com.itrus.portal.db.ApplicationInfo) Product(com.itrus.portal.db.Product) TransactionStatus(org.springframework.transaction.TransactionStatus) UserInfo(com.itrus.portal.db.UserInfo) DigitalCert(com.itrus.portal.db.DigitalCert) Proxy(com.itrus.portal.db.Proxy) BillExample(com.itrus.portal.db.BillExample) UserinfoEnterpriseExample(com.itrus.portal.db.UserinfoEnterpriseExample) IdentityCard(com.itrus.portal.db.IdentityCard) ApplicationInfoExample(com.itrus.portal.db.ApplicationInfoExample) Agent(com.itrus.portal.db.Agent) UserLog(com.itrus.portal.db.UserLog) JSONException(org.json.JSONException) UserInfoServiceException(com.itrus.portal.exception.UserInfoServiceException) Certification(com.itrus.portal.db.Certification) UserInfoServiceException(com.itrus.portal.exception.UserInfoServiceException) OrgCode(com.itrus.portal.db.OrgCode) BusinessLicense(com.itrus.portal.db.BusinessLicense) UserinfoEnterprise(com.itrus.portal.db.UserinfoEnterprise) Enterprise(com.itrus.portal.db.Enterprise) UserinfoEnterprise(com.itrus.portal.db.UserinfoEnterprise) Bill(com.itrus.portal.db.Bill) JSONObject(com.alibaba.fastjson.JSONObject) Delivery(com.itrus.portal.db.Delivery) TaxRegisterCert(com.itrus.portal.db.TaxRegisterCert) PostMapping(org.springframework.web.bind.annotation.PostMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 25 with DigitalCert

use of com.itrus.portal.db.DigitalCert in project portal by ixinportal.

the class MakeCertController method list.

@RequestMapping(produces = "text/html")
public String list(@RequestParam(value = "status", required = false) Integer status, @RequestParam(value = "billNo", required = false) String billNo, @RequestParam(value = "keySn", required = false) String keySn, @RequestParam(value = "projectName", required = false) String projectName, @RequestParam(value = "enterpriseName", required = false) String enterpriseName, @RequestParam(value = "queryDate1", required = false) Date queryDate1, @RequestParam(value = "queryDate2", required = false) Date queryDate2, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, @RequestParam(value = "businessType", required = false) Integer businessType, @RequestParam(value = "type", required = false) Integer type, @RequestParam(value = "mcstatus", required = false) String mcstatus, Model uiModel) {
    Map<String, Object> param1 = new HashMap<String, Object>();
    // 管理员项目权限
    Long[] projectsOfAdmin = getProjectLongIdsOfAdmin();
    param1.put("hasProjects", Arrays.asList(projectsOfAdmin));
    if (null == status)
        status = 1;
    if (queryDate1 == null && queryDate2 == null) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.add(Calendar.MILLISECOND, -1);
        queryDate2 = calendar.getTime();
        calendar.add(Calendar.MILLISECOND, 1);
        calendar.add(Calendar.MONTH, -1);
        queryDate1 = calendar.getTime();
    }
    if (page == null || page < 1) {
        page = 1;
    }
    if (size == null || size < 1) {
        size = 10;
    }
    param1.put("queryDate1", queryDate1);
    param1.put("queryDate2", queryDate2);
    if (StringUtils.isNotEmpty(billNo)) {
        param1.put("billNo", "%" + billNo + "%");
    }
    if (StringUtils.isNotEmpty(projectName)) {
        param1.put("projectName", "%" + projectName + "%");
    }
    if (StringUtils.isNotEmpty(enterpriseName)) {
        param1.put("enterpriseName", "%" + enterpriseName + "%");
    }
    if (StringUtils.isNotBlank(keySn))
        param1.put("keySn", "%" + keySn + "%");
    // 待制证
    if ("1".equals(status.toString())) {
        // 已审核,待制证
        param1.put("billStatus", ComNames.BILL_STATUS_5);
        // 按照check_time进行排序
        param1.put("check", 1);
    } else // 已制证
    if ("2".equals(status.toString())) {
        param1.put("billStatus", ComNames.BILL_STATUS_6);
        if (type != null) {
            if (type >= 0 && type < 3) {
                param1.put("initBuy", type);
            }
            if (type == 3) {
                param1.put("updateWay", 0);
            }
        }
        param1.put("businessType", businessType);
    } else // 待更新
    if ("3".equals(status.toString())) {
        // 订单状态是12的时候,表示是待更新的订单;
        param1.put("billStatus", ComNames.BILL_STATUS_12);
    } else // 自动制证
    if ("4".equals(status.toString())) {
        param1.put("initBuy", 1);
        param1.put("businessType", 0);
        param1.put("mcstatus", mcstatus);
        param1.put("billStatus", ComNames.BILL_STATUS_5);
    } else // 待下载
    if ("5".equals(status.toString())) {
        // 订单状态是13的时候,表示是待下载的订单;
        param1.put("billStatus", ComNames.BILL_STATUS_13);
    }
    Integer count = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectCountByMakeCert", param1);
    if (page > 1 && size * (page - 1) >= count) {
        page = (count + size - 1) / size;
    }
    Integer offset = size * (page - 1);
    param1.put("offset", offset);
    param1.put("limit", size);
    List makecertexall = sqlSession.selectList("com.itrus.portal.db.BillMapper.selectByAllMakeCert", param1);
    DigitalCertExample digitalcertex = new DigitalCertExample();
    Map<Long, DigitalCert> digitalcertmap = sqlSession.selectMap("com.itrus.portal.db.DigitalCertMapper.selectByExample", digitalcertex, "id");
    uiModel.addAttribute("makecerts", makecertexall);
    uiModel.addAttribute("digitalcertmap", digitalcertmap);
    uiModel.addAttribute("count", count);
    uiModel.addAttribute("pages", (count + size - 1) / size);
    uiModel.addAttribute("page", page);
    uiModel.addAttribute("size", size);
    uiModel.addAttribute("itemcount", makecertexall.size());
    uiModel.addAttribute("queryDate1", queryDate1);
    uiModel.addAttribute("queryDate2", queryDate2);
    uiModel.addAttribute("status", status);
    uiModel.addAttribute("billNo", billNo);
    uiModel.addAttribute("projectName", projectName);
    uiModel.addAttribute("enterpriseName", enterpriseName);
    uiModel.addAttribute("keySn", keySn);
    uiModel.addAttribute("businessType", businessType);
    uiModel.addAttribute("type", type);
    uiModel.addAttribute("mcstatus", mcstatus);
    return "makecert/list";
}
Also used : BigInteger(java.math.BigInteger) DigitalCert(com.itrus.portal.db.DigitalCert) HashMap(java.util.HashMap) Calendar(java.util.Calendar) JSONObject(com.alibaba.fastjson.JSONObject) List(java.util.List) ArrayList(java.util.ArrayList) DigitalCertExample(com.itrus.portal.db.DigitalCertExample) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

DigitalCert (com.itrus.portal.db.DigitalCert)31 Product (com.itrus.portal.db.Product)24 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)22 HashMap (java.util.HashMap)20 Bill (com.itrus.portal.db.Bill)15 Enterprise (com.itrus.portal.db.Enterprise)14 JSONObject (com.alibaba.fastjson.JSONObject)11 ProductSpec (com.itrus.portal.db.ProductSpec)11 UserInfo (com.itrus.portal.db.UserInfo)10 Date (java.util.Date)10 IOException (java.io.IOException)9 OnPayInfo (com.itrus.portal.db.OnPayInfo)8 Map (java.util.Map)8 CertBuf (com.itrus.portal.db.CertBuf)7 ArrayList (java.util.ArrayList)7 CertInfo (cn.topca.tca.ra.service.CertInfo)6 OnlinePay (com.itrus.portal.db.OnlinePay)6 PayInfo (com.itrus.portal.db.PayInfo)6 RaAccount (com.itrus.portal.db.RaAccount)6 UserCert (com.itrus.portal.db.UserCert)6