friendset.java

来自「一个jsp写的bbs」· Java 代码 · 共 259 行

JAVA
259
字号
package com.laoer.bbscs.web.action;

import java.util.*;
import javax.servlet.http.*;

import org.apache.commons.lang.*;
import org.apache.struts.action.*;
import org.apache.struts.util.*;
import com.laoer.bbscs.bean.*;
import com.laoer.bbscs.comm.*;
import com.laoer.bbscs.service.*;
import com.laoer.bbscs.service.FriendFactory;
import com.laoer.bbscs.web.form.*;
import com.laoer.bbscs.web.servlet.*;
import com.laoer.bbscs.exception.*;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;

public class FriendSet
    extends BaseAction {

  private static final Log logger = LogFactory.getLog(FriendSet.class);

  private FriendService friendService;

  private FriendFactory friendFactory;

  private AjaxMessagesXML ajaxMessagesXML;

  private UserService userService;

  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                               HttpServletResponse response) {
    FriendForm friendForm = (FriendForm) form;

    UserSession us = this.getUserSession(request);

    if (friendForm.getAction().equalsIgnoreCase("f")) {

      return mapping.findForward("friendSet");
    }

    if (friendForm.getAction().equalsIgnoreCase("flist")) {
      List flist = this.getFriendService().findFriends(us.getId(), friendForm.getIsBlack());
      request.setAttribute("flist", flist);
      return mapping.findForward("friendList");
    }

    if (friendForm.getAction().equalsIgnoreCase("new")) {
      friendForm.setAction("add");
      return mapping.findForward("friendAdd");
    }

    if (friendForm.getAction().equalsIgnoreCase("add")) { //添加好友或黑名单
      MessageResources mr = this.getResources(request);
      Locale locale = this.getLocale(request);
      if (StringUtils.isBlank(friendForm.getFriendName())) { //用户名不能为空
        this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_FNAME_NULL,
                                             mr.getMessage(locale, "error.friend.fname.null"));
        this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
        return mapping.findForward("ajaxjsp");
      }

      if (friendForm.getFriendName().equalsIgnoreCase(us.getUserName())) { //要添加的用户和自己一致
        if (friendForm.getIsBlack() == 0) {
          this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_FNAME_ISME,
                                               mr.getMessage(locale, "error.friend.fnameisme0"));
        }
        else {
          this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_FNAME_ISME,
                                               mr.getMessage(locale, "error.friend.fnameisme1"));
        }
        this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
        return mapping.findForward("ajaxjsp");
      }

      String friendComment = StringUtils.trimToEmpty(friendForm.getFriendComment());

      if (BBSCSUtil.getSysCharsetStrLength(friendComment) > 1500) {
        this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_COMMENT_TOOLONG,
                                             mr.getMessage(locale, "error.friend.comment.toolong",
            "500"));
        this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
        return mapping.findForward("ajaxjsp");
      }

      UserInfo ui = this.getUserService().findUserInfoByUserName(friendForm.getFriendName());
      if (ui == null) { //检查要添加的用户是否存在
        this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_USER_NOEXIST,
                                             mr.getMessage(locale, "error.friend.usernoexist"));
        this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
        return mapping.findForward("ajaxjsp");
      }

      Friend f = this.getFriendService().findFriendByName(friendForm.getFriendName(), us.getId());

      if (f != null) { //该用户已经存在
        if (friendForm.getIsBlack() == 0) { //添加好友情况下
          if (f.getIsBlack() == 1) { //该用户已经在黑名单中,转到好友名单中
            f.setIsBlack(0);
            try {
              f = this.getFriendService().saveFriend(f); //保存用户
              this.getFriendService().friendIDsToFile(us.getId()); //将用户列表写入文件
              ui.setUserKnow(ui.getUserKnow() + 1); //增加用户人缘系数
              this.getUserService().saveUserInfo(ui);
              this.getAjaxMessagesXML().setMessage(Constant.CODEID_OK,
                  mr.getMessage(locale, "friend.add.ok"));
            }
            catch (BbscsException ex) {
              logger.error(ex);
              this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_ADDFAILED,
                  mr.getMessage(locale, "error.friend.add.error"));
            }
          }
          else { //该用户已经是好友
            this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_EXIST,
                                                 mr.getMessage(locale, "error.friend.userexist0"));
          }
        }
        else { //添加黑名单情况
          if (f.getIsBlack() == 0) { //该用户在好友名单中,转到黑名单
            f.setIsBlack(1);
            try {
              f = this.getFriendService().saveFriend(f); //保存用户
              this.getFriendService().friendIDsToFile(us.getId()); //将用户列表写入文件
              ui.setUserKnow(ui.getUserKnow() - 1); //减少用户人缘系数
              this.getUserService().saveUserInfo(ui);
              this.getAjaxMessagesXML().setMessage(Constant.CODEID_OK,
                  mr.getMessage(locale, "friend.add.ok"));
            }
            catch (BbscsException ex) {
              logger.error(ex);
              this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_ADDFAILED,
                  mr.getMessage(locale, "error.friend.add.error"));
            }

          }
          else { //该用户已经在黑名单中
            this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_EXIST,
                                                 mr.getMessage(locale, "error.friend.userexist1"));
          }
        }
        this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
        return mapping.findForward("ajaxjsp");
      }

      if (friendForm.getIsBlack() == 0) { //添加好友情况下
        if (ui.getAcceptFriend() == 0) { //对方拒绝加入好友
          this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_NOTACCEPT,
                                               mr.getMessage(locale, "error.friend.usernotaccept"));
          this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
          return mapping.findForward("ajaxjsp");
        }
      }
      f = this.getFriendFactory().getInstance(us.getId());
      f.setFriendComment(friendComment);
      f.setFriendID(ui.getId());
      f.setFriendName(friendForm.getFriendName());
      f.setIsBlack(friendForm.getIsBlack());
      f.setUserID(us.getId());
      f.setUserName(us.getUserName());

      try {
        f = this.getFriendService().saveFriend(f); //保存用户
        this.getFriendService().friendIDsToFile(us.getId()); //将用户列表写入文件
        if (friendForm.getIsBlack() == 0) { //添加好友情况下
          ui.setUserKnow(ui.getUserKnow() + 1); //增加用户人缘系数
          this.getUserService().saveUserInfo(ui);
        }
        else {
          ui.setUserKnow(ui.getUserKnow() - 1); //减少用户人缘系数
          this.getUserService().saveUserInfo(ui);
        }

        this.getAjaxMessagesXML().setMessage(Constant.CODEID_OK,
                                             mr.getMessage(locale, "friend.add.ok"));
      }
      catch (BbscsException ex) {
        logger.error(ex);
        this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_ADDFAILED,
                                             mr.getMessage(locale, "error.friend.add.error"));
      }
      this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
      return mapping.findForward("ajaxjsp");
    }

    if (friendForm.getAction().equalsIgnoreCase("del")) {
      MessageResources mr = this.getResources(request);
      Locale locale = this.getLocale(request);
      Friend f = this.getFriendService().findFriendByID(friendForm.getId(), us.getId());
      if (f != null) {
        UserInfo ui = this.getUserService().findUserInfoById(f.getFriendID());
        int isBlack = f.getIsBlack();
        try {
          this.getFriendService().removeFriend(f);
          if (ui != null) {
            if (isBlack == 0) {
              ui.setUserKnow(ui.getUserKnow() - 1); //减少用户人缘系数
              this.getUserService().saveUserInfo(ui);
            }
            else {
              ui.setUserKnow(ui.getUserKnow() + 1); //增加用户人缘系数
              this.getUserService().saveUserInfo(ui);
            }
          }
          this.getAjaxMessagesXML().setMessage(Constant.CODEID_OK,
                                               mr.getMessage(locale, "friend.del.ok"));
        }
        catch (BbscsException ex1) {
          logger.error(ex1);
          this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_DELFAILED,
                                               mr.getMessage(locale, "error.friend.del.error"));
        }

      }
      else {
        this.getAjaxMessagesXML().setMessage(Constant.CODEID_FRIEND_DELFAILED,
                                             mr.getMessage(locale, "error.friend.del.error"));
      }
      this.setAjaxMessagesXMLRepuest(request, this.getAjaxMessagesXML());
      return mapping.findForward("ajaxjsp");
    }

    return mapping.getInputForward();
  }

  public FriendService getFriendService() {
    return friendService;
  }

  public FriendFactory getFriendFactory() {
    return friendFactory;
  }

  public AjaxMessagesXML getAjaxMessagesXML() {
    return ajaxMessagesXML;
  }

  public UserService getUserService() {
    return userService;
  }

  public void setFriendService(FriendService friendService) {
    this.friendService = friendService;
  }

  public void setFriendFactory(FriendFactory friendFactory) {
    this.friendFactory = friendFactory;
  }

  public void setAjaxMessagesXML(AjaxMessagesXML ajaxMessagesXML) {
    this.ajaxMessagesXML = ajaxMessagesXML;
  }

  public void setUserService(UserService userService) {
    this.userService = userService;
  }
}

⌨️ 快捷键说明

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