Ejemplo n.º 1
0
  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");
  }