[Java][Spring Cloud]電子錢包系統

小黑
發佈於後端
閱讀時間約 2 分鐘

電子錢包提供獨立的餘額帳戶系統:開戶、交易明細等。


系統流程

  • 使用者介面使用充值,電子錢包系統將會生成充值訂單,然後呼叫支付系統。
  • 支付系統結束後,會將結果告知電子錢包系統,然後更新餘額。


系統結構

  • Controller:定義服務介面。
  • Service:處理業務邏輯並透過Dao完成資料庫的操作。
  • Dao:提供資料庫操作介面。


資料庫

交易訂單

  • 訂單ID
  • 用戶ID
  • 幣別
  • 交易金額
  • 交易類型
  • 交易序號
  • 交易狀態
  • 交易時間
  • 更新時間
  • 建立時間


帳戶資訊

  • 用戶ID
  • 帳戶唯一識別碼
  • 帳戶類型
  • 帳戶幣別
  • 帳戶餘額
  • 更新時間
  • 建立時間


帳戶明細

  • 用戶ID
  • 帳戶唯一識別碼
  • 交易類型
  • 交易金額
  • 幣別
  • 交易前餘額
  • 交易後餘額
  • 借貸
  • 更新時間
  • 建立時間


服務邏輯

Controller

  • 資料格式
    1.無資料變更:form+Get
    2.有資料變更:JSON+Post
    3.回傳資料:JSON


  • 開戶請求
    1.用戶ID
    2.帳戶類型
    3.帳戶幣別


  • 查詢請求
    1.用戶ID
    2.帳戶類型
    3.帳戶幣別


  • 開戶回傳
    1.用戶ID
    2.帳戶類型
    3.帳戶幣別
    4.帳戶唯一識別碼


  • 查詢回傳
    1.ID
    2.用戶ID
    3.帳戶唯一識別碼
    4.帳戶類型
    5.帳戶幣別
    6.帳戶餘額
    7.建立時間
    8.更新時間


  • 充值請求
    1.用戶ID
    2.充值金額
    3.充值幣別
    4.充值類型


  • 充值回傳
    1.用戶ID
    2.充值金額
    3.充值幣別
    4.充值類型
    5.充值序號


  • 支付系統請求
    1.支付訂單號
    2.支付金額
    3.支付幣別
    4.支付狀態


  • 支付系統回傳
    1.處理狀態


Service

  • 例外處理
    1.回傳碼定義


  • pom.xml設定MapStruct


  • 開戶
    1.判斷同一用戶ID下是否存在相同類型帳戶
    2.將帳戶資料轉換為資料庫資料
    3.產生帳號並設定
    4.設定初始帳號餘額
    5.設定時間
    6.將帳戶資料寫入資料庫
    7.封裝回傳資料


  • 查詢
    1.帳戶查詢條件
    2.封裝回傳資料


  • 產生帳號
    1.日期+隨機ID


  • 充值
    1.產生充值訂單訊息
    2.例外處理
    3.呼叫支付系統
    4.取得支付系統返回的資料並回傳


  • 支付系統回傳
    1.判斷充值狀態是否成功
    2.更新充值狀態
    3.更新時間



7會員
112內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
Thumbnail
2024-06-21
閱讀心得:說話是一種展現自我的生活態度|成熟大人的說話課我們每天都在說話,但說出的話合適嗎? Sunny最近讀完一本有關溝通的書籍。 這是由世紀奧美公關的創辦人「丁菱娟」所寫的書,書的全名《丁菱娟的成熟大人說話課:如何說,才能得體又不傷人?反擊時,如何堅定又有力量?任何情境都可用的38個溝通之道》。 會找這本書來看,主要是因為Sunny 近期發
Thumbnail
2024-07-10
防曬產品係數測試報告彙整(2024年)從2014年起,自己對於市售防曬產品的效能產生了濃厚的興趣。因為當時候發現不少產品的防曬係數其實標示是有問題的,像是原本應該是人體測試的SPF與PA數值,實際上沒有做,只用機器測試的數據來充當,但這兩者卻有很大的差異。像是防曬係數其實有強度、廣度與平均度三個面向需要一起判斷,但多數廠商並沒有完整標示
Thumbnail
Java 8 初探 - Lazy Evaluation & Parallel StreamLazy evaluation 的效益必須是在 pipe 的組合上有最佳化過的,若組合的不好反而更糟糕,且在 I/O 上幫助似乎也不大。parallel stream 要能發揮效果必須看資料的來源類型,不過要注意的是 parallel stream 也會使記憶體的使用量增加,使用上也要小心。
Thumbnail
2024-04-26
Java 8 初探 - Stream老實說,看到 Java Sream API 讓我感到相當親切,這應該跟我研究所多年的研究題目是 visual dataflow language 有關,Java Stream API 把迴圈給內化了,每個 operation 的重點是要做什麼,大大提高了程式的抽象化程度和可讀性。
Thumbnail
2024-04-25
Java 8 初探 - Closure最後,Java 8 雖然支援 Lambda,但我覺得 Closure 某種程度上還不稱不上是 Java 的第一級居民,我還是比較喜歡寫一些小而易測的 class,而不是使用 Lambda,至於捕捉變數,透過建構子將變數帶入物件也是一種方式。
Thumbnail
2024-04-25
Java 8 初探 - LambdaJava 8 終於在 2014 的 3 月 18 日正式釋出了,不過自從用 Objective C 開發 iOS App後,我已經有好一陣子沒碰 Java,期間曾經有短暫寫一點點,但卻沒有時間去用 beta 版的 Java 8,直到最近才又開始玩一下。
Thumbnail
2024-04-25
【Java】SpringBoot 專案初始建置學習Spring Boot是Java工程師必備技能,文章分享瞭如何自學並快速上手Spring Boot開發,包括架構、開發工具、專案建立以及實作過程。
Thumbnail
2024-03-24
JAVA 呼叫 LINE NOTIFY 發訊息給群組本文章將介紹如何在LINE Notify上設定及使用權杖(access token)來進行通知功能。透過此API,可以使用curl或JAVA CODE來讓結果顯示在Line上面,達到及時的通知效果。
Thumbnail
Java 不支持multi-inheritanceJava不能同時多重繼承 但是可以多層繼承
Java寫一次,到處執行WORA, Write Once Run Anywhere Java 不依賴於任何平台,Java可以在任何平台上執行,前提是那平台上要有安裝JVM Java的執行流程
Thumbnail
Java Development Kit (JDK)下載完JDK之後,在本機的環境變數中加入此JDK的bin路徑以便系統能識別使用 javac 是java compiler
Thumbnail
【Java】建立Maven專案使用第三方套件 相信很多初學者學python的原因,不外乎語法簡單、好上手、重點是有很多現成的套件可以玩。那麼,Java呢?有!當然有!而且還多到你不知道該選哪個好! 今天的文章主要示範如何在vscode新建立Java 的maven專案,並且透過maven安裝這些額外的套件(依賴)
Thumbnail
2023-09-02