」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 ChatGPT 建立訂單處理服務(貢獻努力)並已完成

使用 ChatGPT 建立訂單處理服務(貢獻努力)並已完成

發佈於2024-11-06
瀏覽:443

Building an Orders Processing Service with ChatGPT (contribute  efforts) and Finished in ays

人工智能为改变和提高我的日常工作效率做出了贡献

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

老实说,对于不同的小任务有很多小线程和提示,我无法将它们总结成一个完整的项目,但总的来说......它帮助了我 70 - 80%。另外,这里是一些原始代码,经过我审阅,可能是手工修改过的,所以你可能在我分享的github上找不到这个功能。

第一天:了解要求和设置

第 1 步:收集并明确需求

我做的第一件事就是列出该服务所需的核心功能。以下是我需要的主要功能:

  1. 用户注册:允许用户使用手机号码和地址注册。
  2. 特许经营位置搜索:使客户能够查看和查找附近的咖啡特许经营店。
  3. 下订单:客户可以从菜单中下单包含多个项目。
  4. 队列管理:跟踪客户在队列中的位置并提供预期等待时间。
  5. 取消订单:顾客可以随时退出队列并取消订单。

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

我请求 ChatGPT 帮助我设计满足需求的 API 结构。这是我使用的第一个提示的示例:

迅速的:

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

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

  • POST /users/register:注册新用户。
  • GET /franchises/nearby:根据纬度和经度查找附近的咖啡特许经营店。
  • POST /orders: 下单包含多个商品。
  • GET /orders/{orderId}/queue-position:检查用户在队列中的位置。
  • DELETE /orders/{orderId}: 取消订单并退出队列。

第 3 步:实体设计

对于订单处理服务,我们需要 User、Franchise、Order、Queue 和 OrderItem 实体。我使用 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
}

我对特许经营、订单和队列实体重复了此过程。

第 2 天:实施业务逻辑

第四步:下单逻辑

一旦设置了基本的 API 和实体,我就开始实施下单的业务逻辑。这是该服务的关键部分,因为它需要处理菜单中的多个项目并管理队列位置。

迅速的:

实现对多个商品下订单的逻辑,其中每个商品都链接到特许经营中的特定菜单。

结果: ChatGPT 指导我设计了一个 OrderService 来处理这个问题。这是实现的一部分:

public Order createOrder(UUID customerId, UUID franchiseId, List items) {
    Order order = new Order();
    order.setCustomer(userRepository.findById(customerId).orElseThrow());
    order.setFranchise(franchiseRepository.findById(franchiseId).orElseThrow());

    List 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);
}

第5步:队列管理

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

迅速的:

咖啡加盟系统中如何计算订单的排队位置和等待时间?

结果: ChatGPT 建议创建一个 QueueService 来跟踪订单并根据时间戳为其分配位置。我的实现如下:

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

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

第 6 步:取消订单

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

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

完成项目

到第 2 天结束时,我获得了功能齐全的服务,使客户能够:

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

要点

  • 利用人工智能执行日常任务:ChatGPT 加快了重复性任务的速度,例如设计 API、生成样板代码和实现常见业务逻辑模式。
  • 分而治之:通过将项目分解为小的、可管理的任务(例如用户注册、队列管理和下订单),我能够按顺序实现每个功能。
  • 人工智能辅助学习:虽然ChatGPT提供了大量代码,但我仍然需要了解底层逻辑并根据我的项目需求进行调整,这是一次很棒的学习体验。
  • 实时调试:ChatGPT 帮助我解决了实时问题,指导我解决实施过程中遇到的错误和异常,使项目保持在正轨上。

我还有几个步骤来创建文档、使用 Liquidbase 并让 chatGPT 生成示例数据以便于测试。

结论

在 2 天内为一家咖啡店建立一个订单处理系统可能听起来令人畏惧,但在人工智能的帮助下,这是可以实现的。 ChatGPT 就像编码助手一样,帮助我将抽象需求快速转化为工作系统。虽然人工智能可以提供基础,但改进和定制代码仍然是一项基本技能。这个项目教会了我如何在不失去对开发过程的控制的情况下最大限度地发挥人工智能工具的价值。

