当前位置: 首页 > news >正文

神领物流v2.0-day3-运费微服务笔记(个人记录、含练习答案、仅供参考)

目录

一、前言

二、预估运费

1、模拟实现

2、测试

三、运费微服务

1、拉取代码

2、模板列表

1)导入相关代码

2)测试

3)代码优化

3、新增或更新运费模板

1)导入代码

2)测试

4、运费计算

1)导入代码

2)测试

3)整合到订单微服务

4)测试

5、代码优化-责任链设计模式

1)导入代码

2)测试

四、练习

1、练习一:删除运费模板

1)确认接口信息

2)代码实现

3)测试

2、练习二:查询模板增加缓存

1)代码实现

2)测试

3、练习三(暂时没有想法不做)


一、前言

个人学习记录,已完成练习一和练习二(含答案和测试),练习三未完成

二、预估运费

1、模拟实现

前面的业务需求和实现分析大家跟着视频走就行,下面我主要记录一下代码的实现。如下拉取oms-service的代码,至于后续导入模块及创建develop分支的流程我就不赘述了

找到OrderServiceImpl下的computerCarriage方法,将调用feign接口的代码先注释掉,将文档中模拟实现的代码复制进来。模拟实现就是直接把运费写死为10元

2、测试

在虚拟机连接工具中通过docker stop sl-express-ms-oms-service指令停掉虚拟机中的服务

在本地idea中将OmsApplication、GatewayApplication、WebCustomerApplication三个服务启动,然后打开微信开发者工具。因为oms-service的代码修改了,所以点击一下连衣裙改为2公斤让小程序刷新一下,出现如下图预估总价为10元就测试成功了

三、运费微服务

1、拉取代码

老样子,拉取代码的流程不再赘述

2、模板列表

1)导入相关代码

这部分代码基本都是直接从文档中复制过来,不再赘述

2)测试

将下图的四个服务启动起来,等会基于swagger和前端都测试一下

启动项目后,基于swagger接口进行测试:http://127.0.0.1:18094/doc.html。如下图可见swagger测试没有任何问题

登录管理员前端界面,点击运费管理看到如下图的显示就测试成功了

3)代码优化

导入文档给出的运费模板工具类

将原来转化为DTO对象的代码进行优化。优化完之后重新启动那四个服务再打开前端进行测试,基本是没有问题的

3、新增或更新运费模板

1)导入代码

CarriageController导入代码如下:

CarriageService导入代码如下:

CarriageServiceImpl导入代码如下:

导入文档给出的异常枚举类

2)测试

老样子,测试还是启动这四个服务

测试在存在模板的情况下,新增非经济互寄

测试经济互寄关联城市重复的情况

测试修改模板,将续重价格从原来的5改为10,测试没有问题

4、运费计算

1)导入代码

直接拉取的经济区枚举的代码bug记得改一下并推送上去

导入CarriageController代码如下:

导入CarriageService代码如下:

导入CarriageServiceImpl代码如下:

2)测试

通过swagger进行测试,将如下图的服务启动起来

请求参数按照文档给出的填上去测试,计算出来运费是112就成功了

3)整合到订单微服务

回到之前模拟实现的部分,把feign调用的代码注释解开,然后把模拟实现的代码注释掉

4)测试

重新启动如下四个服务

通过微信小程序进行测试,如下图测试成功

5、代码优化-责任链设计模式

1)导入代码

这部分代码基本都是直接从文档导入的,想研究的自己看文档吧,我就展示一下目录不展示具体代码了

2)测试

还是在微信小程序测试,没有任何问题,后续jenkins部署再测试也没有问题

四、练习

1、练习一:删除运费模板

1)确认接口信息

由于文档并没有给出接口信息,所以我先启动这四个服务然后打开前端看看接口信息

打开管理员前端,点击删除当然会报错。报错信息是Feign调用失败

然后打开idea发现CarriageFeign其实已经存在删除运费模板的feign接口了,只是没有实现而已

2)代码实现

CarriageController代码如下,由于这个接口的功能单纯就是根据运费模板id去删除,所以在这里直接写调用MybatisPlus的removeById方法是可以的。我为了统一就还是controller、service、serviceImpl依次写下去了

service代码如下:

