使用ChatGPT构建订单处理服务(贡献70–80%的工作量),并在2天内完成

AI已经为改变和提高我的日常工作效率做出了贡献。

作为一名开发人员,在有限的时间内构建一个订单处理服务有时可能让人感到不知所措。然而,借助像ChatGPT这样的AI驱动开发工具,您可以通过逐步生成代码、设计实体和解决问题来显着加快流程。在本文中,我将带您了解我如何使用ChatGPT在仅仅2天的时间内构建一个完全功能的订单处理服务,从搜集需求到完成。

老实说,有许多小的线程和提示用于不同的小任务,我无法总结成一个完整的项目,但总体来说…它帮助了我70–80%。此外,这里是一些原始代码,经过我审核后,可能已经被手动修改过,因此您可能在我分享的Github上找不到这个功能。

第一天: 了解需求和设置

第一步:收集和澄清需求

第一件事是列出服务所需要的核心功能。这里是我需要的主要功能:

  1. 用户注册:允许用户使用他们的手机号码和地址进行注册。
  2. 特许经营地点搜索:让客户查看并找到附近的咖啡特许经营店。
  3. 订单下单:顾客可以从菜单中选择多个商品下单。
  4. 队列管理:跟踪客户在队列中的位置并提供预计等待时间。
  5. 取消订单:客户可以随时退出排队并取消他们的订单。

第二步:使用ChatGPT生成API端点

我请ChatGPT帮我设计符合需求的API结构。以下是我使用的第一个提示的示例:

提示:

使用Spring Boot为用户注册系统创建API端点,用户可以使用他们的姓名、手机号码和地址进行注册。

结果:ChatGPT 生成了几个端点:

  • 提交 /users/register:注册一个新用户。
  • GET /附近的连锁店:根据纬度和经度查找附近的咖啡连锁店。
  • 提交 /orders:下订单包含多个商品。
  • GET /orders/{orderId}/queue-position:用来检查用户在队列中的位置。
  • 删除/orders/{orderId}:取消订单并退出队列。

步骤3:实体设计

对于订单处理服务,我们需要用户、加盟店、订单、队列和订单项的实体。我使用ChatGPT定义这些实体以及必要的字段。

提示:

为系统设计用户实体。用户可以拥有一个手机号码,地址和角色(如顾客)。

结果:ChatGPT使用JPA提供了一个简单的用户实体。

@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
    @Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
private String mobileNumber;
private String address;
private UserRole role; // CUSTOMER, ADMIN
}

我为特许经营、订单和队列实体重复了这个过程。

第二天:实施业务逻辑

第四步:订单放置逻辑

一旦基本API和实体设置完毕,我便开始着手实施下单的业务逻辑。这是服务的关键部分,因为它需要处理来自菜单的多个项目,并管理排队位置。

提示:

实现下订单的逻辑,其中每个商品都链接到连锁店特定的菜单。

结果:ChatGPT引导我设计一个OrderService来处理这个问题。以下是部分实现:

public Order createOrder(UUID customerId, UUID franchiseId, List<OrderItemDTO> items) {
Order order = new Order();
order.setCustomer(userRepository.findById(customerId).orElseThrow());
order.setFranchise(franchiseRepository.findById(franchiseId).orElseThrow());
    List<OrderItem> orderItems = items.stream()
.map(itemDto -> new OrderItem(menuItemRepository.findById(itemDto.getMenuItemId()), itemDto.getQuantity()))
.collect(Collectors.toList());
order.setItems(orderItems);
order.setQueuePosition(findQueuePositionForFranchise(franchiseId));
return orderRepository.save(order);
}

步骤五:队列管理

接下来,我请ChatGPT帮助我设计将客户放入队列并追踪其位置的逻辑。

提示:

在咖啡连锁系统中,我如何计算订单的排队位置和等待时间?

结果:ChatGPT建议创建一个QueueService,用来跟踪订单并根据时间戳为它们分配位置。我按照以下方式实现了它:

public int findQueuePositionForFranchise(UUID franchiseId) {
List<CustomerQueue> queue = customerQueueRepository.findAllByFranchiseId(franchiseId);
return queue.size() + 1;
}

它还提供了根据平均订单处理时间来估算等待时间的指导。

第六步:订单取消

最后,我实现了允许客户取消订单并退出队列的逻辑。

public void cancelOrder(UUID orderId) {
Order order = orderRepository.findById(orderId).orElseThrow();
queueService.removeFromQueue(order.getQueue().getId(), order.getId());
orderRepository.delete(order);
}

完成项目

第二天结束时,我已经拥有了一个完全功能的服务,允许客户:

  • 使用他们的手机号码和地址注册。
  • 查看附近的加盟店。
  • 从菜单中选择多个项目下订单。
  • 检查他们的队列位置和等待时间。
  • 随时取消他们的订单。

关键要点

  • 利用人工智能进行日常任务:ChatGPT 加速了重复性任务,如设计 API、生成样板代码和实现常见的业务逻辑模式。
  • 分而治之:通过将项目拆分为小而可管理的任务(如用户注册、队列管理和订单录入),我能够按顺序实现每个功能。
  • AI辅助学习:虽然ChatGPT提供了很多代码,但我仍然需要理解其中的逻辑并调整以满足我的项目需求,这是一次很好的学习经验。
  • 实时调试:ChatGPT通过引导我解决实时问题,在实施过程中遇到的错误和异常,将项目保持在正确的轨道上。

我还有几个步骤要完成文档的创建,使用liquidbase,并让chatGPT生成示例数据以便更轻松地进行测试。

结论

在2天内为咖啡店构建一个订单处理系统可能听起来令人生畏,但借助人工智能的帮助,这是可以实现的。ChatGPT就像一个编码助手,帮助我快速将抽象的需求转化为一个可运行的系统。虽然人工智能可以提供基础,但优化和定制研究代码仍然是一项必不可少的技能。这个项目教会了我如何最大限度地发挥人工智能工具的价值,同时不失去对开发过程的控制。

通过跟随我所采取的步骤,您可以加快自己的项目进展并专注于更高层次的问题解决,将例行的代码生成和指导交给人工智能。

完整源代码:https://github.com/jackynote/springboot-orders-process-service.git

2024-09-26 04:11:22 AI中文站翻译自原文