Gestione degli utenti ospiti nell'applicazione e-commerce

1

Al momento sto sviluppando un'applicazione e-commerce e sto cercando di capire come aggiungere una funzionalità di 'guest checkout'. I 3 modelli principali con cui sto lottando per aggiungere questa funzione sono Indirizzo, Utente e Ordine. Un indirizzo ha bisogno di un utente e un ordine richiede sia un indirizzo che un utente.

Per il checkout dei nostri ospiti non vogliamo forzare qualcuno a creare un account ma con lo schema corrente, questo non funzionerà.

Le uniche due opzioni a cui posso pensare sono:

  • Crea un account ospite nella tabella Utenti e ogni checkout degli ospiti creerà un nuovo ordine e indirizzo associato a questo.
  • Rendi facoltativo il vincolo FK di Indirizzo e Ordine sull'utente

Qualcuno ha avuto esperienza con questo o può pensare ad un'opzione migliore?

Grazie

    
posta Rnice4christ 12.04.2018 - 15:48
fonte

1 risposta

2

Entrambe le opzioni funzioneranno bene, con il seguente inconveniente:

  • L'account ospite richiede un comportamento diverso: l'applicazione deve garantire che l'utente ospite non sia in grado di vedere o modificare gli indirizzi precedenti, al fine di garantire la privacy degli altri ospiti.
  • Con entrambe le opzioni, si finirà per acumulare più varianti di alcuni indirizzi guest, gonfiando così inutilmente il database per un periodo di tempo più lungo.
  • Con entrambe le opzioni, la tua logica applicativa dovrà anche gestire il problema della cronologia: una volta che un ordine viene spedito, l'indirizzo di spedizione non dovrebbe più cambiare, perché potrebbe creare incongruenze (calcoli fiscali, costi di spedizione, gestione reclami se per esempio un utente registrato non riceve un ordine che è stato spedito un po 'di tempo fa, ma successivamente aggiorna l'indirizzo dell'account). Ciò richiederebbe una qualche logica di versioning per gli indirizzi.

Tuttavia, se guardi più da vicino il ciclo di vita degli oggetti persistenti, emerge un'altra alternativa:

  • in realtà, ci sono due diversi tipi di indirizzi:
    • gli attuali indirizzi preferiti che un utente registrato può gestire (inclusa l'eliminazione di quelli obsoleti)
    • gli indirizzi di spedizione utilizzati per un ordine e che devono essere mantenuti inalterati una volta che l'ordine è stato spedito
  • utilizza l'account e gli indirizzi (preferiti) solo per utenti registrati.
  • usa l'ordine con un vincolo FK facoltativo a un account utente registrato
  • aggiungi i campi nome e indirizzo di spedizione nell'ordine (nell'intestazione se hai ordini multi-articolo):
    • Per gli utenti non registrati, gestisci l'indirizzo direttamente nell'ordine,
    • Per gli utenti registrati, copia l'indirizzo selezionato nell'ordine.
    • Una volta che lo stato dell'ordine è "spedito", non è più possibile modificare i campi dell'indirizzo ordine
  • Se dopo alcuni anni vuoi pulire vecchi ordini (o se devi a causa del GDPR), li butti via e ti sbarazzerai automaticamente di tutti gli indirizzi di spedizione monouso incorporati. L'indirizzo di spedizione preferito continua a vivere per conto proprio: si tratta di indirizzi attivi collegati a conti attivi (in linea di principio).
risposta data 12.04.2018 - 22:15
fonte

Leggi altre domande sui tag