serviceImpl代码如下:

3)测试

重启服务,测试之前先打开数据库看一眼,最下面标蓝的就是黑吉辽的数据

重新打开管理员前端把黑吉辽的模板数据给删除了,显示删除成功,同时前端不再显示该行数据了

重新打开数据库表也可以看到确实数据已经被删除了,没有任何问题

最后记得把数据还原回去

2、练习二:查询模板增加缓存

1)代码实现

在carriage-service的pom文件中引入redis的相关依赖

在boostrap-local.yml文件中加上nacos中redis的共享配置(shared-spring-redis.yml配置在nacos中已经存在)

修改CarriageChainHandler中的findCarriage代码如下,注释非常详细。这里使用的是Redis中的Hash结构,它的层次结构是key field value

修改CarriageServiceImpl的saveOrUpdateCarriage代码如下,这里是为了保证数据的一致性。理论的想法是更新运费模板时删除由key和field确定的唯一的value,但是这里有两个问题。第一是这里的saveOrUpdate是MybatisPlus提供的方法,之前的代码并没有实现区分新增和更新的逻辑。第二个问题是大家可以自己查看WaybillDTO和CarriageDTO,然后就如下注释所分析的,它们两个没有公用的属性字段,所以无论以哪一个字段为field,这里都做不到由key和field确定唯一的value再删除。所以就只能把整个缓存全部删除,不过这部分运费模板本来就不是经常需要新增更新的,所以也说的过去

2)测试

启动如下图的五个服务

打开微信开发者工具,老样子如下图选择连衣裙3公斤,看到左下角预估总价计算出28后,再去查看Redis的数据

打开DataGrip可以看到以carriage:cache为key的缓存已经出现,像这里我因为自己喜欢小写,所以一眼就看出来wechat和这个是我自己实现的缓存。不过这个大家还是按自己喜好习惯来

点进去也能查询到具体的数据

然后此时打开管理员的前端界面,将黑吉辽的续重价格从5改为6,目的是测试更新运费模板是否会删除缓存来保持数据一致性

上面修改成功之后再次打开redis就会发现缓存已经被删除了,测试没有任何问题

3、练习三(暂时没有想法不做)

http://www.dtcms.com/a/570037.html

相关文章:

  • 网站建设服务费计入会计科目做电影网站需要多大空间
  • 电机东莞网站建设营销策划公司有哪些职位
  • 《AI基础》
  • 网络推广一般怎么收费东莞网站优化制作
  • 技术支持 滕州网站建设苏州专业网站建设定制
  • 【软考架构】案例分析-管道过滤器、仓库架构风格,从数据处理方式、系统的可扩展性和处理性能三个方面对这两种架构风格进行比较与分析
  • 一种高效的端到端计算框架:用于生成心电图校准的人体心房电生理容积模型|文献速递-文献分享
  • 建一个网站需要多少钱?云梦网站建设
  • 使用 Shoelace 公式结合球面几何计算地球上任意多边形的面积
  • MCP (Model Context Protocol) 框架介绍文档
  • JAVA练习题day64
  • 小小电能表,如何撬动家庭能源革命?
  • 建设银行网站明细多长时间怎样做网站导购
  • 巴南市政建设网站tp5做企业网站
  • LVGL显示gif动图导致MCU进入HardFault_Handler问题(已解决!)
  • PostIn零基础学习 - 如何快速调试websocket接口
  • 坪山网站制作阿里巴巴建设网站
  • 【开题答辩全过程】以 高考志愿智能推荐系统的设计为例,包含答辩的问题和答案
  • Spring Boot 中,内嵌的 Servlet 容器(也称为嵌入式 Web 服务器)
  • 确定网站建设目标国外网站阻止国内访问怎么做
  • 网站维护的主要工作wordpress 获取用户id
  • 金融做推广的网站什么网站框架
  • 建设了网站怎么管理网页设计实训报告美食主题
  • 重组、谋上市,OpenAI更自由了
  • Linux 自动清理临时文件配置
  • Docker安装jenkins并配置对应的maven项目自动发布
  • 重塑城市治理的智能运营新范式
  • 网站托管什么意思苗木网站素材
  • 东营做网站m0536怎么做网站一个平台
  • 课程表---bfs