《瑞吉外卖》学习笔记day01

文章介绍了瑞吉外卖项目的背景和所需资源,包括数据库环境的搭建,使用SpringBoot创建项目,导入前端资源,以及如何开发后台登录和退出功能。重点讲解了员工实体类和登录逻辑的实现,涉及密码加密和会话管理。
摘要由CSDN通过智能技术生成

写在最前:此文章为黑马程序员瑞吉外卖项目学习笔记,感谢黑马的教程。附上链接: 点击跳转到视频教程
同时文章同步至本人个人博客网站,点击跳转: https://ldd21.github.io
学习本项目所需前置知识:

Java基础知识 javaweb、MySQL、maven、SSM、springboot、mybatisplus

1.瑞吉外卖项目概述

1.0项目中所需要的资源,百度网盘链接:https://pan.baidu.com/s/1WKULh5F7BwjjPRpDnhozAA

提取码:ldd1

1.1项目效果展示

1.2软件开发整体流程

1.3整体项目介绍

1.3.1技术选型:

1.3.2功能架构

1.3.3 角色

2.开发环境搭建

2.1数据库环境搭建

创建名为reggie的数据库,并导入sql文件(sql文件在文首百度网盘链接中)

以下为创建出来的11个表

2.2搭建项目工程

2.2.1 idea创建项目

我们直接创建一个springboot工程,选择SpringWeb,MySQL,mybatis,接着在pom.xml文件中导入druid,lombok,mybatisplus的依赖坐标。(ps:视频中创建的是Maven工程,比较麻烦,我们直接创建springboot工程。)

2.2.2导入项目所需的前端资源(本项目注重后端开发,前端不需要我们自己写)

将百度网盘分享的资源中的前端资源导入到resources/static目录下。(如果这里创建的是maven工程,需要配置静态资源映射,代码如下)

@Configuration
@Slf4j
public class WebMvcConfig extends WebMvcConfigurationSupport {
    /**
     * 设置静态资源映射
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        log.info("开始进行静态资源映射...");
        registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
        registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
    }
}

2.2.3导入yml配置文件

server:
  port: 8080
spring:
  application:
    # 应用的名称,可选
    name: reggie_take_out
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia
      username: root
      password: password
mybatis-plus:
  configuration:
    #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id-type: ASSIGN_ID

注意用户名和密码要配置成自己的

3.后台登录功能开发

3.1后台功能开发

/**
 * 员工实体
 */
@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;

}

3.2创建对应的包结构

3.3导入结果返回类

此类是一个通用结果类,服务端响应的所有结果最终都会包装成此种类型返回给前端对象

/**
 * 通用的返回结果类,服务端相应的数据最终封装成此对象
 * @param <T>
 */
@Data
public class R<T> {

    private Integer code; //编码:1成功,0和其它数字为失败

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

}

3.4梳理登录方法处理逻辑

3.5代码实现登录功能

@Slf4j
@RestController
@RequestMapping("/employee")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;//自动装配
    /**
     * 员工登录
     * @param request
     * @param employee
     * @return
     */
    @PostMapping("/login")
    public R<Employee> login(HttpServletRequest request,@RequestBody Employee employee){
        //1将页面提交的密码进行md5加密处理
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        //2根据页面提交的用户名username查询数据库
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername,employee.getUsername());
        Employee emp = employeeService.getOne(queryWrapper);

        //3如果没有查询到则返回登录失败结果
        if(emp == null){
            return R.error("登陆失败");
        }

        //4密码对比,如果不一致则返回登录失败结果
        if(!emp.getPassword().equals(password)){
            return R.error("登陆失败");
        }
        //5查看员工状态,如果禁用,返回员工禁用结果
        if(emp.getStatus()==0){
            return R.error("账号已禁用");
        }
        //6登录成功
        request.getSession().setAttribute("employee",emp.getId());
        return R.success(emp);
    }

3.6后台系统退出功能

    /**
     * 员工退出
     * @param request
     * @return
     */
    @PostMapping("/logout")
    public R<String> logout(HttpServletRequest request){
        request.getSession().removeAttribute("employee");
        return R.success("退出成功");

    }
}

只需把以上代码加到login方法后面

以上,为瑞吉外卖业务开发day01学习笔记。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值