iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java精品项目瑞吉外卖之后端登录功能篇
  • 153
分享到

Java精品项目瑞吉外卖之后端登录功能篇

2024-04-02 19:04:59 153人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一. 登录需求分析二. 配置返回通用结果类三. 登录请求api四. 创建实体类并实现登录逻辑五. 功能测试附录一. 登录需求分析 页面原型 1. 登录页面展示:项目路径(\re

一. 登录需求分析

页面原型

1. 登录页面展示:项目路径(\resources\backend\page\login\login.html

员工点击登录按钮进行后管平台的登录操作,登录正确以外方式不可登录。

登录处理逻辑

  • 将页面提交的密码进行MD5加密
  • 根据用户名查数据库(查不到返回结果)
  • 比对密码(密码错误返回结果)
  • 查询员工状态,员工状态禁用下不可登录
  • 登录成功,写入session中,返回结果。

二. 配置返回通用结果类

package com.itheima.reggie.common;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;

@Data
public class R<T> {
    
    private Integer code;
    
    private String msg;
    
    private T data;
    
    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
请求数据{
  "username": "admin",
  "passWord": "123456"
}
返回数据{
  "code": 0,
  "msg": "登录成功",
  "data": null,
  "map": {}
}

四. 创建实体类并实现登录逻辑

entity: 创建实体类

创建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;

@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;
    
    private Integer status;
    
    private LocalDateTime createTime;
    
    private LocalDateTime updateTime;
    
    @TableField(fill = FieldFill.INSERT)
    private Long createUser;
    
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;
}

mapper数据库交互层

package com.itheima.reggie.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itheima.reggie.entity.Employee;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {
}

service业务层接口

package com.itheima.reggie.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itheima.reggie.entity.Employee;
import org.springframework.stereotype.Service;

public interface EmployeeService extends IService<Employee> {
}

业务层实现类

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;

@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;

@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Resource
    private EmployeeService employeeService = null;
    
    @PostMapping("/login")
    public R<Employee> login(HttpServletRequest request,
                             @RequestBody Employee employee) {
        // 将页面提交的密码进行MD5加密
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        // 根据用户名查数据库
        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);
        }
        // 查看员工状态
        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. 用户状态禁用情况下
  3. 数据是否正确返回

附录

常量类:

package com.itheima.reggie.common;

public class CommonsConst {
    // 登录失败
    public static final String LOGIN_FAIL = "登录失败";
    // 账号禁用
    public static final String LOGIN_ACCOUNT_STOP = "账号禁止使用";
    // 员工账号禁用状态 0:禁用
    public static final Integer EMPLOYEE_STATUS_NO = 0;
    // 员工账号正常状态 1:正常使用
    public static final Integer EMPLOYEE_STATUS_YES = 1;
}

到此这篇关于Java精品项目瑞吉外卖之后端登录功能篇的文章就介绍到这了,更多相关Java外卖后端登录内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java精品项目瑞吉外卖之后端登录功能篇

本文链接: https://www.lsjlt.com/news/148680.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java精品项目瑞吉外卖之后端登录功能篇
    目录一. 登录需求分析二. 配置返回通用结果类三. 登录请求API四. 创建实体类并实现登录逻辑五. 功能测试附录一. 登录需求分析 页面原型 1. 登录页面展示:项目路径(\re...
    99+
    2024-04-02
  • Java精品项目瑞吉外卖之登陆的完善与退出功能篇
    目录一. 需求分析二.功能实现三.功能测试四. 登录功能完善4.1 问题分析4.2 实现步骤4.3 代码实现上一篇: 后端登录功能实现 一. 需求分析 员工登录之后,页面跳转到后台首...
    99+
    2024-04-02
  • Java精品项目瑞吉外卖之员工新增篇
    目录一. 需求分析二. 代码开发三. 编写全局异常处理一. 需求分析 后台系统可以管理员工信息,通过新增员工来添加后台系统的用户,点击添加用户转至添加页面: 添加员工的信息需要保存...
    99+
    2024-04-02
  • Java精品项目瑞吉外卖之员工信息管理篇
    目录一. 员工信息分页查询1. 需求分析2. 代码开发二. 启用或禁用员工状态1 需求分析2 代码开发前端核心代码后端核心代码代码修复上一篇: 瑞吉外卖项目:新增员工 一. 员工信息...
    99+
    2024-04-02
  • Java精品项目瑞吉外卖之新增菜品与分页查询篇
    目录一. 新增菜品1.1需求分析1.2代码开发API代码二. 分类信息分页查询三. 删除分类3.1 需求分析3.2 核心代码四. 修改分类一. 新增菜品 1.1需求分析 后台系统可以...
    99+
    2024-04-02
  • 瑞吉外卖项目剩余功能补充
    目录 菜品启售和停售 菜品批量启售和批量停售 菜品的批量删除 菜品删除逻辑优化 套餐管理的启售,停售 套餐管理的修改 后台按条件查看和展示客户订单 手机端减少购物车中的菜品或者套餐数量(前端展示有一点小问题) 用户查看自己订单 移动端的再来...
    99+
    2023-08-31
    java spring boot mysql idea
  • 瑞吉外卖项目:短信服务与手机验证码登录
    一. 短信发送 现在有很多第三方提供的短信服务,这些短信服务会与短信运营商所对接,我们只需按照提供的接口文档进行开发调用就可以发送短信服务,这个过程一般是需要收费的。 常用的第三方短信服务: 阿里云,华为云,腾讯云,京东,梦网,乐信等。...
    99+
    2023-09-30
    服务器 运维
  • 瑞吉外卖项目功能全实现及完全代码解析
    目录1.项目简介1.1 项目来源1.2 项目简介 1.3 项目使用1.31.管理端1.32.用户端1.4 技术选型2.项目版本1.0代码2.1 依赖pom.xml2.2 配置application.yml2.3 项目启动类ReggieApp...
    99+
    2022-12-01
    外卖
  • 【Java项目】瑞吉外卖保姆级学习笔记(改项目名称+改邮件验证码登录+功能补充)
    前言 本项目《听海餐厅》是基于黑马《瑞吉外卖》改名而来,感谢黑马贡献的高质量视频教程。本项目将短信登录改造成了邮箱登录。只想看邮箱验证码登录的小伙伴点此跳转【邮箱验证码】。为了避免各位小伙伴面...
    99+
    2023-09-18
    java spring boot 后端 mysql spring
  • 瑞吉外卖项目详细分析笔记及所有功能补充代码
    目录 项目刨析简介技术栈项目介绍项目源码 一.架构搭建1.初始化项目结构2.数据库表结构设计3.项目基本配置信息添加公共字段的自动填充全局异常处理类返回结果封装的实体类 二.管理端业务开发1.员工管理相关业务1.1员工...
    99+
    2023-08-16
    java mybatis spring boot
  • Django + Taro 前后端分离项目实现企业微信登录功能
    目录前言两种方式思路后端代码企业微信应用配置前端代码参考资料前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Ta...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作