โจทย์ข้อ 1 ให้ออกแบบระบบฐานข้อมูล(ทำเป็นรูปแบบ ER) ที่เป็นตัวกลางของการแลกเปลี่ยน Cryptocurrencies เช่น Bitcoin โดย สามารถนำเงิน Fiat (THB,USD) มาซื้อเหรียญ จาก User คนอื่นๆในระบบได้ และสามารถจะโอนเหรียญหากันภายในระบบ หรือ โอนหาคนอื่นภายนอกระบบได้ ยกตัวอย่าง https://c2c.binance.com/th/trade/buy/BTC
- ระบบสามารถตั้ง ซื้อ-ขาย Cryptocurrencies (BTC,ETH,XRP, DOGE)
- ระบบบันทึกการโอนเงินและซื้อ-ขายแลกเปลี่ยน
- ระบบมีการสร้างบัญชีผู้ใช้
โจทย์ข้อ 2 นำ ER Diagram จากข้อ 1 มาเขียนโดยใช้ Laravel Framework เขียน Method ใน Model เพื่อดึงข้อมูลของ Model อื่นๆที่ความสัมพันธ์กัน ตัวอย่าง https://laravel.com/docs/8.x/eloquent-relationships#one-to-many เขียน Controller และ Routing ในส่วนหลักๆของระบบ ไม่จำเป็นต้องทำทั้งหมด สร้างไฟล์สำหรับ Seed ข้อมูล เพื่อใช้ในการทดสอบ
-
User with Role and Permission
- Source: Users_Role_Permission.puml
- Png: Users_Role_Permission.png
-
User with Wallet
-
User with OrderBook
- Source: Users_OrderBook.puml
- Png: Users_OrderBook.png
-
User with Transaction
- Source: Users_Transaction.puml
- Png: Users_Transaction.png
-
User with TradeFiat (Buy/Sell)
- Source: Users_TradeFiat.puml
- Png: Users_TradeFiat.png
-
All Entity
Method | Endpoint | Description | Status |
---|---|---|---|
POST | /api/v1/auth/login |
สำหรับ Login และสร้าง JWT Token | ✅ |
POST | /api/v1/auth/register |
สำหรับ Register สมาชิก | ✅ |
GET | /api/v1/auth/user |
สำหรับดูข้อมูลส่วนตัวของผู้ใช้งาน | ✅ |
GET | /api/v1/wallets |
สำหรับดูข้อมูล Wallet ของผู้ใช้งาน | ✅ |
POST | /api/v1/wallets |
สำหรับสร้าง Wallet ของผู้ใช้งาน | ✅ |
DELETE | /api/v1/wallets/{id} |
สำหรับลบ Wallet ของผู้ใช้งาน | ✅ |
GET | /api/v1/fiat/trading_pairs |
สำหรับดูข้อมูล Fiat Trading Pairs | ✅ |
GET | /api/v1/fiat/orders |
สำหรับดูข้อมูล Fiat Order ของผู้ใช้งาน | ❌ |
POST | /api/v1/fiat/orders |
สำหรับสร้าง Fiat Order ของผู้ใช้งาน | ❌ |
GET | /api/v1/fiat/orders/{id} |
สำหรับดูข้อมูล Fiat Order ของผู้ใช้งาน | ❌ |
PUT | /api/v1/fiat/orders/{id} |
สำหรับแก้ไข Fiat Order ของผู้ใช้งาน | ❌ |
DELETE | /api/v1/fiat/orders/{id} |
สำหรับลบ Fiat Order ของผู้ใช้งาน | ❌ |
GET | /api/v1/fiat/trades |
สำหรับดูข้อมูล Fiat Trade ของผู้ใช้งาน | ❌ |
GET | /api/v1/crypto/trading_pairs |
สำหรับดูข้อมูล Crypto Trading Pairs | ❌ |
GET | /api/v1/crypto/orders |
สำหรับดูข้อมูล Crypto Order ของผู้ใช้งาน | ❌ |
requirement
- linux
- docker
step
- clone this repo
- install composer dependencies
docker run --rm \ -u "$(id -u):$(id -g)" \ -v "$(pwd):/var/www/html" \ -w /var/www/html \ laravelsail/php82-composer:latest \ composer install --ignore-platform-reqs
- copy
.env.sail
to.env
cp .env.sail .env
- run docker with sail
./vendor/bin/sail up -d
- generate key
./vendor/bin/sail artisan key:generate
- run migration
./vendor/bin/sail artisan migrate
- run seed
./vendor/bin/sail artisan db:seed
- run test
./vendor/bin/sail artisan test