【瑞吉外卖 | day01】项目介绍+后台登录退出功能

news2024/10/6 18:29:27

在这里插入图片描述

文章目录

  • 瑞吉外卖 — day01
    • 1. 所需知识
    • 2. 软件开发整体介绍
      • 2.1 软件开发流程
      • 2.2 角色分工
      • 2.3 软件环境
    • 3. 瑞吉外卖项目介绍
      • 3.1 项目介绍
      • 3.2 产品原型展示
      • 3.3 技术选型
      • 3.4 功能架构
      • 3.5 角色
    • 4. 开发环境搭建
      • 4.1 数据库环境搭建
      • 4.2 Maven项目构建
    • 5. 后台系统登录功能
      • 5.1 创建需要的结构(包、类)
      • 5.2 通用返回结果类
      • 5.3 登录功能处理
      • 5.4 退出功能处理

瑞吉外卖 — day01

1. 所需知识

  • Java基础
  • Java Web
  • MySQL
  • Spring Boot
  • SSM(Spring、Spring MVC、MyBatis)
  • Maven

2. 软件开发整体介绍

2.1 软件开发流程

  • 需求分析

    • 产品原型:网页形式展现项目大体结构(页面设计及效果)
    • 需求规格说明书:word文档,展现项目的功能
  • 设计

    • 产品文档
    • UI界面设计:项目界面效果
    • 概要设计
    • 详细设计
    • 数据库设计:需要几个数据库,数据库中需要的表,表中的字段
  • 编码

    • 项目代码
    • 单元测试
  • 测试

    • 测试用例
    • 测试报告
  • 上线运维

    • 软件环境安装
    • 配置

2.2 角色分工

2.3 软件环境

  • 开发环境(development):开发人员在开发阶段使用的环境,一般外部用户无法访问
  • 测试环境(testing):测试人员使用的环境,用于测试项目, -般外部用户无法访问
  • 生产环境(production):线上环境,正式提供对外服务的环境

3. 瑞吉外卖项目介绍

3.1 项目介绍

  • 本项目(瑞吉外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产 品,包括系统管理后台移动端应用两部分。其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的菜品、套餐、订单等进行管理维护。移动端应用主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单等。

  • 本项目共分为3期进行开发:

    第一期主要实现基本需求,其中移动端应用通过H5实现,用户可以通过手机浏览器访问。
    第二期主要针对移动端应用进行改进,使用微信小程序实现,用户使用起来更加方便。
    第三期主要针对系统进行优化升级,提高系统的访问性能。

3.2 产品原型展示

  • 产品原型,就是一款产品成型之前的一个简单的框架,就是将页面的排版布局展现出来,使产品的初步构思有一个可视化的展示。通过原型展示,可以更加直观的了解项目的需求和提供的功能。
  • 产品原型只是展现项目功能,并不是最终的效果

3.3 技术选型

用户层H5VUE.jsElementUI微信小程序
网关层Nginx
应用层Spring BootSpring MVCSpring Session
SpringSwaggerlombok
数据层MysqlMybatisMybatis PlusRedis
  • Spring Session:

    Spring Session 是 Spring 框架的一个项目,旨在提供会话管理的解决方案。它可以与各种后端存储(如内存、数据库、Redis 等)集成,以便将会话数据存储在可扩展的分布式环境中。Spring Session 不仅可以用于传统的 Web 应用程序,还可以用于微服务架构中的分布式系统。

  • Swagger:

    Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTfu风格的web服务。目标是使客户端和文件系统作为服务器一同样的速度来更新文件的方法,参数和模型紧密集成到服务器。这个解释简单点来讲就是说,swagger是一款可以根据restful风格生成的接口开发文档,并且支持做测试的一款中间软件。

  • Redis:

    Redis是一种开源的内存数据结构存储系统,是一个完全开源免费的高性能(NOSQL)的key-value数据库。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。它可以用作数据库、缓存和消息中间件,并在性能、可扩展性和灵活性方面表现出色。

3.4 功能架构

移动端前台(H5、微信小程序)手机号登陆微信登陆地址管理历史订单
菜品规格购物车下单菜品浏览
系统后台管理分类管理菜品管理套餐管理菜品口味管理
员工登录员工退出员工管理订单管理

3.5 角色

  • 后台系统管理员:登录后台管理系统,拥有后台系统中的所有操作权限
  • 后台系统普通员工:登录后台管理系统,对菜品、套餐、订单等进行管理
  • C端用户:登录移动端应用,可以浏览菜品、添加购物车、设置地址、在线下单等

4. 开发环境搭建

4.1 数据库环境搭建

  • 创建数据库 reggie
  • 运行项目 sql 文件: db_reggie.sql

4.2 Maven项目构建

  • 创建项目
  • 添加pom.xml文件中的依赖
  • appliation.yaml 文件
  • 设置启动类
  • 在配置类中,设置静态资源映射

5. 后台系统登录功能

5.1 创建需要的结构(包、类)

  • 读出前端页面中与后端相关的信息

  • pojo(实体类)

  • mapper

    要继承 BaseMapper<Employee>

  • service

    service接口要继承:IService<Employee>

    serviceImpl要继承和实现:extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService

  • controller

    添加注解:

    @Slf4j
    @RestController
    @RequestMapping(“employee”)

5.2 通用返回结果类

  • 导入到 utils 包下

  • 通用返回结果类,服务端响应数据最终会封装成此对象

5.3 登录功能处理

在这里插入图片描述

处理逻辑如下:
1、将页面提交的密码password进行md5加密处理
2、根据页面提交的用户名username查询数据库
3、如果没有查询到则返回登录失败结果
4、密码比对,如果不一致则返回登录失败结果
5、查看员工状态,如果为已禁用状态,则返回员工已禁用结果
6、登录成功,将员工id存入Session并返回登录成功结果

/**
     * 后台员工登录
     * @param request
     * @param employee
     * @return
     */
    @PostMapping("login")
    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
        //1、将页面提交的密码password进行md5加密处理
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());

        //2、根据页面提交的用户名username查询数据库
        LambdaQueryWrapper<Employee> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(Employee::getUsername,employee.getUsername());
        Employee emp = employeeService.getOne(lambdaQueryWrapper);

        //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、登录成功,将员工id存入Session并返回登录成功结果
        request.getSession().setAttribute("employee",emp.getId());
        return R.success(emp);
    }

