Quarkus云原生微服务开发实战
上QQ阅读APP看书,第一时间看更新

2.4 实战应用介绍

作为一本Quarkus开发实战图书,实战项目是必不可少的一部分。为了帮助读者更好地掌握相关的知识,实战项目应该是真实、完备和易懂的。本书选择了外卖订餐应用作为案例。所开发的示例是一个类似美团和饿了么的外卖服务,称为快乐外卖。

下面对实战应用中的重要用户场景进行介绍。

餐馆管理负责维护餐馆相关的信息。餐馆的基本信息包括餐馆的名称、描述和地理位置信息。每个餐馆可以有多个菜单,而每个菜单则与多个菜单项进行关联。菜单和菜单项之间是多对多的关系。菜单项的信息包括名称、描述、图片和价格。每个餐馆在同一时间只能有一个活动的菜单。当用户在浏览餐馆时,所查看的是活动菜单中的菜单项。用户可以根据不同的条件来搜索餐馆,包括餐馆的地理位置和菜单内容的全文检索。

订单管理负责维护订单相关的信息。订单的基本信息包括用户ID、餐馆ID、订单中的菜单项及数量,以及订单的状态。当用户提交了新的订单之后,订单的状态会根据系统中产生的事件来产生变化。

送货服务负责管理订单的派送。当餐馆通知外卖订单已经完成之后,系统会在餐馆附近的特定范围之内,搜索当前可用的骑手。对于找到的可用骑手,系统会发送通知给骑手。当骑手接收到新的订单派送创建的通知之后,可以选择接受派送。在骑手发出接受派送的请求之后,系统会从所有愿意接受派送的骑手中选择一个来接受派送任务。选择骑手的算法可以有很多。简单的选择算法是采用先到先得的策略,谁先接受派送任务,谁就被选中;复杂的算法可以设定一个等待的时间段,选中在这个时间段内应答的骑手中距离最近的骑手。被选中的骑手获取到订单的相关信息,完成派送。在派送过程中,系统会随时追踪骑手的位置,方便用户查看状态。

骑手管理负责维护骑手相关的信息。骑手的基本信息包括骑手的姓名、Email地址、联系电话等。典型的场景包括骑手注册和骑手信息更新。每个骑手可以处于不同的状态。

· 未开始运营的骑手处于离线状态。

· 已经运营且没有接单的骑手处于可用状态。

· 已经运营且已经在进行派送的骑手处于不可用状态。

用户管理负责维护用户相关的信息。用户的基本信息包括用户的姓名、Email地址、联系电话等。典型场景包括用户注册和用户信息更新。除了用户的基本信息之外,用户还可以添加常用的地址,如家庭住址和工作单位地址等。这些地址可以帮助用户快速下订单。用户还可以把经常下单的餐馆加入收藏中,方便快速访问。

实战应用中会有很多场景需要用到地址,包括餐馆的地址和派送的地址。在指定地址时,用户通过输入地址关键字的方式来查询。这就需要根据用户的输入进行地址查询,并返回对应的地理位置坐标。通常使用已有的地址数据库或利用第三方提供的相关服务。

在实际的外卖服务中,顾客需要使用第三方支付服务,如支付宝和微信,来完成订单的费用支付。以实战应用来说,如何与这些第三方支付服务集成,并不是需要关注的重点,因为这通常是外卖App需要完成的功能。对于实战应用的后台服务来说,只需要知道支付的结果即可。