day13_14 项目分组实战

本文介绍了神领物流项目实战中,学生需扩展的功能,包括取派件任务搜索微服务、车辆轨迹追踪和短信通知服务。通过搜索Elasticsearch中的数据,实现快递员操作和位置上报功能,同时涉及JavaAPI更新和数据库管理。
摘要由CSDN通过智能技术生成

1、背景说明

通过前面课程的学习,我们已经掌握了神领物流项目相关业务的开发,也参与了核心调度中心的开发,对于项目有了更深的理解,在此阶段中,我们将基于神领物流项目本身的基础之上扩展新的功能,这些新的功能将由你来完成。加油~
w.gif

2、功能需求

项目分组实战,目标是完成三个需求,实现三个微服务,分别是

  • 取派件任务搜索微服务 (★★★★☆)
  • 车辆轨迹微服务 (★★★☆☆)
  • 短信微服务 (★★☆☆☆)
    • 快递员派件时,下发短信通知收件人
    • 快递员取件后,用户超时1小时未付款,下发短信通知付款
    • 收件人签收后,下发短信邀请为快递员评价
    • ……

2.1、取派件任务搜索

取派件任务搜索是在快递员端的操作,主要包含两个功能,分别是【任务搜索】和【最近搜索】,其中【最近搜索】已经在sl-express-ms-web-courier中实现,所以在实战中,只需要实现【任务搜索】即可。
任务搜索的需求如下:(仔细阅读需求)
image.png
功能界面:
image.png

2.2、车辆轨迹

车辆轨迹,首先是在创建运单后会对整个运输路线进行规划(借助高德地图服务),规划完成后轨迹点数据存于MongoDB,用于展现轨迹。(具体需求可参考需求文档)
车辆在运输中、快递员在派件中会上报位置自己的位置,具体由各自的APP进行上报,用于展现当前车辆所在的位置。
功能效果图如下:
image.png
image.png

3、实现分析

3.1、取派件任务搜索

关于搜索的实现的,可以参考文档:https://sl-express.itheima.net/#/zh-cn/modules/sl-express-ms-search

3.1.1、业务流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传由上面的业务流程可以看出:

  • 快递员的取派件任务都是通过work微服务发出消息与Elasticsearch中的数据同步的
  • 快递员端微服务通过搜索微服务的查询,可以查询到符合条件的数据

3.1.2、基础代码

在git中提供搜索微服务的基础代码,仅供实战参考。(学生可自行设计代码,不要求必须一样,能够实现业务功能即可)

工程名git地址
sl-express-ms-search-apihttp://git.sl-express.com/sl/sl-express-ms-search-api.git
sl-express-ms-search-domainhttp://git.sl-express.com/sl/sl-express-ms-search-domain.git
sl-express-ms-search-servicehttp://git.sl-express.com/sl/sl-express-ms-search-service.git

3.1.3、实现提示

3.1.3.1、新版Java API学习

ElasticSearch自7.15版本以后,废弃了 RestHighLevelClient ,官方推荐使用 ElasticsearchClient ,该客户端的使用示例均已做了测试用例。
如下图中,IndexTest 是索引相关测试用例,DocumentTest 是文档相关测试用例,ComplexSearchTest 是复杂搜索相关测试用例。
另外,同学们也可参考官方文档进行自主学习:https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/7.17/searching.html
image.png

3.1.3.2、分词器学习

搜索微服务中,我们对于运单号、手机号、姓名字段进行搜索。运单号和手机号字段使用Ngram分词器,姓名字段先使用Ngram分词器,再使用拼音分词器。
以上两种分词器可参考官方文档进行自主学习:

3.1.3.3、索引库结构

在kibana中,创建索引库和映射(仅供参考,可自行调整):

