บทความนี้ได้แชร์รหัสเฉพาะสำหรับ Java เพื่อใช้ฟังก์ชั่นตะกร้าสินค้าสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
1 ต้องดำเนินการ
1. ตระหนักถึงฟังก์ชั่นตะกร้าสินค้าของ Taotao Mall
2 ฟังก์ชั่นตะกร้าสินค้า
2.1 คำอธิบายฟังก์ชั่น
1. เมื่อเพิ่มผลิตภัณฑ์ลงในตะกร้าสินค้าไม่จำเป็นต้องเข้าสู่ระบบ JD.com ไม่จำเป็นต้องเข้าสู่ระบบ Taobao จำเป็นต้องเข้าสู่ระบบแต่ละคนมีผลประโยชน์ของตัวเอง
2. คำนวณราคารวมของสินค้าในตะกร้าสินค้า จำเป็นต้องมีการคำนวณใหม่เมื่อปริมาณสินค้าเปลี่ยนแปลง
3. ผู้ใช้สามารถลบรายการในตะกร้าสินค้า
4. หลังจากผู้ใช้สั่งซื้อให้ลบฟังก์ชั่นของตะกร้าสินค้า
สามารถใช้ตะกร้าสินค้าได้เมื่อผู้ใช้ไม่ได้เข้าสู่ระบบข้อมูลผลิตภัณฑ์ของตะกร้าสินค้าจะต้องเขียนลงในคุกกี้ การดำเนินการทั้งหมดในตะกร้าสินค้าเป็นคุกกี้ปฏิบัติการ ลดความดันในฐานข้อมูลได้อย่างมีประสิทธิภาพ
ข้อเสีย: หลังจากเปลี่ยนคอมพิวเตอร์สินค้าในตะกร้าสินค้าไม่สามารถซิงโครไนซ์ได้
โครงการที่ดำเนินการ: ใช้ฟังก์ชั่นตะกร้าสินค้าใน Taotao-Protal คุณจะต้องโทรติดต่อบริการข้อมูลผลิตภัณฑ์เท่านั้นและคุณไม่จำเป็นต้องโต้ตอบกับระบบอื่น ๆ
2.2 การวิเคราะห์การทำงาน
1. คุณสามารถใช้ตะกร้าสินค้าหากผู้ใช้ไม่ได้เข้าสู่ระบบดังนั้นคุณต้องใส่ข้อมูลตะกร้าสินค้าลงในคุกกี้
2. คุณสามารถจัดเก็บข้อมูลผลิตภัณฑ์ใน Pojo จากนั้นจัดเรียงไว้ใน JSON และเก็บไว้ในคุกกี้
3. ในการรับข้อมูลผลิตภัณฑ์คุณสามารถดึงข้อมูล JSON จากคุกกี้และแปลงเป็นวัตถุ Java
4. ฟังก์ชั่นนี้ต้องการการดำเนินการของคุกกี้เท่านั้นและไม่ต้องการการสนับสนุนของฐานข้อมูลเท่านั้นดังนั้นจึงต้องใช้เฉพาะใน Taotao-Portal
5. มีตะกร้าสินค้าสี่ประเภท
a) เพิ่มผลิตภัณฑ์
b) ปรับเปลี่ยนปริมาณของสินค้า
c) ลบรายการในตะกร้าสินค้า
d) แสดงรายการผลิตภัณฑ์ตะกร้าสินค้า
2.3 เพิ่มผลิตภัณฑ์ตะกร้าสินค้า
คลิกปุ่ม "เพิ่มลงในรถเข็น" ในหน้ารายละเอียดผลิตภัณฑ์เพื่อส่งคำขอรหัสผลิตภัณฑ์จะถูกส่งผ่านไปยังคอนโทรลเลอร์คอนโทรลเลอร์จะได้รับ ID และคอนโทรลเลอร์เรียกใช้บริการเพื่อสอบถามข้อมูลผลิตภัณฑ์พื้นฐานตามรหัสผลิตภัณฑ์ เขียนผลิตภัณฑ์ลงในคุกกี้ ก่อนที่จะเพิ่มคุกกี้ให้นำสินค้าในตะกร้าสินค้าจากคุกกี้เพื่อตรวจสอบว่ามีผลิตภัณฑ์ดังกล่าวในรายการผลิตภัณฑ์ตะกร้าสินค้าปัจจุบันหรือไม่ หากมีปริมาณหนึ่งหากไม่มีการเพิ่มผลิตภัณฑ์ปริมาณคือ 1 แสดงรายการตะกร้าสินค้าให้ผู้ใช้
2.3.1 บริการ
ฟังก์ชั่น: รับรหัสผลิตภัณฑ์ปริมาณ (ค่าเริ่มต้นคือ 1) และข้อมูลการสอบถามข้อมูลผลิตภัณฑ์ตามรหัสผลิตภัณฑ์ โทรหาบริการของ Taotao-Rest เพิ่มผลิตภัณฑ์ลงในตะกร้าสินค้าก่อนอื่นนำรายการผลิตภัณฑ์ตะกร้าสินค้าออกมาพิจารณาว่ามีผลิตภัณฑ์ดังกล่าวในรายการหรือไม่และหากมีเพียงหนึ่งเพียงเพิ่มปริมาณ หากรายการนี้ไม่ได้เพิ่มลงในรายการรายการ กลับไปเพิ่ม Taotaoresult สำเร็จ
การทำงาน:
1. รับรหัสผลิตภัณฑ์ที่จัดส่งโดยคอนโทรลเลอร์และสอบถามข้อมูลผลิตภัณฑ์ตามรหัสผลิตภัณฑ์
2. นำข้อมูลตะกร้าสินค้าออกจากคุกกี้และแปลงเป็นรายการผลิตภัณฑ์ POJO
3. เพิ่มข้อมูลผลิตภัณฑ์ในรายการผลิตภัณฑ์
พารามิเตอร์:
1. รหัสผลิตภัณฑ์
2. คำขอ
3. การตอบสนอง
ค่าส่งคืน:
Taotaoresult
@Service คลาสสาธารณะ cartserviceimpl ใช้ cartservice {// service url @Value ("$ {rest_base_url}") สตริงส่วนตัว REST_BASE_URL; // URL บริการผลิตภัณฑ์ @Value ("$ {items_item_url}") สตริงส่วนตัว items_item_url; // คีย์ที่สอดคล้องกับผลิตภัณฑ์ตะกร้าสินค้าในคุกกี้ @Value ("$ {cart_items_list_key}") สตริงส่วนตัว CART_ITEMS_LIST_KEY; // ช้อปปิ้งตะกร้าคุกกี้อายุการใช้งาน @Value ("$ {cart_items_expire_time}") จำนวนเต็มส่วนตัว cart_items_expire_time; /** * เพิ่มผลิตภัณฑ์รถเข็น * <p> ชื่อเรื่อง: addItem </p> * <p> คำอธิบาย: </p> * @param itemid * @param Request * @param Response * @return * @See Com.taotao.portal.service.cartservice#addItem javax.servlet.http.httpservletResponse) */@Override สาธารณะ taotaoresult additem (itemId ยาว, httpservletrequest คำขอ, httpservletResponse การตอบสนอง) {// ข้อมูลผลิตภัณฑ์แบบสอบถามตามรายการรายการผลิตภัณฑ์ if (item == null) return taotaoresult.build (400, "ไม่พบข้อมูลผลิตภัณฑ์"); // รับรายการผลิตภัณฑ์ตะกร้าสินค้าในรายการคุกกี้ <itect> cartItems = getItemListFromCookie (คำขอ); // ตัดสินว่าผลิตภัณฑ์นั้นมีอยู่ในตะกร้าสินค้าบูลีน itemexists = false; สำหรับ (รายการ i: cartItems) {ถ้า (i.getId (). longValue () == itemId.longValue ()) {// มีรายการนี้ในตะกร้าสินค้า i.setNum (i.getNum () + 1); itemExists = true; หยุดพัก; }} // หากผลิตภัณฑ์ไม่มีอยู่ในตะกร้าสินค้าให้เพิ่มรายการลงในรายการผลิตภัณฑ์ตะกร้าสินค้าถ้า (! itemexists) {// ตั้งค่าเป็น 1 item.setNum (1); // เพิ่มผลิตภัณฑ์ลงในตะกร้าสินค้า cartitems.add (รายการ); } // เขียนข้อมูลตะกร้าสินค้าลงในคุกกี้ Cookieutils.SetCookie (คำขอ, การตอบสนอง, CART_ITEMS_LIST_KEY, JSONUTILS.ObjecttoJSON (cartItems), CART_ITEMS_EXPIRE_TIME, TRUE); กลับ taotaoresult.ok (cartitems); } รายการส่วนตัว getItemById (Long itemId) {// ตรวจสอบข้อมูลผลิตภัณฑ์ตาม id ผลิตภัณฑ์สตริงผลลัพธ์ tr = httpclientutil.doget (rest_base_url + items_item_url + itemid); // แปลงเป็น taotaoresult taotaoresult result = taotaoresult.formattopojo (resultstr, item.class); // รับรายการข้อมูลผลิตภัณฑ์รายการ = null; if (result.getStatus () == 200) {item = (item) result.getData (); } return item; } รายการส่วนตัว <itect> getItemListFromCookie (คำขอ httpservletRequest) {// รับรายการสินค้าตะกร้าสินค้าในสตริงคุกกี้ cartItemsstr = cookieutils.getCookieViveUe (คำขอ, cart_items_list_key, จริง); // ถ้ามันไม่ว่างเปล่ามันจะถูกแปลงเป็นรายการวัตถุ Java <itect> cartItems = null; if (! stringutils.isblank (cartItemsstr)) {cartItems = jsonutils.jsonTolist (cartItemsstr, item.class); } else {cartItems = new ArrayList <> (); } ส่งคืน cartItems; -2.3.2 ผลิตภัณฑ์ pojo
ผลิตภัณฑ์ POJO ต้องใช้รายการใน Taotao-Portal pojo นี้จะโยนข้อยกเว้นเมื่อ deserialized จำเป็นต้องมีการแก้ไขต่อไปนี้:
2.3.3 คอนโทรลเลอร์
@Controller @RequestMapping ("/cart") คลาสสาธารณะ cartcontroller {@autowired cartservice cartservice; @RequestMapping ("/add/{itemId}") สตริงสาธารณะ addItem (@PathVariable Long ItemId, httpservletRequest คำขอ, httpservletResponse, โมเดลโมเดล) {// เพิ่มข้อมูลผลิตภัณฑ์ taotaoresult result = cartservice.additem (รายการ // ข้อความแสดงข้อผิดพลาดถ้า (result.getStatus ()! = 200) {model.adDattribute ("ข้อความ", result.getMsg ()); ส่งคืน "ข้อผิดพลาด/ข้อยกเว้น"; } // ส่งรายการในตะกร้าสินค้าไปยัง Page Model.AdDattribute ("Cartlist", result.getData ()); กลับ "รถเข็น"; - ผู้ใช้คลิก "ตะกร้าสินค้าของฉัน" เพื่อแสดงข้อมูลตะกร้าสินค้า
2.4 แสดงผลิตภัณฑ์ตะกร้าสินค้า
2.4.1 บริการ
/** * รับรายการตะกร้าสินค้า * <p> * ชื่อเรื่อง: getCartItemSlist * </p> * <p> * คำอธิบาย: * </p> * * @return * @see com.taotao.portal.service.cartservice#getCartItemsList () รายการผลิตภัณฑ์จากรายการคุกกี้ <itect> itemsList = getItemListFromCookie (คำขอ); ส่งคืนรายการรายการ; -
2.4.2 คอนโทรลเลอร์
@RequestMapping ("/cart") Public String Showcart (คำขอ httpservletRequest, โหมดโมเดล) {// ตรวจสอบรายการข้อมูลตะกร้าสินค้า <รายการ> list = cartservice.getCartItemsList (คำขอ); mode.addattribute ("cartlist", รายการ); กลับ "รถเข็น"; -2.5 ปรับเปลี่ยนปริมาณของผลิตภัณฑ์
เมื่อคลิกที่สัญญาณ“+” และ“-” ของรายการตะกร้าสินค้าเพิ่มหรือลดจำนวนรายการ เมื่อลดปริมาณสินค้าหากปริมาณเป็น "1" มันจะไม่ลดลงต่อไป
2.5.1 บริการ
/** * แก้ไขปริมาณของผลิตภัณฑ์ที่ระบุ * <p> ชื่อเรื่อง: ChangeItemnum </p> * <p> คำอธิบาย: </p> * @param itemid * @param num * @param คำขอ * @param ตอบกลับ * @return * @see com.taotao.portal.service.cartservice#เปลี่ยน javax.servlet.http.httpservletrequest, javax.servlet.http.httpservletResponse) */@Override สาธารณะ taotaoresult ChangeItemnum (Long ItemId, Int Num, HTTPSERVLETREQUEST GetItemListFromCookie (คำขอ); // ค้นหาผลิตภัณฑ์ที่จะแก้ไขจากรายการผลิตภัณฑ์สำหรับ (รายการรายการ: รายการ) {ถ้า (item.getId () == itemId) {// เสร็จสิ้นผลิตภัณฑ์และแก้ไขปริมาณ item.setNum (NUM); หยุดพัก; }} // เขียนข้อมูลผลิตภัณฑ์ลงในคุกกี้ cookieutils.setcookie (คำขอ, การตอบสนอง, cart_items_list_key, jsonutils.objecttojson (รายการ), cart_items_expire_time, true); กลับ taotaoresult.ok (); - 2.5.2 คอนโทรลเลอร์
@RequestMapping ("/update/num/{itemid}/{num}") @ResponseBody สาธารณะ taotaoresult updatenumbyId (@PathVariable Long itemId, @PathVariable Integer Num, httpServletRequest, httpservletresponse ผลการกลับมา; -2.6 ลบผลิตภัณฑ์ตะกร้าสินค้า
2.6.1 บริการ
/** * ลบรายการในตะกร้าสินค้า * <p> * ชื่อเรื่อง: deleteItem * </p> * <p> * คำอธิบาย: * </p> * @param itemid * @param Request * @param Response * @return * @See Com.taoTao.portal.service.cartservice#deletetem javax.servlet.http.httpservletrequest, * javax.servlet.http.httpservletResponse) */ @Override รายการสาธารณะ <itect> deleteItem // ค้นหารายการในตะกร้าสินค้าและลบสำหรับ (รายการรายการ: รายการรายการ) {ถ้า (item.getId (). longValue () == itemId.longValue ()) {iteslist.remove (รายการ); หยุดพัก; }} // อัปเดตข้อมูลตะกร้าสินค้าในคุกกี้ Cookieutils.setCookie (คำขอ, การตอบสนอง, CART_ITEMS_LIST_KEY, JSONUTILS.ObjectTojson (รายการรายการ), CART_ITEMS_EXPIRE_TIME, TRUE); ส่งคืนรายการรายการ; - 2.6.2 คอนโทรลเลอร์
@RequestMapping ("/ลบ/{itemId}") สตริงสาธารณะ deleteItembyId (@PathVariable Long itemId, httpservletRequest คำขอ, httpservletResponse, โมเดลโมเดล) model.addattribute ("cartlist", รายการ); กลับ "รถเข็น"; -ปัญหาเกี่ยวกับตะกร้าสินค้า
1. ผลิตภัณฑ์ตะกร้าสินค้าไม่สามารถซิงโครไนซ์ได้เมื่อเปลี่ยนอุปกรณ์
A) รายการตะกร้าสินค้าไม่สามารถบันทึกลงในฐานข้อมูล
b) ผู้ใช้จะต้องเข้าสู่ระบบเพื่อซิงโครไนซ์ข้อมูล
c) คุณสามารถบันทึกข้อมูลตะกร้าสินค้าไปยัง Redis คีย์คือผู้ใช้และค่าคือรายการตะกร้าสินค้าช้อปปิ้ง
D) ปัญหาสินค้าตะกร้าสินค้า
2. หลังจากส่งคำสั่งซื้อผลิตภัณฑ์ตะกร้าสินค้าจะต้องมีการล้าง
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น