Java精品項目瑞吉外賣之后端登錄功能篇
一. 登錄需求分析
頁面原型

1. 登錄頁面展示:項目路徑(\resources\backend\page\login\login.html)

員工點擊登錄按鈕進行后管平臺的登錄操作,登錄正確以外方式不可登錄。
登錄處理邏輯

- 將頁面提交的密碼進行MD5加密
- 根據(jù)用戶名查數(shù)據(jù)庫(查不到返回結(jié)果)
- 比對密碼(密碼錯誤返回結(jié)果)
- 查詢員工狀態(tài),員工狀態(tài)禁用下不可登錄
- 登錄成功,寫入session中,返回結(jié)果。
二. 配置返回通用結(jié)果類
package com.itheima.reggie.common;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* 返回通用類
* @author jekong
* @date 2022/4/22
*/
@Data
public class R<T> {
/** 編碼:1成功,0和其它數(shù)字為失敗*/
private Integer code;
/** 信息返回*/
private String msg;
/** 信息返回數(shù)據(jù)*/
private T data;
/** 動態(tài)數(shù)據(jù)*/
private Map map = new HashMap();
public static <T> R<T> success(T object) {
R<T> r = new R<T>();
r.data = object;
r.code = 1;
return r;
}
public static <T> R<T> error(String msg) {
R r = new R();
r.msg = msg;
r.code = 0;
return r;
}
public R<T> add(String key, Object value) {
this.map.put(key, value);
return this;
}
}三. 登錄請求API
| 說明 | 值 |
| 請求URL | /employee/login |
| 請求數(shù)據(jù) | { "username": "admin", "password": "123456" } |
| 返回數(shù)據(jù) | { "code": 0, "msg": "登錄成功", "data": null, "map": {} } |
四. 創(chuàng)建實體類并實現(xiàn)登錄邏輯
entity: 創(chuàng)建實體類
創(chuàng)建Employee.java(員工對象)
package com.itheima.reggie.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 員工實體類
* @author jektong
* @date 2022/4/21
*/
@Data
public class Employee implements Serializable {
/** 序列號*/
private static final long serialVersionUID = 1L;
/**唯一主鍵*/
private Long id;
/**用戶名*/
private String username;
/**姓名*/
private String name;
/**密碼*/
private String password;
/**電話*/
private String phone;
/**性別*/
private String sex;
/**身份證號碼*/
private String idNumber;
/**狀態(tài)*/
private Integer status;
/**創(chuàng)建時間*/
private LocalDateTime createTime;
/**更新時間*/
private LocalDateTime updateTime;
/**添加用戶時使用*/
@TableField(fill = FieldFill.INSERT)
private Long createUser;
/**更新用戶時使用*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;
}mapper數(shù)據(jù)庫交互層
package com.itheima.reggie.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.reggie.entity.Employee;
import org.apache.ibatis.annotations.Mapper;
/**
* EmployeeMapper
* @author jektong
* @date 2022/4/21
*/
@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {
}service業(yè)務(wù)層接口
package com.itheima.reggie.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.reggie.entity.Employee;
import org.springframework.stereotype.Service;
/**
* @author jektong
* @date 2022/4/21
*/
public interface EmployeeService extends IService<Employee> {
}業(yè)務(wù)層實現(xiàn)類
package com.itheima.reggie.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.reggie.entity.Employee;
import com.itheima.reggie.mapper.EmployeeMapper;
import com.itheima.reggie.service.EmployeeService;
import org.springframework.stereotype.Service;
/**
* @author jektong
* @date 2022/4/21
*/
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {
}controller控制層
package com.itheima.reggie.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.reggie.common.CommonsConst;
import com.itheima.reggie.common.R;
import com.itheima.reggie.entity.Employee;
import com.itheima.reggie.service.EmployeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* 員工控制類
*
* @author tongbing
* @date 2022/4/21
*/
@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Resource
private EmployeeService employeeService = null;
/**
* 登錄請求處理
* TODO 后續(xù)改進將業(yè)務(wù)處理的代碼放入業(yè)務(wù)層,這里只做數(shù)據(jù)請求與返回
* @param request
* @param employee
* @return
*/
@PostMapping("/login")
public R<Employee> login(HttpServletRequest request,
@RequestBody Employee employee) {
// 將頁面提交的密碼進行MD5加密
String password = employee.getPassword();
password = DigestUtils.md5DigestAsHex(password.getBytes());
// 根據(jù)用戶名查數(shù)據(jù)庫
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<Employee>();
queryWrapper.eq(Employee::getUsername, employee.getUsername());
Employee emp = employeeService.getOne(queryWrapper);
// 查不到返回登錄失敗結(jié)果
if(emp == null){
return R.error(CommonsConst.LOGIN_FAIL);
}
// 比對密碼
if(!emp.getPassword().equals(password)){
return R.error(CommonsConst.LOGIN_FAIL);
}
// 查看員工狀態(tài)
if(emp.getStatus() == CommonsConst.EMPLOYEE_STATUS_NO){
return R.error(CommonsConst.LOGIN_ACCOUNT_STOP);
}
// 登錄成功將員工的ID放入session中
request.getSession().setAttribute("employeeId",emp.getId());
return R.success(emp);
}
}五. 功能測試
Debug測試時主要測試以下幾點:
- 用戶名與密碼的校驗
- 用戶狀態(tài)禁用情況下
- 數(shù)據(jù)是否正確返回
附錄
常量類:
package com.itheima.reggie.common;
/**
* 常量定義
* @author jektong
* @date 2022/4/23
*/
public class CommonsConst {
// 登錄失敗
public static final String LOGIN_FAIL = "登錄失敗";
// 賬號禁用
public static final String LOGIN_ACCOUNT_STOP = "賬號禁止使用";
// 員工賬號禁用狀態(tài) 0:禁用
public static final Integer EMPLOYEE_STATUS_NO = 0;
// 員工賬號正常狀態(tài) 1:正常使用
public static final Integer EMPLOYEE_STATUS_YES = 1;
}到此這篇關(guān)于Java精品項目瑞吉外賣之后端登錄功能篇的文章就介紹到這了,更多相關(guān)Java外賣后端登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于fastjson的@JSONField注解的一些問題(詳解)
下面小編就為大家?guī)硪黄P(guān)于fastjson的@JSONField注解的一些問題(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
SpringBoot實現(xiàn)自定義Starter的步驟詳解
在SpringBoot中,Starter是一種特殊的依賴,它可以幫助我們快速地集成一些常用的功能,例如數(shù)據(jù)庫連接、消息隊列、Web框架等。在本文中,我們將介紹如何使用Spring Boot實現(xiàn)自定義Starter,需要的朋友可以參考下2023-06-06
MybatisPlus 不修改全局策略和字段注解如何將字段更新為null
這篇文章主要介紹了MybatisPlus 不修改全局策略和字段注解如何將字段更新為null,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04

