yazilimcikisi / trendyol-bootcamp-bitirme-projesi

Bu proje Trendyol back-end bootcamp bitirme projesidir.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

trendyol-bootcamp-bitirme-projesi

Bu proje Trendyol back-end bootcamp bitirme projesidir.

Proje Tanımı:

Görevimiz : Trendyol Sepet Sistemini en baştan yazmak Eski sepet sistemimiz, gerekli şekilde scale edemediği için, bu sistemi yeniden yazmak ve üzerine yeni özellikler getirmek istiyoruz.

Gereksinim:

  • Sepette, bir veya birden çok ürün olabiliyor.

  • Sepete ürünleri ekleyebiliyoruz. Aynı ürünü tekrar eklersek, sepetteki, o ürün sayısı artıyor.

  • Sepetten ürün çıkartabiliyor ya da sepetteki o ürünün sayısını azaltabiliyoruz.

  • Sepetteki ürünleri dönerken, bir genel toplam bilgisi de dönüyor. Sepetteki ürünlerin sayısı ve fiyatlarına göre kullanıcıların ne kadar ödeyeceği bilgisini gösteriyor. 5 TL olan A ürününden 3, 10 TL olan B ürününden 2 tane varsa sepette, genel toplam bilgisi olarak 5 x 3 + 10 x 2 = 35 TL gösteriyor. 100 TL altındaki her sepet toplamı için de 4,99 kargo bedeli ekliyoruz. Üstteki bu sepet için 35 + 4,99 = 39,99 TL olarak genel toplamı, kargo bilgisni de ekleyerek dönmesini istiyoruz. Örnek json :

      {
      "products": [{
              "id": 1,
              "image": "imageURL",
              "title": "product1",
              "quantity": "3",
              "price": "5"
      }, {
              "id": 2,
              "image": "imageURL",
              "title": "product2",
              "quantity": "2",
              "price": "10"
      }],
      "basketInfo": {
              "Ara toplam": "35 TL",
              "Kargo": "4,99",
              "Toplam": "39,99 TL"
      }
    

Gereksinimleri karşılamak için izlenen adımlar

1) Sepete ürün eklenmesi

Trendyol uygulamasını incelediğimde "Sepete Ekle" işlemi ürün detay ekranından yapılmakta ve her seferinde 1 adet ürün eklenmekteydi. Ben de adımlarımı buna istinaden tasarladım.
Bu gereksinim için aşağıdaki mimari oluşturulmuştur. Görseli yüksek çözünürlükte incelemek için tıklayınız. sepete-urun-ekleme-diyagram Sepete ürün eklerken izlenen adımlar: Görseli yüksek çözünürlükte incelemek için tıklayınız. sepete-urun-ekleme-akis-diyagrami Test çıktıları: Görseli yüksek çözünürlükte incelemek için tıklayınız urun-ekleme-test

2) Sepetteki ürünün miktarının değiştirilmesi

Trendyol uygulamasını incelediğimde sepette var olan bir ürünün miktarını artırmak veya azaltmak için sepet ekranına geliniyor ve ilgili ürünün sayısı listeden seçiliyor veya artı eksi tuşları ile değiştiriliyordu.
Ben de ürün miktarını artıkmak ve azaltmak için ayrı ayrı metotlar yazmak yerine "miktar" parametresi alan tek bir metot yazdım. Bu gereksinim için aşağıdaki mimari oluşturulmuştur. Görseli yüksek çözünürlükte incelemek için tıklayınız. sepeteki-urun-miktarini-guncelleme-diyagram Sepeteki bir ürünün miktarını değiştirmek için izlenen adımlar: Görseli yüksek çözünürlükte incelemek için tıklayınız. sepete-urun-miktarini-guncelleme-akis-diyagrami Test çıktıları: Görseli yüksek çözünürlükte incelemek için tıklayınız urun-miktarini-gucelleme-test

3) Sepetteki belirli bir ürünün silinmesi

Bu gereksinim için aşağıdaki mimari oluşturulmuştur. Görseli yüksek çözünürlükte incelemek için tıklayınız. sepeten-urun-silme-diyagram Sepeteki bir ürünün miktarını değiştirmek için izlenen adımlar: Görseli yüksek çözünürlükte incelemek için tıklayınız. sepeten-urun-silme-akis-diyagrami

4) Belirli bir kullanıcının sepet bilgisinin getirilmesi

Bu gereksinim için aşağıdaki mimari oluşturulmuştur. Görseli yüksek çözünürlükte incelemek için tıklayınız. sepeti-goruntuleme-diyagram Sepeteki bir ürünün miktarını değiştirmek için izlenen adımlar: Görseli yüksek çözünürlükte incelemek için tıklayınız. sepet-bilgilerini-getirme-akis-diyagrami Test çıktıları: Görseli yüksek çözünürlükte incelemek için tıklayınız urun-miktarini-gucelleme-test

Veritabanı

Proje gereksimleri üzerinden çıkarılan ilk taslak ER diyagramı

Bu diyagram, projede yer alacak olan verilerin neler olduğunu belirlemek için çıkarılmıştır. taslak-er-diyagrami

Yukarıdaki ER diyagramı ve servislere istinaden veritabanı aşağıdaki şekli almıştır. Görseli yüksek çözünürlükte incelemek için tıklayınız veritabanlari

Gereksinim:

Sepetteki ürünlerin sistemdeki fiyat ve stok bilgisi doğal olarak değişiyor.

  • Sepetteki bir ürünün fiyatı; sepete eklendiği fiyattan daha aza düştüğü an, kullanıcılara sepetteki ürününün fiyatı azaldı diye email atmak istiyoruz.
  • Sepetteki bir ürünün stoğu; 3'ten az kalırsa; kullanıcılara sepetteki ürününün tükenmek üzere diye email atmak istiyoruz.
  • Sepetteki bir ürünün stoğu; 0 olursa; kullanıcılara sepetteki ürününün tükendi diye email atmak istiyoruz.

Bu gereksinimler için tasarladığım mimariler:

1) Bir ürünün fiyatının güncellenmesi

Görseli yüksek çözünürlükte incelemek için tıklayınız urunun-fiyainin-guncellenmesi

2) Bir ürünün stok bilgisinin güncellenmesi

Görseli yüksek çözünürlükte incelemek için tıklayınız urunun-fiyainin-guncellenmesi Bu mimariler için kodsal bir geliştirme yapılmamıştır.

About

Bu proje Trendyol back-end bootcamp bitirme projesidir.


Languages

Language:Java 100.0%