Search in sources :

Example 1 with DigitalCert

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

the class BillWebController method showTwo.

/**
 * 订单详情
 *
 * @param id
 * @param uiModel
 * @param autoShowPfxMessage 从订单信息页面 点击下载证书跳转到下载证书页面,若为 1 自动弹出短信输入框,
 * @return
 */
@RequestMapping(value = "/bill/{id}.html", produces = "text/html")
public String showTwo(@PathVariable("id") Long id, Model uiModel, @RequestParam(value = "typenum", required = false) String typenum, @RequestParam(value = "num", required = false) Long num, @RequestParam(value = "updateAuditBill", required = false) String updateAuditBill, @RequestParam(value = "autoShowPfxMessage", required = false) String autoShowPfxMessage, HttpServletRequest request) {
    HttpSession session = request.getSession();
    Boolean verifyCodeStatus = (Boolean) session.getAttribute("webverifyCodeStatus");
    Enterprise enterprise = (Enterprise) session.getAttribute("webenterprise");
    UserInfo userInfo = (UserInfo) session.getAttribute("webuserInfo");
    List<Map> billAll = sqlSession.selectList("com.itrus.portal.db.BillMapper.selectDingdanByBill", id);
    if (billAll.size() == 0) {
        return "redirect:/userInfoWeb/denglu.html";
    }
    // 解析订单中uid信息{"ADDTIONAL_FIELD1_1":"","ADDTIONAL_FIELD3_1":"","ADDTIONAL_FIELD4_1":"G2016071301","inputName":"inputValue"}\
    Bill bill = billService.getBill(id);
    if (null != bill.getUid()) {
        uiModel.addAttribute("uid", bill.getUid().toString());
    }
    if (null != bill.getUid1()) {
        uiModel.addAttribute("uid1", bill.getUid1().toString());
    }
    if (null != bill.getUid2()) {
        uiModel.addAttribute("uid2", bill.getUid2().toString());
    }
    if (null != bill.getUid3()) {
        uiModel.addAttribute("uid3", bill.getUid3().toString());
    }
    /*if(!bill.getUid().equals("{}")){
			List<String> listStr = new ArrayList<String>();
			JSONObject uid = JSONObject.parseObject(bill.getUid().toString());
			for(int i= 0; i< (int)bill.getProductNum();i++){
				//uiModel.addAttribute("uid"+ (i+1), uid.get(("ADDTIONAL_FIELD"+ (i+ 1)) + "_1"));
				listStr.add(uid.get(("ADDTIONAL_FIELD1_"+ (i+ 1))).toString());
			}
			uiModel.addAttribute("listStr", listStr);
		}*/
    // 得到证书信息项
    Product pdt = productService.getProductById(bill.getProduct());
    uiModel.addAttribute("pdt", pdt);
    if (pdt.getCertinfo() != null) {
        uiModel.addAttribute("certinfoStr", escapeTool.javascript(pdt.getCertinfo()));
    } else {
        uiModel.addAttribute("certinfoStr", "[]");
    }
    PayInfoExample payInfoex = new PayInfoExample();
    Map<Long, PayInfo> payinfoMap = sqlSession.selectMap("com.itrus.portal.db.PayInfoMapper.selectByExample", payInfoex, "id");
    uiModel.addAttribute("payinfomap", payinfoMap);
    String descript = billAll.get(0).get("descript").toString().replace("\r\n", "<br/>");
    uiModel.addAttribute("descript", descript);
    // 如配置了产品规格,则将产品规格返回:产品期限、产品描述
    if (billAll.get(0).containsKey("product_spec") && !"0".equals(billAll.get(0).get("product_spec"))) {
        ProductSpec productSpec = productSpecService.getProductSpec((Long) billAll.get(0).get("product_spec"));
        descript = "产品期限:" + productSpec.getProductValid() + "年<br/>" + "产品描述:" + productSpec.getDescript().replace("\r\n", "<br/>");
        uiModel.addAttribute("descript", descript);
    }
    // 组合产品以及产品规格以及证书信息项
    String descript1 = "";
    String descript2 = "";
    String descript3 = "";
    if (billAll.get(0).containsKey("product_spec1") && !"0".equals(billAll.get(0).get("product_spec1"))) {
        ProductSpec productSpec1 = productSpecService.getProductSpec((Long) billAll.get(0).get("product_spec1"));
        descript1 = "产品期限:" + productSpec1.getProductValid() + "年<br/>" + "产品描述:" + productSpec1.getDescript().replace("\r\n", "<br/>");
        uiModel.addAttribute("descript1", descript1);
    }
    if (billAll.get(0).containsKey("product_spec2") && !"0".equals(billAll.get(0).get("product_spec2"))) {
        ProductSpec productSpec2 = productSpecService.getProductSpec((Long) billAll.get(0).get("product_spec2"));
        descript2 = "产品期限:" + productSpec2.getProductValid() + "年<br/>" + "产品描述:" + productSpec2.getDescript().replace("\r\n", "<br/>");
        uiModel.addAttribute("descript2", descript2);
    }
    if (billAll.get(0).containsKey("product_spec3") && !"0".equals(billAll.get(0).get("product_spec3"))) {
        ProductSpec productSpec3 = productSpecService.getProductSpec((Long) billAll.get(0).get("product_spec3"));
        descript3 = "产品期限:" + productSpec3.getProductValid() + "年<br/>" + "产品描述:" + productSpec3.getDescript().replace("\r\n", "<br/>");
        uiModel.addAttribute("descript3", descript3);
    }
    if (null != bill.getProduct1()) {
        Product product1 = productService.getProductById(bill.getProduct1());
        uiModel.addAttribute("product1", product1);
        if (product1.getCertinfo() != null) {
            uiModel.addAttribute("certinfoStr1", escapeTool.javascript(product1.getCertinfo()));
        } else {
            uiModel.addAttribute("certinfoStr1", "[]");
        }
    }
    if (null != bill.getProduct2()) {
        Product product2 = productService.getProductById(bill.getProduct2());
        uiModel.addAttribute("product2", product2);
        if (product2.getCertinfo() != null) {
            uiModel.addAttribute("certinfoStr2", escapeTool.javascript(product2.getCertinfo()));
        } else {
            uiModel.addAttribute("certinfoStr2", "[]");
        }
    }
    if (null != bill.getProduct3()) {
        Product product3 = productService.getProductById(bill.getProduct3());
        uiModel.addAttribute("product3", product3);
        if (product3.getCertinfo() != null) {
            uiModel.addAttribute("certinfoStr3", escapeTool.javascript(product3.getCertinfo()));
        } else {
            uiModel.addAttribute("certinfoStr3", "[]");
        }
    }
    if (null == verifyCodeStatus || !verifyCodeStatus || null == userInfo || !(billAll.get(0).get("enterprise").equals(enterprise.getId()))) {
        // 登录状态失效,跳转到登录页面
        return "redirect:/userInfoWeb/denglu.html";
    }
    // 获取订单在线支付方式
    if (billAll.get(0).get("on_pay_info") != null) {
        Map<Long, OnPayInfo> opiMap = sqlSession.selectMap("com.itrus.portal.db.OnPayInfoMapper.selectByExample", "id");
        uiModel.addAttribute("opiMap", opiMap);
        Map<Long, OnlinePay> opMap = sqlSession.selectMap("com.itrus.portal.db.OnlinePayMapper.selectByExample", "id");
        uiModel.addAttribute("opMap", opMap);
    }
    // 获取产品的认证等级需要认证的项
    Certification certification = sqlSession.selectOne("com.itrus.portal.db.CertificationMapper.selectByPrimaryKey", billAll.get(0).get("authentication"));
    List<Map> courierinfos = new ArrayList<Map>();
    if (billAll.get(0).get("delivery") != null) {
        courierinfos = sqlSession.selectList("com.itrus.portal.db.CourierInfoMapper.selectItemsByCourierInfo", billAll.get(0).get("id"));
        uiModel.addAttribute("courierinfos", courierinfos);
    }
    Map<Long, Receipt> receiptmap = sqlSession.selectMap("com.itrus.portal.db.ReceiptMapper.selectByExample", null, "id");
    Map<Long, Ereceipt> ereceiptmap = sqlSession.selectMap("com.itrus.portal.db.EreceiptMapper.selectByExample", null, "id");
    Map<Long, DigitalCert> certmap = sqlSession.selectMap("com.itrus.portal.db.DigitalCertMapper.selectByExample", null, "id");
    // 判断订单对应的产品是否配置有数字证书
    Product product = productService.getProductById((Long) billAll.get(0).get("product"));
    if (null == product.getCert()) {
        uiModel.addAttribute("billhasnotcert", 1);
        // 判断无数字证书的订单是否需要配送
        if (null != billAll.get(0).get("delivery")) {
            uiModel.addAttribute("billneedtodelivery", 1);
        } else {
            uiModel.addAttribute("billneedtodelivery", 0);
        }
    } else {
        uiModel.addAttribute("billhasnotcert", 0);
    }
    // 根据省市区code值获取省市区最新名称
    String regionCodes = billAll.get(0).get("d_codes") == null ? "" : billAll.get(0).get("d_codes").toString();
    String detailAdds = billAll.get(0).get("d_adds") == null ? "" : billAll.get(0).get("d_adds").toString();
    if (StringUtils.isNotBlank(regionCodes) && regionCodes.indexOf("@") >= 0) {
        String[] codes = regionCodes.split("@");
        String regionName = sysRegionService.getAllName(codes[1], codes[2], codes[3]);
        detailAdds = regionName + detailAdds;
    }
    uiModel.addAttribute("detailAdd", detailAdds);
    if (null != billAll.get(0).get("u_adds")) {
        String regionCodes1 = billAll.get(0).get("u_codes").toString();
        String detailAdds1 = billAll.get(0).get("u_adds").toString();
        if (StringUtils.isNotBlank(regionCodes1) && regionCodes1.indexOf("@") >= 0) {
            String[] codes1 = regionCodes1.split("@");
            String regionName1 = sysRegionService.getAllName(codes1[1], codes1[2], codes1[3]);
            detailAdds1 = regionName1 + detailAdds1;
        }
        uiModel.addAttribute("detailAdd1", detailAdds1);
    }
    int num1 = 0;
    if (num != null) {
        num1 = Integer.parseInt(num.toString());
    }
    // 该订单是否有价格优惠记录
    PreferentialRecord pr = preferentialRecordService.selectPreferentialRecordSByBillId(id);
    if (null != pr) {
        // 原价
        Double originalCost = pr.getOriginalPrice();
        // 优惠价
        Double preCost = pr.getPreferentialPrice();
        uiModel.addAttribute("originalCost", originalCost);
        uiModel.addAttribute("preCost", preCost);
    }
    uiModel.addAttribute("num", num1);
    uiModel.addAttribute("billAll", billAll);
    uiModel.addAttribute("receiptmap", receiptmap);
    uiModel.addAttribute("ereceiptmap", ereceiptmap);
    uiModel.addAttribute("certmap", certmap);
    uiModel.addAttribute("certification", certification);
    uiModel.addAttribute("product", product);
    // 根据订单id返回签章模版
    try {
        makeSeal((Long) billAll.get(0).get("id"), uiModel);
    } catch (EncDecException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (Exception e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    if (typenum == null)
        typenum = "0";
    // 判断是否是审核中进入的订单修改页面
    if (StringUtils.isNotBlank(updateAuditBill) && updateAuditBill.equals("1")) {
        // 判断订单状态是否1,2,3,10
        List<Integer> modifiedStatus = new ArrayList<Integer>();
        modifiedStatus.add(ComNames.BILL_STATUS_1);
        modifiedStatus.add(ComNames.BILL_STATUS_2);
        modifiedStatus.add(ComNames.BILL_STATUS_3);
        modifiedStatus.add(ComNames.BILL_STATUS_10);
        // 不在以上状态中
        if (modifiedStatus.indexOf(billAll.get(0).get("bill_status")) == -1) {
            // 重定向
            return "redirect:/billWeb/bill/" + id + ".html";
        }
        return "ixinweb/dingdanxiangqing_shenhezhong_chongxintijiao";
    }
    // 审核记录
    ReviewLog reviewLog = reviewLogService.getReviewLog(id);
    if (reviewLog != null) {
        uiModel.addAttribute("reviewLog", reviewLog);
    }
    // 支付待确认时间
    if (billAll.get(0).get("pay_info") != null) {
        List<PayInfo> pays = sqlSession.selectList("com.itrus.portal.db.PayInfoMapper.selectByPrimaryKey", billAll.get(0).get("pay_info"));
        PayInfo dp = pays.get(0);
        uiModel.addAttribute("pay_time", dp.getCreateTime());
        uiModel.addAttribute("pay_confirm_time", dp.getPayConfirmTime());
    }
    // 判断订单状态
    if (billAll.get(0).get("bill_status").equals(1) || billAll.get(0).get("bill_status").equals(2)) {
        // 更新证书前 ,显示旧证书
        if (billAll.get(0).get("old_user_cert") != null) {
            UserCert oldUserCert = sqlSession.selectOne("com.itrus.portal.db.UserCertMapper.selectByPrimaryKey", billAll.get(0).get("old_user_cert"));
            Object[] info = getCertInfo(oldUserCert);
            uiModel.addAttribute("remainingDays", info[0]);
            uiModel.addAttribute("owner", info[1]);
            uiModel.addAttribute("oldUserCert", oldUserCert);
            // 根据订单id返回签章模版
            try {
                makeSeal(oldUserCert.getBill(), uiModel);
            } catch (EncDecException e1) {
                e1.printStackTrace();
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        return "ixinweb/dingdanxiangqing_daizhifu";
    } else if (billAll.get(0).get("bill_status").equals(3) || billAll.get(0).get("bill_status").equals(4) || billAll.get(0).get("bill_status").equals(11) || billAll.get(0).get("bill_status").equals(10)) {
        // 更新证书前 ,显示旧证书
        if (billAll.get(0).get("old_user_cert") != null) {
            UserCert oldUserCert = sqlSession.selectOne("com.itrus.portal.db.UserCertMapper.selectByPrimaryKey", billAll.get(0).get("old_user_cert"));
            Object[] info = getCertInfo(oldUserCert);
            uiModel.addAttribute("remainingDays", info[0]);
            uiModel.addAttribute("owner", info[1]);
            uiModel.addAttribute("oldUserCert", oldUserCert);
            // 根据订单id返回签章模版
            try {
                makeSeal(oldUserCert.getBill(), uiModel);
            } catch (EncDecException e1) {
                e1.printStackTrace();
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        if (billAll.get(0).get("bill_status").equals(11)) {
            PayInfo payinfo = sqlSession.selectOne("com.itrus.portal.db.PayInfoMapper.selectByPrimaryKey", billAll.get(0).get("pay_info"));
            uiModel.addAttribute("payinfo", payinfo);
        }
        if (Integer.parseInt(typenum) == 1) {
            if (null != product && product.getProject() != null) {
                EnterpriseQqExample enterpriseE = new EnterpriseQqExample();
                EnterpriseQqExample.Criteria qqEx = enterpriseE.createCriteria();
                qqEx.andProjectIdEqualTo(product.getProject());
                EnterpriseQq enterpriseqq = sqlSession.selectOne("com.itrus.portal.db.EnterpriseQqMapper.selectByExample", enterpriseE);
                if (enterpriseqq != null && enterpriseqq.getEnterpriseQqLinks() != null) {
                    uiModel.addAttribute("enterpriseqq", enterpriseqq.getEnterpriseQqLinks());
                    session.setAttribute("enterpriseqqE", enterpriseqq.getEnterpriseQqLinks());
                }
            }
            return "ixinweb/dingdanxiangqing_chongxintijiao";
        } else {
            return "ixinweb/dingdanxiangqing_dengdaishenhe";
        }
    } else if (billAll.get(0).get("bill_status").equals(12)) {
        // 待更新
        List<UserCert> userCerts = sqlSession.selectList("com.itrus.portal.db.UserCertMapper.selectByPrimaryKey", billAll.get(0).get("old_user_cert"));
        if (userCerts.size() > 0) {
            UserCert userCert = userCerts.get(0);
            Object[] info = getCertInfo(userCert);
            uiModel.addAttribute("remainingDays", info[0]);
            uiModel.addAttribute("owner", info[1]);
            uiModel.addAttribute("userCert", userCerts.get(0));
            // 根据订单id返回签章模版
            try {
                makeSeal(userCert.getBill(), uiModel);
            } catch (EncDecException e1) {
                e1.printStackTrace();
            } catch (Exception e1) {
                e1.printStackTrace();
            }
        }
        return "ixinweb/dingdanxiangqing_gengxinshenhetongguo";
    } else if (billAll.get(0).get("bill_status").equals(5) || billAll.get(0).get("bill_status").equals(6) || billAll.get(0).get("bill_status").equals(7)) {
        // 初购产品 已制证 在订单详情显示 证书信息
        if ((Integer) billAll.get(0).get("bill_status") >= 6) {
            List<String> certStatus = new ArrayList<String>();
            List<UserCert> certs = userCertService.getUserCertByBill(id, certStatus);
            if (certs != null && certs.size() > 0) {
                certStatus.add(ComNames.CERT_STATUS_1);
                certStatus.add(ComNames.CERT_STATUS_2);
                UserCert userCert = certs.get(0);
                Object[] info = getCertInfo(userCert);
                uiModel.addAttribute("remainingDays", info[0]);
                uiModel.addAttribute("owner", info[1]);
                uiModel.addAttribute("userCert", userCert);
            }
        }
        // 返回老证书序列号
        if (billAll.get(0).get("old_user_cert") != null) {
            UserCert oldUserCert = sqlSession.selectOne("com.itrus.portal.db.UserCertMapper.selectByPrimaryKey", billAll.get(0).get("old_user_cert"));
            uiModel.addAttribute("oldCertSn", oldUserCert.getCertSn());
            try {
                List<String> allIssUerDn = new ArrayList<String>();
                allIssUerDn = sqlSession.selectList("com.itrus.portal.db.CrlContextMapper.selectAllIssUerDn");
                uiModel.addAttribute("allIssUerDn", jsonTool.writeValueAsString(allIssUerDn));
                makeSeal(oldUserCert.getBill(), uiModel);
            } catch (JsonGenerationException e) {
                e.printStackTrace();
            } catch (JsonMappingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (EncDecException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        if (courierinfos.size() > 0) {
            uiModel.addAttribute("couriercount", courierinfos.size());
            return "ixinweb/dingdanxiangqing_yifahuo";
        } else {
            return "ixinweb/dingdanxiangqing_dengdaifahuo";
        }
    } else if (billAll.get(0).get("bill_status").equals(8)) {
        List<String> certStatus = new ArrayList<String>();
        List<UserCert> certs = userCertService.getUserCertByBill(id, certStatus);
        if (certs != null && certs.size() > 0) {
            certStatus.add(ComNames.CERT_STATUS_1);
            certStatus.add(ComNames.CERT_STATUS_2);
            UserCert userCert = certs.get(0);
            Object[] info = getCertInfo(userCert);
            uiModel.addAttribute("remainingDays", info[0]);
            uiModel.addAttribute("owner", info[1]);
            uiModel.addAttribute("userCert", userCert);
        }
        // 返回老证书序列号
        if (billAll.get(0).get("old_user_cert") != null) {
            UserCert oldUserCert = sqlSession.selectOne("com.itrus.portal.db.UserCertMapper.selectByPrimaryKey", billAll.get(0).get("old_user_cert"));
            uiModel.addAttribute("oldCertSn", oldUserCert.getCertSn());
            try {
                List<String> allIssUerDn = new ArrayList<String>();
                allIssUerDn = sqlSession.selectList("com.itrus.portal.db.CrlContextMapper.selectAllIssUerDn");
                uiModel.addAttribute("allIssUerDn", jsonTool.writeValueAsString(allIssUerDn));
            } catch (JsonGenerationException e) {
                e.printStackTrace();
            } catch (JsonMappingException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "ixinweb/dingdanxiangqing_yifahuo";
    // 下载证书
    } else if (billAll.get(0).get("bill_status").equals(13)) {
        uiModel.addAttribute("autoShowPfxMessage", autoShowPfxMessage);
        return "ixinweb/dingdanxiangqing_xiazaizhengshu";
    } else {
        return "ixinweb/dingdanxiangqing_yichuihui";
    }
}
Also used : ArrayList(java.util.ArrayList) Product(com.itrus.portal.db.Product) PreferentialRecord(com.itrus.portal.db.PreferentialRecord) DigitalCert(com.itrus.portal.db.DigitalCert) PayInfo(com.itrus.portal.db.PayInfo) OnPayInfo(com.itrus.portal.db.OnPayInfo) JsonMappingException(org.codehaus.jackson.map.JsonMappingException) EnterpriseQqExample(com.itrus.portal.db.EnterpriseQqExample) ArrayList(java.util.ArrayList) List(java.util.List) Receipt(com.itrus.portal.db.Receipt) ProductSpec(com.itrus.portal.db.ProductSpec) Certification(com.itrus.portal.db.Certification) EditBill(com.itrus.portal.db.EditBill) Bill(com.itrus.portal.db.Bill) Map(java.util.Map) HashMap(java.util.HashMap) PayInfoExample(com.itrus.portal.db.PayInfoExample) UserInfo(com.itrus.portal.db.UserInfo) OnPayInfo(com.itrus.portal.db.OnPayInfo) OnlinePay(com.itrus.portal.db.OnlinePay) UserCert(com.itrus.portal.db.UserCert) Ereceipt(com.itrus.portal.db.Ereceipt) HttpSession(javax.servlet.http.HttpSession) EncDecException(com.itrus.portal.exception.EncDecException) IOException(java.io.IOException) IOException(java.io.IOException) JsonGenerationException(org.codehaus.jackson.JsonGenerationException) EncDecException(com.itrus.portal.exception.EncDecException) JsonMappingException(org.codehaus.jackson.map.JsonMappingException) UserInfoServiceException(com.itrus.portal.exception.UserInfoServiceException) EnterpriseQq(com.itrus.portal.db.EnterpriseQq) Enterprise(com.itrus.portal.db.Enterprise) ReviewLog(com.itrus.portal.db.ReviewLog) JsonGenerationException(org.codehaus.jackson.JsonGenerationException) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 2 with DigitalCert

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

the class DownLoadCertWebController method downloadPfxCert.

/**
 * 用户下载pfx证书的接口
 * @param id,订单id
 * @param session
 * @param request
 * @param response
 * @return
 */
@RequestMapping("/pfx/{id}")
public String downloadPfxCert(@PathVariable(value = "id") Long id, HttpSession session, HttpServletRequest request, HttpServletResponse response) {
    UserInfo webuserInfo = (UserInfo) session.getAttribute("webuserInfo");
    Enterprise webenterprise = (Enterprise) session.getAttribute("webenterprise");
    if (null == webuserInfo || null == webenterprise) {
        return null;
    }
    Integer uidIdx = 1;
    Bill bill = billService.getBill(id);
    if (null == bill) {
        return null;
    }
    boolean billFlag = webuserInfo.getId().equals(bill.getUniqueId()) && webenterprise.getId().equals(bill.getEnterprise());
    if (!billFlag) {
        return null;
    }
    // 用户已经下载过了,再次下载
    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());
        Date date = new Date();
        // 获取证书第一次下载时间和当前时间比较,如果超过了十五天,则不允许下载
        int day = DateUtils.daysOfTwo(date, certBuf.getCreateTime());
        if (day > 16) {
            return null;
        }
        // 从数据库中取出数据,返回给客户端.
        // 重置response对象中的缓冲区,该方法可以不写,但是你要保证response缓冲区没有其他数据,否则导出可能会出现问题,建议加上
        response.reset();
        String filename = webenterprise.getEnterpriseName() + "功能证书.pfx";
        filename = encodeFilename(filename, request);
        response.setHeader("Content-disposition", "attachment;filename=" + filename);
        response.setCharacterEncoding("utf-8");
        // 由于导出格式是pfx的文件,设置导出文件的响应头部信息
        response.setContentType("application/x-pkcs12");
        OutputStream os = null;
        try {
            os = response.getOutputStream();
            // 清理刷新缓冲区,将缓存中的数据将数据导出excel
            byte[] byteCert = Base64.decode(certBuf.getPfxCert());
            os.write(byteCert);
            os.flush();
            // 关闭os
            if (os != null) {
                os.close();
            }
            certBuf.setLastDownloadTime(new Date());
            certBuf.setCertDownloadNumber(certBuf.getCertDownloadNumber() + 1);
            downLoadCertService.updatePfxCert(certBuf);
            // 记录日志
            UserLog userlog = new UserLog();
            userlog.setProject(webuserInfo.getProject());
            userlog.setType("用户下载证书pfx");
            userlog.setInfo(webenterprise.getEnterpriseName() + "下载证书成功");
            userlog.setHostId("未知");
            userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
            LogUtil.userlog(sqlSession, userlog);
            return null;
        } catch (IOException e) {
            UserLog userlog = new UserLog();
            userlog.setProject(bill.getProject());
            userlog.setType("用户下载证书pfx");
            userlog.setInfo(webenterprise.getEnterpriseName() + "失败,错误信息:" + e.getMessage());
            userlog.setHostId("未知");
            userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
            LogUtil.userlog(sqlSession, userlog);
        }
    } 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);
                // 从数据库中取出数据,返回给客户端.
                // 重置response对象中的缓冲区,该方法可以不写,但是你要保证response缓冲区没有其他数据,否则导出可能会出现问题,建议加上
                response.reset();
                String filename = webenterprise.getEnterpriseName() + "通讯证书.pfx";
                filename = encodeFilename(filename, request);
                response.setHeader("Content-disposition", "attachment;filename=" + filename);
                response.setCharacterEncoding("utf-8");
                // 由于导出格式是pfx的文件,设置导出文件的响应头部信息
                response.setContentType("application/x-pkcs12");
                OutputStream os = null;
                os = response.getOutputStream();
                // 清理刷新缓冲区,将缓存中的数据将数据导出excel
                byte[] byteCert = Base64.decode(pfxCert);
                os.write(byteCert);
                os.flush();
                // 关闭os
                if (os != null) {
                    os.close();
                }
                // 记录日志
                UserLog userlog = new UserLog();
                userlog.setProject(bill.getProject());
                userlog.setType("用户下载证书pfx");
                userlog.setInfo(webenterprise.getEnterpriseName() + "下载证书成功,企业名称:" + webenterprise.getEnterpriseName());
                userlog.setHostId("未知");
                userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
                LogUtil.userlog(sqlSession, userlog);
                return null;
            } catch (Exception e) {
                // 记录日志
                UserLog userlog = new UserLog();
                userlog.setProject(bill.getProject());
                userlog.setType("用户下载证书pfx");
                userlog.setInfo(webenterprise.getEnterpriseName() + "失败,错误信息:" + e.getMessage());
                userlog.setHostId("未知");
                userlog.setSn(null == webuserInfo.getUniqueId() ? null : webuserInfo.getUniqueId());
                LogUtil.userlog(sqlSession, userlog);
            }
        }
    }
    return null;
}
Also used : CertInfo(cn.topca.tca.ra.service.CertInfo) OutputStream(java.io.OutputStream) Product(com.itrus.portal.db.Product) UserInfo(com.itrus.portal.db.UserInfo) UserLog(com.itrus.portal.db.UserLog) IOException(java.io.IOException) Date(java.util.Date) 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) CertBuf(com.itrus.portal.db.CertBuf) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 3 with DigitalCert

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

the class DownLoadCertWebController method downLoadCertPage.

// 进入下载证书页面
@RequestMapping("/downLoadCertPage/{id}")
public String downLoadCertPage(@PathVariable(value = "id") Long id, HttpSession session, Model uiModel) {
    // 是否登录
    UserInfo webuserInfo = (UserInfo) session.getAttribute("webuserInfo");
    Enterprise webenterprise = (Enterprise) session.getAttribute("webenterprise");
    if (null == webuserInfo || null == webenterprise) {
        // 登录状态失效,跳转到注册页面
        return "redirect:/userInfoWeb/denglu.html";
    }
    Bill bill = billService.getBill(id);
    if (null == bill) {
        logger.error("id为" + id + "的订单不存在");
        return "redirect:/userInfoWeb/denglu.html";
    }
    // 订单是否为当前用户当前企业
    if (!webuserInfo.getId().equals(bill.getUniqueId()) || !webenterprise.getId().equals(bill.getEnterprise())) {
        logger.error(webuserInfo.getmPhone() + "不能操作订单" + bill.getBillId());
        return "redirect:/userInfoWeb/denglu.html";
    }
    Product product = productService.getProduct(bill.getProduct());
    DigitalCert digitalCert = digitalCertService.getDigitalCert(product.getCert());
    // 获取产品规格
    ProductSpec productSpec = null;
    if (null != bill.getProductSpec() && !"0".equals(bill.getProductSpec())) {
        productSpec = productSpecService.getProductSpec(bill.getProductSpec());
    }
    // 获取订单在线支付方式
    if (bill.getOnPayInfo() != null) {
        OnPayInfo onPayInfo = sqlSession.selectOne("com.itrus.portal.db.OnPayInfoMapper.selectByPrimaryKey", bill.getOnPayInfo());
        uiModel.addAttribute("onPayInfo", onPayInfo);
    } else if (bill.getPayInfo() != null) {
        PayInfo payInfo = sqlSession.selectOne("com.itrus.portal.db.PayInfoMapper.selectByPrimaryKey", bill.getPayInfo());
        uiModel.addAttribute("payInfo", payInfo);
    }
    // 审核记录信息
    ReviewLog reviewLog = reviewLogService.getReviewLog(id);
    if (reviewLog != null) {
        uiModel.addAttribute("reviewLog", reviewLog);
    }
    uiModel.addAttribute("bill", bill);
    uiModel.addAttribute("product", product);
    uiModel.addAttribute("digitalCert", digitalCert);
    uiModel.addAttribute("productSpec", productSpec);
    // 当是pfx证书的时候,告知页面
    boolean pfxFlag = digitalCert.getCertType().equals(ComNames.DIGITALCERT_CERTTYPE_PFX) && digitalCert.getInitBuy().equals(ComNames.DIGITALCERT_INITBUYS_2);
    if (pfxFlag) {
        uiModel.addAttribute("ispfx", 1);
    }
    List<Map> makecerts = sqlSession.selectList("com.itrus.portal.db.BillMapper.selectBillByMakecert", id);
    List<Map> makecertexall = sqlSession.selectList("com.itrus.portal.db.UserCertMapper.selectByPrimaryBillKey", id);
    uiModel.addAttribute("makecerts", makecerts);
    uiModel.addAttribute("enterpriseSn", makecerts.get(0).get("enterprise_sn"));
    DigitalCert digitalcert = null;
    Map<String, Object> params = new HashMap<String, Object>();
    uiModel.addAttribute("makecertexall", makecertexall);
    digitalcert = sqlSession.selectOne("com.itrus.portal.db.DigitalCertMapper.selectByPrimaryKey", makecerts.get(0).get("cert"));
    uiModel.addAttribute("digitalcert", digitalcert);
    if (makecerts.get(0).containsKey("product_spec") && !"0".equals(makecerts.get(0).get("product_spec"))) {
        productSpec = productSpecService.getProductSpec((Long) makecerts.get(0).get("product_spec"));
    }
    uiModel.addAttribute("productSpec", productSpec);
    product = sqlSession.selectOne("com.itrus.portal.db.ProductMapper.selectByPrimaryKey", makecerts.get(0).get("product"));
    uiModel.addAttribute("product", product);
    try {
        uiModel.addAttribute("billStr", jsonTool.writeValueAsString(makecerts.get(0)));
        uiModel.addAttribute("usercertallStr", jsonTool.writeValueAsString(makecertexall));
        uiModel.addAttribute("digitalcertStr", jsonTool.writeValueAsString(digitalcert));
        uiModel.addAttribute("productStr", jsonTool.writeValueAsString(product));
        uiModel.addAttribute("productSpecStr", jsonTool.writeValueAsString(productSpec));
    } catch (Exception e) {
        e.printStackTrace();
    }
    // System.out.println(makecerts.get(0).get("product_num"));
    // 处理autoid自动编号信息
    // 解析项目产品中,certinfo配置信息
    JSONArray certinfo = JSONArray.parseArray(product.getCertinfo());
    for (int i = 0; certinfo != null && i < certinfo.size(); i++) {
        JSONObject obj = certinfo.getJSONObject(i);
        String autoid = obj.getString("autoid");
        if (autoid == null)
            continue;
        String autoidType = obj.getString("autoidType");
        String autoidPrev = obj.getString("autoidPrev");
        String autoidPrevDate = obj.getString("autoidPrevDate");
        String autoidLength = obj.getString("autoidLength");
        // 从user_cert表查询,该autoidType的最大值,如果没有最大值,则设置为0
        Map param = new HashMap();
        String enterpriseId = makecerts.get(0).get("enterprise").toString();
        param.put("enterpriseId", makecerts.get(0).get("enterprise"));
        param.put("type", autoidType);
        Integer autoidValue = null;
        if (autoidPrevDate == null)
            autoidValue = sqlSession.selectOne("com.itrus.portal.db.UserCertMapper.selectByConditon", param);
        else
            autoidValue = sqlSession.selectOne("com.itrus.portal.db.UserCertMapper.selectByConditonDate", param);
        if (autoidValue == null)
            autoidValue = 0;
        uiModel.addAttribute("enterpriseId", enterpriseId);
        uiModel.addAttribute("autoidType", autoidType);
        uiModel.addAttribute("autoidPrev", autoidPrev);
        uiModel.addAttribute("autoidLength", autoidLength);
        uiModel.addAttribute("autoidValue", autoidValue);
        break;
    }
    return "ixinweb/dingdanxiangqing_xiazaiqueren";
}
Also used : HashMap(java.util.HashMap) JSONArray(com.alibaba.fastjson.JSONArray) Product(com.itrus.portal.db.Product) UserInfo(com.itrus.portal.db.UserInfo) ProductSpec(com.itrus.portal.db.ProductSpec) GenP10Exception(com.itrus.Exception.GenP10Exception) IOException(java.io.IOException) DigitalCert(com.itrus.portal.db.DigitalCert) OnPayInfo(com.itrus.portal.db.OnPayInfo) PayInfo(com.itrus.portal.db.PayInfo) OnPayInfo(com.itrus.portal.db.OnPayInfo) JSONObject(com.alibaba.fastjson.JSONObject) Enterprise(com.itrus.portal.db.Enterprise) Bill(com.itrus.portal.db.Bill) ReviewLog(com.itrus.portal.db.ReviewLog) JSONObject(com.alibaba.fastjson.JSONObject) Map(java.util.Map) HashMap(java.util.HashMap) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 4 with DigitalCert

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

the class RenewUserCertClientController method reNewCertConfirm.

// 订单详情,待更新确认
@RequestMapping(value = "/reNewCertConfirm/{id}", produces = "text/html")
public String reNewCertConfirm(@PathVariable("id") Long id, HttpServletRequest request, Model uiModel) {
    HttpSession session = request.getSession();
    UserInfo userInfo = (UserInfo) session.getAttribute(ComNames.WEB_USER_INFO);
    Enterprise enterprise = (Enterprise) session.getAttribute(ComNames.WEB_ENTERPRISE);
    if (null == userInfo || null == enterprise) {
        return ComNames.DENG_LU_CLIENT;
    }
    // 审核记录
    ReviewLog reviewLog = reviewLogService.getReviewLog(id);
    if (reviewLog != null) {
        uiModel.addAttribute("reviewLog", reviewLog);
    }
    Map param = new HashMap();
    // 设置查询条件,选择属于当前用户,当前企业的订单
    param.put("id", id);
    // param.put("userinfoid", userInfo.getId());
    // param.put("enterpriseid", enterprise.getId());
    List<Map> billAll = sqlSession.selectList("com.itrus.portal.db.BillMapper.selectProductBillCertById", param);
    if (0 == billAll.size()) {
        return ComNames.DENG_LU_CLIENT;
    }
    uiModel.addAttribute("bills", billAll.get(0));
    // 获取数字证书
    Product product = productService.getProduct((Long) billAll.get(0).get("product"));
    DigitalCert digitalCert = digitalCertService.getDigitalCert(product.getCert());
    // 获取订单在线支付方式
    if (billAll.get(0).get("on_pay_info") != null) {
        Map<Long, OnPayInfo> opiMap = sqlSession.selectMap("com.itrus.portal.db.OnPayInfoMapper.selectByExample", "id");
        uiModel.addAttribute("opiMap", opiMap);
        Map<Long, OnlinePay> opMap = sqlSession.selectMap("com.itrus.portal.db.OnlinePayMapper.selectByExample", "id");
        uiModel.addAttribute("opMap", opMap);
    }
    PayInfoExample payInfoex = new PayInfoExample();
    Map<Long, PayInfo> payinfoMap = sqlSession.selectMap("com.itrus.portal.db.PayInfoMapper.selectByExample", payInfoex, "id");
    uiModel.addAttribute("payinfomap", payinfoMap);
    // 获取产品规格
    ProductSpec productSpec = null;
    if (null != billAll.get(0).get("product_spec") && !"0".equals(billAll.get(0).get("product_spec"))) {
        productSpec = productSpecService.getProductSpec((Long) billAll.get(0).get("product_spec"));
    }
    uiModel.addAttribute("productSpec", productSpec);
    uiModel.addAttribute("digitalCert", digitalCert);
    // 返回订单对应的老证书的base64
    CertBuf certBuf = sqlSession.selectOne("com.itrus.portal.db.CertBufMapper.selectCertBufByBillId", id);
    if (null != certBuf) {
        uiModel.addAttribute("oldCertB64", certBuf.getCertBuf().replaceAll("\n", ""));
    }
    // 判断是否有签章服务,有则显示授权
    if (null != product.getMakeSealServer()) {
        uiModel.addAttribute("makesealserver", product.getMakeSealServer());
        uiModel.addAttribute("billId", billAll.get(0).get("id"));
        // 签章服务配置
        List<MakeSealConfig> makeSealConfigs = sqlSession.selectList("com.itrus.portal.db.MakeSealConfigMapper.selectByExample");
        if (!makeSealConfigs.isEmpty()) {
            MakeSealConfig makeSealConfig = makeSealConfigs.get(0);
            try {
                makeSealConfig.setAddressKey(AESencrp.decrypt(makeSealConfig.getAddressKey(), dbEncKey));
            } catch (EncDecException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            uiModel.addAttribute("makeSealConfig", makeSealConfig);
        }
    }
    return "clientFW/dingdanxiangqing_gengxinqueren";
}
Also used : PayInfoExample(com.itrus.portal.db.PayInfoExample) HashMap(java.util.HashMap) HttpSession(javax.servlet.http.HttpSession) Product(com.itrus.portal.db.Product) EncDecException(com.itrus.portal.exception.EncDecException) UserInfo(com.itrus.portal.db.UserInfo) ProductSpec(com.itrus.portal.db.ProductSpec) EncDecException(com.itrus.portal.exception.EncDecException) DigitalCert(com.itrus.portal.db.DigitalCert) MakeSealConfig(com.itrus.portal.db.MakeSealConfig) PayInfo(com.itrus.portal.db.PayInfo) OnPayInfo(com.itrus.portal.db.OnPayInfo) OnPayInfo(com.itrus.portal.db.OnPayInfo) Enterprise(com.itrus.portal.db.Enterprise) ReviewLog(com.itrus.portal.db.ReviewLog) CertBuf(com.itrus.portal.db.CertBuf) HashMap(java.util.HashMap) Map(java.util.Map) OnlinePay(com.itrus.portal.db.OnlinePay) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 5 with DigitalCert

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

the class PayController method update.

// 修改处理
@RequestMapping(value = "/update/{billid}/{id}", produces = "text/html")
public String update(@PathVariable("billid") Long billid, @PathVariable("id") Long id, @RequestParam(value = "status", required = false) Integer status, @Valid PayInfo payInfo, BindingResult bindingResult, Model uiModel) throws UnsupportedEncodingException {
    // DefaultTransactionDefinition def = new
    // DefaultTransactionDefinition();
    // def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    // TransactionStatus s = transactionManager.getTransaction(def);
    Bill bill = null;
    try {
        bill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByPrimaryKey", billid);
        bill.setBillStatus(status);
        bill.setBillSum(payInfo.getPay());
        sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective", bill);
        PayInfo p = sqlSession.selectOne("com.itrus.portal.db.PayInfoMapper.selectByPrimaryKey", id);
        if (p != null) {
            p.setPay(payInfo.getPay());
            p.setName(payInfo.getName());
            p.setPayTime(payInfo.getPayTime());
            p.setComment(payInfo.getComment());
            if (status == 3) {
                p.setPayConfirmTime(new Date());
            }
            sqlSession.update("com.itrus.portal.db.PayInfoMapper.updateByPrimaryKeySelective", p);
        }
        if (status == 3) {
            LogUtil.adminlog(sqlSession, "订单确认到款", "订单号" + bill.getBillId());
        } else {
            sendsms(billid, null, "ZFYC");
            LogUtil.adminlog(sqlSession, "订单支付异常", "订单号" + bill.getBillId());
        }
        // transactionManager.commit(s);
        // 产品
        Product product = sqlSession.selectOne("com.itrus.portal.db.ProductMapper.selectByPrimaryKey", bill.getProduct());
        // pfx流程判断begin
        DigitalCert digitalCert = null;
        if (null != product.getCert()) {
            digitalCert = digitalCertService.getDigitalCert(product.getCert());
            if (null != digitalCert && null != digitalCert.getCertType() && digitalCert.getCertType().equals(ComNames.DIGITALCERT_CERTTYPE_PFX)) {
                // 这个用户,这个企业,这个项目,有通过了实名认证的订单,则直接进入待下载,
                List<Bill> bills = billService.hasAuthticationLevel(bill.getUniqueId(), bill.getEnterprise(), product.getProject());
                if (null != bills && bills.size() > 0 && digitalCert.getInitBuy().equals(ComNames.DIGITALCERT_INITBUYS_2)) {
                    bill.setBillStatus(ComNames.BILL_STATUS_13);
                    // 新增审核通过的记录
                    reviewService.agreeBillReview(bill);
                    sqlSession.update("com.itrus.portal.db.BillMapper.updateByPrimaryKeySelective", bill);
                }
            }
        }
        // 解锁订单流程判断begin
        if (null != product.getKeyUnlockType()) {
            if (null != status && status.equals(ComNames.BILL_STATUS_3)) {
                bill = unLockKeyBillService.updateBillStatusWhileHasPay(bill, product);
            }
        }
    // 解锁订单流程判断end
    } catch (Exception e) {
        if (status == 3) {
            LogUtil.adminlog(sqlSession, "订单确认到款-异常", e.toString() + ",订单号" + bill.getBillId());
        } else {
            LogUtil.adminlog(sqlSession, "订单支付异常-异常", e.toString() + ",订单号" + bill.getBillId());
        }
    }
    // }
    return "redirect:/pay";
}
Also used : DigitalCert(com.itrus.portal.db.DigitalCert) OnPayInfo(com.itrus.portal.db.OnPayInfo) PayInfo(com.itrus.portal.db.PayInfo) Bill(com.itrus.portal.db.Bill) Product(com.itrus.portal.db.Product) Date(java.util.Date) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IOException(java.io.IOException) 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