📄 replyaction.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.bbs;import biz.tbuy.bbs.bean.BaseBean;import biz.tbuy.common.logs.Elog;import biz.tbuy.common.pool.ProxyConn;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b> * <a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b> * <a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> */public class ReplyAction extends BaseBean{ public ReplyAction() { } /** * 添加回复信息 * @param reply * @return true 如果添加成功,否则返回false; */ public static boolean addReply(ReplyModel reply) { return addReplyWithKey(reply) != -1 ? true : false; } /** * 添加回复信息 * @param reply * @return key 如果回复成功则返回该reply的id,即r_num,否则返回-1; */ public static int addReplyWithKey(ReplyModel reply) { int key = -1; String sql = "insert into reply (r_content, r_ip, r_byTopic, " + "r_byUser, r_beUpload, r_date) " + "values (?, ?, ?, ?, ?, now())"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setString(1, reply.getContent()); ps.setString(2, reply.getIp()); ps.setInt(3, reply.getByTopic()); ps.setString(4, reply.getByUser()); ps.setBoolean(5, reply.getBeUpload()); if (ps.executeUpdate() > 0) { ResultSet rs = ps.getGeneratedKeys(); if (rs.next()) { key = rs.getInt(1); } } } catch (SQLException sqle) { Elog.log("ReplyAction:addReplyWithKey:" + sqle.getMessage()); } finally { myConn.close(); } return key; } /** * 通过主题的ID获取该主题的最后回复信息 * @param topicId 主题的id * @return reply 相关主题的最后回复信息 */ public static ReplyModel getLastReplyByTopicId(int topicId) { ReplyModel reply = null; String sql = "select * from reply " + "where r_byTopic=? " + "and r_beRevoke!=1 " + "order by r_num desc limit 0, 1 "; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setInt(1, topicId); ResultSet rs = ps.executeQuery(); List<ReplyModel> list = getReplies(rs); if (!list.isEmpty()) { reply = list.get(0); } } catch (SQLException sqle) { Elog.log("ReplyAction.getLastReplyByTopicId()/" + sqle.getMessage()); } finally { myConn.close(); } return reply; } /** * 获取BBS的所有回复信息总量,该方法不会获取已经回收的回复信息 * @return total */ public static int getTotalReplies() { int total = 0; String sql = "select * from reply where r_beRevoke!=1 "; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); rs.last(); total = rs.getRow(); } catch (SQLException sqle) { Elog.log("ReplyAction:getTotalReplies:" + sqle.getMessage()); } finally { myConn.close(); } return total; } /** * 获取特定日期的回复信息发表数量,该方法不会计算已经被回收的信息 * @param date * @return total */ public static int getTotalRepliesByDate(Date date) { int total = 0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(date); String sql = "select * from reply where " + "r_beRevoke!=1 and r_date like '" + dateStr + "%' "; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); rs.last(); total = rs.getRow(); } catch (SQLException sqle) { Elog.log("ReplyAction:getTotalRepliesByDate:" + sqle.getMessage()); } finally { myConn.close(); } return total; } /** * 通过讨论区forum获取其总回复的文章数 * @param forum * @return total * @see #getTotalRepliesByForumId(int) */ public static int getTotalRepliesByForum(ForumModel forum) { return getTotalRepliesByForumId(forum.getNum()); } /** * 通过讨论区forum的id获取其总回复的文章数 * @param forumId 讨论区的ID * @return total 总回复文章数 */ public static int getTotalRepliesByForumId(int forumId) { int total = 0; String sql = "select * from reply, topic " + "where t_byForum=? " + "and r_byTopic=t_num " + "and r_beRevoke!=1 "; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setInt(1, forumId); ResultSet rs = ps.executeQuery(); rs.last(); total = rs.getRow(); } catch (SQLException sqle) { Elog.log("ReplyAction.getTotalReplysByForumId()/" + sqle.getMessage()); } finally { myConn.close(); } return total; } /** * 通过reply的id获取reply信息 * @param replyId 回复信��的id * @return reply 获取成功,否则返回null; */ public static ReplyModel getReplyById(int replyId) { ReplyModel reply = null; String sql = "select * from reply " + "where r_num=? " + "and r_beRevoke!=1 "; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setInt(1, replyId); ResultSet rs = ps.executeQuery(); List<ReplyModel> list = new ArrayList<ReplyModel>(1); list = getReplies(rs); if (!list.isEmpty()) { reply = list.get(0); } } catch (SQLException sqle) { Elog.log("ReplyAction.getReplyById()/" + sqle.getMessage()); } finally { myConn.close(); } return reply; } /** * 通过ReplyModel完整更新回复信息的内容 * @param reply 需要更新的reply * @return true 如果更新成功,否则返回false; */ public static boolean updateReply(ReplyModel reply) { boolean isOk = false; String sql = "update reply set " + "r_content=?, " + "r_date=?, " + "r_ip=?, " + "r_byTopic=?, " + "r_byUser=?, " + "r_beRevoke=?, " + "r_beUpload=?, " + "r_editByUser=?, " + "r_editByDate=now() " + "where r_num=?"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setString(1, reply.getContent()); ps.setTimestamp(2, reply.getDate()); ps.setString(3, reply.getIp()); ps.setInt(4, reply.getByTopic()); ps.setString(5, reply.getByUser()); ps.setBoolean(6, reply.getBeRevoke()); ps.setBoolean(7, reply.getBeUpload()); ps.setString(8, reply.getEditByUser()); ps.setInt(9, reply.getNum()); isOk = ps.executeUpdate() > 0; } catch (SQLException sqle) { Elog.log("ReplyAction.updateReply()/" + sqle.getMessage()); } finally { myConn.close(); } return isOk; } /************************************************************************** * 关于被删除及被回收的回复贴子,该方法获取已被回收的贴子的总数量 * @return total **************************************************************************/ public static int getTotalRevokeReplies() { int total = 0; String sql = "select * from reply where r_beRevoke=1"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ResultSet rs = ps.executeQuery(); rs.last(); total = rs.getRow(); } catch (SQLException sqle) { Elog.log("Exception:ReplyAction:getTotalRevokeReplies:" + sqle.getMessage()); } finally { myConn.close(); } return total; } /** * 彻底删除所有已经被回收的回复信息 * @return true 如果正常删除,否则false */ public static boolean clearRevokeReplies() { boolean isOk = true; String sql = "delete from reply where r_beRevoke=1"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.executeUpdate(); } catch (SQLException sqle) { isOk = false; Elog.log("Exception:ReplyAction:clearRevokeReplies:" + sqle.getMessage()); } finally { myConn.close(); } return isOk; } /** * 通过reply的id回收该reply,并不彻底删除该reply * @param replyId 需要被回收的reply的id * @return true 如果回收成功,否则返回false; */ public static boolean revoke(int replyId) { boolean isOk = false; String sql = "update reply set r_beRevoke=1 where r_num=?"; ProxyConn myConn = getConn(); try { PreparedStatement ps = myConn.prepareStatement(sql); ps.setInt(1, replyId); isOk = ps.executeUpdate() > 0; } catch (SQLException sqle) { Elog.log("ReplyAction.revoke()/" + sqle.getMessage()); } finally { myConn.close(); } return isOk; } /** * getReplies by ResultSet * 注意:修改该方法时可能需要同时修改: * CommonAction.getRepliesOfObject(ResultSet rs) * @param rs * @return ReplyModels */ private static List<ReplyModel> getReplies(ResultSet rs) { List<ReplyModel> list = new ArrayList<ReplyModel>(); try { while (rs.next()) { list.add(getReplyByRS(rs)); } } catch (SQLException sqle) { Elog.log("ReplyAction.getReplies()/" + sqle.getMessage()); } return list; } /** * 通过该ResultSet的当前行获取相应的数据,并转为单个ReplyModel返回 * 这里是真正从ResultSet中获取数据的地方,所有的ReplyModel都应该从 * 这里获得数据 * @param rs * @return reply */ public static ReplyModel getReplyByRS(ResultSet rs) { ReplyModel reply = new ReplyModel(); try { reply.setNum(rs.getInt("r_num")); reply.setContent(rs.getString("r_content")); reply.setDate(rs.getTimestamp("r_date")); reply.setIp(rs.getString("r_ip")); reply.setByTopic(rs.getInt("r_byTopic")); reply.setByUser(rs.getString("r_byUser")); reply.setBeRevoke(rs.getBoolean("r_beRevoke")); reply.setBeUpload(rs.getBoolean("r_beUpload")); reply.setEditByUser(rs.getString("r_editByUser")); reply.setEditByDate(rs.getTimestamp("r_editByDate")); } catch (SQLException sqle) { Elog.log("ReplyAction:getReplyByRS():" + sqle.getMessage()); } return reply; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -