Artikel ini telah berbagi dengan Anda kode spesifik untuk Java untuk mengimplementasikan fungsi keranjang belanja untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
1 perlu diimplementasikan
1. Sadarilah fungsi keranjang belanja Taotao Mall
2 Fungsi Keranjang Belanja
2.1 Deskripsi Fungsi
1. Saat menambahkan produk ke keranjang belanja, tidak perlu memerlukan login. JD.com tidak perlu masuk, Taobao perlu masuk. Masing -masing memiliki manfaatnya sendiri.
2. Hitung total harga barang di keranjang belanja. Diperlukan perhitungan ulang saat jumlah barang berubah.
3. Pengguna dapat menghapus item di keranjang belanja.
4. Setelah pengguna melakukan pemesanan, hapus fungsi keranjang belanja.
Keranjang belanja juga dapat digunakan ketika pengguna tidak masuk. Informasi produk dari keranjang belanja perlu ditulis ke dalam cookie. Semua operasi di keranjang belanja adalah cookie operasional. Secara efektif mengurangi tekanan pada database.
Kerugian: Setelah mengganti komputer, barang -barang di keranjang belanja tidak dapat disinkronkan.
Proyek yang diimplementasikan: Menerapkan fungsi keranjang belanja di Taotao-Protal. Anda hanya perlu menghubungi Layanan Informasi Produk, dan Anda tidak perlu berinteraksi dengan sistem lain.
2.2 Analisis Fungsional
1. Anda juga dapat menggunakan keranjang belanja jika pengguna tidak masuk, jadi Anda perlu memasukkan informasi keranjang belanja ke dalam cookie.
2. Anda dapat menyimpan informasi produk di Pojo, dan kemudian membuat serial ke dalam JSON dan menyimpannya di cookie.
3. Untuk mendapatkan informasi produk, Anda dapat mengekstrak data JSON dari cookie dan mengubahnya menjadi objek Java.
4. Fungsi ini hanya membutuhkan pengoperasian cookie dan tidak memerlukan dukungan dari database, sehingga hanya perlu diimplementasikan di Taotao-Portal.
5. Ada empat jenis keranjang belanja
a) Tambahkan produk
b) Ubah jumlah barang
c) Hapus barang di keranjang belanja
d) Daftar produk produk keranjang belanja
2.3 Tambahkan produk keranjang belanja
Klik tombol "Tambahkan ke Keranjang" pada halaman Detail Produk untuk mengirimkan permintaan, ID produk diteruskan ke pengontrol, pengontrol menerima ID, dan pengontrol memanggil layanan untuk meminta informasi produk dasar berdasarkan ID produk. Tulis produk ke dalam cookie. Sebelum menambahkan cookie, ambil barang -barang di keranjang belanja dari cookie untuk menentukan apakah ada produk seperti itu dalam daftar produk keranjang belanja saat ini. Jika ada jumlah satu, jika tidak ada produk yang ditambahkan, jumlahnya 1. Tampilkan kepada pengguna daftar keranjang belanja.
2.3.1 Layanan
Fungsi: Menerima ID Produk, Kuantitas (default adalah 1), dan informasi produk kueri berdasarkan ID Produk. Menelepon Layanan Taotao-Rest. Tambahkan produk ke keranjang belanja, pertama -tama ambil daftar produk keranjang belanja, tentukan apakah ada produk seperti itu dalam daftar, dan jika ada satu, cukup tingkatkan jumlahnya. Jika item ini tidak ditambahkan ke daftar item. Kembali ke menambahkan Taotaoresult yang berhasil.
Fungsi:
1. Menerima ID Produk yang dikirimkan oleh pengontrol dan meminta informasi produk berdasarkan ID Produk.
2. Keluarkan informasi keranjang belanja dari cookie dan ubah menjadi daftar Pojo produk.
3. Tambahkan informasi produk ke daftar produk.
parameter:
1. ID Produk
2. Permintaan
3. Respons
Nilai pengembalian:
Taotaoresult
@Service Public Class CartServiceImpl mengimplementasikan cartService {// layanan url @value ("$ {rest_base_url}") string pribadi rest_base_url; // URL Layanan Produk @Value ("$ {items_item_url}") Private String items_item_Url; // kunci yang sesuai dengan produk keranjang belanja di cookie @value ("$ {cart_items_list_key}") Private String cart_items_list_key; // cookie cookie keranjang belanja @value ("$ {cart_items_expire_time}") integer pribadi cart_items_expire_time; /** * Tambahkan Produk Keranjang * <p> Judul: Additem </p> * <p> Deskripsi: </p> * @param itemId * @param Permintaan * @param Response * @return * @see com.taotao.portal.service.cartservice#additem (java.lang.long, javax.service# javax.servlet.http.httpservletResponse) */@Override PUBLIK TAOTAORESULT ADDITEM (Long ItemID, HTTPServletRequest, HTTPServletResponse Response) {// Informasi Produk Query berdasarkan item ID Produk = getitembyid (itemid); if (item == null) return taotaoresult.build (400, "tidak ada informasi produk yang ditemukan"); // Dapatkan daftar produk keranjang belanja di daftar cookie <TEMET> cartitems = getItemListFromCookie (permintaan); // menilai apakah produk tersebut ada di keranjang belanja boolean itemexists = false; untuk (item i: cartitems) {if (i.getId (). longValue () == itemId.longValue ()) {// Ada item ini di keranjang belanja i.setnum (i.getnum () + 1); itemexists = true; merusak; }} // Jika produk tidak ada di keranjang belanja, tambahkan item ke daftar produk keranjang belanja jika (! Itemexists) {// Atur kuantitas ke 1 item.setnum (1); // tambahkan produk ke cartitems cartitems.add (item); } // Tulis informasi keranjang belanja ke cookie cookieutils.setcookie (permintaan, respons, cart_items_list_key, jsonutils.objecttoJson (cartitems), cart_items_expire_time, true); return taotaoresult.ok (cartitems); } item pribadi getItembyId (itemid long) {// periksa informasi produk berdasarkan produk ID produk resulttr = httpclientutil.doget (rest_base_url + items_item_url + itemId); // Konversi ke Taotaoresult Taotaoresult Hasil = taotaoresult.FormattopoJo (hasil, item.class); // Dapatkan Item Informasi Produk Item = NULL; if (result.getStatus () == 200) {item = (item) result.getData (); } return item; } Daftar Privat <TIMET> getItemListFromCookie (permintaan httpservletrequest) {// Dapatkan daftar item keranjang belanja di cookie string cartitemsstr = cookieutils.getcookievalue (permintaan, cart_items_list_key, true); // Jika tidak kosong, itu akan dikonversi ke daftar objek Java <TEMET> cartitems = null; if (! stringutils.isblank (cartitemsstr)) {cartitems = jsonutils.jsontolist (cartitemsstr, item.class); } else {cartitems = new ArrayList <> (); } return cartitem; }}2.3.2 PRODUK POJO
Produk Pojo membutuhkan penggunaan item di Taotao-Portal. Pojo ini akan memberikan pengecualian saat deserialized. Modifikasi berikut diperlukan:
2.3.3 Pengontrol
@Controller @RequestMapping ("/cart") Kelas publik CartController {@Autowired Private CartService CartService; @RequestMapping ("/add/{itemId}") Public String AddItem (@PathVariable Long ItemId, HTTPServletRequest, Respons httpservletResponse, model model) {// TAMBANG INFORMASI PRODUK Taotaoresult = cartService.additem (itemId, RESPONS, Response); // pesan kesalahan if (result.getStatus ()! = 200) {model.addattribute ("pesan", result.getMsg ()); mengembalikan "kesalahan/pengecualian"; } // Lewati item di keranjang belanja ke halaman model.addattribute ("cartlist", result.getData ()); mengembalikan "gerobak"; }} Pengguna Klik "Keranjang Belanja Saya" untuk menampilkan informasi keranjang belanja
2.4 Produk Keranjang Belanja Tampilan
2.4.1 Layanan
/** * Dapatkan daftar keranjang belanja * <p> * Judul: getCartItemslist * </p> * <p> * Deskripsi: * </p> * @return * @see com.taotao.portal.service.cartservice#getCartitemslist () */@override Daftar publik <item> getCartitems {getstslist () */@override <item> getCartitems () {eVENTSLIST () */@override Daftar publik <item> getCartItems Daftar Cookie <TIMET> itemSlist = getIteMlistFromCookie (permintaan); mengembalikan daftar item; }2.4.2 Pengontrol
@RequestMapping ("/cart") Public String showCart (permintaan httpservletRequest, mode model) {// periksa daftar informasi keranjang belanja <TEMET> list = cartService.getCartitemslist (request); mode.addattribute ("cartlist", daftar); mengembalikan "gerobak"; }2.5 Ubah jumlah produk
Saat mengklik tanda-tanda "+" dan "-" dari item keranjang belanja, tingkatkan atau kurangi jumlah item. Saat mengurangi jumlah barang, jika jumlahnya "1", itu tidak akan terus berkurang.
2.5.1 Layanan
/** * Ubah kuantitas produk yang ditentukan * <p> Judul: ChangeItemnum </p> * <p> Deskripsi: </p> * @param itemId * @param num * @param permintaan * @param respons * @return * @see com.taotao.portal.service.cartservice#changeTnum (long, long, long, long, long, intertal javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ @Override public TaotaoResult changeItemNum(long itemId, int num, HttpServletRequest request, HttpServletResponse response) { //Get product list from cookies List<Item> list = getItemListFromCookie (permintaan); // Temukan produk yang akan dimodifikasi dari daftar produk untuk (item item: daftar) {if (item.getId () == itemId) {// selesaikan produk dan ubah kuantitas item.setnum (num); merusak; }} // Tulis informasi produk ke cookie cookieutils.setcookie (permintaan, respons, cart_items_list_key, jsonutils.objecttoJson (daftar), cart_items_expire_time, true); return taotaoresult.ok (); } 2.5.2 Pengontrol
@RequestMapping("/update/num/{itemId}/{num}") @ResponseBody public TaotaoResult updateNumById(@PathVariable Long itemId, @PathVariable Integer num, HttpServletRequest request, HttpServletResponse response) { TaotaoResult result = cartService.changeItemNum(itemId, num, permintaan, tanggapan); hasil pengembalian; }2.6 Hapus produk keranjang belanja
2.6.1 Layanan
/** * Hapus item di keranjang belanja * <p> * Judul: DeleteItem * </p> * <p> * Deskripsi: * </p> * * @param itemId * @param permintaan * @param respons * @return * @see com.taotao.portal.service.cartservice#deleteitem (java.long. javax.servlet.http.httpservletRequest, * javax.servlet.http.httpservletResponse) */ @Override Daftar publik <TIMET> DeleteItem (Long ItemId, httpservletRequest, httpservleteMS response; // Temukan item di keranjang belanja dan hapus untuk (item item: itemSlist) {if (item.getId (). LongValue () == itemId.longValue ()) {itemslist.remove (item); merusak; }} // Perbarui data keranjang belanja di cookie cookieutils.setcookie (permintaan, respons, cart_items_list_key, jsonutils.objecttoJson (itemslist), cart_items_expire_time, true); mengembalikan daftar item; } 2.6.2 Pengontrol
@RequestMapping ("/delete/{itemId}") Public String deleteItEMById (@PathVariable Long itemId, httpservletRequest, respons httpserVletResponse, model Model) {Daftar <item> Daftar = cartService.deleteem (itemId, request, response); model.addattribute ("cartlist", daftar); mengembalikan "gerobak"; }Masalah dengan Kereta Belanja
1. Produk keranjang belanja tidak dapat disinkronkan saat mengganti peralatan
a) Produk keranjang belanja tidak dapat disimpan ke database
b) Pengguna diharuskan masuk untuk menyinkronkan informasi
c) Anda dapat menyimpan informasi keranjang belanja untuk redis, kuncinya adalah pengguna, dan nilainya adalah daftar keranjang belanja
d) Masalah barang dagangan keranjang belanja.
2. Setelah mengirimkan pesanan, produk keranjang belanja perlu dibersihkan.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.