Package com.etown.action

Source Code of com.etown.action.ForumAction

package com.etown.action;

import java.io.UnsupportedEncodingException;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.etown.dao.CommonDAO;
import com.etown.util.SqlMgr;
import com.etown.util.StringUtil;

/**
* 论坛
* @author 大漠
*
*/
public class ForumAction extends BaseAction {
  private int postType;
 
  private String blockId;    //版块ID

  private String postTitle;  //帖子标题

  private String content;    //帖子内容
 
  private String postId;    //帖子ID
 
  private String parentId;  //父帖ID
 
  private int totalPages;    //分页用:总页数
 
  private int pageIndex=1//分页用:当前显示的页码
 
  private int postPerPage=30//每页显示的条数,默认为30
 
  /**
   * 加载最新30帖
   * 带分页,默认取0到30条
   * 注意:此方法是进入论坛版块时的入口
   * @return
   */
  public String loadPosts30(){
    //论坛左侧的版块树只生成一次,存入Session
    String treeStr=(String) getSessionAttr("fTree");
    if(treeStr==null){
      treeStr=generateBlockTree();
      this.setSessionAttr("fTree",treeStr);
    }
   
    //josn形式的论坛版块数据
    if(getSessionAttr("rootBlocks")==null){
      this.getForumBlocks();
    }
   
    //取指定板块的最新30帖,带分页,根据页码pageIndex和每页帖子数postPerPage计算
    int start=(pageIndex-1)*postPerPage;
    int end=pageIndex*postPerPage;
    JSONArray arr=CommonDAO.getList(SqlMgr.getSql("GET_30_POSTS"),blockId,blockId,blockId,start,end);
    this.setReqAttr("posts30",arr.toString());
    this.setSessionAttr("blockId", blockId);
   
    //取当前版块的总页数
    JSONObject obj=CommonDAO.getSingle(SqlMgr.getSql("GET_POST_COUNT"), this.blockId);
    if(obj!=null){
      String temp=obj.getString("total");
      if(!StringUtil.isEmpty(temp)){
        this.totalPages=(int) Math.ceil(Float.parseFloat(temp)/postPerPage);
        this.setReqAttr("totalPages", totalPages);
      }
    }
    return "success";
  }

  /**
   * 读取帖子内容
   * @return
   */
  public String readPost(){
    //读取主帖和跟帖,包括每个帖子对应的用户信息;每页20条,postId为主帖ID,每页显示20个帖子
    int ct=20;
    int start=(pageIndex-1)*ct;
    int end=pageIndex*ct;
    JSONArray arr=CommonDAO.getList(SqlMgr.getSql("READ_POST"),postId,postId,start,end);
    System.out.println(arr.toString());
   
    //获取跟帖总页数
    JSONObject obj=CommonDAO.getSingle(SqlMgr.getSql("GET_COMMENT_COUNT"),postId,postId);
    if(obj!=null){
      String temp=obj.getString("total");
      if(!StringUtil.isEmpty(temp)){
        this.totalPages=(int) Math.ceil(Float.parseFloat(temp)/ct);
        this.setReqAttr("totalPages", totalPages);
      }
    }
   
    //阅读数+1
    CommonDAO.update(SqlMgr.getSql("READ_PLUS"), postId);
    //主帖用户金币数增加0.01
    CommonDAO.update(SqlMgr.getSql("ADD_USER_MONEY"),0.01,getSessionAttr("userName"));
   
    this.setReqAttr("posts",arr.toString());
    return "success";
  }
 
  /**
   * 发新帖
   * @return
   */
  public String addNewPost() {
    String userName=(String) this.getSessionAttr("userName");
//    for(int i=0;i<30;i++){
      //插数据表
      CommonDAO.update(SqlMgr.getSql("ADD_NEW_POST"), userName,postTitle,content,blockId,"");
      //用户金币数增加
      CommonDAO.update(SqlMgr.getSql("ADD_USER_MONEY"),30,getSessionAttr("userName"));
//    }
    return "success";
  }
 
  /**
   * 删除帖子
   * @return
   */
  public String delPost(){
    //如果删除的是主帖,所有跟帖删除,跳转到论坛对应版块的首页
    CommonDAO.update(SqlMgr.getSql("DEL_POST"), postId,postId);
    //如果删除的是跟帖,刷新读帖页面
    if(parentId.equals("0")){
      return "toMain";
    }else{
      return "toPost";
    }
  }
 