PUT courier_task
{
  "settings": {
    "index.max_ngram_diff":12,// ngram分词器设置最大最小步长间隔
    "analysis": {
      "analyzer": {// 自定义分词器
        "code_analyzer": {// 编码类分词器,适用于手机号和运单号
          "tokenizer": "code_tokenizer"
        },
        "name_analyzer":{// 姓名分词器
          "tokenizer": "name_tokenizer",
          "filter": "py" // 分词后再用拼音分词器过滤
        }
      },
      "tokenizer": {
        "code_tokenizer": {
          "type": "ngram",
          "min_gram": 4,
          "max_gram": 15,
          "token_chars": [
            "letter",
            "digit"
          ]
        },
        "name_tokenizer": {
          "type": "ngram",
          "min_gram": 2,
          "max_gram": 10,
          "token_chars": [
            "letter",
            "digit"
          ]
        }
      },
      "filter": {// 自定义tokenizer filter
        "py":{// 过滤器名称
          "type": "pinyin",// 过滤器类型,这个自定义的过滤器使用的是pinyin分词器
          "keep_full_pinyin": false,//不要把单个字ch
          "keep_joined_full_pinyin": true,//把词语转成全拼
          "keep_original": true,//转完之后的中文保留
          "limit_first_letter_length": 16,//转成的拼音首字母不能超过16个
          "remove_duplicated_term": true,//转成的拼音不能有重复的,重复的删掉
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "actualEndTime" : {
        "type" : "date",
        "format" : "yyyy-MM-dd HH:mm:ss"
      },
      "actualStartTime" : {
        "type" : "date",
        "format" : "yyyy-MM-dd HH:mm:ss"
      },
      "address" : {
        "type" : "text"
      },
      "agencyId" : {
        "type" : "long"
      },
      "courierId" : {
        "type" : "long"
      },
      "created" : {
        "type" : "date",
        "format" : "yyyy-MM-dd HH:mm:ss"
      },
      "estimatedEndTime" : {
        "type" : "date",
        "format" : "yyyy-MM-dd HH:mm:ss"
      },
      "estimatedStartTime" : {
        "type" : "date",
        "format" : "yyyy-MM-dd HH:mm:ss"
      },
      "id" : {
        "type" : "keyword"
      },
      "isDeleted" : {
        "type" : "keyword"
      },
      "name" : {
        "type" : "text",
        "analyzer": "name_analyzer",
        "search_analyzer": "keyword"
      },
      "orderId" : {
        "type" : "long"
      },
      "phone" : {
        "type" : "text",
        "analyzer": "code_analyzer",
        "search_analyzer": "keyword"
      },
      "status" : {
        "type" : "keyword"
      },
      "taskType" : {
        "type" : "keyword"
      },
      "transportOrderId" : {
        "type" : "text",
        "analyzer": "code_analyzer",
        "search_analyzer": "keyword"
      },
      "updated" : {
        "type" : "date",
        "format" : "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

3.2、车辆轨迹

3.2.1、业务流程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传### 3.2.2、基础代码
在git中提供车辆轨迹微服务的基础代码,仅供实战参考。(学生可自行设计代码,不要求必须一样,能够实现业务功能即可)

工程名git地址
sl-express-ms-track-apihttp://git.sl-express.com/sl/sl-express-ms-track-api.git
sl-express-ms-track-domainhttp://git.sl-express.com/sl/sl-express-ms-track-domain.git
sl-express-ms-track-servicehttp://git.sl-express.com/sl/sl-express-ms-track-service.git

3.2.3、实现提示

实现思路:

  • 根据收发件人的地址通过高德地图查询路线数据,需要将转运节点作为途经点
  • 解析高德返回的数据存储到MongoDB中,解析有一定难度

3.3、短信微服务

项目中需要搭建短信微服务,需要发送短信进行通知,在这里主要实现的业务是,运单开始派送时发送短信通知收件人。
基础代码,仅供实战参考。(学生可自行设计代码,不要求必须一样,能够实现业务功能即可)

工程名git地址
sl-express-ms-sms-domainhttp://git.sl-express.com/sl/sl-express-ms-sms-domain.git
sl-express-ms-sms-apihttp://git.sl-express.com/sl/sl-express-ms-sms-api.git
sl-express-ms-sms-servicehttp://git.sl-express.com/sl/sl-express-ms-sms-service.git

关于短信发送渠道,自行选择,不做强制要求。建议选择阿里云平台。

4、项目分组

4.1、时间安排

此次项目实战安排2天课时(可以加一天自习调整为3天),具体的时间安排如下:

  • 第一天上午,由讲师带领学生了解项目实战中的内容
  • 第一天的下午,第二天,第三天上午,这些时间段是学生实战开发的时间
  • 第三天下午,成果演示

4.2、分组安排

  • 将一个班的学生分成若干小组,每个小组成员5~6人,最多不超过8人。
  • 每个小组选取一名组长,组长负责组员的任务分工。
  • 每个组员都要参与开发,不得以任何接口拒绝组长安排的任务。
  • 每个小组都需要完成实战中的三个功能(搜索、车辆轨迹、短信)的开发。

4.3、代码管理

在项目开发的过程中,我们都是基于虚拟机中的git提交代码的,在分组实战中,需要将代码共享,同组人员公共修改代码,此时虚拟机中的git就无法满足需求了,在这里,可以借助码云来完成共享。基本的架构如下:

说明:

  • 组长在码云中创建相应的项目,并且邀请组员成为开发者
  • 组长将本地虚拟机环境中的git代码提交到码云(只需要提交实战中涉及到工程即可)
  • 组员代码拉取到本地,即可进行项目开发,在开发完成后将代码提交到码云
  • 待所有的功能开发完成后,组长将代码同步到本地虚拟机中的git中,最终基于组长的环境进行功能演示
  • 同样,组员也将最终的代码同步到自己的本地环境中,提交到虚拟机中的git服务中
  • 最终,所有人的本地虚拟机中的代码都应该是一致的

5、成果演示

  • 每个组都需要准备一个演示ppt,在成果演示阶段使用,ppt风格不限
  • 演示时,不仅是通过接口演示功能,还要通过四端进行演示,能够将完整的物流流程走通
  • 如果有额外实现一些相关的功能,会有加分
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值