Package com.ourlinc.activity.web

Source Code of com.ourlinc.activity.web.ActivityController

package com.ourlinc.activity.web;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.ourlinc.activity.EmailConfig;
import com.ourlinc.activity.EmailTemplates;
import com.ourlinc.activity.Mail;
import com.ourlinc.activity.Page;
import com.ourlinc.activity.WebUtils;
import com.ourlinc.activity.domain.Activity;
import com.ourlinc.activity.domain.Comment;
import com.ourlinc.activity.domain.User;
import com.ourlinc.activity.service.IActivityService;
import com.ourlinc.activity.service.IUserService;

@Controller
@RequestMapping(value = "/activity")
public class ActivityController {
  @Resource
  private IUserService userService;
  @Resource
  private IActivityService activityService;

  /**
   * 主页
   *
   * @param request
   * @return
   * @throws Exception
   */
  @RequestMapping(value = "/index.jspx")
  String index(HttpServletRequest request) throws Exception {
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    Page rp = activityService.listActApply(intp);
    System.out.println("xxx");
    request.setAttribute("list", rp);
    request.setAttribute("act", "listNow");
    return "activity/index";
  }

  /**
   * 列出已结束活动
   *
   * @param request
   * @return
   */
  @RequestMapping(value = "/listover.jspx")
  String listover(HttpServletRequest request) {
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    Page rp = activityService.listActDone(intp);
    request.setAttribute("list", rp);
    request.setAttribute("act", "listOver");
    return "activity/index";
  }

  /**
   * 列出已取消活动
   *
   * @param request
   * @return
   */
  @RequestMapping(value = "/listcancel.jspx")
  String listcancel(HttpServletRequest request) {
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    Page rp = activityService.listActCancel(intp);
    request.setAttribute("list", rp);
    request.setAttribute("act", "listCancel");
    return "activity/index";
  }

  /**
   * 取消活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/cancel.jspx")
  String cancel(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String actId = request.getParameter("actId");
    Activity act = activityService.getActivity(Integer.valueOf(actId));
    if (null == act) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    activityService.cancelActivity(act.getId());
    response.sendRedirect("sendemail.jspx?op=cancel&actId="
        + WebUtils.encodeUrl(String.valueOf(act.getId())));
    return null;
  }

  // /**
  // * 删除活动
  // *
  // * @param request
  // * @return
  // */
  // @RequestMapping
  // String delete(HttpServletRequest request) {
  // String actId = request.getParameter("id");
  // if (null == actId || "".equals(actId)) {
  // return "activity/index";
  // }
  // Activity act = m_ActivityService.getActivity(actId);
  // if (null == act) {
  // return "activity/index";
  // }
  // m_ActivityService.deleteActivity(actId);
  // return "activity/index";
  // }

  /**
   * 搜索活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/search.jspx")
  String search(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String name = request.getParameter("name");
    String year = request.getParameter("year");
    String month = request.getParameter("month");
    if (null == name || null == year || null == month) {
      return "activity/search";
    }
    int intYear = 0;
    int intMonth = 0;
    try {
      intYear = Integer.parseInt(year.trim());
    } catch (NumberFormatException e) {
    }
    try {
      intMonth = Integer.parseInt(month.trim());
    } catch (NumberFormatException e) {
    }
    String condition = "活动名称=" + name + ",年份=" + intYear + ",月份="
        + intMonth;
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    Page rp = activityService.searchActivity(name, intYear, intMonth, intp);
    request.setAttribute("list", rp);
    request.setAttribute("name", URLEncoder.encode(name, "utf-8"));
    request.setAttribute("year", URLEncoder.encode(year, "utf-8"));
    request.setAttribute("month", URLEncoder.encode(month, "utf-8"));
    request.setAttribute("condition", condition);
    return "activity/search";
  }

  /**
   * 发布活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/addact.jspx")
  String addact(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String title = request.getParameter("title");
    String time = request.getParameter("time");
    String place = request.getParameter("place");
    String content = request.getParameter("content");
    String startDate = request.getParameter("startDate");
    String overDate = request.getParameter("overDate");
    String note = request.getParameter("note");
    if (null == title || null == time || null == place || null == content
        || null == startDate || null == overDate) {
      return "activity/addact";
    }
    Date dTime = WebUtils.strFormatDateAndTime(time);
    // 报名开始时间不填表示用现在作为开始时间
    Date dStartDate = ("".equals(startDate)) ? WebUtils.getClearDate()
        : WebUtils.strFormatDateAndTime(startDate);
    Date dOverDate = WebUtils.strFormatDateAndTime(overDate);
    // 截止时间必须在现在时间之后
    if (new Date().after(dOverDate)) {
      request.setAttribute("errorMsg", "截止时间必须在现在时间之后");
      request.setAttribute("title", title);
      request.setAttribute("time", time);
      request.setAttribute("place", place);
      request.setAttribute("content", content);
      request.setAttribute("startDate", startDate);
      request.setAttribute("overDate", overDate);
      request.setAttribute("note", note);
      return "activity/addact";
    }
    // 报名时间必须在截止时间之前
    if (dStartDate.after(dOverDate)) {
      request.setAttribute("errorMsg", "报名时间必须在截止时间之前");
      request.setAttribute("title", title);
      request.setAttribute("time", time);
      request.setAttribute("place", place);
      request.setAttribute("content", content);
      request.setAttribute("startDate", startDate);
      request.setAttribute("overDate", overDate);
      request.setAttribute("note", note);
      return "activity/addact";
    }
    // 活动时间必须在截止之后
    if (dTime.before(dOverDate)) {
      request.setAttribute("errorMsg", "活动时间必须在截止时间之后");
      request.setAttribute("title", title);
      request.setAttribute("time", time);
      request.setAttribute("place", place);
      request.setAttribute("content", content);
      request.setAttribute("startDate", startDate);
      request.setAttribute("overDate", overDate);
      request.setAttribute("note", note);
      return "activity/addact";
    }
    // 发布活动
    Activity act = new Activity();
    act.setTitle(title);
    act.setTime(dTime);
    act.setPlace(place);
    act.setContent(content);
    act.setStartTime(dStartDate);
    act.setOverTime(dOverDate);
    act.setNote(note);
    activityService.addActivity(act);
    // 把人员添加到活动中
    Page rp = userService.listAllUser(1);
    for (User u : (List<User>) rp.getData()) {
      userService.joinActivity(u.getId(), act.getId());
    }
    // 重定向防止重复提交
    response.sendRedirect("sendemail.jspx?op=add&actId="
        + WebUtils.encodeUrl(String.valueOf(act.getId())));
    return null;

  }

  /**
   * 发送邮件
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/sendemail.jspx")
  String sendemail(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    User user = (User) request.getSession().getAttribute("userLogin");
    String email = request.getParameter("email");
    String password = request.getParameter("password");
    String actId = request.getParameter("actId");
    String op = request.getParameter("op");
    String[] toAddresses = request.getParameterValues("toAddresses");
    String smtpHost = EmailConfig.getValue("smtpHost");
    String needAuth = EmailConfig.getValue("needAuth");
    Page rp = userService.listAllUser(1);
    Activity act = activityService.getActivity(Integer.valueOf(actId));
    // 返回页面
    if (WebUtils.isEmptyString(email) || null == act) {
      request.setAttribute("actMsg", (null == act) ? "找不到该活动!" : "操作成功!");
      request.setAttribute("email", user.getEmail());
      request.setAttribute("actId", actId);
      request.setAttribute("list", rp);
      request.setAttribute("op", op);
      request.setAttribute("smtpHost", smtpHost);
      request.setAttribute("needAuth", needAuth);
      return "activity/sendemail";
    }
    // 发送邮件
    boolean flag = false;
    Mail mail = new Mail(email, password);
    try {
      if ("add".equals(op)) {
        mail.send(
            email,
            toAddresses,
            null,
            "活动通知",
            EmailTemplates.buildAddContent(act.getTime(),
                act.getTitle(), act.getId()));
      } else if ("edit".equals(op)) {
        mail.send(
            email,
            toAddresses,
            null,
            "活动修改通知",
            EmailTemplates.buildEditContent(act.getTime(),
                act.getTitle(),
                EmailConfig.getValue("editContent"),
                act.getId()));
      } else if ("cancel".equals(op)) {
        mail.send(
            email,
            toAddresses,
            null,
            "活动取消通知",
            EmailTemplates.buildCancelContent(act.getTime(),
                act.getTitle()));
      }
      flag = true;
    } catch (Exception e) {
      e.printStackTrace();
    }
    // 发送邮件失败
    if (!flag) {
      request.setAttribute("actMsg", "发送邮件失败!");
      request.setAttribute("email", user.getEmail());
      request.setAttribute("actId", actId);
      request.setAttribute("list", rp);
      request.setAttribute("op", op);
      request.setAttribute("smtpHost", smtpHost);
      request.setAttribute("needAuth", needAuth);
      return "activity/sendemail";
    }
    response.sendRedirect("/activity/index.jspx");
    return null;
  }

  /**
   * ajax修改email配置文件
   *
   * @param request
   * @param repsonse
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/editpro_aj.jspx")
  String editpro_aj(HttpServletRequest request, HttpServletResponse repsonse)
      throws IOException {
    String op = WebUtils.toString(request.getParameter("op"));
    String value = WebUtils.toString(request.getParameter("value").trim()
        .toLowerCase());
    boolean flag = true;
    try {
      if ("smtp".equals(op)) {
        EmailConfig.updateProperties("smtpHost", value);
      } else if ("auth".equals(op)) {
        EmailConfig.updateProperties("needAuth", value);
      }
    } catch (Exception e) {
      flag = false;
    }
    repsonse.setContentType("text/plain;charset=UTF-8");
    repsonse.setHeader("Cache-Control", "no-cache");
    if (flag) {
      repsonse.getWriter().write(value);
    } else {
      repsonse.getWriter().write("发生错误");
    }
    return null;
  }

  /**
   * 发表评论
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/postcomment.jspx")
  String postcomment(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    User user = (User) request.getSession().getAttribute("userLogin");
    String actId = request.getParameter("actId");
    String content = request.getParameter("content");
    Activity act = activityService.getActivity(Integer.valueOf(actId));
    if (null == act || null == content) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    content = WebUtils.escapeHTML(content);
    userService.postComment(user.getId(), act.getId(), content);
    response.sendRedirect("../activity/activity.jspx?actId="
        + URLEncoder.encode(actId, "utf-8"));
    return null;
  }

  /**
   * 删除评论
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/deletecomment.jspx")
  String deletecomment(HttpServletRequest request,
      HttpServletResponse response) throws IOException {
    String actId = request.getParameter("actId");
    String comId = request.getParameter("comId");
    Comment com = activityService.getComment(Integer.valueOf(comId));
    if (null == actId) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    if (null == com) {
      request.setAttribute("errorMsg", "找不到id=" + comId + "的评论");
      return "error";
    }
    activityService.deleteComment(com.getId());
    response.sendRedirect("../activity/activity.jspx?actId="
        + URLEncoder.encode(actId, "utf-8"));
    return null;
  }

  /**
   * 修改活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/editact.jspx")
  String editact(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String title = request.getParameter("title");
    String time = request.getParameter("time");
    String place = request.getParameter("place");
    String content = request.getParameter("content");
    String startDate = request.getParameter("startDate");
    String overDate = request.getParameter("overDate");
    String note = request.getParameter("note");
    String actId = request.getParameter("actId");
    Activity act = activityService.getActivity(Integer.valueOf(actId));
    if (null == act) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    List<User> userList = activityService.getActMembers(act.getId());
    if (null == title || null == time || null == place || null == content
        || null == startDate || null == overDate) {
      request.setAttribute("activity", act);
      request.setAttribute("userList", userList);
      return "activity/editact";
    }
    Date dTime = WebUtils.strFormatDateAndTime(time);
    // 报名开始时间不填表示用现在作为开始时间
    Date dStartDate = ("".equals(startDate)) ? WebUtils.getClearDate()
        : WebUtils.strFormatDateAndTime(startDate);
    Date dOverDate = WebUtils.strFormatDateAndTime(overDate);
    // 截止时间必须在现在时间之后
    if (new Date().after(dOverDate)) {
      request.setAttribute("activity", act);
      request.setAttribute("userList", userList);
      request.setAttribute("errorMsg", "截止时间必须在现在时间之后");
      return "activity/editact";
    }
    // 报名时间必须在截止时间之前
    if (dStartDate.after(dOverDate)) {
      request.setAttribute("activity", act);
      request.setAttribute("userList", userList);
      request.setAttribute("errorMsg", "报名时间必须在截止时间之前");
      return "activity/editact";
    }
    // 活动时间必须在截止之后
    if (dTime.before(dOverDate)) {
      request.setAttribute("activity", act);
      request.setAttribute("userList", userList);
      request.setAttribute("errorMsg", "活动时间必须在截止时间之后");
      return "activity/editact";
    }

    // 找出修改了的地方
    List<String> diff = findDifferent(act, title, dTime, place, content,
        note, dStartDate, dOverDate);
    if (diff.size() > 0) {
      String diff0 = listToStr(diff);
      // EmailUtils eu = new EmailUtils(act);
      // eu.setDifferent(diff);
      // System.out.print(diff0);
      act.setTitle(title);
      act.setTime(dTime);
      act.setPlace(place);
      act.setContent(content);
      act.setNote(note);
      act.setStartTime(dStartDate);
      act.setOverTime(dOverDate);
      activityService.updateActivity(act);
      // 把修改的内容记到文件吧
      try {
        EmailConfig.updateProperties("editContent", diff0);
      } catch (Exception e) {
        e.printStackTrace();
      }
      response.sendRedirect("sendemail.jspx?op=edit&actId="
          + WebUtils.encodeUrl(String.valueOf(act.getId())));
      return null;
    }
    response.sendRedirect("index.jspx");
    return null;
  }

  /**
   * 查看某活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/activity.jspx")
  String activity(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String actId = request.getParameter("actId");
    Activity act = activityService.getActivity(Integer.valueOf(actId));
    if (null == act) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    List<User> userList = activityService.getActMembers(act.getId());
    List<Comment> rp2 = activityService.listComment(Integer.valueOf(actId));
    request.setAttribute("userList", userList);
    request.setAttribute("commentList", rp2);
    request.setAttribute("activity", act);
    return "activity/activity";
  }

  /**
   * 增删参加活动的人员
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping(value = "/adddeleteuser.jspx")
  String adddeleteuser(HttpServletRequest request,
      HttpServletResponse response) throws IOException {
    String p = request.getParameter("p");
    String actId = request.getParameter("actId");
    String op = request.getParameter("op");
    String id = request.getParameter("id");
    String condition = request.getParameter("condition");
    String inputText = WebUtils.toString(request.getParameter("inputText"))
        .trim();
    Activity act = activityService.getActivity(Integer.valueOf(actId));
    if (null == act) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    if ("add".equals(op)) {// 增加用户
      List<User> users = new ArrayList<User>();// 解决重名问题的策略:全加了
      if ("email".equals(condition)) {
        User dUser = userService
            .getUserByEmail(inputText.toLowerCase());
        if (null != dUser) {
          users.add(dUser);
        }
      } else if ("username".equals(condition)) {
        users = userService.getUserByUsername(inputText);
      }
      // 找不到人
      if (0 == users.size()) {
        request.setAttribute("errorMsg", "找不到" + condition + "为 "
            + inputText + " 人员");
        return "error";
      }
      // 这个活动能不能参加
      if (!activityService.isJoinEnable(act.getId())) {
        request.setAttribute("errorMsg", condition + "为 " + inputText
            + " 人员不能参加这个活动");
        return "error";
      }
      // 帮用户参加活动
      for (User u : users) {
        userService.joinActivity(u.getId(), act.getId());
      }
    } else if ("delete".equals(op)) {// 删除用户
      User dUser = userService.getUserById(Integer.valueOf(id));
      if (null != dUser) {
        userService.cancelJoinActivity(dUser.getId(), act.getId());
      }
    }
    List<User> u = activityService.getActMembers(act.getId());
    Page rp = new Page();
    rp.setData(u);
    int intp = WebUtils.toInt(p);
    rp.setNowpage(intp);
    request.setAttribute("activity", act);
    request.setAttribute("list", rp);
    return "activity/adddeleteuser";
  }

  private List<String> findDifferent(Activity oldAct, String title,
      Date dTime, String place, String content, String note,
      Date dStartDate, Date dOverDate) {
    List<String> result = new ArrayList<String>();
    // if (!oldAct.getTitle().equals(title)) {
    // result.add("原来标题" + oldAct.getTitle() + ",修改为" + title + "");
    // }
    // if (!oldAct.getTime().equals(dTime)) {
    // result.add("原来活动时间" + oldAct.getTimeString() + ",修改为 "
    // + WebUtils.dateAndTimeFormatToStr(dTime));
    // }
    // if (!oldAct.getPlace().equals(place)) {
    // result.add("原来活动地点" + oldAct.getPlace() + ",修改为" + place);
    // }
    // if (!oldAct.getContent().equals(content)) {
    // result.add("原来活动内容" + oldAct.getContent() + ",修改为" + content);
    // }
    // if (!oldAct.getStartDate().equals(dStartDate)
    // || !oldAct.getOverDate().equals(dOverDate)) {
    // result.add("原来报名时间" + oldAct.getStartDateString() + "——"
    // + oldAct.getOverDateString() + ",修改为"
    // + WebUtils.dateAndTimeFormatToStr(dStartDate) + "——"
    // + WebUtils.dateAndTimeFormatToStr(dOverDate));
    // }
    return result;
  }

  private String listToStr(List<String> list) {
    StringBuilder sb = new StringBuilder();
    if (null != list) {
      for (int i = 0; i < list.size(); i++) {
        sb.append((i + 1) + "、");
        sb.append(list.get(i));
        sb.append('。');
        sb.append("<br/>");
      }
    }
    return sb.toString();
  }
}
TOP

Related Classes of com.ourlinc.activity.web.ActivityController

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.