返回
《从零开始的毕业设计》-ELS中台快递物流调度系统(二)基本订单功能
后端
2023-10-13 02:52:33
ELS中台快递物流调度系统(二)基本订单功能
在上一篇文章中,我们搭建好了ELS的项目工程,并且调试好了服务之间的通信能力。那么在本篇文章中就要实现简单的订单能力。主要是使用到了Mybatis-plus、事务、RESTful风格的API。
1. 使用Mybatis-plus实现订单管理
1.1 引入Mybatis-plus依赖
在项目工程的pom.xml文件中引入Mybatis-plus的依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
1.2 定义订单实体类
在项目工程的src/main/java/com/example/els/model包下创建订单实体类Order.java:
@Data
@TableName("t_order")
public class Order {
@TableId(type = IdType.AUTO)
private Long id;
private String orderNo;
private Integer userId;
private String consignee;
private String consigneePhone;
private String consigneeAddress;
private Integer status;
private Date createTime;
private Date updateTime;
}
1.3 定义订单Mapper接口
在项目工程的src/main/java/com/example/els/mapper包下创建订单Mapper接口OrderMapper.java:
public interface OrderMapper extends BaseMapper<Order> {
}
1.4 实现订单Service
在项目工程的src/main/java/com/example/els/service包下创建订单Service接口OrderService.java:
public interface OrderService {
List<Order> listOrders();
Order getOrderById(Long id);
void createOrder(Order order);
void updateOrder(Order order);
void deleteOrder(Long id);
}
在项目工程的src/main/java/com/example/els/service/impl包下创建订单Service实现类OrderServiceImpl.java:
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderMapper orderMapper;
@Override
public List<Order> listOrders() {
return orderMapper.selectList(null);
}
@Override
public Order getOrderById(Long id) {
return orderMapper.selectById(id);
}
@Override
public void createOrder(Order order) {
orderMapper.insert(order);
}
@Override
public void updateOrder(Order order) {
orderMapper.updateById(order);
}
@Override
public void deleteOrder(Long id) {
orderMapper.deleteById(id);
}
}
2. 使用事务管理订单操作
2.1 开启事务
在OrderService接口中声明方法@Transactional,表示该方法需要开启事务:
@Transactional
public void createOrder(Order order);
2.2 回滚事务
如果在createOrder方法中发生异常,则会回滚事务,订单不会被创建:
try {
orderMapper.insert(order);
} catch (Exception e) {
throw new RuntimeException(e);
}
3. 使用RESTful风格的API实现订单管理
3.1 定义订单Controller
在项目工程的src/main/java/com/example/els/controller包下创建订单Controller类OrderController.java:
@RestController
@RequestMapping("/orders")
public class OrderController {
@Autowired
private OrderService orderService;
@GetMapping
public List<Order> listOrders() {
return orderService.listOrders();
}
@GetMapping("/{id}")
public Order getOrderById(@PathVariable Long id) {
return orderService.getOrderById(id);
}
@PostMapping
public void createOrder(@RequestBody Order order) {
orderService.createOrder(order);
}
@PutMapping("/{id}")
public void updateOrder(@PathVariable Long id, @RequestBody Order order) {
order.setId(id);
orderService.updateOrder(order);
}
@DeleteMapping("/{id}")
public void deleteOrder(@PathVariable Long id) {
orderService.deleteOrder(id);
}
}
3.2 测试订单API
可以使用Postman或其他API测试工具测试订单API:
- 获取订单列表:
GET http://localhost:8080/orders
- 获取单个订单:
GET http://localhost:8080/orders/1
- 创建订单:
POST http://localhost:8080/orders
- 更新订单:
PUT http://localhost:8080/orders/1
- 删除订单:
DELETE http://localhost:8080/orders/1
4. 总结
在本文中,我们使用Mybatis-plus、事务、RESTful风格的API实现了简单的订单管理功能。这为我们构建ELS中台快递物流调度系统奠定了基础。