use of com.itrus.portal.db.ProductSpec in project portal by ixinportal.
the class BillWebController method billList.
/**
* 订单列表
*
* @param billStatus
* 0未完成订单,1已完成订单
* @param request
* @param uiModel
* @return
*/
@RequestMapping(produces = "text/html")
public String billList(@RequestParam(value = "billStatus", required = false) Integer billStatus, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, @RequestParam(value = "page2", required = false) Integer page2, @RequestParam(value = "size2", required = false) Integer size2, HttpServletRequest request, Model uiModel) {
HttpSession session = request.getSession();
Boolean verifyCodeStatus = (Boolean) session.getAttribute("webverifyCodeStatus");
Enterprise enterprise = (Enterprise) session.getAttribute("webenterprise");
UserInfo userInfo = (UserInfo) session.getAttribute("webuserInfo");
if (null == verifyCodeStatus || !verifyCodeStatus || null == userInfo) {
// 登录状态失效,跳转到登录页面
return "redirect:/userInfoWeb/denglu.html";
}
if (userInfo != null && enterprise == null) {
// 登录未获取到企业信息,跳转到选择企业页面
return "redirect:/userInfoWeb/choiceEnterprise";
}
uiModel.addAttribute("billStatus", billStatus);
if (page == null || page < 1) {
page = 1;
}
if (size == null || size < 1) {
size = 5;
}
BillExample billExampl = new BillExample();
BillExample.Criteria criteria = billExampl.or();
// web页面不显示解锁的订单产品
List<Long> keyUnlockProductIds = productService.getKeyUnlockProductIds();
if (null != keyUnlockProductIds && !keyUnlockProductIds.isEmpty()) {
criteria.andProductNotIn(keyUnlockProductIds);
}
// 查询当前用户当前企业的订单
// 当前用户
criteria.andUniqueIdEqualTo(userInfo.getId());
// 当前企业 v 76
criteria.andEnterpriseEqualTo(enterprise.getId());
if (null == billStatus || 0 == billStatus) {
// 未完成订单:订单状态不为8
criteria.andBillStatusNotEqualTo(ComNames.BILL_STATUS_8);
criteria.andIsDeleteEqualTo(false);
} else if (1 == billStatus) {
// 订单状态为已完成
criteria.andBillStatusEqualTo(ComNames.BILL_STATUS_8);
}
Integer count = sqlSession.selectOne("com.itrus.portal.db.BillMapper.countByExample", billExampl);
if (page > 1 && size * (page - 1) >= count) {
page = (count + size - 1) / size;
}
uiModel.addAttribute("count", count);
uiModel.addAttribute("pages", (count + size - 1) / size);
uiModel.addAttribute("page", page);
uiModel.addAttribute("size", size);
Integer offset = size * (page - 1);
billExampl.setOffset(offset);
billExampl.setLimit(size);
billExampl.setOrderByClause("create_time desc");
List<Bill> billList = sqlSession.selectList("com.itrus.portal.db.BillMapper.selectByExample", billExampl);
uiModel.addAttribute("billList", billList);
uiModel.addAttribute("itemcount", billList.size());
Map<Long, Delivery> deliveryMap = sqlSession.selectMap("com.itrus.portal.db.DeliveryMapper.selectByExample", null, "id");
uiModel.addAttribute("deliveryMap", deliveryMap);
// 填写中订单
if (page2 == null || page2 < 1) {
page2 = 1;
}
if (size2 == null || size2 < 1) {
size2 = 5;
}
EditBillExample ebEx = new EditBillExample();
EditBillExample.Criteria criteria2 = ebEx.or();
// 查询当前用户当前企业的订单
// 当前用户
criteria2.andUserInfoIdEqualTo(userInfo.getId());
//
criteria2.andEnterpriseIdEqualTo(enterprise.getId());
Integer count2 = sqlSession.selectOne("com.itrus.portal.db.EditBillMapper.countByExample", ebEx);
if (page2 > 1 && size2 * (page2 - 1) >= count2) {
page2 = (count2 + size2 - 1) / size2;
}
uiModel.addAttribute("count2", count2);
uiModel.addAttribute("pages2", (count2 + size2 - 1) / size2);
uiModel.addAttribute("page2", page2);
uiModel.addAttribute("size2", size2);
Integer offset2 = size2 * (page2 - 1);
// 产品信息:
/*Map<Long, Product> productMap = billService
.getProductMapByUserInfoId(userInfo.getId());*/
// if ((null == billStatus || billStatus.equals(2)) && count2 != 0) {
Map<Long, Product> productMap = sqlSession.selectMap("com.itrus.portal.db.ProductMapper.selectByExample", "id");
// }
uiModel.addAttribute("productMap", productMap);
// 获取产品关联的数字证书id
Set<Long> certIds = productService.getDigitalCertIds(productMap);
// 产品关联的数字证书:
Map<Long, DigitalCert> digitalCertMap = digitalCertService.getDigitalCertByProductMap(certIds);
uiModel.addAttribute("digitalCertMap", digitalCertMap);
// 获取订单对应的产品规格
Map<Long, ProductSpec> productSpecMap = productSpecService.getProductSpec(billList);
uiModel.addAttribute("productSpecMap", productSpecMap);
ebEx.setOffset(offset2);
ebEx.setLimit(size2);
ebEx.setOrderByClause("create_time desc");
List<EditBill> editBillList = sqlSession.selectList("com.itrus.portal.db.EditBillMapper.selectByExample", ebEx);
// 获取填写中订单对应的产品规格
Map<Long, ProductSpec> editBill_productSpecMap = productSpecService.getEditBillProductSpec(editBillList);
uiModel.addAttribute("editBill_productSpecMap", editBill_productSpecMap);
uiModel.addAttribute("editBillList", editBillList);
uiModel.addAttribute("itemcount2", editBillList.size());
// 订单是否对应的pfx的用户下载证书.
Map<Long, Long> pfxMap = billWebService.getPfxCertBufByBills(billList);
uiModel.addAttribute("pfxmap", pfxMap);
session.removeAttribute("sessionPlist");
session.removeAttribute("enterpriseqqE");
System.out.println(enterprise.getId());
Map param = new HashMap();
param.put("id", enterprise.getId());
if (userInfo.getmPhone() != null) {
param.put("phone", userInfo.getmPhone());
}
List<Map<String, Object>> plist = sqlSession.selectList("com.itrus.portal.db.ProjectMapper.selectProjectId", param);
Map<Long, EnterpriseQq> qqMap = new HashMap<Long, EnterpriseQq>();
for (int i = 0; i < plist.size(); i++) {
EnterpriseQqExample enterpriseQ = new EnterpriseQqExample();
EnterpriseQqExample.Criteria qqEx = enterpriseQ.createCriteria();
// System.out.println(plist.get(i));
Long pid = Long.parseLong(plist.get(i).get("id").toString());
// System.out.println(pid);
qqEx.andProjectIdEqualTo(pid);
EnterpriseQq enterpriseqq = sqlSession.selectOne("com.itrus.portal.db.EnterpriseQqMapper.selectByExample", enterpriseQ);
if (enterpriseqq != null) {
// uiModel.addAttribute("eid", enterpriseqq.getId());
qqMap.put(pid, enterpriseqq);
// session.setAttribute("enterpriseqqE", enterpriseqq.getEnterpriseQqLinks());
}
}
session.setAttribute("sessionqqMap", qqMap);
session.setAttribute("sessionPlist", plist);
return "ixinweb/zhanghuguanli_dingdanxinxi";
}
use of com.itrus.portal.db.ProductSpec in project portal by ixinportal.
the class MakeCertController method makecert.
// 制作证书
@RequestMapping(value = "/make/{id}", produces = "text/html")
@ResponseBody
public Map<String, Object> makecert(@RequestParam(value = "uidIdx", required = true) Integer uidIdx, @RequestParam(value = "csr", required = true) String csr, @RequestParam(value = "pid", required = true) Long pid, @RequestParam(value = "index", required = false) Integer index, @RequestParam(value = "keySn", required = false) String keySn, @PathVariable("id") Long id) {
Map<String, Object> ret = new HashMap<String, Object>();
// 查询订单
Bill bill = sqlSession.selectOne("com.itrus.portal.db.BillMapper.selectByPrimaryKey", id);
// 查询项目产品
Product product = sqlSession.selectOne("com.itrus.portal.db.ProductMapper.selectByPrimaryKey", pid);
// 解析项目产品中,certinfo配置信息
JSONArray certinfo = JSONArray.parseArray(product.getCertinfo());
// 解析订单中uid信息{"ADDTIONAL_FIELD1_1":"","ADDTIONAL_FIELD3_1":"","ADDTIONAL_FIELD4_1":"G2016071301","inputName":"inputValue"}
JSONObject uid = JSONObject.parseObject(bill.getUid());
if (null != index) {
if (index == 1) {
uid = JSONObject.parseObject(bill.getUid1());
}
if (index == 2) {
uid = JSONObject.parseObject(bill.getUid2());
}
if (index == 3) {
uid = JSONObject.parseObject(bill.getUid3());
}
}
// 获取产品、RA配置
RaAccount ra = sqlSession.selectOne("com.itrus.portal.db.RaAccountMapper.selectByPrimaryKey", product.getRa());
com.itrus.portal.utils.CertUtlis certutil = new com.itrus.portal.utils.CertUtlis();
// 证书配置
DigitalCert digitalcert = sqlSession.selectOne("com.itrus.portal.db.DigitalCertMapper.selectByPrimaryKey", product.getCert());
// 组织RA参数
cn.topca.tca.ra.service.UserInfo rauserinfo = new cn.topca.tca.ra.service.UserInfo();
UIDInfoUtils uidutils = new UIDInfoUtils();
uidutils.initService(businessService, orgCodeService, taxCertService, identityCardService, userInfoService, enterpriseService);
String autoidType = "";
Integer autoidValue = 0;
for (int i = 0; i < certinfo.size(); i++) {
JSONObject obj = certinfo.getJSONObject(i);
String raParaName = obj.getString("raParaName");
if (raParaName == null)
continue;
// "autoid":"yes",
String autoid = obj.getString("autoid");
// "raParaName": "userName",
String constValue = obj.getString("constValue");
// "constValue": "test@itrus.com.cn"
String refName = obj.getString("refName");
String val = null;
if (constValue != null) {
val = constValue;
} else if (refName != null) {
if (refName.indexOf("?") == -1)
val = uidutils.getUidInfo(bill.getId(), refName);
else {
val = "";
String[] arr = refName.split("\\?", 2);
if (arr.length == 2) {
String condition = arr[0].trim();
String[] refarr = arr[1].split(":", 2);
if (refarr.length == 2) {
boolean bret = uidutils.checkCondition(bill.getId(), condition);
if (bret)
val = uidutils.getUidInfo(bill.getId(), refarr[0].trim());
else
val = uidutils.getUidInfo(bill.getId(), refarr[1].trim());
}
}
}
} else if (autoid != null) {
// "autoidPrev":"G",
String autoidPrev = obj.getString("autoidPrev");
// "autoidType":"mytestautoid",
autoidType = obj.getString("autoidType");
// "inputName": "ADDTIONAL_FIELD4",存在多个值
String uidval = uid.getString(obj.getString("inputName") + "_" + uidIdx.toString());
val = uidval;
if (StringUtils.isNotBlank(uidval) && uidval.indexOf(autoidPrev) == 0) {
// "autoidPrevDate":"yyyyMMdd",
String autoidPrevDate = obj.getString("autoidPrevDate");
try {
if (autoidPrevDate == null || autoidPrevDate.length() == 0)
autoidValue = Integer.parseInt(uidval.substring(autoidPrev.length()));
else
autoidValue = Integer.parseInt(uidval.substring(autoidPrev.length() + autoidPrevDate.length()));
} catch (Exception e) {
e.printStackTrace();
autoidValue = 0;
}
}
} else {
val = uid.getString(obj.getString("inputName") + "_" + uidIdx.toString());
}
certutil.setUserInfoVal(rauserinfo, raParaName, val);
}
// 证书有效期
// {"0":"1年","1":"2年","2":"3年","3":"5年","4":"10年"})
Integer certValidity = 5;
boolean hasProductSpec = false;
// 判断订单中是否配了产品规格且有期限
ProductSpec productSpec = null;
if (null != bill.getProductSpec() && 0 != bill.getProductSpec()) {
productSpec = productSpecService.getProductSpec(bill.getProductSpec());
if (StringUtils.isNotBlank(productSpec.getProductValid())) {
hasProductSpec = true;
}
}
if (null != index) {
if (index == 1)
if (null != bill.getProductSpec1() && 0 != bill.getProductSpec1()) {
productSpec = productSpecService.getProductSpec(bill.getProductSpec1());
if (StringUtils.isNotBlank(productSpec.getProductValid())) {
hasProductSpec = true;
}
}
if (index == 2)
if (null != bill.getProductSpec2() && 0 != bill.getProductSpec2()) {
productSpec = productSpecService.getProductSpec(bill.getProductSpec2());
if (StringUtils.isNotBlank(productSpec.getProductValid())) {
hasProductSpec = true;
}
}
if (index == 3)
if (null != bill.getProductSpec3() && 0 != bill.getProductSpec3()) {
productSpec = productSpecService.getProductSpec(bill.getProductSpec3());
if (StringUtils.isNotBlank(productSpec.getProductValid())) {
hasProductSpec = true;
}
}
}
if (hasProductSpec) {
Integer day = Integer.parseInt(productSpec.getProductValid());
if (day == 100) {
// TODO 测试时候,配置年限为100年,则有效期为10天
certValidity = 1;
} else {
certValidity = 365 * day + 1 + (day / 4);
}
} else {
if ("0".compareTo(digitalcert.getCertDeadline()) == 0) {
certValidity = 365 * 1 + 1;
} else if ("1".compareTo(digitalcert.getCertDeadline()) == 0) {
certValidity = 365 * 2 + 1;
} else if ("2".compareTo(digitalcert.getCertDeadline()) == 0) {
certValidity = 365 * 3 + 1;
} else if ("3".compareTo(digitalcert.getCertDeadline()) == 0) {
certValidity = 365 * 5 + 2;
} else if ("4".compareTo(digitalcert.getCertDeadline()) == 0) {
certValidity = 365 * 10 + 2;
} else if ("-1".compareTo(digitalcert.getCertDeadline()) == 0) {
// 数字证书没有配置年限(-1),默认10天有效期
certValidity = 10;
}
}
log.error("证书期限*********" + certValidity);
// 调用RA
CertInfo racertinfo = null;
try {
if (ra.getAaPassword() != null)
ra.setAaPassword(AESencrp.decrypt(ra.getAaPassword(), dbEncKey));
racertinfo = certutil.enrollCertByWS(csr, ra, rauserinfo, certValidity);
} catch (RaServiceUnavailable_Exception e) {
e.printStackTrace();
ret.put("status", 1001);
ret.put("message", e.getMessage());
// 记录日志
String oper = "制作证书失败";
String info = "企业名称: " + uidutils.getUidInfo(bill.getId(), "enterprise.enterpriseName") + ",参数:" + ToStringBuilder.reflectionToString(rauserinfo) + ",异常信息: " + e.toString();
LogUtil.adminlog(sqlSession, oper, info);
return ret;
} catch (Exception e) {
e.printStackTrace();
ret.put("status", 1002);
ret.put("message", e.getMessage());
// 记录日志
String oper = "制作证书失败";
String info = "企业名称: " + uidutils.getUidInfo(bill.getId(), "enterprise.enterpriseName") + "参数:" + ToStringBuilder.reflectionToString(rauserinfo) + ",异常信息: " + e.toString();
LogUtil.adminlog(sqlSession, oper, info);
return ret;
}
// 解析数字证书信息
// 存储数字证书信息
CertBuf certbuf = new CertBuf();
certbuf.setCreateTime(new Date());
certbuf.setCertBuf(racertinfo.getCertSignBuf());
certbuf.setCertKmcRep1(racertinfo.getCertKmcRep1());
certbuf.setCertKmcRep2(racertinfo.getCertKmcRep2());
certbuf.setCertsignBuf(racertinfo.getCertSignBuf());
certbuf.setEncUserCert(racertinfo.getCertSignBufKmc());
sqlSession.insert("com.itrus.portal.db.CertBufMapper.insert", certbuf);
UserCert usercert = new UserCert();
usercert.setBill(bill.getId());
usercert.setRaAccount(ra.getId());
usercert.setCertBuf(certbuf.getId());
usercert.setUidIdx(uidIdx);
usercert.setCertDn(racertinfo.getCertSubjectDn());
usercert.setCertSn(racertinfo.getCertSerialNumber());
usercert.setIssuerDn(racertinfo.getCertIssuerDn());
usercert.setCertStatus("1");
usercert.setCertUid("certUid");
usercert.setProduct(pid);
if (StringUtils.isNotBlank(keySn))
// 设置证书keySn
usercert.setKeySn(keySn);
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
usercert.setCertStartTime(sdf.parse(racertinfo.getCertNotBefore()));
usercert.setCertEndTime(sdf.parse(racertinfo.getCertNotAfter()));
} catch (java.text.ParseException e) {
e.printStackTrace();
}
usercert.setSha1Fingerprint("setSha1Fingerprint");
// autoid 数据
if (!autoidType.equals("")) {
usercert.setAutoidType(autoidType);
usercert.setAutoidValue(autoidValue);
}
usercert.setEnterprise(bill.getEnterprise());
try {
sqlSession.insert("com.itrus.portal.db.UserCertMapper.insert", usercert);
} catch (Exception e) {
e.printStackTrace();
}
// 查询userCert中,该bill的记录数目,如果数据 大于等于 bill 里面的购买数量,则修改该bill为制证完成
updateBillStatus(bill, product);
// 记录日志
String oper = "制作证书";
String info = "数字证书: " + racertinfo.getCertSerialNumber() + ", " + racertinfo.getCertSubjectDn();
LogUtil.adminlog(sqlSession, oper, info);
// 返回数字证书
ret.put("certChain", racertinfo.getCertSignBufP7());
ret.put("certsignBuf", racertinfo.getCertSignBuf());
ret.put("certKmcRep1", racertinfo.getCertKmcRep1());
ret.put("certKmcRep2", racertinfo.getCertKmcRep2());
// 加密证书
ret.put("encUserCert", racertinfo.getCertSignBufKmc());
ret.put("status", 0);
return ret;
}
use of com.itrus.portal.db.ProductSpec in project portal by ixinportal.
the class ProductSpecServiceImpl method getProductSpecs.
/**
* 获取指定产品的所有规格
*
* @param productId
* 产品id
* @param isValidityTrue
* 是否有效,可选
* @return
* @throws Exception
*/
public List<ProductSpec> getProductSpecs(Long productId, Boolean isValidityTrue) throws Exception {
List<ProductSpec> productSpecList = new ArrayList<ProductSpec>();
ProductSpecExample example = new ProductSpecExample();
ProductSpecExample.Criteria criteria = example.or();
criteria.andProductIdEqualTo(productId);
if (null != isValidityTrue) {
criteria.andIsValidityEqualTo(isValidityTrue);
}
example.setOrderByClause("create_time asc");
productSpecList = sqlSession.selectList("com.itrus.portal.db.ProductSpecMapper.selectByExample", example);
return productSpecList;
}
use of com.itrus.portal.db.ProductSpec in project portal by ixinportal.
the class ProductSpecServiceImpl method getEditBillProductSpec.
/**
* 获取填写中订单list对应的规格Map
*
* @param billList
* @return
*/
public Map<Long, ProductSpec> getEditBillProductSpec(List<EditBill> editBillList) {
Map<Long, ProductSpec> productSpecMap = new HashMap<Long, ProductSpec>();
List<Long> productSpecIds = new ArrayList<Long>();
for (EditBill bill : editBillList) {
if (null != bill.getProductSpec() && 0 != bill.getProductSpec()) {
productSpecIds.add(bill.getProductSpec());
}
}
if (productSpecIds.isEmpty())
return productSpecMap;
ProductSpecExample example = new ProductSpecExample();
ProductSpecExample.Criteria criteria = example.or();
criteria.andIdIn(productSpecIds);
productSpecMap = sqlSession.selectMap("com.itrus.portal.db.ProductSpecMapper.selectByExample", example, "id");
return productSpecMap;
}
use of com.itrus.portal.db.ProductSpec in project portal by ixinportal.
the class ProductSpecServiceImpl method saveSpecByJson.
/**
* 保存或修改产品规格,接收json数组
*
* @param specJsons
* : <br>
* 例如:[{"id":"1","descript":"描述","isValidity":"true",
* "productField1"
* :"保留字段1","productField2":"保留字段2","productField3"
* :"保留字段3","productField4"
* :"保留字段4","productField5":"保留字段5","productValid"
* :"证书期限"},{"id":"1"
* ,"descript":"描述","isValidity":"false","productField1"
* :"保留字段1","productField2"
* :"保留字段2","productField3":"保留字段3","productField4"
* :"保留字段4","productField5":"保留字段5","productValid":"证书期限"}]
* @param productId
* 产品id
*/
public void saveSpecByJson(String specJsons, Long productId) throws Exception {
JsonNode jsonNode = jsonTool.readTree(specJsons);
for (JsonNode jnode : jsonNode) {
ProductSpec productSpec = new ProductSpec();
productSpec = jsonTool.readValue(jnode, ProductSpec.class);
if (null == productSpec.getPrice() || // 未设置价格、是否有效,则默认为无效的数据,不保存
null == productSpec.getIsValidity())
break;
// 设置productId
productSpec.setProductId(productId);
// 设置lastTime
productSpec.setLastModify(new Date());
// 写入数据库
saveProductSpec(productSpec);
}
}
Aggregations