  /**
   * 跟帖啊
   * @return
   * @throws UnsupportedEncodingException
   */
  public String commentPost() throws UnsupportedEncodingException{
    String userName=(String) this.getSessionAttr("userName");
    //插数据表
    CommonDAO.update(SqlMgr.getSql("ADD_COMMENT_POST"), userName,content,0,0,"",parentId);
    //跟帖数+1,更新最新回复时间
    CommonDAO.update(SqlMgr.getSql("COMMENT_PLUS"), parentId);
    //主帖用户金币数增加0.05
    CommonDAO.update(SqlMgr.getSql("ADD_USER_MONEY"),0.01,getSessionAttr("userName"));
    return "success";
  }
 
  /**
   * 生成论坛左侧树
   * 手动拼接HTML
   * @return
   */
  private String generateBlockTree(){
    StringBuffer result=new StringBuffer();
    result.append("<ul id='navigation'>");//注意:此ID和页面脚本绑定,不要更改
    JSONArray roots=CommonDAO.getList(SqlMgr.getSql("GET_FORUM_CHILD_BLOCK"),0);
    if(roots!=null){
      for(int i=0;i<roots.size();i++){
        JSONObject jsonObj=roots.getJSONObject(i);
        String bId=jsonObj.getString("block_id");
        String link=jsonObj.getString("link");
        if(i==0){
          this.blockId=jsonObj.getString("block_id");
        }
        if(link.equals("1")){
          result.append("<li><a id='"+bId+"' href='loadPosts30.action?blockId="+bId+"'>");
        }else{
          result.append("<li><a id='"+bId+"' href='#'>");
        }
       
        result.append(jsonObj.get("block_name"));
        result.append("</a>");
        String blockId=jsonObj.getString("block_id");
       
        JSONArray children=CommonDAO.getList(SqlMgr.getSql("GET_FORUM_CHILD_BLOCK"), blockId);
        if(children!=null&&children.size()!=0){
          result.append("<ul>");
          for(int j=0;j<children.size();j++){
            JSONObject child=children.getJSONObject(j);
            bId=child.getString("block_id");
            link=child.getString("link");
            if(link.equals("1")){
              result.append("<li><a id='"+bId+"' href='loadPosts30.action?blockId="+bId+"'>");
            }else{
              result.append("<li><a id='"+bId+"' href='#'>");
            }
            result.append(child.get("block_name"));
            result.append("</a></li>");
          }
          result.append("</ul></li>");
        }else{
          result.append("</li>");
        }
      }
    }
    result.append("</ul>");
    return result.toString();
  }
 
  /**
   * 取论坛版块
   * @return
   */
  private void getForumBlocks(){
    JSONArray roots=CommonDAO.getList(SqlMgr.getSql("GET_FORUM_ROOT_BLOCK"));
    this.setSessionAttr("rootBlocks", roots.toString());
   
    JSONObject chObj=new JSONObject();
    for(int i=0;i<roots.size();i++){
      JSONObject obj=roots.getJSONObject(i);
      String bId=obj.getString("block_id");
      JSONArray children=CommonDAO.getList(SqlMgr.getSql("GET_FORUM_CHILD_BLOCK"),bId);
      chObj.put(bId, children.toString());
    }
    this.setSessionAttr("cBlockMap", chObj.toString());
  }
 
  public String getContent() {
    return content;
  }

  public void setContent(String content) {
    this.content = content;
  }

  public String getPostTitle() {
    return postTitle;
  }

  public void setPostTitle(String postTitle) {
    this.postTitle = postTitle;
  }

  public int getPostType() {
    return postType;
  }

  public void setPostType(int postType) {
    this.postType = postType;
  }

  public String getPostId() {
    return postId;
  }

  public void setPostId(String postId) {
    this.postId = postId;
  }

  public String getParentId() {
    return parentId;
  }

  public void setParentId(String parentId) {
    this.parentId = parentId;
  }

  public int getPageIndex() {
    return pageIndex;
  }

  public void setPageIndex(int pageIndex) {
    this.pageIndex = pageIndex;
  }

  public int getTotalPages() {
    return totalPages;
  }

  public void setTotalPages(int totalPages) {
    this.totalPages = totalPages;
  }

  public String getBlockId() {
    return blockId;
  }

  public void setBlockId(String blockId) {
    this.blockId = blockId;
  }
}
TOP

Related Classes of com.etown.action.ForumAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.