TUGAS PERTEMUAN 6 PPL
LOW LEVEL DESIGN
1. Layanan Restoran
- Restoran dapat mendaftar sendiri - tambahRestoran
- Pelanggan dapat melihat daftar semua restoran - getAllRestoran
- Admin dapat mencari restoran menggunakan ID - getRestoranById
- Pelanggan dapat mencari restoran menggunakan nama - getRestoranByName
- Pelanggan dapat mencari restoran menggunakan kota - getRestoranByKota
2. Layanan Pengguna
Layanan Pengguna menawarkan fitur yang berhubungan dengan profil pengguna dan berinteraksi hanya dengan Data Pengguna. Layanan ini memungkinkan Pelanggan dan Kurir untuk mendaftar serta mengubah profil mereka.
Fitur:- Pengguna dapat mendaftar sendiri - tambahPengguna
- Pengguna dapat menghapus profil mereka - hapusPengguna
- Pengguna dapat memperbarui profil mereka - perbaruiPengguna
- Pengguna dapat melihat info profil mereka - getPengguna
3. Layanan Menu Makanan
Setelah pelanggan memilih restoran, Layanan Menu Makanan akan menampilkan halaman kedua aplikasi, yaitu menu makanan. Layanan ini juga memungkinkan pelanggan mencari item pada menu berdasarkan kategori tertentu dan hanya berinteraksi dengan Data Menu Makanan.
Fitur:- Restoran dapat menambahkan menu makanan - tambahMenuMenurutIdRestoran
- Admin dapat mencari menu makanan menggunakan ID - getMenuById
- Pelanggan dapat melihat menu - getMenuMenurutIdRestoran
- Admin dapat menambahkan lebih banyak item dalam menu - tambahItemMenuMenurutIdMenu
- Restoran dapat menambahkan lebih banyak item - tambahItemMenuMenurutIdRestoran
- Pelanggan dapat mencari item menggunakan jenis masakan - getItemMenuMenurutIdRestoranDanMasakan
- Pelanggan dapat mencari item menggunakan jenis makanan - getItemMenuMenurutIdRestoranDanJenisMakanan
- Admin dapat mencari item menggunakan ID - getItemMenuById
4. Layanan Harga
Di halaman keranjang, Layanan Harga memungkinkan Pelanggan melihat detail tagihan. Layanan ini akan memanggil Layanan Keranjang untuk mendapatkan semua item dan menampilkan total tagihan. Kita dapat menerapkan Pola Strategi dengan berbagai opsi, seperti DiskonDuaPuluhPersen atau DiskonLimaRatus.
Fitur:
Pelanggan dapat melihat detail tagihan - getBill
5. Layanan Pesanan
Pelanggan dapat melakukan atau membatalkan pesanan setelah menyelesaikan keranjang melalui Layanan Pesanan. Layanan ini berinteraksi hanya dengan Data Pesanan dan memungkinkan pelanggan melihat riwayat pesanan, termasuk opsi penyortiran berdasarkan restoran. Kita bisa menggunakan Pola Perintah untuk menangani perintah pemesanan dan pembatalan.
Fitur:
Pelanggan dapat melakukan atau membatalkan pesanan - perbaruiPesanan
Admin dapat mencari pesanan - getPesananById
Pelanggan dapat melihat riwayat pesanan mereka untuk sebuah restoran - getAllPesananMenurutIdRestoran
Pelanggan dapat melihat semua riwayat pesanan mereka - getAllPesanan
6. Layanan Pembayaran
Pembayaran ke restoran dapat dilakukan melalui Layanan Pembayaran. Layanan ini berinteraksi dengan Data Pembayaran dan memanggil Layanan Harga untuk memvalidasi pembayaran serta Layanan Pesanan untuk memperbarui status pesanan. Pelanggan dapat menambahkan pembayaran ke pesanan mereka melalui layanan ini.
Fitur:
Pelanggan dapat membayar pesanan mereka - tambahPembayaran
Admin dapat mencari pembayaran menggunakan ID - getPembayaranById
Pelanggan dapat melihat pembayaran yang dilakukan - getPembayaranMenurutIdPesanan
Pembayaran harus sesuai dengan tagihan - validasiPembayaran
7. Layanan Pengiriman
Layanan Pengiriman akan mengelola semua fungsi terkait pengiriman pesanan. Layanan ini berinteraksi dengan Data Pengiriman dan memanggil Layanan Pesanan untuk memperoleh pesanan yang akan dikirim.
Fitur:
Admin/Restoran dapat menambahkan pengiriman - tambahPengiriman
Admin dapat melihat pengiriman menggunakan ID - getPengirimanById
Kurir dapat melihat semua pengiriman yang dilakukan - getPengirimanMenurutIdKurir
Pelanggan dapat melacak status pesanan - getStatusPesanan
Sistem pengiriman makanan menggunakan berbagai algoritma untuk menjamin layanan yang lancar dan efisien.
1. Algoritma Personalisasi:
Tujuan: Menampilkan pilihan restoran yang paling relevan untuk pengguna.
Cara Kerja:
Algoritma ini mempertimbangkan lokasi pengguna, riwayat pesanan, dan preferensi.
Misalnya, jika pelanggan biasanya memesan masakan India, aplikasi akan memprioritaskan restoran India terdekat.
Struktur Data:
Data pengguna (lokasi, riwayat pesanan, preferensi)
Data restoran (jenis masakan, lokasi)
2. Algoritma Popularitas:
Tujuan: Memberikan visibilitas lebih besar pada restoran populer.
Cara Kerja:
Algoritma ini memperhitungkan popularitas restoran berdasarkan:
Jumlah pesanan
Peringkat restoran
Restoran yang sering dipesan dan memiliki peringkat tinggi akan diberi visibilitas lebih besar di aplikasi.
Struktur Data:
Data restoran (jumlah pesanan, peringkat)
3. Algoritma Jarak:
Tujuan: Memprioritaskan restoran terdekat dari pelanggan.
Cara Kerja:
Algoritma ini memperhitungkan jarak antara restoran dan pelanggan.
Restoran yang terletak lebih dekat dengan pelanggan akan muncul lebih tinggi dalam hasil pencarian.
Hal ini karena aplikasi berasumsi bahwa restoran terdekat memiliki waktu pengiriman yang lebih singkat.
Struktur Data:
Data restoran (lokasi)
Data pengguna (lokasi)
4. Algoritma Data Real-Time:
Tujuan: Meningkatkan akurasi algoritma lainnya dengan menggunakan data real-time.
Cara Kerja:
Aplikasi pengiriman makanan menggunakan data real-time untuk membuat algoritme mereka lebih akurat.
Misalnya, jika restoran sedang mengalami volume pesanan yang tinggi, aplikasi dapat menurunkan peringkatnya dalam hasil pencarian.
Struktur Data:
Data restoran (jumlah pesanan saat ini)
5. Sistem Rekomendasi:
Tujuan: Memberikan rekomendasi restoran kepada pengguna berdasarkan pola belanja serupa.
Cara Kerja:
Sistem rekomendasi ini dapat didasarkan pada jumlah pesanan yang tersimpan dalam aplikasi pengiriman makanan.
Sistem ini didasarkan pada teknik "nearest-neighbor" yang menghitung restoran favorit pelanggan dan menganalisis pelanggan lain dengan pola pembelian serupa.
Struktur Data:
Data pesanan (pelanggan, restoran)
DESAIN BASIS DATA
Tabel:
Restoran:
id_restoran (INT, Primary Key)
nama_restoran (VARCHAR(255))
kota (VARCHAR(255))
deskripsi (TEXT)
gambar (BLOB)
rating (DECIMAL(2,1))
status (ENUM('Aktif', 'Tidak Aktif'))
Pengguna:
id_pengguna (INT, Primary Key)
nama_pengguna (VARCHAR(255))
email (VARCHAR(255))
kata_sandi (VARCHAR(255))
tipe_pengguna (ENUM('Pelanggan', 'Admin', 'Kurir'))
nomor_telepon (VARCHAR(255))
alamat (TEXT)
Menu:
id_menu (INT, Primary Key)
id_restoran (INT, Foreign Key references Restoran(id_restoran))
nama_menu (VARCHAR(255))
deskripsi (TEXT)
harga (DECIMAL(10,2))
kategori (VARCHAR(255))
gambar (BLOB)
Item Menu:
id_item_menu (INT, Primary Key)
id_menu (INT, Foreign Key references Menu(id_menu))
jenis_masakan (VARCHAR(255))
jenis_makanan (VARCHAR(255))
Pesanan:
id_pesanan (INT, Primary Key)
id_pengguna (INT, Foreign Key references Pengguna(id_pengguna))
id_restoran (INT, Foreign Key references Restoran(id_restoran))
tanggal_pesanan (DATETIME)
status_pesanan (ENUM('Menunggu', 'Diproses', 'Sedang Dikirim', 'Selesai', 'Dibatalkan'))
total_bayar (DECIMAL(10,2))
Detail Pesanan:
id_detail_pesanan (INT, Primary Key)
id_pesanan (INT, Foreign Key references Pesanan(id_pesanan))
id_item_menu (INT, Foreign Key references Item Menu(id_item_menu))
jumlah (INT)
harga_satuan (DECIMAL(10,2))
Pembayaran:
id_pembayaran (INT, Primary Key)
id_pesanan (INT, Foreign Key references Pesanan(id_pesanan))
metode_pembayaran (ENUM('Tunai', 'Kartu Kredit', 'Transfer Bank'))
tanggal_pembayaran (DATETIME)
status_pembayaran (ENUM('Belum Dibayar', 'Dibayar'))
total_bayar (DECIMAL(10,2))
Pengiriman:
id_pengiriman (INT, Primary Key)
id_pesanan (INT, Foreign Key references Pesanan(id_pesanan))
id_kurir (INT, Foreign Key references Pengguna(id_pengguna))
tanggal_pengiriman (DATETIME)
status_pengiriman (ENUM('Belum Diambil', 'Sedang Diantar', 'Telah Diterima'))
Relasi:
Restoran memiliki banyak Menu (N:M)
Menu memiliki banyak Item Menu (N:M)
Pengguna dapat melakukan banyak Pesanan (N:M)
Restoran memiliki banyak Pesanan (N:M)
Pesanan memiliki banyak Detail Pesanan (N:M)
Pesanan memiliki satu Pembayaran (1:1)
Pesanan memiliki satu Pengiriman (1:1)
Kurir memiliki banyak Pengiriman (N:M)
Penjelasan:
Tabel Restoran menyimpan data terkait restoran, termasuk nama, kota, deskripsi, gambar, rating, dan status.
Tabel Pengguna berisi informasi tentang pengguna seperti nama, email, kata sandi, tipe pengguna, nomor telepon, dan alamat.
Tabel Menu menyimpan detail menu restoran seperti nama, deskripsi, harga, kategori, dan gambar.
Tabel Item Menu memuat informasi mengenai item-item yang ada di menu, seperti jenis masakan dan jenis makanan.
Tabel Pesanan mencatat informasi terkait pesanan yang dibuat.
Teknologi untuk Mengimplementasikan Sistem Aplikasi Restoran
Bahasa Pemrograman:
Frontend:
JavaScript merupakan bahasa pemrograman yang sangat digemari dalam pengembangan frontend web. Ia digunakan untuk menciptakan antarmuka pengguna yang interaktif serta responsif.
ReactJS, VueJS, dan AngularJS adalah pustaka JavaScript yang mendukung pembangunan aplikasi web frontend yang kompleks dan terstruktur.
Backend:
Java adalah bahasa pemrograman yang terkenal untuk pengembangan backend. Ia dikenal karena performa tinggi dan skalabilitasnya yang baik, sangat cocok untuk aplikasi yang kompleks.
Go, atau disebut juga Golang, merupakan bahasa pemrograman yang relatif baru namun semakin populer untuk pengembangan backend. Go menawarkan performa tinggi, skalabilitas yang baik, dan mudah dipelajari.
Framework:
Frontend:
Next.js: Framework JavaScript populer untuk membangun aplikasi web frontend statis dan dinamis.
Backend:
Spring Boot: Framework Java populer untuk membangun aplikasi web backend.
Gin-gonic: Framework Go populer untuk membangun aplikasi web backend.
Database:
MySQL: Database relasional populer yang mudah dipelajari dan digunakan.
PostgreSQL: Database relasional open-source yang kuat dan skalabel.
MongoDB: Database NoSQL populer yang cocok untuk data yang tidak terstruktur.
Server Web:
Nginx: Server web open-source yang populer dan berkinerja tinggi.
Apache: Server web open-source yang populer dan mudah dikonfigurasi.
Cloud Hosting:
Google Cloud Platform (GCP): Platform komputasi awan yang terkenal dan menyediakan berbagai layanan, termasuk komputasi, penyimpanan, dan basis data.
Teknologi Lainnya:
Sistem Antrian Pesan: Platform seperti RabbitMQ atau Kafka digunakan untuk mengelola asinkronisasi dan meningkatkan skalabilitas aplikasi.
Sistem Otentikasi dan Otorisasi: Teknologi seperti OAuth 2.0 atau JWT digunakan untuk mengamankan aplikasi dan mengatur hak akses pengguna.
Sistem Pembayaran: Layanan seperti Stripe atau PayPal digunakan untuk menangani proses pembayaran online.


Comments
Post a Comment