package com.mvc.controller; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON; import com.base.constants.CookieKeyConstants; import com.base.constants.PageNameConstants; import com.base.constants.PermissionConstants; import com.base.constants.SessionKeyConstants; import com.mvc.entity.AlarmStatistic; import com.mvc.entity.User; import com.mvc.service.AlarmService; import com.mvc.service.AlarmStatisticService; import com.mvc.service.InvoiceService; import com.mvc.service.TaskService; import com.mvc.service.UserService; import com.utils.CookieUtil; import com.utils.HttpRedirectUtil; import net.sf.json.JSONObject; /** * 登陆 * * @author zjn * @date 2016年9月7日 */ @Controller @RequestMapping("/login") public class LoginController { @Autowired UserService userService; @Autowired InvoiceService invoiceService; @Autowired TaskService taskService; @Autowired AlarmService alarmService; @Autowired AlarmStatisticService alarmStatisticService; /** * 加载默认起始页 * * @return */ @RequestMapping("/toLoginPage.do") public String contractInformationPage() { return "login"; } /** * 跳转到起始页 * * @return */ @RequestMapping("/toIndex.do") public String name() { return "index"; } /** * 检查该用户是否存在 * * @param request * @param session * @param map * @return */ @RequestMapping("/checkUserName.do") public @ResponseBody Long checkUserName(HttpServletRequest request, HttpSession session, ModelMap map) { String userNum = request.getParameter("userName"); Long result = userService.isExist(userNum); return result; } /** * 登录验证用户名和密码是否正确 * * @param session * @param request * @param model * @param res * @return */ @RequestMapping("/loginValidate.do") public @ResponseBody JSONObject loginValidate(HttpSession session, HttpServletRequest request, ModelMap model, HttpServletResponse res) { String userNum = request.getParameter("userName"); String passWord = request.getParameter("password"); User user = userService.findByUserNum(userNum); JSONObject jsonObject = new JSONObject(); if (user != null) { String passwd = user.getUser_pwd(); if (passwd != null && passwd.equals(passWord)) { jsonObject.put("err_message", "OK"); } else { jsonObject.put("err_message", "err_password"); } } else { jsonObject.put("err_message", "err_user"); } return jsonObject; } /** * 验证登陆之后写入Cookie和Session * * @param session * @param request * @param model * @param res * @return */ @SuppressWarnings("unused") @RequestMapping("/login.do") public String login(HttpSession session, HttpServletRequest request, ModelMap model, HttpServletResponse res) { String error_msg = ""; String userNum = request.getParameter("userName"); String password = request.getParameter("password"); String isRemember = request.getParameter("isRemember"); // 记住密码//值获取不到 User user = userService.findByUserNum(userNum); String result = ""; String permission = ""; if (user.getRole().getRole_permission() != null && !user.getRole().getRole_permission().equals("")) { permission = user.getRole().getRole_permission(); result = numToPermissionStr(permission); } CookieUtil cookie_u = new CookieUtil(); if (user != null) { // 用户存在 String passwd = user.getUser_pwd(); if (passwd != null && passwd.equals(password)) { session.setAttribute(SessionKeyConstants.LOGIN, user); model.addAttribute("user", user); cookie_u.add_cookie(CookieKeyConstants.USERNAME, userNum, res, 60 * 60 * 24 * 15); if (isRemember != null) { cookie_u.add_cookie(CookieKeyConstants.PASSWORD, password, res, 60 * 60 * 24 * 7); } else { cookie_u.del_cookie(CookieKeyConstants.PASSWORD, request, res); } model.addAttribute("password", password); Cookie cookie = new Cookie("userNum", userNum); cookie.setMaxAge(30 * 60); // cookie.setMaxAge(60); cookie.setPath("/"); res.addCookie(cookie); cookie = new Cookie("role", user.getRole().getRole_id().toString()); cookie.setMaxAge(60); cookie.setPath("/"); res.addCookie(cookie); return "index";// 返回到index主页 } else { // 密码错误 error_msg = "err_password"; cookie_u.del_cookie(CookieKeyConstants.PASSWORD, request, res); model.addAttribute("error", error_msg); return HttpRedirectUtil.redirectStr(PageNameConstants.TOLOGIN); } } else { // 用户不存在 error_msg = "err_user"; model.addAttribute("error", error_msg); return HttpRedirectUtil.redirectStr(PageNameConstants.TOLOGIN); } } /** * 退出登录 * * @param session * @return */ @RequestMapping("/logout.do") public String logout(HttpSession session, HttpServletResponse response) { session.removeAttribute(SessionKeyConstants.LOGIN); Cookie cookie = new Cookie("userNum", null); cookie.setMaxAge(30 * 60); cookie.setPath("/"); response.addCookie(cookie); return HttpRedirectUtil.redirectStr(PageNameConstants.TOLOGIN); } @RequestMapping(value = "/getUserFromSession.do") public @ResponseBody String getUserFromSession(HttpServletRequest request, HttpSession session) { JSONObject jsonObject = new JSONObject(); User user = (User) session.getAttribute(SessionKeyConstants.LOGIN); jsonObject.put("user", user); return jsonObject.toString(); } /** * 初始化首页的数据 * * @param request * @param session * @return */ @RequestMapping(value = "/getInitData.do") public @ResponseBody String getInitData(HttpServletRequest request, HttpSession session) { JSONObject jsonObject = new JSONObject(); User user = (User) session.getAttribute(SessionKeyConstants.LOGIN); if (user != null) { AlarmStatistic alarmStatistic = alarmStatisticService.findAlst(user.getUser_id()); jsonObject.put("waitAuditBillTaskNum", alarmStatistic.getWait_audit_bill_task_num());// 待审核发票任务 jsonObject.put("assistantTaskNum", alarmStatistic.getAssistant_task_num());// 文书任务 jsonObject.put("managerControlTaskNum", alarmStatistic.getManager_control_task_num());// 执行管控任务 jsonObject.put("billTaskNum", alarmStatistic.getBill_task_num());// 发票任务 jsonObject.put("otherTaskNum", alarmStatistic.getOther_task_num());// 普通任务 jsonObject.put("debtAlarmNum", alarmStatistic.getDebt_alarm_num());// 收款超时 jsonObject.put("overdueAlarmNum", alarmStatistic.getOverdue_alarm_num());// 工程逾期 jsonObject.put("taskAlarmNum", alarmStatistic.getTask_alarm_num());// 任务超时 jsonObject.put("remoTaskNum", alarmStatistic.getRemo_task_num());// 待核对到款任务 jsonObject.put("totalReceiveTaskNum", calTotalNum(alarmStatistic, user));// 当前用户接收的所有任务 } return jsonObject.toString(); } /** * 根据权限计算总任务数 * * @param alarmStatistic * @param user * @return */ private Integer calTotalNum(AlarmStatistic alarmStatistic, User user) { Integer wait_audit_bill_task_num = alarmStatistic.getWait_audit_bill_task_num();// 待审核发票任务 Integer assistant_task_num = alarmStatistic.getAssistant_task_num();// 文书任务 Integer manager_control_task_num = alarmStatistic.getManager_control_task_num();// 执行管控任务 Integer bill_task_num = alarmStatistic.getBill_task_num();// 发票任务 Integer other_task_num = alarmStatistic.getOther_task_num();// 普通任务 Integer remo_task_num = alarmStatistic.getRemo_task_num();// 待核对到款任务 String result = ""; String permission = user.getRole().getRole_permission(); if (permission != null && !permission.equals("")) { result = numToPermissionStr(permission); } Integer total_num = other_task_num;// 每个人都有普通任务 if (result.contains("iAssiTask")) { total_num += assistant_task_num; } if (result.contains("iEditTask")) { total_num += manager_control_task_num; } if (result.contains("iAudiInvoTask")) { total_num += wait_audit_bill_task_num; } if (result.contains("iFiniInvoTask")) { total_num += bill_task_num; } if (result.contains("iFiniRemoTask")) { total_num += remo_task_num; } return total_num; } /** * 获取当前用户权限 * * @param request * @param session * @return */ @RequestMapping(value = "/getUserPermission.do") public @ResponseBody String getUserPermission(HttpServletRequest request, HttpSession session) { User user = (User) session.getAttribute(SessionKeyConstants.LOGIN); String result = ""; String permission = ""; if (user.getRole().getRole_permission() != null && !user.getRole().getRole_permission().equals("")) { permission = user.getRole().getRole_permission(); result = numToPermissionStr(permission); } return JSON.toJSONString(result + " "); } public static String numToPermissionStr(String permissionNum) { String result = ""; JSONObject jsonObject = JSONObject.fromObject(permissionNum); if (jsonObject.containsKey("con_per")) result = toPermissionStr(jsonObject.getString("con_per"), PermissionConstants.contract, result); if (jsonObject.containsKey("task_per")) result = toPermissionStr(jsonObject.getString("task_per"), PermissionConstants.task, result); if (jsonObject.containsKey("bill_per")) result = toPermissionStr(jsonObject.getString("bill_per"), PermissionConstants.bill, result); if (jsonObject.containsKey("system_per")) result = toPermissionStr(jsonObject.getString("system_per"), PermissionConstants.system, result); if (jsonObject.containsKey("index_per")) result = toPermissionStr(jsonObject.getString("index_per"), PermissionConstants.index, result); return result + " "; } private static String toPermissionStr(String str, String type, String result) { String subStr = str.substring(1, str.length() - 1); String strArr[] = subStr.split(","); StringBuilder strb = new StringBuilder(); strb.append(result); for (int i = 0; i < strArr.length; i++) { if (strArr[i].equals("1")) { switch (type) { case "contPer": strb.append(" " + PermissionConstants.contPer[i]); break; case "taskPer": strb.append(" " + PermissionConstants.taskPer[i]); break; case "billPer": strb.append(" " + PermissionConstants.billPer[i]); break; case "systemPer": strb.append(" " + PermissionConstants.systemPer[i]); break; case "indexPer": strb.append(" " + PermissionConstants.indexPer[i]); break; default: break; } } } return strb.toString(); } }