Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Kody rabatowe - pomysły
SmokAnalog
post 7.12.2017, 11:22:47
Post #1





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cześć,

chcę stworzyć system kodów rabatowych dla sklepu. Robię projekt dla zabawy i nauki, więc proszę nie odsyłajcie mnie do gotowych projektów smile.gif

Interesuje mnie dyskusja o możliwych sposobach implementacji systemu rabatowego. Chciałbym, by system pozwalał na jak najbardziej elastyczne tworzenie rabatów na podstawie różnych kryteriów, na przykład:

Cytat
Wpisując przy zamówieniu kod ABC123, otrzymasz rabat 30% na wszystkie produkty z kategorii Gry, ale maksymalnie do 5-ciu sztuk. Rabat naliczany do 5-ciu najdroższych zamówionych gier.


Moje pomysły to:
  1. Do każdego kodu podpięty kod PHP z obliczaniem rabatu. Nie podoba mi się zbytnio ten pomysł, bo dodawanie pliku jest czasochłonne.
  2. Textarea z kodem PHP do wyliczenia wartości rabatu w eval().
  3. Własny metajęzyk z dostępem do zawartości koszyka w postaci specjalnych tagów. Bardzo pracochłonne w implementacji i nie tak elastyczne jak dwa poprzednie.


Jak Wy byście to rozwiązali? Zależy mi na możliwości podawania złożonych kryteriów dla kodów.

Ten post edytował SmokAnalog 7.12.2017, 11:24:47
Go to the top of the page
+Quote Post
Pyton_000
post 7.12.2017, 11:28:33
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Wszystkie 3 są okropne a eval() to już masakra.

Ja bym poszedł jednak w predefiniowane rabaty a potem zrobił z tego zestaw klas.
Potem każdemu kodowi przypisujesz listę obiektów które zaaplikują wybrane mechanizmy na koszyku np:

TotalAmmountDiscount::class
GamesDiscount::class

Przekazujesz koszyk do takiego obiektu i on zwraca Ci kwotę rabatu.

To jest jeden ze sposobów.
Go to the top of the page
+Quote Post
SmokAnalog
post 7.12.2017, 11:32:46
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ten Twój pomysł to jest to samo, co ten okropny pomysł nr 1, bo jaka jest niby elastyczność w dodawaniu klas typu GamesDiscount? To też jest okropne sad.gif Poza tym dodawać klasę tylko po to, żeby zastosować ją do pojedynczego kodu?

Ten post edytował SmokAnalog 7.12.2017, 11:33:36
Go to the top of the page
+Quote Post
Pyton_000
post 7.12.2017, 12:09:44
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Stosując wzorzec Dekorator możesz zastosować dowolnie przypadki rabatowe.
Go to the top of the page
+Quote Post
SmokAnalog
post 7.12.2017, 12:13:08
Post #5





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Też o tym myślałem, ale to jednak też w wielu przypadkach będzie ograniczać elastyczność rabatów, a poza tym musiałbym używać ich z parametrami. Jest to jednak chyba blisko złotego środka między bezpieczeństwem a użytecznością, bo mógłbym zapisywać w bazie łańcuch dekoratorów razem z wartościami parametrów.
Go to the top of the page
+Quote Post
Pyton_000
post 7.12.2017, 12:19:59
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Z doświadczenia wiem że im więcej pozwolisz na swobodę tym gorzej bo łatwiej jest coś rozjebać i trudniej zdebugować.
Go to the top of the page
+Quote Post
SmokAnalog
post 7.12.2017, 12:22:13
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


No owszem, ale czy w tym przypadku ta złota myśl też znajduje uzasadnienie? Kod rabatowy to część planu biznesowego i nikogo nie obchodzi, że coś byłoby niebezpieczne w implementacji. Nie nazwałbym tego "swobodą".
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 01:04