苍穹外卖项目

Day01

你将会得到的收获

补习git Git学习之路-CSDN博客

功能

技术栈

nginx  版本1.20.2

作用:提高访问速度 负载均衡 保证后端服务的安全

swagger

Swagger 与 Yapi

Swagger: 可以自动的帮助开发人员生成接口文档,并对接口进行测试。

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案

DTO、VO的区别
DTO:如果前端提交的实体类和对应的实体类比较较大差别 使用DTO来封装数据 后面在使用

BeanUtils.copyProperties() 将熟悉复制到对应的实体类中

VO:主要用于展示数据,例如在控制器层和视图层之间。它通常包含一些与显示相关的属性,如标题、描述等。

前端表格数据DTO   返回给前端的数据VO

开启数据库

net start mysql  // 启动mysql服务

netstat -aon|findstr "3306"//查看哪个端口占用了3306

redis-server.exe redis.windows.conf//开启redis

Day02

1.新增员工

写接口四要点:明确请求路径、请求方式、请求参数、返回数据。

拦截器interceptor

JWT令牌实现用户身份认证

2.员工分页查询

  • 请求参数类型为Query,不是json格式提交,在路径后直接拼接。/admin/employee/page?name=zhangsan

  • 注意条件<if test="name != null and name != ''">

3.启用禁用员工账号

public Result startOrStop(@PathVariable Integer status,Long id)

路径参数要加 @PathVariable

4.编辑员工

Day03

1.公共字段自动填充

使用AOP切面编程,实现功能增强,来完成公共字段自动填充功能

实现方法:自定义注解 AutoFill

2.新增菜品

3.菜品分页查询

4.删除菜品

5.修改菜品

Day04

1.新增套餐

2.套餐分页查询

3.删除套餐

4.修改套餐

5.起售停售套餐

Day05

  • Redis入门

       Redis学习-CSDN博客       Redis学习-CSDN博客       Redis学习-CSDN博客

               温故而知新

  • Redis数据类型

  • Redis常用命令

  • 在Java中操作Redis

  • 店铺营业状态设置

Day06

  • HttpClient

        是一款支持Http协议的工具包

        oss依赖项中已经包含的httpclient

        

        HttpClient作用:发送HTTP请求 接收响应数据

        HttpClient应用场景:

        当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时

  • 微信小程序开发

  • 微信登录

    登录不上去重新换一个  小程序秘钥

       用户的openid是微信重新生成的  跟自己的不一样

  • 导入商品浏览功能代码

        sql

@Select("select sd.name, sd.copies, d.image, d.description " +
            "from setmeal_dish sd left join dish d on sd.dish_id = d.id " +
            "where sd.setmeal_id = #{setmealId}")

小程序开发参考资料:小程序登录 / 小程序登录 (qq.com)

Day07

为什么要缓存:因为如果用户的访问量很大,数据库的压力就会很大

  • 缓存菜品

  • 缓存套餐

  • 添加购物车

  • 查看购物车

  • 清空购物车

Spring Cache

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。

SpringCache常用注解

注解说明
@EnableCaching开启缓存注解功能,通常加在启动类上
@Cacheable在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中
@CachePut将方法的返回值放到缓存中
@CacheEvict将一条或多条数据从缓存中删除

Day08

  • 导入地址簿功能代码

  • 用户下单

  • 订单支付

用户下单有bug userID获取不到(临时使用硬编码)    重新换一个小程序的秘钥就可以

订单支付缺少商户配置文件,没有完成

用下面这一篇文章的方法可以先跳过这个功能,不会影响整体功能

苍穹外卖跳过微信支付(全网最强,最详细,最容易理解)_跳过网页微信付费-CSDN博客

如果使用上面的方法跳过,就不需要下面的步骤

cpolar:一款内网穿透的工具   你自己的电脑在局域网里,微信后台访问不到,要有公网地址

微信小程序支付时序图

Day09

项目实战   (每个功能都要测试  你不是神仙)

用户端历史订单模块

  • 查询历史订单

  • 查询订单详情

  • 取消订单

  • 再来一单

商家端订单管理模块

  • 订单搜索

SQL写错了注意为空是 ‘’  两个引号

  • 各个状态的订单数量统计

  • 查询订单详情

  • 接单

  • 拒单

  • 取消订单

  • 派送订单

  • 完成订单

  • 校验收货地址是否超出配送范围

                注意@Value不要导错

Day10

  • Spring Task

        是一款任务调度框架,可以按照某个规定的时间自动执行某段代码

        只要是需要定时处理的场景都可以使用Spring Task


     

  • 订单状态定时处理

        两种情况

  • 下单后未支付,订单一直处于“待支付”状态

  • 用户收货后管理端未点击完成按钮,订单一直处于“派送中”状态

        cron表达式在线网址:在线Cron表达式生成器 (qqe2.com)

  • WebSocket

WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。

HTTP协议和WebSocket协议对比:

  • HTTP是短连接

  • WebSocket是长连接

  • HTTP通信是单向的,基于请求响应模式

  • WebSocket支持双向通信

  • HTTP和WebSocket底层都是TCP连接

               

webscoket应用场景:

视频弹幕  网页聊天 体育分数实况更新  股票基金报价实时更新

  • 来单提醒

public void paySuccess(String outTradeNo) {
        // 当前登录用户id
        Long userId = BaseContext.getCurrentId();

        // 根据订单号查询当前用户的订单
        Orders ordersDB = orderMapper.getByNumberAndUserId(outTradeNo, userId);

        // 根据订单id更新订单的状态、支付方式、支付状态、结账时间
        Orders orders = Orders.builder()
                .id(ordersDB.getId())
                .status(Orders.TO_BE_CONFIRMED)
                .payStatus(Orders.PAID)
                .checkoutTime(LocalDateTime.now())
                .build();

        orderMapper.update(orders);

        //通过websocket向客户端浏览器推送消息 type orderId content
        Map map = new HashMap();
        map.put("type",1); // 1表示来单提醒 2表示客户催单
        map.put("orderId",ordersDB.getId());
        map.put("content","订单号:" + outTradeNo);

        String json = JSON.toJSONString(map);
        webSocketServer.sendToAllClient(json);
    }
  • 客户催单

@Override
    public void reminder(Long id) {
        Orders orders=orderMapper.getById(id);
        if(orders==null){
            throw new OrderBusinessException(MessageConstant.ORDER_NOT_FOUND);
        }
        HashMap map = new HashMap();
        map.put("type",2);
        map.put("orderOd",id);
        map.put("content","订单号"+orders.getNumber());
        webSocketServer.sendToAllClient(JSON.toJSONString(map));
    }

Day11

营业额统计

Apache ECharts:可实话图表

用户统计

订单统计

销量排名统计

整体效果如下:

Day12

工作台

Apache POI

是一个处理Miscrosoft Office各种文件格式的开源项目

一般情况下都是操作Excel 文件,即可写入也可读取

应用场景:

  • 导出交易明细
  • 导出excel报表
  • 批量导入业务数据

导出运营数据Excel报表

Day13 前端部分还没学习

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值