返回

《从零开始的毕业设计》-ELS中台快递物流调度系统(二)基本订单功能

后端

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:

  1. 获取订单列表:
GET http://localhost:8080/orders
  1. 获取单个订单:
GET http://localhost:8080/orders/1
  1. 创建订单:
POST http://localhost:8080/orders
  1. 更新订单:
PUT http://localhost:8080/orders/1
  1. 删除订单:
DELETE http://localhost:8080/orders/1

4. 总结

在本文中,我们使用Mybatis-plus、事务、RESTful风格的API实现了简单的订单管理功能。这为我们构建ELS中台快递物流调度系统奠定了基础。