📄 reply.java
字号:
/* * 作者: 胡李青 * qq: 31703299 * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.bbs.bean;import biz.tbuy.bbs.BBSGroups;import biz.tbuy.bbs.FileModel;import biz.tbuy.bbs.ReplyBuilder;import biz.tbuy.bbs.ReplyFactory;import biz.tbuy.bbs.ReplyModel;import biz.tbuy.bbs.TopicAction;import biz.tbuy.bbs.TopicBuilder;import biz.tbuy.bbs.TopicFactory;import biz.tbuy.bbs.TopicModel;import biz.tbuy.bbs.UserinfoBuilder;import biz.tbuy.bbs.UserinfoFactory;import biz.tbuy.bbs.UserinfoModel;import biz.tbuy.common.Constants;import biz.tbuy.common.UploadedFileOper;import biz.tbuy.common.Utils;import java.util.List;import org.apache.myfaces.custom.fileupload.UploadedFile;/** * @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 Reply extends BaseBean{ private TopicModel _topic; // 需要被回复的主题 private String _content; // 所回复的主体内容 private boolean _upload; // 是否允许上传附件(全局) /** Creates a new instance of ReplyBean */ public Reply() { _topic = new TopicModel(); // 检查用户是否已经登录 if (!getVisitor().isLogin()) { Utils.addErrorMessage(getBundle(), "你尚未登录系统,需要先登录系统后才可以发表文章 : )"); } } public void setTopic(TopicModel topic) { _topic = topic; } public TopicModel getTopic() { return _topic; } public void setContent(String content) { _content = content; } public String getContent() { return _content; } public boolean isUpload() { return _upload; } /* 关于上传文件相关处理 ****************************************************/ private UploadedFileOper _fileOper; // 用于处理上传文件的自定义类 private UploadedFile _myFile; // 关于上传的文件 private String _myFileDes; // 上传文件的简短描述 private List<String> _suffixAllow; // 上传文件所允许的类型 private int _maxWidthAllow = 1024; // 上传文件允许的最大宽度(如果是图片) private int _maxHeightAllow = 768; // 上传文件允许的最大高度(如果是图片) private int _maxSizeAllow = 120; // 上传文件允许的最大Size(以K为单位) public void setMyFile(UploadedFile myFile) { _myFile = myFile; } public UploadedFile getMyFile() { return _myFile; } public void setMyFileDes(String myFileDes) { _myFileDes = myFileDes; } public String getMyFileDes() { return _myFileDes; } // typeAllow public void setSuffixAllow(List<String> suffixAllow) { _suffixAllow = suffixAllow; } public List<String> getSuffixAllow() { return _suffixAllow; } public void setMaxWidthAllow(int maxWidthAllow) { _maxWidthAllow = maxWidthAllow; } public int getMaxWidthAllow() { return _maxWidthAllow; } public void setMaxHeightAllow(int maxHeightAllow) { _maxHeightAllow = maxHeightAllow; } public int getMaxHeightAllow() { return _maxHeightAllow; } public void setMaxSizeAllow(int maxSizeAllow) { _maxSizeAllow = maxSizeAllow; } public int getMaxSizeAllow() { return _maxSizeAllow; } /** * 回复主题贴 * 1.检查登录 * 2.检查是否为锁贴 * 3.正式回复 */ public String reply() throws Exception { // 1.检查用户登录 if (!getVisitor().isLogin()) { Utils.addErrorMessage(getBundle(), "对不起,你必须先登录才能回复贴子!"); return Constants.OUT_FAILURE; } // 重新载入topic reloadTopic(); // 组织replyModel ReplyModel tReply = makeReply(); // 创建builder回复 ReplyBuilder rBuilder = ReplyFactory.newBuilder(_topic, tReply); int key = rBuilder.reply(); if (key != -1) { // 如果回复信息发表成功则处理上传文件(如果允许上传),如果处理失败则回收回复信息 if (_myFile != null) { FileModel file = takeUploadedFile(key); if (file == null || !rBuilder.uploadFile(file)) { // 如果处理上传文件失败 rBuilder.revoke(); Utils.addErrorMessage(getBundle(), "上传文件时遇到问题!"); return Constants.OUT_FAILURE; } } // 更新主题回复量 TopicBuilder tBuilder = TopicFactory.newBuilder(_topic); tBuilder.growTotalReply(1); // 更新用户组信息 UserinfoModel userinfo = UserinfoFactory.getInstance() .getUserinfo(getVisitor().getUser().getId()); userinfo.setTotalArticle(userinfo.getTotalArticle() + 1); UserinfoBuilder uBuilder = UserinfoFactory.getInstance().newBuilder(userinfo); uBuilder.resetGroup(); uBuilder.update(); // getBBSApplication().getArticleInfo().addArticleAndRecount(); _content = ""; // 回复完成之后清空回复内容 Utils.addInfoMessage(getBundle(), "回复成功!"); return Constants.OUT_SUCCESS; } else { return Constants.OUT_FAILURE; } } private ReplyModel makeReply() { ReplyModel reply = new ReplyModel(); reply.setByTopic(_topic.getNum()); reply.setByUser(getVisitor().getUser().getId()); reply.setContent(_content); reply.setIp(getVisitor().getIp()); if (_myFile != null) reply.setBeUpload(true); return reply; } /** * 重新载入被回复的主题信息 */ private void reloadTopic() { _topic = TopicAction.getTopicsById(_topic.getNum()); } /** * 关于处理上传文件 * @param key, 相关主题的主键值,用于关联上传文件 */ private FileModel takeUploadedFile(int key) { if (_myFile == null) return null; _fileOper = new UploadedFileOper(_myFile); _fileOper.setMaxHeightAllow(_maxHeightAllow); _fileOper.setMaxWidthAllow(_maxWidthAllow); _fileOper.setMaxSizeAllow(_maxSizeAllow); _fileOper.setSuffixAllow(_suffixAllow); int allowKey = _fileOper.checkAllow(); switch (allowKey) { case 1: Utils.addErrorMessage(getBundle(), "对不起,你的上传文件太大!"); return null; case 2: Utils.addErrorMessage(getBundle(), "对不起,文件类型不被允许!"); return null; case 3: Utils.addErrorMessage(getBundle(), "对不起,文件宽度超过限制"); return null; case 4: Utils.addErrorMessage(getBundle(), "对不起,文件高度超过限制!"); return null; default: break; } // 保存文件 if (!_fileOper.saveTo(getSavePath() + _fileOper.getNewName())) { Utils.addErrorMessage(getBundle(), "对不起!保存文件时遇到问题!"); return null; } // 将文件信息插入数据库中 FileModel file = new FileModel(); file.setBeRevoke(false); file.setTarget("r"); // 这里与Post.java不一样,r表示回复信息的file file.setByTarget(key); file.setByUser(getVisitor().getUser().getId()); file.setDescription(_myFileDes); file.setName(_fileOper.getNewName()); file.setSize(Math.round(_fileOper.getSize() / 1024)); file.setType(_fileOper.getType()); file.setSuffix(_fileOper.getSuffix()); return file; } /** * 获取需要保存上传文件的文件夹路径 */ private String getSavePath() { return getComApplication().getServletContextPath() + BBSGroups.PATH_UPLOAD_FILE; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -