Package com.ourlinc.helloworld.controller

Source Code of com.ourlinc.helloworld.controller.ActivityController

package com.ourlinc.helloworld.controller;

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.helloworld.EmailConfig;
import com.ourlinc.helloworld.EmailTemplates;
import com.ourlinc.helloworld.model.Activity;
import com.ourlinc.helloworld.model.Comment;
import com.ourlinc.helloworld.model.Mail;
import com.ourlinc.helloworld.model.User;
import com.ourlinc.helloworld.service.ActivityService;
import com.ourlinc.helloworld.service.UserService;
import com.ourlinc.helloworld.util.WebUtils;
import com.ourlinc.swift.util.Misc;
import com.ourlinc.swift.util.ResultPage;

@Controller
public class ActivityController {
  @Resource(name = "userService")
  private UserService m_UserService;
  @Resource(name = "activityService")
  private ActivityService m_ActivityService;

  /**
   * 主页
   *
   * @param request
   * @return
   * @throws Exception
   */
  @RequestMapping
  String index(HttpServletRequest request) throws Exception {
    ResultPage<Activity> rp = m_ActivityService.listBefore();
    rp.setPageSize(20);
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    rp.gotoPage(intp);
    request.setAttribute("list", rp);
    request.setAttribute("act", "listNow");
    return "activity/index";
  }

  /**
   * 列出已结束活动
   *
   * @param request
   * @return
   */
  @RequestMapping
  String listover(HttpServletRequest request) {
    ResultPage<Activity> rp = m_ActivityService.listAfter();
    rp.setPageSize(20);
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    rp.gotoPage(intp);
    request.setAttribute("list", rp);
    request.setAttribute("act", "listOver");
    return "activity/index";
  }

  /**
   * 列出已取消活动
   *
   * @param request
   * @return
   */
  @RequestMapping
  String listcancel(HttpServletRequest request) {
    ResultPage<Activity> rp = m_ActivityService.listCancel();
    rp.setPageSize(20);
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    rp.gotoPage(intp);
    request.setAttribute("list", rp);
    request.setAttribute("act", "listCancel");
    return "activity/index";
  }

  /**
   * 取消活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping
  String cancel(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String actId = request.getParameter("actId");
    Activity act = m_ActivityService.getActivity(actId);
    if (null == act) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    act.cancel();
    act.flush();
    response.sendRedirect("sendemail.jspx?op=cancel&actId="
        + Misc.encodeUrl(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
  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;
    ResultPage<Activity> rp = m_ActivityService.searchActivity(name,
        intYear, intMonth);
    String p = request.getParameter("p");
    int intp = WebUtils.toInt(p);
    rp.setPageSize(20);
    rp.gotoPage(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
  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 = m_ActivityService.addActivity(title, dTime, place,
        content, dStartDate, dOverDate, note);
    act.flush();
    // 把人员添加到活动中
    ResultPage<User> rp = m_UserService.listUser();
    rp.setPageSize(1000);
    rp.gotoPage(1);
    for (User u : rp) {
      u.joinActivity(act);
      u.flush();
    }
    // 重定向防止重复提交
    response.sendRedirect("sendemail.jspx?op=add&actId="
        + Misc.encodeUrl(act.getId()));
    return null;

  }

  /**
   * 发送邮件
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping
  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");
    ResultPage<User> rp = m_UserService.listUser();
    rp.setPageSize(1000);
    rp.gotoPage(1);
    Activity act = m_ActivityService.getActivity(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
  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
  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 = m_ActivityService.getActivity(actId);
    if (null == act || null == content) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    content = Misc.escapeHTML(content);
    Comment com = act.postComment(user, content);
    com.flush();
    response.sendRedirect("../activity/activity.jspx?actId="
        + URLEncoder.encode(actId, "utf-8"));
    return null;
  }

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

  /**
   * 修改活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping
  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 = m_ActivityService.getActivity(actId);
    if (null == act) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    List<User> userList = act.getMembers();
    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.edit(title, dTime, place, content, note, dStartDate, dOverDate);
      act.flush();
      // 把修改的内容记到文件吧
      try {
        EmailConfig.updateProperties("editContent", diff0);
      } catch (Exception e) {
        e.printStackTrace();
      }
      response.sendRedirect("sendemail.jspx?op=edit&actId="
          + Misc.encodeUrl(act.getId()));
      return null;
    }
    response.sendRedirect("index.jspx");
    return null;
  }

  /**
   * 查看某活动
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping
  String activity(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    String actId = request.getParameter("actId");
    Activity act = m_ActivityService.getActivity(actId);
    if (null == act) {
      request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
      return "error";
    }
    List<User> userList = act.getMembers();
    ResultPage<Comment> rp2 = m_ActivityService.listComment(actId);
    rp2.setPageSize(20);
    rp2.gotoPage(1);
    request.setAttribute("userList", userList);
    request.setAttribute("commentList", rp2);
    request.setAttribute("activity", act);
    return "activity/activity";
  }

  /**
   * 增删参加活动的人员
   *
   * @param request
   * @return
   * @throws IOException
   */
  @RequestMapping
  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 = m_ActivityService.getActivity(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 = m_UserService.getUserByEmail(inputText
            .toLowerCase());
        if (null != dUser) {
          users.add(dUser);
        }
      } else if ("username".equals(condition)) {
        users = m_UserService.getUserByUsername(inputText);
      }
      // 找不到人
      if (0 == users.size()) {
        request.setAttribute("errorMsg", "找不到" + condition + "为 "
            + inputText + " 人员");
        return "error";
      }
      // 这个活动能不能参加
      if (!act.canEditByAdmin()) {
        request.setAttribute("errorMsg", condition + "为 " + inputText
            + " 人员不能参加这个活动");
        return "error";
      }
      // 帮用户参加活动
      for (User u : users) {
        u.joinActivity(act);
        u.flush();
      }
    } else if ("delete".equals(op)) {// 删除用户
      User dUser = m_UserService.getUser(id);
      if (null != dUser) {
        dUser.cancelActivity(act);
        dUser.flush();
      }
    }
    List<User> u = act.getMembers();
    ResultPage<User> rp = ResultPage.OnList.wrap(u);
    rp.setPageSize(20);
    int intp = WebUtils.toInt(p);
    rp.gotoPage(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.helloworld.controller.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.