代驾:订单支付
一、账单信息
上一节中我们结束的代驾,更新了账单信息与分账信息,接下来司机端小程序会跳转到账单确认页,展示账单信息,然后发送账单给乘客端,乘客端拿到账单信息后进行支付账单。
1、获取账单信息
order_bill表记录的账单信息,我们直接获取即可
1.1、订单微服务接口
1.1.1、OrderInfoController
@Operatio...
就是一个匿名的执行方法,或者叫代码块
“()” 这个部分就像是一个入口,你可以在里面放一些参数,如果不需要参数就是空括号。比如说,如果要处理一个数字,可能括号里就写一个 “int num” 这样的参数表示接收一个数字进来。
“->” 这个就像是一个连接符号,连接前面的入口和后面的处理逻辑。
“{}” 里面就是具体要做的事情。如果是没有参数的情况,比如执...
二、CompletableFuture异步编排
1、CompletableFuture异步编排
1.1、CompletableFuture介绍
问题:司机结束代驾服务页面非常复杂,数据的获取都需要远程调用,必然需要花费更多的时间。
假如司机结束代驾服务的每个查询,需要如下标注的时间才能完成
获取订单信息 1s
计算防止刷单 0.5s
计算订单实际里...
https://blog.csdn.net/qq_45344586/article/details/131493510
代驾:我的订单与异步编排
一、我的订单
乘客端与司机端都有我的订单,在执行中的订单,都会跳转到执行中的页面,代驾结束后,进入订单详情页。
1、乘客端我的订单
1.1、订单微服务接口
1.1.1、OrderInfoController
@Operation(summary = "获取乘客订单分页列表")
@GetMapping("/findCustomerO...
代驾:RabbitMQ
一、RabbitMQ
学习目标:
能够说出Rabbitmq应用场景
能够说出Rabbitmq消息不丢失解决方案
掌握Rabbitmq实现普通消息的收发
掌握Rabbitmq实现延迟消息
基于Rabbitmq消息队列实现商品数据同步
基于Rabbitmq消息队列实现订单延迟关闭
1、目前存在的问题
订单服务取消订单问题
乘客下单后,...
单独拿出来看很明显
在代码中L的大小写直接决定了是包装类还是基本类型
基本类型是不允许有null值的,所以报错的原因就是大写L写成了小l
居然是pom文件依赖问题,明明已经引入了,重写一下就不报错了
换成
<!--mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>...
代驾:订单执行
一、结束代驾
司机到达代驾终点,就可以结束代驾了,结束代驾我们要输入其他费用(路桥费、停车费与其他费用)、计算订单实际里程、计算代驾实际费用、系统奖励、分账信息与生成账单。
1、计算订单实际里程
订单实际里程其实就是把MongoDB中该订单的GPS定位坐标都给取出来,以时间排序,连接成连线,这个线的距离就是时间里程。
1.1、地图微服务接口...
代驾:订单执行
一、MongoDB入门
1、MongoDB
1.1、MongoDB 概念
1.1.1、什么是MongoDB
MongoDB 是在2007年由DoubleClick公司的几位核心成员开发出的一款分布式文档数据库,由C++语言编写。
目的是为了解决数据大量增长的时候系统的可扩展性和敏捷性。MongoDB要比传统的关系型数据库简单很多。
在Mong...
代驾:订单执行
一、加载当前订单
无论司机端还是乘客端的小程序,如果遇到微信闪退、页面切换、重新登录小程序之后,只要页面回到首页,都必须加载当前的订单,然后跳转到当前订单的执行状态页面。
前面我们写了模拟接口,当前我们来把这部分接口实现了。
司机端效果如图(乘客端类似):
1、乘客端查找当前订单
1.1、订单微服务接口
1.1.1、OrderInfoCon...
代驾:分布式事务
一、分布式事务Seata
1、事务回顾
1.1、什么是事务
提供一种“要么什么都不做,要么做全套(All or Nothing)”机制。
1.2、事务的作用
保证数据一致性
1.3、事务ACID四大特性
A:原子性(Atomicity)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事...
1. Redis原生方法
Redis的setnx在代码中是RedisTemplate.setIfAbsent(并不是.setnx)
注意为了防止在过程中异常导致无法释放锁,需要设置过期时间来解决,但是仍然存在问题,如果业务7秒处理,锁三秒释放,会出现释放不属于自己的锁的情况(锁是一个共用的,别人用着呢就被释放了)
使用UUID给锁加上唯一标识来解决误...
多线程访问测试工具
配置好java环境后,双击bin目录下的jmeter.bat
下载地址:https://www.ilanzou.com/s/OEYyMvSu?code=ssdp
乐观锁就是在数据库记录后面加上 version版本号进行识别
当两个进程同时修改同一条记录时
两个进程同时读取到数据,此时version版本号为0
进程一率先完成修改并且提交修改,同时修改版本号为1
进程二落后一些,在提交的时候读取版本号version发现是1而不是刚才读取到的0,此时不能提交
乐观锁避免了并发“超卖”的问题