按照我采取的步骤,您可以加快自己的项目速度并专注于解决更高级别的问题,而将常规代码生成和指导留给 AI。

完整源码Github

版本聲明 本文轉載於:https://dev.to/jackynote/building-an-orders-processing-service-with-chatgpt-contribute-70-80-efforts-and-finished-in-2-days-3klf?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • ## 您可以在不使用 JavaScript 的情況下使用 CSS 建立餅圖分段嗎?
    ## 您可以在不使用 JavaScript 的情況下使用 CSS 建立餅圖分段嗎?
    使用 CSS 在圓中分段使用 border-radius 在 CSS 中建立圓是一種常見的做法。但是,我們可以透過分段(類似餅圖)來實現類似的效果嗎?本文深入研究了僅透過 HTML 和 CSS 實現此目的的方法,不包括使用 JavaScript。 產生相等大小的段相等大小段的一種方法涉及產生以下內容...
    程式設計 發佈於2024-11-06
  • 從頭開始建立一個小型向量存儲
    從頭開始建立一個小型向量存儲
    With the evolving landscape of generative AI, vector databases are playing crucial role in powering generative AI applications. There are so many vect...
    程式設計 發佈於2024-11-06
  • 如何在Chrome使用AI實驗API
    如何在Chrome使用AI實驗API
    要在 Chrome 中使用實驗性 AI API,請依照下列步驟操作: 硬體需求 4GB 記憶體 GPU可用 至少 22GB 空間 Windows 10.11 或 macOS Ventura 或更新版本(無 Linux 規格) 尚不支持: Chrome作業系統 Chrome iOS C...
    程式設計 發佈於2024-11-06
  • 評論:Adam Johnson 的《Boost Your Django DX》
    評論:Adam Johnson 的《Boost Your Django DX》
    書評很微妙。您不想破壞它,但您也想讓潛在讀者體驗所期待的內容。這是提供背景和保持興趣之間的巧妙平衡。我試圖在這篇評論中達到這種平衡,為您提供足夠的內容來吸引您,而不透露太多。 一個小背景故事:我第一次從 Djangonaut Space 的好朋友 Tim 那裡聽說這本書,並將其添加到我的閱讀清單中...
    程式設計 發佈於2024-11-06
  • 如何將陣列元素分組並組合多維數組中另一列的值?
    如何將陣列元素分組並組合多維數組中另一列的值?
    按列將數組元素分組並組合另一列中的值給定一個包含兩列嵌套數組的數組,任務是將基於特定列的子數組,並將每個組中另一列的值連接起來,產生以逗號分隔的清單。 考慮以下範例陣列:$array = [ ["444", "0081"], ["44...
    程式設計 發佈於2024-11-06
  • 三個新加入的例外功能
    三個新加入的例外功能
    從 JDK 7 開始,異常處理已擴展為三個新功能:自動資源管理、多重捕獲和更準確的重新拋出。 多重catch可讓您使用同一個catch子句擷取多個異常,避免程式碼重複。 要使用多重捕獲,請指定由 | 分隔的異常清單。在 catch 子句中。每個參數都是隱式最終參數。 用法範例:catch(f...
    程式設計 發佈於2024-11-06
  • 如何修復執行 ES6 程式碼時出現「意外的令牌匯出」錯誤?
    如何修復執行 ES6 程式碼時出現「意外的令牌匯出」錯誤?
    「排除意外的令牌匯出錯誤」嘗試在專案中執行ES6 程式碼時,可能會出現「意外的令牌導出”錯誤。此錯誤表示所使用的環境不支援 ES6 模組中使用的匯出關鍵字語法。 錯誤詳細資料以下程式碼片段舉例說明了錯誤的來源: export class MyClass { constructor() { ...
    程式設計 發佈於2024-11-06
  • 即使卸載後,VSCode 擴充功能也不會從檔案系統中刪除,我建立了一個解決方案!
    即使卸載後,VSCode 擴充功能也不會從檔案系統中刪除,我建立了一個解決方案!
    所以這是基於 vscode 的編輯器的問題。即使您卸載了擴充功能,它也會保留在檔案系統中,並隨著時間的推移堵塞您的系統。我創建了一個簡單的解決方案。執行此 python 腳本將刪除 vscode 上未安裝的擴充功能。 它適用於 VS Code、VS Code Insiders,也適用於 VSCod...
    程式設計 發佈於2024-11-06
  • 透過 GitHub Actions 按計畫更新網站內容
    透過 GitHub Actions 按計畫更新網站內容
    我想分享我建立一個自我永續的內容管理系統的旅程,該系統不需要傳統意義上的內容資料庫。 問題 該網站的內容(部落格文章和書籤)儲存在 Notion 資料庫中: 附書籤的資料庫 –  Notion UI 我試圖解決的問題是不必在添加每個書籤後手動部署網站。最重要的是 - 保持託管盡可能...
    程式設計 發佈於2024-11-06
  • 如何在 Laravel 5 應用程式的共享託管環境中清除快取?
    如何在 Laravel 5 應用程式的共享託管環境中清除快取?
    如何從 Laravel 5 中的共享託管伺服器清除快取清除快取對於維護 Laravel 應用程式的效能和效率至關重要。但是,在您可能無法存取 CLI 的共享託管環境中,清除快取可能是一個挑戰。 清除視圖快取的解決方法在這種情況下,您可以透過在 CLI 之外呼叫 Artisan 命令來解決此問題。要清...
    程式設計 發佈於2024-11-06
  • 如何加速 Matplotlib 繪圖以提高效能?
    如何加速 Matplotlib 繪圖以提高效能?
    為什麼 Matplotlib 這麼慢? 在評估 Python 繪圖庫時,考慮效能很重要。 Matplotlib 是一個廣泛使用的函式庫,它看起來可能很緩慢,引發了關於加快速度或探索替代選項的問題。讓我們深入研究這個問題並探索可能的解決方案。 提供的範例展示了具有多個子圖和資料更新的圖。使用 Matp...
    程式設計 發佈於2024-11-06
  • 使用畫布調整影像大小時如何克服鋸齒狀邊緣和模糊結果?
    使用畫布調整影像大小時如何克服鋸齒狀邊緣和模糊結果?
    解決在JavaScript 中使用Canvas 調整影像大小時的平滑問題在JavaScript 中使用Canvas 調整影像大小有時會導致明顯的鋸齒狀邊緣或模糊。為了實現平滑的調整大小,可以採用一種稱為向下步進的技術。 在大多數瀏覽器中,預設使用線性內插法來調整大小。雙三次插值可產生更平滑的結果,涉...
    程式設計 發佈於2024-11-06
  • 如何解決 MySQL C# 中的文字編碼問題?
    如何解決 MySQL C# 中的文字編碼問題?
    修復MySQL C# 中的文字編碼問題使用實體框架在C# 中處理MySQL 資料庫時,使用者可能會遇到文字編碼問題,特別是帶有特殊字符,例如“ë”,渲染不正確。本文探討了解決此常見問題的最合適的解決方案。 要修正編碼問題,必須執行以下操作:驗證排序規則設定: 確保所涉及的資料庫或表的排序規則與UTF...
    程式設計 發佈於2024-11-06
  • 如何將美麗搜尋與 Node.js 集成
    如何將美麗搜尋與 Node.js 集成
    作為 Node.js 開發人員,建立能夠提供快速且準確的搜尋結果的應用程式非常重要。使用者期望立即得到相關的回應,但實現起來可能具有挑戰性,特別是在處理大型資料集時。 這就是美麗搜尋的用武之地——一個為輕鬆滿足這些需求而構建的搜尋引擎。 什麼是美麗搜尋? Meilisearch ...
    程式設計 發佈於2024-11-06
  • 平行 JavaScript 機
    平行 JavaScript 機
    作者:Vladas Saulis,PE Prodata,克萊佩達,立陶宛 2024 年 5 月 18 日 抽象的 本文提出了一種新的程式設計模型,可以以簡單且自動平衡的方式利用多核心 CPU 系統。該模型還提出了一種更簡單的程式設計範例,用於在大多數大規模平行計算領域(例如天氣預報、核子物理、搜尋引...
    程式設計 發佈於2024-11-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3