订单微服务编码

本节的内容是补充订单微服务中的业务代码,主要是把原单体 API 项目中的功能模块整合到订单微服务中。

打开订单微服务 newbee-mall-cloud-order-web 的工程目录,在 ltd.order.cloud.newbee 包下依次创建 config 包、dao 包、entity 包、service 包,在 resources 目录下新增 Mapper 文件夹用于存放 Mapper 文件。接着,将原单体 API 项目中与订单模块相关的业务代码和 Mapper 文件(如图 8-12 所示)依次复制过来。

image 2025 04 28 13 08 18 866
Figure 1. 图8-12 原单体 API 项目中与订单模块相关的业务代码和 Mapper 文件

上述步骤完成后,最终的目录结构如图 8-13 所示。

image 2025 04 28 13 08 43 563
Figure 2. 图8-13 目录结构

修改 newbee-mall-cloud-order-web 工程中的 application.properties 配置文件,主要进行数据库连接参数及 MyBatis 扫描配置,代码如下:

# datasource config (MySQL)
spring.datasource.name=newbee-mall-cloud-order-datasource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/newbee_mall_cloud_order_db?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.auto-commit=true

spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.pool-name=hikariCP
spring.datasource.hikari.max-lifetime=600000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1

# mybatis config
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

以上操作中的源代码涉及的数据库为 newbee_mall_cloud_order_db,数据库表为 tb_newbee_mall_ordertb_newbee_mall_order_itemtb_newbee_mall_user_addresstb_newbee_mall_order_address。除此之外,还会用到商品数据和用户数据,这部分数据就要使用远程调用技术了。

打开商城端网关 newbee-mall-cloud-gateway-mall 项目中的 application.properties 文件,新增关于订单微服务的路由信息,配置项为 spring.cloud.gateway.routes.*,新增内容如下:

# 订单接口的路由配置
spring.cloud.gateway.routes[5].id=order-service-route
spring.cloud.gateway.routes[5].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[5].order=1
spring.cloud.gateway.routes[5].predicates[0]=Path=/orders/mall/**

# 收货地址接口的路由配置
spring.cloud.gateway.routes[6].id=order-service-route2
spring.cloud.gateway.routes[6].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[6].order=1
spring.cloud.gateway.routes[6].predicates[0]=Path=/mall/address/**

如果访问网关项目的路径是以 /orders/mall//mall/address/ 开头的,就路由到订单微服务实例。

打开后台管理系统网关 newbee-mall-cloud-gateway-admin 项目中的 application.properties 文件,新增关于订单微服务的路由信息,配置项为 spring.cloud.gateway.routes.*,新增内容如下:

# 订单接口的路由配置
spring.cloud.gateway.routes[5].id=order-service-route
spring.cloud.gateway.routes[5].uri=lb://newbee-mall-cloud-order-service
spring.cloud.gateway.routes[5].order=1
spring.cloud.gateway.routes[5].predicates[0]=Path=/orders/admin/**

如果访问网关项目的路径是以 /orders/admin 开头的,就路由到订单微服务实例。