Dieser Artikel hat Ihnen den spezifischen Code für Java mitgeteilt, um die Einkaufswagenfunktion als Referenz zu implementieren. Der spezifische Inhalt ist wie folgt
1 muss implementiert werden
1. Erkennen Sie die Einkaufswagenfunktion der Taotao Mall
2 Einkaufswagenfunktion
2.1 Funktionsbeschreibung
1. Beim Hinzufügen des Produkts in den Einkaufswagen ist es nicht erforderlich, Anmeldung zu erfordern. JD.com muss sich nicht anmelden, Taobao muss sich anmelden. Jeder hat seine eigenen Vorteile.
2. Berechnen Sie den Gesamtpreis der Waren im Einkaufswagen. Eine Neuberechnung ist erforderlich, wenn sich die Menge der Waren ändert.
3. Benutzer können Artikel im Einkaufswagen löschen.
4. Nachdem der Benutzer eine Bestellung aufgegeben hat, löschen Sie die Funktion des Einkaufswagens.
Einkaufswagen kann auch verwendet werden, wenn der Benutzer nicht angemeldet ist. Die Produktinformationen des Einkaufswagens müssen in den Cookie geschrieben werden. Alle Operationen an Einkaufswagen sind operative Cookies. Reduzieren Sie den Druck auf die Datenbank effektiv.
Nachteile: Nach dem Wechsel eines Computers können die Waren im Einkaufswagen nicht synchronisiert werden.
Implementiertes Projekt: Implementierung der Einkaufswagenfunktion in Taotao-Protal. Sie müssen nur den Produktinformationsdienst anrufen und nicht mit anderen Systemen interagieren.
2.2 Funktionsanalyse
1. Sie können den Einkaufswagen auch verwenden, wenn der Benutzer nicht angemeldet ist.
2. Sie können Produktinformationen in Pojo speichern und sie dann in JSON serialisieren und in Cookies speichern.
3. Um Produktinformationen zu erhalten, können Sie die JSON -Daten aus dem Cookie extrahieren und in ein Java -Objekt umwandeln.
4. Diese Funktion erfordert nur den Betrieb von Cookies und erfordert nicht die Unterstützung der Datenbank, daher muss sie nur in Taotao-Portal implementiert werden.
5. Es gibt vier Arten von Einkaufswagen
a) Produkte hinzufügen
b) Ändern Sie die Warenmenge
c) Gegenstände im Einkaufswagen löschen
d) Produktliste der Einkaufswagen anzeigen
2.3 Einkaufswagenprodukte hinzufügen
Klicken Sie auf der Seite Produktdetails auf die Schaltfläche "zum Warenkorb hinzufügen", um eine Anfrage einzureichen. Die Produkt -ID wird an den Controller weitergegeben, der Controller erhält die ID, und der Controller ruft den Service auf, um die grundlegenden Produktinformationen basierend auf der Produkt -ID abzufragen. Schreiben Sie das Produkt in den Keks. Nehmen Sie vor dem Hinzufügen des Keks die Waren im Einkaufswagen vom Keks aus, um festzustellen, ob ein solches Produkt in der aktuellen Produktliste für Einkaufswagen vorhanden ist. Wenn es eine Menge von einem gibt, wenn kein Produkt hinzugefügt wird, beträgt die Menge 1. Zeigen Sie den Benutzern eine Warenkorb -Liste an.
2.3.1 Service
Funktion: Erhalten Sie eine Produkt -ID, Menge (Standard ist 1) und Abfragen von Produktinformationen basierend auf der Produkt -ID. Rufen Sie den Dienst von Taotao-REST an. Fügen Sie das Produkt in den Einkaufswagen hinzu, nehmen Sie zuerst die Produktliste für die Einkaufswagen heraus, stellen Sie fest, ob in der Liste ein solches Produkt vorhanden ist, und erhöhen Sie einfach die Menge. Wenn dieser Artikel nicht zur Elementliste hinzugefügt wird. Kehren Sie zurück, um erfolgreich Taotaoresult hinzuzufügen.
Funktion:
1. Erhalten Sie die vom Controller gelieferte Produkt -ID und fragen Sie die Produktinformationen basierend auf der Produkt -ID ab.
2. Nehmen Sie die Einkaufswageninformationen vom Cookie heraus und konvertieren Sie sie in eine Produktpojo -Liste.
3. Fügen Sie Produktinformationen zur Produktliste hinzu.
Parameter:
1. Produkt -ID
2. Anfrage
3. Antwort
Rückgabewert:
Taotaoresult
@Service Public Class CartServiceImpl implementiert CartService {// service url @Value ("$ {rest_base_url}") private String rest_base_url; // Product Service URL @Value ("$ {items_item_url}") private String items_item_url; // Key entspricht Einkaufswagenprodukten in Cookie @Value ("$ {cart_items_list_key}") private String cart_items_list_key; // Einkaufswagen Cookie lifetime @Value ("$ {cart_items_expire_time}") private Integer cart_items_expire_time; /** * CART -Produkt hinzufügen * <P> Titel: AddItem </p> * <p> Beschreibung: </p> * @param itemId * @param request * @param response * @return * @see com.taotao.portal.service.cartservice#additem (java.lang.long, javax.servlet.http.httplets. javax.servlet.http.httpServletResponse) */@Override public taotaoresult addItem (Long itemID, httpServletRequest -Anforderung, httpServletResponse -Antwort) {// Produktinformationen anhand der Produkt -ID itemby itembyid (itemId); if (item == null) return taotaoresult.build (400, "Es wurden keine Produktinformationen gefunden"); // Holen Sie sich die Produktliste für die Einkaufswagen in der Cookie -Liste <Item> cartitems = getItemListfromCookie (Anfrage); // beurteilen, ob das Produkt im Einkaufswagen boolean itemexists = false; für (Item I: CartItems) {if (i.getId (). longvalue () == itemId.longValue ()) {// befindet sich dieses Element im Einkaufswagen i.setnum (i.getNum () + 1); itemexists = true; brechen; }} // Wenn das Produkt im Einkaufswagen nicht vorhanden ist, fügen Sie der Produktliste der Einkaufswagen einen Artikel hinzu, wenn (! // das Produkt in die Einkaufscartkartiteln fügen.add (Artikel); } // Schreiben Sie die Einkaufswageninformationen in die Cookie cookieUtils.setcookie (Anfrage, Antwort, cart_items_list_key, jsonutils.objecttojson (Cartitems), Cart_items_expire_time, true); return taotaoresult.ok (cartitems); } privates Element getItembyId (Long itemID) {// Produktinformationen basierend auf der Produkt -ID -String -resultstr = httpclientutil.doget (rest_base_url + items_item_url + itemId); // in Taotaoresult Taotaoresult result = taotaoresult.formattopojo (resultStr, item.class) konvertieren; // Produktinformationen Artikel item item = null; if (result.getStatus () == 200) {item = (item) result.getData (); } Rückgabeartikel; } private Liste <Item> getItemListfromCookie (httpServletRequest -Anforderung) {// Die Liste der Einkaufswagen -Artikel in der Cookie -String -Cartitemsstr = cookieUtils.getCookievalue (Anfrage, Cart_items_List_key, True); // Wenn es nicht leer ist, wird es in eine Java -Objektliste umgewandelt <element> cartitems = null; if (! Stringutils.isblank (Cartitemsstr)) {Cartitems = jsonutils.jsontolist (Cartitemsstr, item.class); } else {cartitems = new ArrayList <> (); } return cartitems; }}2.3.2 Produktpojo
Das Produktpojo erfordert die Verwendung von Artikeln in Taotao-Portal. Dieses Pojo wird Ausnahmen werfen, wenn sie deserialisiert werden. Die folgenden Änderungen sind erforderlich:
2.3.3 Controller
@Controller @RequestMapping ("/cart") öffentliche Klasse CartController {@autowired Private CartService CartService; @RequestMapping ("/add/{itemId}") public String addItem (@PathVariable Long itemId, httpServletRequest -Anforderung, httpServletResponse -Antwort, Modellmodell) {// Produktinformationen addtaotaoresult -Ergebnis = cartService.additem (itemId, Anfrage, Anforderung, Antwort, Antwort); // Fehlermeldung if (result.getStatus ()! = 200) {model.addattribute ("message", result.getMsg ()); Rückgabe "Fehler/Ausnahme"; } // Die Artikel im Einkaufswagen an das Seitenmodell übergeben. zurück "Wagen"; }} Benutzer klicken auf "Mein Einkaufswagen", um Einkaufswageninformationen anzuzeigen
2.4 Einkaufswagenprodukte ausstellen
2.4.1 Service
/** * Holen Sie sich die Einkaufswagenliste * <P> * Titel: getCartItemSlist * </p> * <p> * Beschreibung: * </p> * * @return * @see com.taotao.portal.Service.cartService#GetCartItems () */@Override öffentliche Liste. Liste <Itelement> itemsList = getItemListfromCookie (Anfrage); Elementliste zurückgeben; }
2.4.2 Controller
@RequestMapping ("/cart") public String showcart (httpServletRequest -Anforderung, Modellmodus) {// Die Informationsliste des Einkaufswagens check <element> list = cartService.getCartItemSlist (Anfrage); modus.addattribute ("cartlist", list); zurück "Wagen"; }2.5 Ändern Sie die Produktmenge
Wenn Sie auf die Zeichen "+" und "-" des Einkaufswagenartikels klicken, erhöhen Sie die Anzahl der Artikel. Wenn die Menge an Waren reduziert wird, nimmt sie nicht weiter ab, wenn die Menge "1" ist.
2.5.1 Service
/** * Modify the quantity of the specified product* <p>Title: changeItemNum</p> * <p>Description: </p> * @param itemId * @param num * @param request * @param response * @return * @see com.taotao.portal.service.CartService#changeItemNum(long, int, javax.servlet.http.httpServletRequest, javax.servlet.http.httpServletResponse) */@Override public taotaoresult Changeitemnum (Long itemId, int num, HttpletRequest -Anfrage, HttpervletRespon -Reaktion) {// Produktliste aus der KOKE -LISTE> {// Product List aus der KOKE -LISTE AUSGEBOTE> {// Produktliste aus der KOKE -LISTE AUSGABE ALICE> {// {// {// {// {// {// {//{////////////// -Produktliste aus der Keks -Liste abrufen) aus der Kokusliste aus der Kokus -Liste aus. GetItemListfromCookie (Anfrage); // Suchen Sie das Produkt, das aus der Produktliste geändert werden soll. brechen; }} // Produktinformationen in Cookies cookieUtils.setcookie (Anfrage, Antwort, cart_items_list_key, jsonutils.objecttojson (Liste), cart_items_expire_time, true); return taotaoresult.ok (); } 2.5.2 Controller
@RequestMapping ("/update/num/{itemId}/{num}") @ResponseBody public taotaoresult updateNumById (@patheVariable Long itemId, @PathVariable Integer num, httpServletrequest -Anfrage, HttpServletRectre -Reaktion) {TaotaTaoresult -Ergebnis, {taotaoresult). Rückgabeergebnis; }2.6 Einkaufswagenprodukte löschen
2.6.1 Service
/** * Gegenstände im Einkaufswagen löschen * <p> * Titel: DeleteItem * </p> * <p> * Beschreibung: * </p> * * @param itemId * @param Anfrage * @param antwort * @return * @see com.taotao.portal.Service.cartService#DeleteEm (java.lang.Lang.Lang.Lang.Long, * javax.servlet.http.HttpServletRequest, * javax.servlet.http.HttpServletResponse) */ @Override public List<Item> deleteItem(Long itemId, HttpServletRequest request, HttpServletResponse response) { List<Item> itemsList = getCartItemsList(request); // den Artikel im Einkaufswagen finden und löschen Sie ihn für (Artikelelement: itemsList) {if (item.getId (). Longvalue () == itemId.longValue ()) {itemsList.remove (item); brechen; }} // Die Einkaufswagendaten im Cookie cookieUtils.setcookie (Anfrage, Antwort, cart_items_list_key, jsonutils.objecttojson (itemsList), cart_items_expire_time, true) aktualisieren; Elementliste zurückgeben; } 2.6.2 Controller
@RequestMapping ("/delete/{itemId}") public String deleteItembyId (@PathVariable Long itemID, httpServletRequest -Anforderung, httpServletResponse -Antwort, Modellmodell) {List <Poinct> List = CartService.DeletEItem (itemId, Anfrage, Antwort, Antwort, Antwort); model.addattribute ("cartlist", list); zurück "Wagen"; }Probleme mit dem Einkaufswagen
1. Die Einkaufswagenprodukte können beim Ersetzen von Geräten nicht synchronisiert werden
A) Immobilienwagen -Produkte können nicht in der Datenbank gespeichert werden
b) Benutzer müssen sich anmelden, um Informationen zu synchronisieren
c) Sie können die Einkaufswageninformationen auf Redis speichern, der Schlüssel ist der Benutzer und der Wert ist die Einkaufswagenliste
d) Ausgaben der Waren im Einkaufswagen.
2. Nach der Einreichung der Bestellung muss das Einkaufswagenprodukt gelöscht werden.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.