初入 Spring Boot 的世界,想試著用 AI 輔助開發,但不只是讓 AI 幫我寫程式。透過和 AI 討論、比較不同方案,思考技術取捨與決策,理解程式背後的原因。希望這 30 天不只做出一套後端系統,也能在 AI coding 的過程中,練習真正屬於自己的技術判斷力。
一開始設計 JWT 時,把 role 放進 token 看起來很合理,之後每次請求只要驗證 JWT,就可以直接知道使用者是不是客服,不需要再查資料庫,這個做法看...
使用者登入後,可以查看自己的帳戶餘額,也可以查看自己參與的團購訂單;客服則可以查看任何一張訂單。 原本的帳戶查詢 API 讓 client 傳入 userId:...
團購訂單有五種狀態。狀態本身不難,難的是每個狀態允許哪些操作——這件事若沒有明確定義,會散落成各處的 if 判斷。 狀態 意義 可下單/改單 可取消 可扣...
昨天把訂單狀態的轉換規則定下來,其中有一條規則很重要: 結算時如果餘額不足,訂單必須進入 FAILED,不能停在 CLOSED。 CLOSED 代表「訂單已...
按照使用者的使用流程,團購的第一步是「挑店家」,使用者登入後,使用者會看到一份店家清單,依低消(min_order_amount,滿多少錢店家才接單)由低到高排...
團主選一家店開團,參與者從菜單點品項。截止時,系統依每個人點餐的金額從餘額扣款,而扣款前這筆金額會先被凍結,這裡其實有兩條很重要的規則: 使用者下單時看到多少...
結算團購訂單時,系統需要從每位參加者的帳戶餘額中扣除應付金額。 User user = userMapper.selectById(userId); if (...
使用者參加團購時,系統要先確認他付得起,這裡看的不是帳戶實際餘額,而是可用餘額: 可用餘額 = 帳戶餘額 − 尚未結算品項的金額總和 目前 users.bal...
每次訂團購的時候,團主都要像債主般的追著跟大家要錢,所以在做這個專案的時候,就刻意地把規格設計成「訂單扣款時,只要有一個人儲值帳戶裡面的錢不夠扣款,就不能扣款」...
先來個前情提要,Day 18用 SELECT ... FOR UPDATE,讓同一個使用者的下單流程依序取得 users 這一列的鎖,避免兩筆訂單同時扣掉相同的...