package com.ourlinc.activity.web;
import java.io.IOException;
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.MyCookie;
import com.ourlinc.activity.Page;
import com.ourlinc.activity.WebUtils;
import com.ourlinc.activity.domain.Activity;
import com.ourlinc.activity.domain.User;
import com.ourlinc.activity.service.IActivityService;
import com.ourlinc.activity.service.IUserService;
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Resource
private IUserService userService;
@Resource
private IActivityService activityService;
/**
* 用户注册
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/register.jspx")
String register(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String email = request.getParameter("email");
String password = request.getParameter("password");
String repassword = request.getParameter("repassword");
String username = request.getParameter("username");
String department = request.getParameter("department");
String birthday = request.getParameter("birthday");
String entryDate = request.getParameter("entryDate");
if (null == email || null == password || null == repassword
|| null == username || null == department || null == birthday
|| null == entryDate) {
return "user/register";
}
// 检查邮箱是否重复的功能
User user = userService.getUserByEmail(email);
if (null != user) {
request.setAttribute("errorMsg", "邮箱已经被注册");
request.setAttribute("password", password);
request.setAttribute("repassword", repassword);
request.setAttribute("username", username);
request.setAttribute("department", department);
request.setAttribute("birthday", birthday);
request.setAttribute("entryDate", entryDate);
return "user/register";
}
Date dBirthday = WebUtils.strFormatDate(birthday);
Date dEntryDate = WebUtils.strFormatDate(entryDate);
user.setUsername(username.trim());
user.setPassword(WebUtils.MD5(password.trim()));
user.setDepartment(department.trim());
user.setEmail(email.trim().toLowerCase());
user.setBirthday(dBirthday);
user.setEntryDate(dEntryDate);
user = userService.registerUser(user);
request.getSession().setAttribute("userLogin", user);
response.sendRedirect("/activity/index.jspx");
return null;
}
/**
* 用户退出
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/userlogout.jspx")
String userlogout(HttpServletRequest request, HttpServletResponse response)
throws IOException {
request.getSession().setAttribute("userLogin", null);
MyCookie.clearCookie(response);
response.sendRedirect("/activity/index.jspx");
return null;
}
/**
* 用户登陆
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/userlogin.jspx")
String userlogin(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String email = request.getParameter("email");
String password = request.getParameter("password");
String autoLogin = request.getParameter("autoLogin");
if (null == email || null == password) {
return "user/userlogin";
}
User user = new User();
user.setEmail(email.trim().toLowerCase());
user.setPassword(WebUtils.MD5(password.trim()));
user = userService.login(user);
if (null == user) {
request.setAttribute("errorMsg", "你的email和密码不符,请再试一次");
request.setAttribute("email", email);
request.setAttribute("password", password);
return "user/userlogin";
}
// 设置cookie
if ("true".equals(autoLogin)) {
try {
MyCookie.keepUserLogin(email.trim().toLowerCase(),
WebUtils.MD5(password.trim()), response);
} catch (Exception e) {
e.printStackTrace();
}
}
request.getSession().setAttribute("userLogin", user);
response.sendRedirect("/activity/index.jspx");
return null;
}
/**
* 参加活动
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/join.jspx")
String join(HttpServletRequest request, HttpServletResponse response)
throws IOException {
User user = (User) request.getSession().getAttribute("userLogin");
String actId = request.getParameter("actId");
int actIdI = Integer.valueOf(actId);
Activity act = activityService.getActivity(actIdI);
if (null == act) {
request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
return "error";
}
// 检查这个活动能不能参加
if (activityService.isEditEnable(act.getId())) {
// 用户能不能参加这个活动
userService.joinActivity(user.getId(), actIdI);
response.sendRedirect("/user/myact.jspx");
return null;
}
request.setAttribute("errorMsg", "你不能参加这个活动,原因可能是你离职了或者已经参加了");
return "error";
}
/**
* 取消参加活动
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/canceljoin.jspx")
String canceljoin(HttpServletRequest request, HttpServletResponse response)
throws IOException {
User user = (User) request.getSession().getAttribute("userLogin");
String actId = request.getParameter("actId");
int actIdI = Integer.valueOf(actId);
Activity act = activityService.getActivity(actIdI);
if (null == act) {
request.setAttribute("errorMsg", "找不到id=" + actId + "的活动");
return "error";
}
userService.cancelJoinActivity(user.getId(), actIdI);
response.sendRedirect("/activity/index.jspx");
return null;
}
/**
* 管理员登陆
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/adminlogin.jspx")
String adminlogin(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String email = request.getParameter("email");
String password = request.getParameter("password");
if (null == email || null == password) {
return "user/adminlogin";
}
User admin = new User();
admin.setEmail(email.trim().toLowerCase());
admin.setPassword(WebUtils.MD5(password.trim()));
admin = userService.login(admin);
if (null == admin || User.ADMIN != admin.getPrivilege()) {
request.setAttribute("errorMsg", "你的email和密码不符,请再试一次");
request.setAttribute("email", email);
request.setAttribute("password", password);
return "user/adminlogin";
}
request.getSession().setAttribute("userLogin", admin);
response.sendRedirect("/activity/index.jspx");
return null;
}
/**
* 修改用户信息
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/userinfo.jspx")
String userinfo(HttpServletRequest request, HttpServletResponse response)
throws IOException {
User user = (User) request.getSession().getAttribute("userLogin");
String email = request.getParameter("email");
String password = request.getParameter("password");
String repassword = request.getParameter("repassword");
String username = request.getParameter("username");
String department = request.getParameter("department");
String birthday = request.getParameter("birthday");
String entryDate = request.getParameter("entryDate");
String leaveDate = request.getParameter("leaveDate");
String editUserId = request.getParameter("editUserId");
// 返回页面展示
if (null == email || null == username || null == department
|| null == birthday || null == entryDate) {
String id = request.getParameter("id");
int idI = Integer.valueOf(id);
User u = userService.getUserById(idI);
if (null == u) {
return "error";
}
List<Activity> list = userService.listActivities(u.getId());
request.setAttribute("actList", list);
request.setAttribute("editUser", u);
return "user/userinfo";
}
// 真正修改
int editUserIdI = Integer.valueOf(editUserId);
User editUser = userService.getUserById(editUserIdI);
List<Activity> list0 = userService.listActivities(editUser.getId());
if ("".equals(email) || "".equals(username) || "".equals(department)
|| "".equals(birthday) || "".equals(entryDate)) {
request.setAttribute("editUser", editUser);
request.setAttribute("actList", list0);
request.setAttribute("errorMsg", "请填写必填的信息!");
return "user/userinfo";
}
// 管理员不能修改管理员
if (editUser.getPrivilege() == User.ADMIN
&& editUser.getId() != user.getId()) {
request.setAttribute("errorMsg", "你不能修改其他管理员的信息");
request.setAttribute("editUser", editUser);
request.setAttribute("actList", list0);
return "user/userinfo";
}
// 检查邮箱相同
if (!email.equals(editUser.getEmail())) {
User u = userService.getUserByEmail(email);
if (null != u) {
request.setAttribute("errorMsg", "邮箱已经被注册");
request.setAttribute("editUser", editUser);
request.setAttribute("actList", list0);
return "user/userinfo";
}
}
if (!password.equals(repassword)) {
request.setAttribute("editUser", editUser);
request.setAttribute("actList", list0);
request.setAttribute("errorMsg", "两次密码不一样");
return "user/userinfo";
}
Date dBirthday = WebUtils.strFormatDate(birthday);
Date dEntryDate = WebUtils.strFormatDate(entryDate);
Date dLeaveDate = WebUtils.strFormatDate(leaveDate);
editUser.setUsername(username.trim());
editUser.setDepartment(department.trim());
editUser.setEmail(email.toLowerCase().trim());
editUser.setBirthday(dBirthday);
editUser.setEntryDate(dEntryDate);
editUser.setLeaveDate(dLeaveDate);
editUser.setOnJob("".equals(leaveDate) ? 1 : 0);
userService.updateUser(editUser);
if (!"".equals(password)) {
userService.updatePassw(editUser.getId(),
WebUtils.MD5(password.trim()));
}
response.sendRedirect("/user/manager.jspx");
return null;
}
/**
* 修改个人信息
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/editaccount.jspx")
String editaccount(HttpServletRequest request, HttpServletResponse response)
throws IOException {
User user = (User) request.getSession().getAttribute("userLogin");
String email = request.getParameter("email");
String password = request.getParameter("password");
String repassword = request.getParameter("repassword");
String department = request.getParameter("department");
String birthday = request.getParameter("birthday");
// 返回页面进行展示
if (null == email || null == password || null == repassword
|| null == department || null == birthday) {
request.setAttribute("userLogin", user);
return "user/editaccount";
}
// 修改个人信息
Date dBirthday = WebUtils.strFormatDate(birthday);
if (!email.equals(user.getEmail())) {
// 检查邮件是否重复
User u = userService.getUserByEmail(email);
if (null != u) {
request.setAttribute("userLogin", user);
request.setAttribute("errorMsg", "邮箱已经被注册");
return "user/editaccount";
}
}
user.setDepartment(department.trim());
user.setEmail(email.trim().toLowerCase());
user.setBirthday(dBirthday);
userService.updateUser(user);
if (!"".equals(password)) {
userService
.updatePassw(user.getId(), WebUtils.MD5(password.trim()));
}
response.sendRedirect("/activity/index.jspx");
return null;
}
/**
* 用户管理
*
* @param request
* @return
*/
@RequestMapping(value = "/manager.jspx")
String manager(HttpServletRequest request) {
String p = request.getParameter("p");
int intp = WebUtils.toInt(p);
Page rp = userService.listAllUser(intp);
request.setAttribute("list", rp);
return "user/manager";
}
/**
* 查看我已报名的活动
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/myact.jspx")
String myact(HttpServletRequest request, HttpServletResponse response)
throws IOException {
User user = (User) request.getSession().getAttribute("userLogin");
String p = request.getParameter("p");
int intp = WebUtils.toInt(p);
Page rp = userService.listActNormal(user.getId(), intp);
request.setAttribute("list", rp);
request.setAttribute("act", "listNow");
return "user/myact";
}
/**
* 查看我的已参加活动
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/myactover.jspx")
String myactover(HttpServletRequest request, HttpServletResponse response)
throws IOException {
User user = (User) request.getSession().getAttribute("userLogin");
String p = request.getParameter("p");
int intp = WebUtils.toInt(p);
Page rp = userService.listActOver(user.getId(), intp);
request.setAttribute("list", rp);
request.setAttribute("act", "listOver");
return "user/myact";
}
/**
* 查看我的已参加但被取消的活动
*
* @param request
* @return
* @throws IOException
*/
@RequestMapping(value = "/myactcancel.jspx")
String myactcancel(HttpServletRequest request, HttpServletResponse response)
throws IOException {
User user = (User) request.getSession().getAttribute("userLogin");
String p = request.getParameter("p");
int intp = WebUtils.toInt(p);
Page rp = userService.listActCancel(user.getId(),intp);
request.setAttribute("list", rp);
request.setAttribute("act", "listCancel");
return "user/myact";
}
/**
* 测试ajax验证用户名有没有重复
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/checkemail_aj.jspx")
String checkemail_aj(HttpServletRequest request,
HttpServletResponse response) {
String email = WebUtils.toString(request.getParameter("email")).trim()
.toLowerCase();
if (email.length() > 0) {
User user = userService.getUserByEmail(email);
response.setContentType("text/plain;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
String htmlDoc = (null != user) ? "邮箱已经存在!" : "用户名可以使用!";
try {
response.getWriter().write(htmlDoc);
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}