5.4 退出功能处理

/**
     * 后台员工退出
     * @param request
     * @return
     */
    @PostMapping("logout")
    public R<String> logout(HttpServletRequest request){
        // 请理 session中保存的当前用户id
        request.getSession().removeAttribute("employee");
        return R.success("退出成功");
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第14天|GPT2文本摘要

一、简介&#xff1a; GPT-2&#xff08;Generative Pre-trained Transformer 2&#xff09;是由OpenAI开发的一种基于Transformer架构&#xff08;decoder-only&#xff09;的大型自然语言处理模型。它通过在大规模文本数据上进行预训练&#xff0c;能够理解和生成自然语言文…

Profibus DP主站转Modbus网关连接智能化电表通讯

Profibus DP主站转Modbus网关&#xff08;XD-MDPBM20&#xff09;&#xff0c;是实现不同工业通信协议之间互联互通的设备&#xff0c;主要将Profibus DP协议转换为Modbus协议&#xff0c;实现数据的双向传输。通过Profibus DP主站转Modbus网关&#xff08;XD-MDPBM20&#xff…

Java--创建对象内存分析

1.如图所示&#xff0c;左边为一个主程序&#xff0c;拥有main方法&#xff0c;右边定义了一个Pet类&#xff0c;通过debug不难看出&#xff0c;当启动该方法时&#xff0c;有以下该步骤 1.运行左边的实例化Pet类对象 2.跳转至右边定义Pet类的语句 3.跳回至左边获取Pet类基本属…

ch32v103xx 烧写

https://www.wch.cn/downloads/file/328.html?time2022-08-08%2004:49:39&codeqw2Y6RBMD5HJasIIBmtZu2t5GHi5BTDrnwjo4Ldi 最小可运行系统&#xff1b;但不建议按此使用&#xff0c;参官方说明 CH32V 基于 risv 架构&#xff0c;用arm swd不可以烧&#xff0c;ch32f 基…

机械拆装-基于Unity-装配功能的实现

目录 1. 装配场景的相机控制 2. 鼠标拖拽和旋转功能的实现 2.1 鼠标拖拽 2.2 物体旋转 3. 零件与装配位置的对应关系 4. 轴向装配的准备位置 5. 装配顺序的实现 5.1 标签提示 5.2 定义一个变量记录步骤数值 1. 装配场景的相机控制 开始装配功能时&#xff0c;需要将相机调…

WebStorm 2024 for Mac JavaScript前端开发工具

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…

加油卡APP开发,汽车加油省钱新模式

随着社会生活水平的提高&#xff0c;汽车已经成为了家家户户的出行工具&#xff0c;汽车加油也就成为了居民日常出行必不可少的开销。为了让居民享受到更加便利、优惠的加油体验&#xff0c;加油卡APP由此产生&#xff0c;不仅方便了用户&#xff0c;也给汽车加油市场提供了更加…

分子AI预测赛Task2笔记

下面所述比较官方的内容都来自官方文档 ‍‌⁠‌‍​​​‌​​⁠​​​​​&#xfeff;​​​&#xfeff;‍‬​​‍⁠‍‍​​‬​&#xfeff;‌​​​‌‍‬​​​​​​‍‌Task2&#xff1a;赛题深入解析 - 飞书云文档 (feishu.cn) 赛题背景 强调了人工智能在科研领域&…

算法训练营day24--93.复原IP地址 +78.子集 +90.子集II

一、93.复原IP地址 题目链接&#xff1a;https://leetcode.cn/problems/restore-ip-addresses/ 文章讲解&#xff1a;https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1fA4y1o715 1.1 初…

高温下的稳定选择 —— PP消解管,耐化学更耐用

PP消解管&#xff0c;即聚丙烯材质的消解管&#xff0c;是一种常用于化学分析中的实验室设备&#xff0c;主要用于样品的消解处理。以下是PP消解管的一些主要特性和应用&#xff1a; 主要特性&#xff1a; 1. 耐化学腐蚀&#xff1a;PP材料对多数酸、碱和有机溶剂具有良好的耐…

Keil5 ST-LINK setting闪退问题解决

1. 官网下载新版驱动文件 MDK uVision crashes when using ST-Link debugger 2. 解压替换 STLinkUSBDriver6.1.2.0Signed 我的库文件目录&#xff1a; D:\Tool\Keil5\ARM\STLink

Vue3快速上手--3小时掌握

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core截止2023年10月&#xff0c;最新的…

数组-长度最小的子数组

M长度最小的子数组&#xff08;leetcode209&#xff09; /*** param {number} target* param {number[]} nums* return {number}*/ var minSubArrayLen function(target, nums) {const n nums.length;let ans n 1;let sum 0; // 子数组元素和let left 0; // 子数组…

燃料电池混合电源的能量管理系统

这个例子显示了燃料电池混合电源的能量管理系统。 这个例子展示了燃料电池混合电源的能量管理系统。 电路描述 本文给出了基于燃料电池的多电动飞机应急动力系统的仿真模型。随着MEA中起落架和飞控系统的电气化程度的提高&#xff0c;常规应急电源系统(冲压式空气涡轮或空气驱…

友好前端vue脚手架

企业级后台集成方案vue-element-admin-CSDN博客在哔站学习&#xff0c;老师说可以有直接的脚手架&#xff08;vue-element-admin&#xff09;立马去搜索&#xff0c;找到了这博主这篇文章 介绍 | vue-element-admin​​​​​​ 官方默认英文版&#xff1a; git clone https:/…

试用笔记之-Delphi xe 微信/支付宝支付源代码

首先delphi xe 微信/支付宝支付源代码下载&#xff1a; http://www.htsoft.com.cn/download/DelphiXEWeiXin_ZhiFuBao_ZhiFu.rar 解压后可以看到源代码 直接执行可执行文件&#xff1a;

消防认证-防火卷帘

一、消防认证 消防认证是指消防产品符合国家相关技术要求和标准&#xff0c;且通过了国家认证认可监督管理委员会审批&#xff0c;获得消防认证资质的认证机构颁发的证书&#xff0c;消防产品具有完好的防火功能&#xff0c;是住房和城乡建设领域验收的重要指标。 二、认证依据…

墨烯的C语言技术栈-C语言基础-003

三.数据类型 1.char // 字符数据型 2.short // 短整型 3.int // 整型 4.long // 长整型 5.long long // 更长的整型 6.float // 单精度浮点数 7.double // 双精度浮点数 为什么写代码? 为了解决生活中的问题 购物,点餐,看电影 为什么有这么多类型呢? 因为说的话都是字符型…

【详解】RV1106使用RKMPI+Yolov5部署检测

系列文章目录 第一篇&#xff1a;【详解】RV1106移植opencv-mobile库 文章目录 系列文章目录[TOC](文章目录) 前言一、烧入镜像二、项目工程1.获取源码编译2.移植项目文件 前言 记录使用RKMPI和Yolov5实现目标检测的demo。官方的资料比较详细&#xff1a;https://wiki.luckfo…

Android HWASAN使用与实现原理

一、背景 为了提前检测出Android User Sapce的app或native进程的内存错误问题&#xff0c;帮助研发定位与分析这些问题&#xff0c;基于Android 14版本上对HWASAN做了调研分析。 二、ASAN介绍 HWASAN是在ASAN的基础上做了拓展&#xff0c;因此在介绍HWASAN之前先了解下ASAN.…