苍穹外卖day10

2024-08-20 19:44
文章标签 day10 外卖 苍穹

本文主要是介绍苍穹外卖day10,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

苍穹外卖day10

  • Spring Task
  • 订单状态定时处理
  • WebSocket
    • 应用(弹幕,网页聊天,体育实况更新,股票基金实时更新)
  • 来单题型
    • 代码实现
    • 需求分析
  • 客户催单

Spring Task

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

链接: 在线生成器

在线生成器
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

订单状态定时处理

每分钟检查一下,是否有订单超过十五分钟,如果有的话就取消

	@Scheduled(cron = "0 * * * * ?  ")public void processTimeoutOrder(){log.info("定时处理超时订单:{}", LocalDateTime.now());LocalDateTime localDateTime = LocalDateTime.now().plusMinutes(-15);//查询超时的订单 待付款List<Orders> list = orderMapper.getByStatusAndOrderTime(Orders.PENDING_PAYMENT,localDateTime);if(list != null && list.size() > 0){for(Orders orders : list){orders.setStatus(Orders.CANCELLED);orders.setCancelReason("订单超时,自动取消");orders.setCancelTime(LocalDateTime.now());}}}
@Select("select * from orders where status status = #{status} and order_time<#{orderTime}")List<Orders> getByStatusAndOrderTime(Integer status,LocalDateTime orderTime);
//处理一直在派送的订单@Scheduled(cron = "0 0 1 * * ?")public void processDeliverOrder(){log.info("定时处理派送中的订单L{}",LocalDateTime.now());LocalDateTime localDateTime = LocalDateTime.now().plusMinutes(-60);List<Orders> list = orderMapper.getByStatusAndOrderTime(Orders.DELIVERY_IN_PROGRESS,localDateTime);if(list != null && list.size() > 0){for(Orders orders : list){orders.setStatus(Orders.COMPLETED);orderMapper.update(orders);}}}

WebSocket

http是短链接,使用请求到回复的那一小段时间是连接的

在这里插入图片描述

应用(弹幕,网页聊天,体育实况更新,股票基金实时更新)

来单题型

在这里插入图片描述
需要WebSocket保持长连接
支付成功之后,调用WebSocket的相关API实现服务端向客户端推送消息
约定服务端发送给客户端浏览器的数据格式为JSON

代码实现

public void paySuccess(String outTradeNo) {// 根据订单号查询订单Orders ordersDB = orderMapper.getByNumber(outTradeNo);// 根据订单id更新订单的状态、支付方式、支付状态、结账时间Orders orders = Orders.builder().id(ordersDB.getId()).status(Orders.TO_BE_CONFIRMED).payStatus(Orders.PAID).checkoutTime(LocalDateTime.now()).build();orderMapper.update(orders);//通过websocket向客户端浏览器推送消息Map map = new HashMap();map.put("type",1);//表示1来单提醒 2客户催单map.put("orderId",ordersDB.getId());map.put("content","订单号:"+outTradeNo);String jsonString = JSON.toJSONString(map);webSocketServer.sendToAllClient(jsonString);}

使用webSocketServer的函数进行websocket的消息传输

public void sendToAllClient(String message) {Collection<Session> sessions = sessionMap.values();for (Session session : sessions) {try {//服务器向客户端发送消息session.getBasicRemote().sendText(message);} catch (Exception e) {e.printStackTrace();}}}

使用session去推送数据

需求分析

客户催单

在这里插入图片描述

在这里插入图片描述

这篇关于苍穹外卖day10的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091011

相关文章

实习项目|苍穹外卖|day7

缓存菜品 1.根据原型进行需求分析与设计(接口文档) 2.根据接口设计DTO(redis数据类型选取) 3.编码controller-》service-》mapper @GetMapping("/list")@ApiOperation("根据分类id查询菜品")public Result<List<DishVO>> list(Long categoryId) {//判断缓存

[苍穹外卖]-04菜品管理接口开发

效果预览 新增菜品 需求分析 查看产品原型分析需求, 包括用到哪些接口, 业务的限制规则 业务规则 菜品名称必须是唯一的菜品必须属于某个分类下, 不能单独存在新增菜品时可以根据情况选择菜品的口味每个菜品必须对应一张图片 接口设计 根据类型查询分类接口 文件上传接口 新增菜品接口 数据表设计 设计dish菜品表 和 dish_fl

SpringBoot登录退出|苍穹外卖登录退出分析

文章目录 概要整体流程注意事项一、拦截路径二、token三、注册防止用户重复提交 苍穹外卖登录退出分析注意解决JWT退出后依然有效的问题 概要 结合Spring Boot和Vue3实现安全的用户登录和退出功能,并使用拦截器、JWT和Redis缓存来提高系统的安全性和性能。 整体流程 注意事项 一、拦截路径 像登录页面的路径就不要拦截了,否则都不能登录了 例如:

Java项目——苍穹外卖(一)

Entity、DTO、VO Entity(实体) Entity 是表示数据库表的对象,通常对应数据库中的一行数据。它通常包含与数据库表对应的字段,并可能包含一些业务逻辑。 DTO(数据传输对象) 作用:DTO 是用于在不同层之间传输数据的对象,通常用于网络传输或服务间调用。DTO 主要用于减少网络请求的次数,携带数据而不包含业务逻辑。特点:DTO类通常只包含数据字段和相应的getter和s

苍穹外卖学习笔记(一)

文章目录 开发环境搭建一. 前端环境搭建二. 后端环境搭建1.进入idea项目2.提交git仓库(+推送github远程仓库)3.数据库环境搭建4.前后端联调(在源代码中项目已经实现登录功能)nginx反向代理好处: 三. 完善登录功能(md5加密存储)1.首先打开pojo模块中实体类的employee,添加salt字段2.在数据库中employee表新建一个salt字段,注意得是字符串类

Vue——day10之指令

目录 内置指令 v-text指令 v-html指令 v-cloak指令 v-once指令 v-pre指令 整体代码示例 自定义指令 整体代码演示 总结 内置指令 v-text指令         v-text指令是Vue.js中的一种指令,它用于将元素的textContent设置为指定的值。它的使用方式是在元素上添加v-text属性,并将其值设置为Vue实例中的一

2024霸王餐小程序cps,h5公众号小程序开源版系统搭建开发,外卖霸王餐小程序系统源码

目录 前言: 一、霸王餐小程序的操作是怎么样的? 二、霸王餐系统后台 三、怎么搭建部署? 前言: 霸王餐项目基于美团和饿了么平台开发的小程序。 一、霸王餐小程序的操作是怎么样的? 1、进入小程序后选择自己要下单的店铺,点击去抢单,点击立即抢单。 2、输入平台外卖绑定的手机号,点击确认报名。按照步骤操作即可。 3、等待外卖送达后,完成评价即可。 二、霸王餐系统后台

langchain 《斗破苍穹》智谱 RAG 问题搜索

目录 代码 项目介绍 模型对比实验 分块方法对比 检索方法对比 结果 10条问题 15条问题 局限性 代码 https://github.com/5zjk5/prompt-engineering/tree/master 项目介绍 《斗破苍穹》小说 RAG 问答,爬虫爬取整部小说章节,并分别保存到不同的数据源中。 txt,pdf,markdown,word。

实习项目|苍穹外卖|day5

复习Redis 原来也是跟着黑马学的redis,教程里的项目是点评网站。(也忘记的差不多了) 这里先自己复习一下如何安装和使用。 1.环境 (也有windows版本) 目前来说肯定是在linux(这里使用虚拟机的方式,按照韩顺平老师的linux教程的环境Linux版本为CentOS 7) Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖:yum install

【苍穹外卖】Day 5 Redis、店铺营业状态接口

1 基本介绍 Redis是一个基于 内存 的 key-value 结构数据库 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 运行 在cmd下 redis-server.exe redis.windows.conf 启动状态下,再 redis-cli.exe 测试: 也可以 redis-cli.exe -h localh