最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java精品項目瑞吉外賣之后端登錄功能篇

 更新時間:2022年05月13日 08:37:47   作者:爪哇斗羅  
這篇文章主要為大家詳細介紹了java精品項目-瑞吉外賣訂餐系統(tǒng),此項目過大,分為多章獨立講解,本篇內容為后端登錄功能的實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一. 登錄需求分析

頁面原型

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

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

登錄處理邏輯

  • 將頁面提交的密碼進行MD5加密
  • 根據(jù)用戶名查數(shù)據(jù)庫(查不到返回結果)
  • 比對密碼(密碼錯誤返回結果)
  • 查詢員工狀態(tài),員工狀態(tài)禁用下不可登錄
  • 登錄成功,寫入session中,返回結果。

二. 配置返回通用結果類

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è)務層接口

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è)務層實現(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è)務處理的代碼放入業(yè)務層,這里只做數(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);
        // 查不到返回登錄失敗結果
        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測試時主要測試以下幾點:

  1. 用戶名與密碼的校驗
  2. 用戶狀態(tài)禁用情況下
  3. 數(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;
}

到此這篇關于Java精品項目瑞吉外賣之后端登錄功能篇的文章就介紹到這了,更多相關Java外賣后端登錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • JavaWeb后臺購物車類實現(xiàn)代碼詳解

    JavaWeb后臺購物車類實現(xiàn)代碼詳解

    這篇文章主要介紹了JavaWeb后臺購物車類實現(xiàn)代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Mybatis各種查詢接口使用詳解

    Mybatis各種查詢接口使用詳解

    這篇文章主要介紹了Mybatis各種查詢接口使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • 關于fastjson的@JSONField注解的一些問題(詳解)

    關于fastjson的@JSONField注解的一些問題(詳解)

    下面小編就為大家?guī)硪黄P于fastjson的@JSONField注解的一些問題(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java幾個重要的關鍵字詳析

    Java幾個重要的關鍵字詳析

    這篇文章主要介紹了Java幾個重要的關鍵字詳析,文章圍繞主題展開詳細的內容介紹,具有一定的參考一下,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-07-07
  • SpringBoot接口返回結果封裝方法實例詳解

    SpringBoot接口返回結果封裝方法實例詳解

    在實際項目中,一般會把結果放在一個封裝類中,封裝類中包含http狀態(tài)值,狀態(tài)消息,以及實際的數(shù)據(jù)。這里主要記錄兩種方式,通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-09-09
  • SpringBoot實現(xiàn)自定義Starter的步驟詳解

    SpringBoot實現(xiàn)自定義Starter的步驟詳解

    在SpringBoot中,Starter是一種特殊的依賴,它可以幫助我們快速地集成一些常用的功能,例如數(shù)據(jù)庫連接、消息隊列、Web框架等。在本文中,我們將介紹如何使用Spring Boot實現(xiàn)自定義Starter,需要的朋友可以參考下
    2023-06-06
  • java高質量縮放圖片的示例代碼

    java高質量縮放圖片的示例代碼

    這篇文章主要介紹了java高質量縮放圖片的示例代碼,幫助大家更好的使用Java處理圖片,感興趣的朋友可以了解下
    2020-09-09
  • 詳解MyBatis配置typeAliases的方法

    詳解MyBatis配置typeAliases的方法

    這篇文章主要介紹了詳解MyBatis配置typeAliases的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • JAVA_基本LDAP操作實例

    JAVA_基本LDAP操作實例

    這篇文章介紹了JAVA_基本LDAP操作實例,有需要的朋友可以參考一下
    2013-09-09
  • MybatisPlus 不修改全局策略和字段注解如何將字段更新為null

    MybatisPlus 不修改全局策略和字段注解如何將字段更新為null

    這篇文章主要介紹了MybatisPlus 不修改全局策略和字段注解如何將字段更新為null,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04

最新評論

城固县| 永平县| 星子县| 朝阳市| 镇远县| 七台河市| 望城县| 土默特左旗| 翁源县| 广元市| 景泰县| 凉城县| 天镇县| 游戏| 凉山| 定日县| 青阳县| 土默特右旗| 丰顺县| 巴中市| 尤溪县| 揭阳市| 聂拉木县| 安阳县| 海晏县| 句容市| 富蕴县| 巴彦淖尔市| 恩平市| 环江| 上林县| 邹平县| 龙里县| 宁远县| 芦山县| 惠水县| 宁化县| 长岭县| 清丰县| 巴中市| 上犹县|