forumserviceimp.java

来自「一个jsp写的bbs」· Java 代码 · 共 1,964 行 · 第 1/5 页

JAVA
1,964
字号
    return this.getForumDAO().getForumNumRcc(bid, -1, click, -1);
  }

  /**
   *
   * @param bids List
   * @param click int
   * @param pages Pages
   * @return PageList
   */
  public PageList findForumsClick(List bids, int click, Pages pages) {
    PageList pl = new PageList();
    if (pages.getTotalNum() == -1) {
      pages.setTotalNum(this.getForumNumClick(bids, click));
    }
    pages.executeCount();

    List l = this.getForumDAO().findForumsRcc(bids, -1, click, -1, "postTime", Constant.ORDER_DESC,
                                              pages.getSpage(), pages.getPerPageNum());
    pl.setObjectList(l);
    pl.setPages(pages);
    return pl;
  }

  /**
   *
   * @param bid long
   * @param click int
   * @param pages Pages
   * @return PageList
   */
  public PageList findForumsClick(long bid, int click, Pages pages) {
    PageList pl = new PageList();
    if (pages.getTotalNum() == -1) {
      pages.setTotalNum(this.getForumNumClick(bid, click));
    }
    pages.executeCount();

    List l = this.getForumDAO().findForumsRcc(bid, -1, click, -1, "postTime", Constant.ORDER_DESC,
                                              pages.getSpage(), pages.getPerPageNum());
    pl.setObjectList(l);
    pl.setPages(pages);
    return pl;
  }

  /**
   *
   * @param bids List
   * @param commen int
   * @return int
   */
  public int getForumNumCommend(List bids, long commen) {
    return this.getForumDAO().getForumNumRcc(bids, -1, -1, commen);
  }

  /**
   *
   * @param bid long
   * @param commen int
   * @return int
   */
  public int getForumNumCommend(long bid, long commen) {
    return this.getForumDAO().getForumNumRcc(bid, -1, -1, commen);
  }

  public int getForumNumCommend(long commend) {
    return this.getForumDAO().getForumNumCommend(commend);
  }

  /**
   *
   * @param bids List
   * @param commen int
   * @param pages Pages
   * @return PageList
   */
  public PageList findForumsCommend(List bids, long commen, Pages pages) {
    PageList pl = new PageList();
    if (pages.getTotalNum() == -1) {
      pages.setTotalNum(this.getForumNumCommend(bids, commen));
    }
    pages.executeCount();

    List l = this.getForumDAO().findForumsRcc(bids, -1, -1, commen, "postTime", Constant.ORDER_DESC,
                                              pages.getSpage(), pages.getPerPageNum());
    pl.setObjectList(l);
    pl.setPages(pages);
    return pl;
  }

  /**
   *
   * @param bid long
   * @param commen int
   * @param pages Pages
   * @return PageList
   */
  public PageList findForumsCommend(long bid, long commen, Pages pages) {
    PageList pl = new PageList();
    if (pages.getTotalNum() == -1) {
      pages.setTotalNum(this.getForumNumCommend(bid, commen));
    }
    pages.executeCount();

    List l = this.getForumDAO().findForumsRcc(bid, -1, -1, commen, "postTime", Constant.ORDER_DESC,
                                              pages.getSpage(), pages.getPerPageNum());
    pl.setObjectList(l);
    pl.setPages(pages);
    return pl;
  }

  public PageList findForumsCommend(long commend, Pages pages) {
    PageList pl = new PageList();
    if (pages.getTotalNum() == -1) {
      pages.setTotalNum(this.getForumNumCommend(commend));
    }
    pages.executeCount();
    //System.out.println(pages.getSpage());

    List l = this.getForumDAO().findForumsCommend(commend, "postTime", Constant.ORDER_DESC, pages.getSpage(),
                                                  pages.getPerPageNum());
    pl.setObjectList(l);
    pl.setPages(pages);
    return pl;
  }

  public boolean isReedUser(long bid, String mainID, String userID) {
    int num = this.getForumDAO().getForumNumInMainIDByUserID(bid, mainID, userID, 0, 0, 0);
    if (num > 0) {
      return true;
    }
    else {
      return false;
    }
    /**
         List l = this.getForumDAO().findForumsInMainIDByUserID(bid, mainID, userID, 0, "postTime",
        Constant.ORDER_ASC, 0, 1);
         if (l == null || l.isEmpty()) {
      return false;
         }
         else {
      return true;
         }*/
  }

  public void delaPost(Forum forum, Board board, UserInfo ui) throws BbscsException {
    try {
      forum = this.getForumDAO().saveForum(forum);
      if (forum.getIsNew() != 1) {
        Forum mainForum = this.getForumDAO().findForumByID(forum.getMainID(), forum.getBoardID());
        if (mainForum != null) {
          mainForum.setReNum(mainForum.getReNum() - 1);
          if (mainForum.getLastTime() == forum.getPostTime()) {
            List l = this.getForumDAO().findForumsTopic(mainForum.getBoardID(), mainForum.getId(), 0,
                0, "postTime", Constant.ORDER_DESC, 0, 1);
            if (l != null && !l.isEmpty()) {
              Forum lastF = (Forum) l.get(0);
              mainForum.setLastPostNickName(lastF.getNickName());
              mainForum.setLastPostTitle(lastF.getTitle());
              mainForum.setLastPostUserName(lastF.getUserName());
              mainForum.setLastTime(lastF.getPostTime());
            }
          }
          this.getForumDAO().saveForum(mainForum);
        }
      }
      if (board.getAddUserPostNum() == 1 && ui != null) { //版区为增加用户发帖数量
        if (ui.getArticleNum() > 0) {
          ui.setArticleNum(ui.getArticleNum() - 1);
          ui = this.getUserInfoDAO().saveUserInfo(ui);
          this.getUserInfoFileIO().writeUserFile(ui);
        }
      }
      if (forum.getElite() != 0 || forum.getCommend() != 0) {
        if (forum.getElite() != 0) {
          if (ui.getArticleEliteNum() >= 1) {
            ui.setArticleEliteNum(ui.getArticleEliteNum() - 1);
          }
          else {
            ui.setArticleEliteNum(0);
          }
          ui.setLiterary(ui.getLiterary() - 3);
        }
        if (forum.getCommend() != 0) {
          ui.setLiterary(ui.getLiterary() - 1);
          this.getCommendDAO().removeCommend(forum.getId());
        }

        ui = this.getUserInfoDAO().saveUserInfo(ui);
        this.getUserInfoFileIO().writeUserFile(ui);
      }
      if (forum.getIsNew() == 1) {
        this.getScriptForumCache().remove(Constant.FORUM_NEW_CACHE_NAME);
      }
    }
    catch (Exception ex) {
      logger.error(ex);
      throw new BbscsException(ex);
    }
  }

  public void delPosts(List forums, Board board) throws BbscsException {
    for (int i = 0; i < forums.size(); i++) {
      try {
        Forum forum = (Forum) forums.get(i);
        if (forum.getAuditing() == 0) { //如果已近是通过审核的帖子
          forum = this.getForumDAO().saveForum(forum); //保存标注删除,包括删除人、时间等信息
          if (forum.getIsNew() != 1) { //如果不是主帖
            Forum mainForum = this.getForumDAO().findForumByID(forum.getMainID(), forum.getBoardID()); //取主帖
            if (mainForum != null) {
              mainForum.setReNum(mainForum.getReNum() - 1); //减少主帖回复数
              if (mainForum.getLastTime() == forum.getPostTime()) { //如果删除的是最后一个回复帖,要修正主帖表中最后回复人和时间
                List l = this.getForumDAO().findForumsTopic(mainForum.getBoardID(), mainForum.getId(), 0,
                    0, "postTime", Constant.ORDER_DESC, 0, 1);
                if (l != null && !l.isEmpty()) {
                  Forum lastF = (Forum) l.get(0);
                  mainForum.setLastPostNickName(lastF.getNickName());
                  mainForum.setLastPostTitle(lastF.getTitle());
                  mainForum.setLastPostUserName(lastF.getUserName());
                  mainForum.setLastTime(lastF.getPostTime());
                }
              }
              this.getForumDAO().saveForum(mainForum); //保存主帖
            }
          }
          UserInfo ui = this.getUserInfoDAO().findUserInfoById(forum.getUserID());
          if (board.getAddUserPostNum() == 1 && ui != null) { //版区为增加用户发帖数量
            if (ui.getArticleNum() > 0) {
              ui.setArticleNum(ui.getArticleNum() - 1); //减少用户发帖数
              ui = this.getUserInfoDAO().saveUserInfo(ui);
              this.getUserInfoFileIO().writeUserFile(ui);
            }
          }
          if (forum.getElite() != 0 || forum.getCommend() != 0) { //如果是精华或推荐
            if (forum.getElite() != 0) {
              if (ui.getArticleEliteNum() >= 1) {
                ui.setArticleEliteNum(ui.getArticleEliteNum() - 1);
              }
              else {
                ui.setArticleEliteNum(0);
              }
              ui.setLiterary(ui.getLiterary() - 3);
            }
            if (forum.getCommend() != 0) {
              ui.setLiterary(ui.getLiterary() - 1);
              this.getCommendDAO().removeCommend(forum.getId());
            }

            ui = this.getUserInfoDAO().saveUserInfo(ui);
            this.getUserInfoFileIO().writeUserFile(ui);
          }

          if (forum.getIsNew() == 1) { //如果是主帖,尝试从新帖Cache中清除
            this.getScriptForumCache().remove(Constant.FORUM_NEW_CACHE_NAME);
          }
        }
        else { //如果是尚未审核
          forum = this.getForumDAO().saveForum(forum); //保存标注删除,包括删除人、时间等信息
        }
      }
      catch (Exception ex) {
        logger.error(ex);
        throw new BbscsException(ex);
      }
    }
  }

  public void savePostElite(Forum forum, UserInfo ui) throws BbscsException {
    try {
      forum = this.getForumDAO().saveForum(forum);
      ui.setArticleEliteNum(ui.getArticleEliteNum() + 1);
      ui.setLiterary(ui.getLiterary() + 3);
      ui = this.getUserInfoDAO().saveUserInfo(ui);
      this.getUserInfoFileIO().writeUserFile(ui);
    }
    catch (Exception ex) {
      logger.error(ex);
      throw new BbscsException(ex);
    }
  }

  public void saveForums(List forums) throws BbscsException {
    for (int i = 0; i < forums.size(); i++) {
      Forum forum = (Forum) forums.get(i);
      try {
        this.getForumDAO().saveForum(forum);
      }
      catch (Exception ex) {
        logger.error(ex);
        throw new BbscsException(ex);
      }
    }
  }

  public void saveForumsEliteDel(List forums) throws BbscsException {
    for (int i = 0; i < forums.size(); i++) {
      Forum forum = (Forum) forums.get(i);
      try {
        forum = this.getForumDAO().saveForum(forum);
        UserInfo ui = this.getUserInfoDAO().findUserInfoById(forum.getUserID());
        if (ui.getArticleEliteNum() >= 1) {
          ui.setArticleEliteNum(ui.getArticleEliteNum() - 1);
        }
        else {
          ui.setArticleEliteNum(0);
        }
        ui.setLiterary(ui.getLiterary() - 5);
        ui = this.getUserInfoDAO().saveUserInfo(ui);
        this.getUserInfoFileIO().writeUserFile(ui);
      }
      catch (Exception ex) {
        logger.error(ex);
        throw new BbscsException(ex);
      }
    }
  }

  public Forum createVoteForum(Forum forum, Board board, Vote vote, UserInfo ui) throws BbscsException {
    try {
      String detail = forum.getDetail();
      forum.setDetail("");
      String[] details = detail.split("\n");

      vote = this.getVoteDAO().saveVote(vote);
      for (int i = 0; i < details.length; i++) {
        VoteItem vi = new VoteItem();
        vi.setItem(details[i]);
        vi.setItemValue(0);
        vi.setVoteID(vote.getId());
        this.getVoteItemDAO().saveVoteItem(vi);
      }
      forum.setVoteID(vote.getId());
      forum = this.getForumDAO().saveForum(forum);

      forum.setMainID(forum.getId());
      forum = this.getForumDAO().saveForum(forum);
      if (board.getAuditPost() == 0 && board.getAddUserPostNum() == 1) { //增加用户发帖数量
        ui.setArticleNum(ui.getArticleNum() + 1);
        ui = this.getUserInfoDAO().saveUserInfo(ui);
        this.getUserInfoFileIO().writeUserFile(ui);
      }
      if (forum.getEmailInform() != 0 || forum.getMsgInform() != 0) {
        if (this.getSubscibeDAO().findSubscibeByPostID(forum.getId(), ui.getId(), forum.getBoardID()) == null) {
          Subscibe subs = this.getSubscibeFactory().getInstance(forum.getBoardID());
          subs.setBoardID(forum.getBoardID());
          subs.setCreateTime(new Date());
          subs.setEmailinform(forum.getEmailInform());
          subs.setMsginform(forum.getMsgInform());
          subs.setNickName(ui.getNickName());
          subs.setPostID(forum.getId());
          subs.setPostTitle(forum.getTitle());
          subs.setUserEmail(ui.getEmail());
          subs.setUserID(ui.getId());
          subs.setUserName(ui.getUserName());
          this.getSubscibeDAO().saveSubscibe(subs);
        }
      }
      //----------------------
      this.getScriptForumCache().remove(Constant.FORUM_NEW_CACHE_NAME);
      //----------------------

      return forum;
    }
    catch (Exception ex) {
      logger.error(ex);
      throw new BbscsException(ex);
    }
  }

  /**
   * 搂主帖子数
   * @param userID String
   * @param mainID String
   * @return int
   */
  public int getForumOwnerNum(long bid, String userID, String mainID) {
    return this.getForumDAO().getForumNumInMainIDByUserID(bid, mainID, userID, -1, 0, 0);
  }

  /**
   * 只看楼主
   * @param userID String
   * @param mainID String
   * @param pages Pages
   * @return PageList
   */
  public PageList findForumsOwner(long bid, String userID, String mainID, Pages pages) {
    PageList pl = new PageList();
    if (pages.getTotalNum() == -1) {
      pages.setTotalNum(this.getForumOwnerNum(bid, userID, mainID));
    }
    //System.out.println(pages.getTotalNum());
    pages.executeCount();

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?