瑞吉外卖(第一天)

项目介绍

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


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

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

产品原型展示


**产品原型:**就是一款产品成型之前的一个简单的框架,就是将页面的排版布局展现出来,使产品的初步构思有一个可视化的展示。通过原型展示,可以更加直观的了解项目的需求和提供的功能。
项目中已经提供了产品原型:
在这里插入图片描述

注意事项:产品原型主要是用来展示项目的功能,并不是最终的页面效果。

技术选型

在这里插入图片描述

功能架构

角色

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

开发环境搭建

在这里插入图片描述

  • 数据库表的含义

在这里插入图片描述

  • maven的环境搭建
<properties>
    <mysql-verson>8.0.28</mysql-verson>
  </properties>
<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <!--配置文件application.yml可以提供提示-->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <!--配置热部署-->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <!--导入可以转化JSON-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.76</version>
    </dependency>
    <!--导入工具类-->
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.6</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.23</version>
    </dependency>
    <!-- mybatis-plus插件,这里不需要再引入mybatis的依赖,它会自动维护 -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.4.3</version>
    </dependency>
    <!--Lombok引入-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>
  </dependencies>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.0</version>
  </parent>
  • application.yml
server:
  8080
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/reggie
      username: root
      password: 123456
mybatis-plus:
  configuration:
    # 开启日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    # 在映射实体或者属性时,将数据库中的表名和字段名的下划线去掉,使用驼峰命名法映射
    map-underscore-to-camel-case: true
  global-config:
    db-config:
      # 使用雪花算法
      id-type: assign_id
  • 配置静态资源映射
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    /**
     * 配置静态资源映射
     * @param registry
     */
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
        registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
    }
}

后台登录开发

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

在这里插入图片描述

代码实现

(登录网址:http://localhost:8080/backend/page/login/login.html

    @PostMapping("/login")
    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){
        // 因为前端返回的用户名和密码是使用JSON数据发送,所以必须要使用@RequestBody而不是直接使用实体类来接收
        log.info(employee.toString());
        // 1.将页面提交的密码password进行md5加密处理
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        // 2.根据页面提交的用户名username查询数据库
        QueryWrapper<Employee> queryWrapper = new QueryWrapper<Employee>();
        queryWrapper.eq("username", employee.getUsername());
        // 使用getOne方法是因为在数据库中使用了username唯一标识unique
        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.登录成功,将员工id存入Session并返回登录成功结果
        request.setAttribute("employee", emp.getId());
        return R.success(emp);
    }

注意:方法中只能使用**@RequestBody**来接受数据,因为前端传递的是JSON数据
@RequestBody和@RequestParam的区别:

  1. @RequestParam指定的参数可以为普通元素,数组,集合,对象等等(@RequestBody是接受请求体中的数据,@RequestParam接受的是key-value的数据所以参数可以为上面提到的几种)。
  2. 如果参数放在请求体中,application/json传入后台中,则数据只能使用@RequestBody来接受,如果不放在请求体中则两者都可以使用。

后台推出登录开发

需求分析

在这里插入图片描述

代码实现
   /**
     * 员工退出
     * @param request
     * @return
     */
@PostMapping("/logout")
    public R<String> logout(HttpServletRequest request){
        // 清理网页中登录的用户ID
        request.getSession().removeAttribute("employee");
        return R.success("退出成功");
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的瑞吉外卖毕业设计: 1. 项目概述 瑞吉外卖是一个在线点餐和外卖配送平台,旨在为用户提供方便快捷的餐饮服务。本项目的目标是设计和开发一个瑞吉外卖平台的Web应用程序,使用户能够浏览菜单、下订单、支付并收到外卖。 2. 功能需求 - 用户注册和登录:用户可以注册账号并登录,以便进行下单和支付。 - 菜单浏览:用户可以浏览瑞吉外卖的菜单,包括菜品名称、图片、描述和价格等信息。 - 下订单:用户可以选择所需的菜品,并将其添加到购物车中。用户可以在购物车中修改订单内容,然后提交订单。 - 支付功能:用户可以使用信用卡、支付宝或微信支付等方式进行支付。 - 外卖配送:一旦订单被支付,瑞吉外卖系统将为用户安排外卖配送。 3. 技术实现 - 后端开发:使用Java语言和Spring框架开发后端逻辑。 - 数据库:使用MySQL数据库存储用户信息、菜单和订单等数据。 - 前端开发:使用HTML、CSS和JavaScript等技术实现用户界面。 - 支付接口:使用支付宝和微信支付的API实现支付功能。 - 外卖配送:使用第三方配送平台(例如饿了么)进行外卖配送。 4. 项目展望 瑞吉外卖是一项有潜力的业务,未来可以考虑以下扩展: - 扩大菜单种类和数量:增加更多的菜品种类和数量,以满足更广泛的用户需求。 - 推广活动:开展促销和折扣活动,以吸引更多用户。 - 用户评价:开发用户评价功能,使用户可以对菜品和服务进行评价,提供反馈和建议。 - 移动应用:开发移动应用程序,使用户可以更方便地使用瑞吉外卖服务。 以上是一个简单的瑞吉外卖毕业设计。当然,具体实现细节和功能可以根据自己的需求进行扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值