167 lines
5.2 KiB
Java
167 lines
5.2 KiB
Java
/**
|
||
* Copyright © 2025 eSunny Info. Tech Ltd. All rights reserved.
|
||
*
|
||
* 功能描述:
|
||
* @Package: com.chinasofti.servlet
|
||
* @author: 李洪涛
|
||
* @date: 2025年3月27日 上午9:21:53
|
||
*/
|
||
package com.chinasofti.servlet;
|
||
|
||
import java.io.IOException;
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
import javax.servlet.ServletException;
|
||
import javax.servlet.annotation.WebServlet;
|
||
import javax.servlet.http.HttpServlet;
|
||
import javax.servlet.http.HttpServletRequest;
|
||
import javax.servlet.http.HttpServletResponse;
|
||
import javax.servlet.http.HttpSession;
|
||
|
||
import com.chinasofti.enums.IsCounselor;
|
||
import com.chinasofti.enums.RoleId;
|
||
import com.chinasofti.model.Clazz;
|
||
import com.chinasofti.model.Role;
|
||
import com.chinasofti.model.Teacher;
|
||
import com.chinasofti.model.User;
|
||
import com.chinasofti.service.ClazzService;
|
||
import com.chinasofti.service.LoginService;
|
||
import com.chinasofti.service.RoleService;
|
||
import com.chinasofti.service.TeacherService;
|
||
import com.chinasofti.service.impl.ClazzServiceImpl;
|
||
import com.chinasofti.service.impl.LoginServiceImpl;
|
||
import com.chinasofti.service.impl.RoleServiceImpl;
|
||
import com.chinasofti.service.impl.TeacherServiceImpl;
|
||
import com.chinasofti.utils.SM3PasswordEncoder;
|
||
|
||
/**
|
||
*
|
||
* Copyright: Copyright (c) 2025 chiansofti
|
||
*
|
||
* @ClassName: LoginServlet.java
|
||
* @Description: 登录校验
|
||
*
|
||
* @version: v1.0.0
|
||
* @author: 李洪涛
|
||
* @date: 2025年3月27日 上午9:09:40
|
||
*
|
||
* Modification History:
|
||
* Date Author Version Description
|
||
*---------------------------------------------------------*
|
||
* 2025年3月27日 李洪涛 v1.0.0 新建文件
|
||
*/
|
||
@WebServlet("/LoginServlet")
|
||
public class LoginServlet extends HttpServlet {
|
||
|
||
private static final long serialVersionUID = 1L;
|
||
|
||
private LoginService loginService = new LoginServiceImpl();
|
||
private RoleService roleService = new RoleServiceImpl();
|
||
private ClazzService clazzService = new ClazzServiceImpl();
|
||
private TeacherService teacherService = new TeacherServiceImpl();
|
||
|
||
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException{
|
||
doPost(request, response);
|
||
}
|
||
|
||
|
||
/**
|
||
*
|
||
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
|
||
* @Function: doPost
|
||
* @Description: 登录校验,跳转页面
|
||
*
|
||
* @param: request
|
||
* @param: response
|
||
* @return: void
|
||
* @throws:无
|
||
*
|
||
* @version: v1.0.0
|
||
* @author: 李洪涛
|
||
* @date: 2025年3月27日 上午9:12:20
|
||
*
|
||
* Modification History:
|
||
* Date Author Version Description
|
||
*---------------------------------------------------------*
|
||
* 2025年3月27日 李洪涛 v1.0.0 新建方法
|
||
*/
|
||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||
|
||
String method = request.getParameter("method");
|
||
if("logout".equals(method)){
|
||
logout(request, response);
|
||
return;
|
||
}
|
||
|
||
String username = request.getParameter("username");
|
||
String password = request.getParameter("password");
|
||
|
||
User user = new User();
|
||
user.setUserName(username);
|
||
|
||
User res = loginService.loginCheck(user);
|
||
|
||
String loginStatus = "loginSuccess";
|
||
if (null != res && SM3PasswordEncoder.matches(password, res.getPassWord())) {
|
||
HttpSession session=request.getSession();
|
||
Role role = roleService.findRoleById(res.getRoleId());
|
||
session.setAttribute("user", res);
|
||
session.setAttribute("roleCode", role.getRoleCode());
|
||
if (RoleId.TEACHER.getId() == role.getId()) {
|
||
long userId = res.getId();
|
||
Teacher teacher = new Teacher();
|
||
teacher.setUserId(userId);
|
||
teacher = teacherService.findTeacher(teacher);
|
||
List<Clazz> clazzs = new ArrayList<Clazz>();
|
||
long teacherId = teacher.getId();
|
||
clazzs.addAll(clazzService.findClazzsByTeacherId(teacherId));
|
||
if (IsCounselor.YES.getIs().equals(teacher.getIsCounselor())) {
|
||
session.setAttribute("isCounselor", IsCounselor.YES.getIs());
|
||
clazzs.addAll(clazzService.findClazzsByUserIds(userId+""));
|
||
} else {
|
||
session.setAttribute("isCounselor", IsCounselor.NO.getIs());
|
||
}
|
||
String clazzIdStr = "";
|
||
if (clazzs.size() > 0) {
|
||
for (Clazz clazz : clazzs) {
|
||
clazzIdStr += clazz.getId() + ",";
|
||
}
|
||
clazzIdStr = clazzIdStr.substring(0, clazzIdStr.length()-1);
|
||
}
|
||
session.setAttribute("clazzIdStr", clazzIdStr);
|
||
session.setAttribute("teacherId", teacherId);
|
||
}
|
||
} else {
|
||
loginStatus = "loginError";
|
||
}
|
||
response.getWriter().write(loginStatus);
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @Function: logout
|
||
* @Description: 退出登录
|
||
*
|
||
* @param: request
|
||
* @param: response
|
||
* @return: void
|
||
* @throws:无
|
||
*
|
||
* @version: v1.0.0
|
||
* @author: 李洪涛
|
||
* @date: 2025年3月27日 上午9:12:20
|
||
*
|
||
* Modification History:
|
||
* Date Author Version Description
|
||
*---------------------------------------------------------*
|
||
* 2025年3月27日 李洪涛 v1.0.0 新建方法
|
||
*/
|
||
private void logout(HttpServletRequest request,HttpServletResponse response) throws IOException{
|
||
request.getSession().removeAttribute("user");
|
||
request.getSession().removeAttribute("userType");
|
||
response.sendRedirect("index.jsp");
|
||
}
|
||
|
||
}
|