public void clickedKeywordExecute(HttpServletRequest request) { String __flag = (String) request.getSession().getAttribute("__flag"); String __key = (String) request.getSession().getAttribute("__key"); String __ip = request.getRemoteAddr(); Long enterpriseId = supply.getCreator().getId(); if (__key != null && __flag != null && __flag.equals("1")) { ClickedKeyword ck = new ClickedKeyword(); ck.setClickedTime(new Date()); ck.setEnterpriseId(enterpriseId); ck.setIp(__ip); ck.setKeyword(__key); ClickedKeyword clickedKeyword = clickedKeywordService.add(ck); // 添加点击记录 // 扣费处理 if (clickedKeyword != null) { EnterpriseKeyword enterpriseKeyword = clickedKeyword.getEnterpriseKeyword(); Keyword keyword = enterpriseKeyword.getKeyword(); // 判断是否过期,过期将不再进行扣费 Date deadTime = keyword.getDeadTime(); boolean expired = (deadTime.getTime() < System.currentTimeMillis()); float amount = clickedKeyword.getEnterpriseKeyword().getPrice(); String supplyName = supply.getName(); String desc = "产品关键词点击扣费[" + supplyName + "|" + keyword.getKeyword() + "|" + amount + "]"; try { if (!expired) { // 关键词为过期 log.info( "==>关键字点击扣费处理[enterprise.id: " + enterpriseId + ", IP: " + __ip + ", keyword: " + __key + "]"); log.info(desc); enterpriseService.pay(enterpriseId, amount, desc); } else { log.info( "%%% 该关键字已经过期[enterprise.id: " + enterpriseId + ", IP: " + __ip + ", keyword: " + __key + "]"); log.debug("%%% 删除过期关键字的点击记录 begin %%%"); clickedKeywordService.delete(clickedKeyword); log.debug("%%% 删除过期关键字的点击记录 end %%%"); } } catch (Exception e) { // 没有足够的费用,将关键字排序作废 log.error("==>点击扣费出错:" + e.getMessage()); supplyService.invalidKeyword(supply.getId()); } } } // 去掉session request.getSession().removeAttribute("__flag"); request.getSession().removeAttribute("__key"); }