@PostMapping("/login")
public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
//将页面提交的密码password,进行md5加密处理
String password = employee.getPassword();
password = DigestUtils.md5DigestAsHex(password.getBytes());
//根据用户提交的用户名username查询数据库
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Employee::getUsername,employee.getUsername());
Employee emp= employeeService.getOne(queryWrapper);
//如果没有查询到则返回登陆失败结果
if (emp==null){
return R.error("登录失败");
}
//密码比对,如果不一致返回登录失败
if (!emp.getPassword().equals(password)){
return R.error("登录失败");
}
//查看员工状态,如果已失效,则返回员工已禁用结果
if (emp.getStatus()==0){
return R.error("账号已禁用");
}
//登录成功,将员工id存入session并返回登录成功结果
request.getSession().setAttribute("employee",emp.getId());
return R.success(emp);
}
这是一段来自瑞吉外卖项目,内部员工登录方法的相关代码?
相关解析如下:
1.
? ? public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
这是一行名为 login 的代码,它接收两个参数:一个 HttpServletRequest 对象和一个表示员工的Employee 对象。其中,@RequestBody 注解表示employee 对象将从请求体中自动绑定。该方法的返回值是 R<Employee> 类型。
2.
? ? ? ? String password = employee.getPassword();
从 employee 对象中获取提交的密码。
3.
? ? ? ? password = DigestUtils.md5DigestAsHex(password.getBytes());
使用md5算法对密码进行加密。
4.
? ? ? ? LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
创建一个查询包装器,用于构建查询条件
5.
? ? ? ? queryWrapper.eq(Employee::getUsername,employee.getUsername());
设置查询条件,查找与提交的用户名相匹配的员工。
6.
? ? ? ? Employee emp= employeeService.getOne(queryWrapper);
根据查询条件,从数据库中获取一个员工对象
7.?
? ? ? ? if (emp==null){
? ? ? ? ? ? return ?R.error("登录失败");
? ? ? ? }
如果没有查询到匹配的员工,则返回登陆失败的结果。
8.
? ? ? ? if (!emp.getPassword().equals(password)){
? ? ? ? ? ? return R.error("登录失败");
? ? ? ? }
如果密码不匹配,则返回登录失败的结果。
9.
? ? ? ? if (emp.getStatus()==0){
? ? ? ? ? ? return R.error("账号已禁用");
? ? ? ? }
如果员工的状态为禁用,则返回账号已禁用的结果。
10.
? ? ? ? request.getSession().setAttribute("employee",emp.getId());
如果登录成功,将员工的id 存入session中
11.
? ? ? ? return R.success(emp);
? ? }
返回登录成功的结果,包含员工对象
总结: 这段代码实现了员工用户的登录方法,它接收用户提交的用户名和密码,验证用户是否存在,密码是否匹配,以及账号是否禁用,如果一切正常则登录成功,否则返回相应的错误信息。