package cn.newgxu.bbs.web.action;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import cn.newgxu.bbs.common.MessageList;
import cn.newgxu.bbs.common.exception.BBSException;
import cn.newgxu.bbs.common.util.Util;
import cn.newgxu.bbs.domain.Topic;
import cn.newgxu.bbs.service.ForumService;
import cn.newgxu.bbs.service.MessageService;
import cn.newgxu.bbs.web.model.ReplyModel;
import cn.newgxu.bbs.web.model.message.SendMessageModel;
import cn.newgxu.bbs.web.webservice.util.Twitter;
import com.opensymphony.webwork.ServletActionContext;
/**
*
* @author polly
* @since 4.0.0
* @version $Revision 1.1$
*/
public class ReplyAction extends AbstractBaseAction {
private static final long serialVersionUID = -8204797530439905156L;
private static final Log log = LogFactory.getLog(ReplyAction.class);
private ReplyModel model = new ReplyModel();
private ForumService forumService;
private MessageService messageService;
public void setMessageService(MessageService messageService) {
this.messageService = messageService;
}
@Override
public String execute() throws Exception {
signOnlineUser("回复主题");
model.setUser(getUser());
try {
model.setIfPhone(getIsPhone());
forumService.reply(model);
super.setOnlineStatusForumId(model.getForumId());
return SUCCESS;
} catch (BBSException e) {
MessageList m = new MessageList();
log.debug(e);
m.addMessage(e.getMessage());
Util.putMessageList(m, getSession());
return ERROR;
}
}
public String submit() throws Exception {
signOnlineUser("回复主题提交中...");
model.setUser(getUser());
MessageList m = new MessageList();
try {
// add by ivy, 2012-04-14, 解决阿管反应刚注册的用户就可以回复帖子
if ((System.currentTimeMillis()
- model.getUser().getRegisterTime().getTime() < 24 * 3600 * 1000))
throw new BBSException("对不起,您的注册时间不超过1天,无法回复帖子,请一天后再试");
// add end...
model.setIfPhone(getIsPhone());
Topic topic = forumService.createReply(model);
SendMessageModel sendModel = new SendMessageModel();
sendModel.setTitle("我回复了你的主题,去看看吧");
sendModel
.setContent("<a target=\"_blank\" href=\"/topic.yws?forumId="
+ topic.getForum().getId()
+ "&topicId="
+ topic.getId() + "\">去看看吧</a>");
sendModel.setUser(getUser());
sendModel.setUsers(model.getTopic().getUser().getNick());
messageService.sendMessageDo(sendModel);
// System.out.println("昵称是:"+model.getTopic().getUser().getNick());
// m.setUrl("/topic.yws?forumId=${forumId}&topicId=${topicId}&page=${page}",
// MessageList.P("${forumId}", model.getForumId()),
// MessageList.P("${topicId}", model.getTopicId()),
// MessageList.P("${page}", topic.getReplyPages()));
m.setUrl("/forum.yws?forumId=${forumId}",
MessageList.P("${forumId}", model.getForumId()));
m.addMessage("<b>新回复发表成功!</b>");
m.addMessage("<a href='/forum.yws?forumId=${forumId}'>返回主题列表</a>",
MessageList.P("${forumId}", model.getForumId()));
m.addMessage(
"<a href='/topic.yws?forumId=${forumId}&topicId=${topicId}&page=${page}'>查看我刚才回复的主题</a>",
MessageList.P("${forumId}", model.getForumId()),
MessageList.P("${topicId}", model.getTopicId()),
MessageList.P("${page}", topic.getReplyPages()));
Util.putMessageList(m, getSession());
log.debug("新回复发表成功!");
if (model.getSynchronousTwitter() == 2) {
synchronousTwitter();
}
return SUCCESS;
} catch (BBSException e) {
e.printStackTrace();
log.debug(e);
m.addMessage(e.getMessage());
Util.putMessageList(m, getSession());
return ERROR;
}
}
/**
* 快速回复
*
* @return
* @throws Exception
*/
public String replyFast() throws Exception {
model.setUser(getUser());
try {
forumService.replyFast(model);
return SUCCESS;
} catch (BBSException e) {
MessageList m = new MessageList();
log.debug(e);
m.addMessage(e.getMessage());
Util.putMessageList(m, getSession());
return ERROR;
}
}
public String replyFastDo() throws Exception {
model.setUser(getUser());
try {
forumService.replyFastDo(model);
ServletActionContext.getResponse().getWriter()
.write("<script>parent.result('1');</script>");
if (model.getSynchronousTwitter() == 2) {
synchronousTwitter();
}
return null;
} catch (BBSException e) {
MessageList m = new MessageList();
log.debug(e);
m.addMessage(e.getMessage());
Util.putMessageList(m, getSession());
return ERROR;
}
}
public Object getModel() {
return model;
}
public void setForumService(ForumService forumService) {
this.forumService = forumService;
}
private void synchronousTwitter() {
Twitter twitter = new Twitter();
twitter.setUrl("http://bbs.newgxu.cn/topic.yws?topicId="
+ model.getTopicId() + "&forumId=" + model.getForumId());
twitter.setTitle(model.getTopic().getTitle());
twitter.synchronousTwitter(model.getUser().getUsername(), model
.getUser().getPassword(), 2);
System.out.println(twitter.getUrl());
}
}