شاركت هذه المقالة معك الرمز المحدد لـ Java لتنفيذ وظيفة عربة التسوق للرجوع إليها. المحتوى المحدد كما يلي
1 يجب تنفيذها
1. إدراك وظيفة عربة التسوق في مول تاوتاو
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. هناك أربعة أنواع من عربات التسوق
أ) إضافة المنتجات
ب) تعديل كمية البضائع
ج) حذف العناصر في عربة التسوق
د) عرض قائمة منتجات عربة التسوق
2.3 إضافة منتجات عربة التسوق
انقر فوق الزر "إضافة إلى CART" في صفحة تفاصيل المنتج لإرسال طلب ، ويتم تمرير معرف المنتج إلى وحدة التحكم ، ويتلقى وحدة التحكم المعرف ، وتستدعي وحدة التحكم الخدمة للاستعلام عن معلومات المنتج الأساسية بناءً على معرف المنتج. اكتب المنتج في ملف تعريف الارتباط. قبل إضافة ملف تعريف الارتباط ، قم بإخراج البضائع الموجودة في عربة التسوق من ملف تعريف الارتباط لتحديد ما إذا كان هناك مثل هذا المنتج في قائمة منتجات عربة التسوق الحالية. إذا كانت هناك كمية واحدة ، إذا لم تتم إضافة أي منتج ، فإن الكمية هي 1. أظهر للمستخدمين قائمة عربة التسوق.
2.3.1 الخدمة
الوظيفة: تلقي معرف المنتج ، والكمية (الافتراضي هو 1) ، والاستعلام عن معلومات المنتج بناءً على معرف المنتج. استدعاء خدمة Taotao-Rest. أضف المنتج إلى عربة التسوق ، أولاً ، قم بإخراج قائمة منتجات عربة التسوق ، وحدد ما إذا كان هناك مثل هذا المنتج في القائمة ، وإذا كان هناك واحد ، فما عليك سوى زيادة الكمية. إذا لم تتم إضافة هذا العنصر إلى قائمة العناصر. العودة لإضافة بنجاح taotaoresult.
وظيفة:
1. استلم معرف المنتج الذي يتم تسليمه بواسطة وحدة التحكم والاستعلام عن معلومات المنتج بناءً على معرف المنتج.
2. قم بإخراج معلومات عربة التسوق من ملف تعريف الارتباط وتحويلها إلى قائمة Pojo Product.
3. إضافة معلومات المنتج إلى قائمة المنتج.
المعلمة:
1. معرف المنتج
2. طلب
3. الاستجابة
قيمة الإرجاع:
taotaoresult
Service Public Class CartServiceImpl تنفذ CartService {// service url urlvalue ("$ {rest_base_url}") سلسلة خاصة rest_base_url ؛ . // المفتاح المقابل لمنتجات عربة التسوق في ملف تعريف الارتباط ($ {cart_items_list_key} ") سلسلة خاصة cart_items_list_key ؛ ] /** * إضافة منتج عربة * <p> العنوان: AddItem </p> * <p> الوصف: </p> * param itemid * param request * param respons javax.servlet.http.httpservletresponse) */Override public taotaores AddItem (long itemId ، request httpservletrequest ، httpservletresponse repress) {// Query information Query in the product ite item = getItemByid (itemid) ؛ إذا (العنصر == null) إرجاع taotaoresult.build (400 ، "لم يتم العثور على معلومات منتج") ؛ // احصل على قائمة منتجات عربة التسوق في قائمة ملفات تعريف الارتباط <Item> cartitems = getItEmListFromCookie (request) ؛ // احكم على ما إذا كان المنتج موجودًا في عربة التسوق المنطقية = خطأ ؛ لـ (البند I: Cartitems) {if ( itemExists = صحيح ؛ استراحة؛ }} // إذا لم يكن المنتج موجودًا في عربة التسوق ، فأضف عنصرًا إلى قائمة منتجات عربة التسوق إذا (! itemexists) {// قم بتعيين الكمية على item.setnum 1 (1) ؛ // أضف المنتج إلى عربة التسوق cartitems.add (العنصر) ؛ } // اكتب معلومات عربة التسوق في ملفات تعريف الارتباط cookieutils.setCookie (طلب ، استجابة ، cart_items_list_key ، jsonutils.objecttojson (cartitems) ، cart_items_expire_time ، true) ؛ إرجاع taotaoresult.ok (Cartitems) ؛ } العنصر الخاص getItemById (itemId طويل) {// تحقق من معلومات المنتج استنادًا إلى سلسلة معرف المنتج النتائج = httpclientutil.doget (rest_base_url + under_item_url + itemId) ؛ // تحويل إلى taotaoresult taotaoresult نتيجة = taotaoresult.formattopojo (النتائج ، item.class) ؛ // احصل على عنصر معلومات المنتج = NULL ؛ if (result.getStatus () == 200) {item = (item) result.getData () ؛ } عنصر الإرجاع ؛ } القائمة الخاصة <Item> getItEmListFromCoOkie (طلب httpservletrequest) {// احصل على قائمة عنصر عربة التسوق في سلسلة ملفات تعريف الارتباط cartitemsstr = cookieutils.getCoOkievalue (request ، cart_items_key ، true) ؛ // إذا لم يكن فارغًا ، فسيتم تحويله إلى قائمة كائن Java <item> Cartitems = NULL ؛ if (! stringUtils.isblank (Cartitemsstr)) {cartitems = jsonutils.jsontolist (Cartitemsstr ، item.Class) ؛ } آخر {cartitems = new ArrayList <> () ؛ } عودة Cartitems ؛ }}2.3.2 منتج Pojo
يتطلب Product Pojo استخدام العنصر في Taotao-Portal. هذا Pojo سوف يرمي الاستثناءات عند هجر. التعديلات التالية مطلوبة:
2.3.3 وحدة التحكم
controller @requestmapping ("/cart") الفئة العامة cartController {Autowired Private CartService ؛ requestmapping ("/add/{itemId}") السلسلة العامة addItem (pathVariable Long Itemid ، httpservletrequest طلب ، httpservletresponse ، نموذج النموذج) {// إضافة معلومات المنتج taotaoreult // رسالة خطأ if (result.getStatus ()! = 200) {model.addattribute ("message" ، result.getmsg ()) ؛ إرجاع "خطأ/استثناء" ؛ } // تمرير العناصر الموجودة في عربة التسوق إلى نموذج الصفحة. إرجاع "عربة" ؛ }} انقر فوق المستخدمين "عربة التسوق الخاصة بي" لعرض معلومات عربة التسوق
2.4 عرض منتجات عربة التسوق
2.4.1 الخدمة
/** * احصل على قائمة عربة التسوق * <p> * العنوان: getCartItemSlist * </p> * <p> * الوصف: * </p> * * * retur قائمة ملفات تعريف الارتباط <Item> itemslist = getItEmListFromCookie (request) ؛ Return heatlist ؛ }
2.4.2 وحدة التحكم
requestmapping ("/cart") سلسلة العرض العامة (طلب httpservletrequest ، وضع النموذج) {// تحقق من قائمة معلومات عربة التسوق <item> قائمة = cartservice.getCartItemSlist (طلب) ؛ mode.addattribute ("cartlist" ، list) ؛ إرجاع "عربة" ؛ }2.5 تعديل كمية المنتجات
عند النقر على علامات "+" و "-" لعنصر عربة التسوق ، قم بزيادة أو تقليل عدد العناصر. عند تقليل كمية البضائع ، إذا كانت الكمية "1" ، فلن تستمر في الانخفاض.
2.5.1 الخدمة
/** * تعديل كمية المنتج المحدد * <p> العنوان: changeItemnum </p> * <p> الوصف: </p> * param itemId * param num * @param request * param response * regurn * @seee com.taotao.portal.service.cartservice#changeItemnum (long ، int ، int ، javax.servlet.http.httpservletrequest ، javax.servlet.http.httpservletresponse) *//override public taotaorestul getItEmListFromCookie (request) ؛ // ابحث عن المنتج المراد تعديله من قائمة المنتج لـ (العنصر العنصر: قائمة) {if (item.getID () == itemId) {// الانتهاء من المنتج وتعديل item.setnum (num) ؛ استراحة؛ }} // اكتب معلومات المنتج في ملفات تعريف الارتباط cookieutils.setCookie (طلب ، استجابة ، cart_items_list_key ، jsonutils.objecttojson (list) ، cart_items_expire_time ، true) ؛ إرجاع taotaoresult.ok () ؛ } 2.5.2 وحدة التحكم
requestmapping ("/update/num/{itemId}/{num}") responsebody public taotaoresult updatenumbyid (pathvariable long itemid ، @pathvariable integer num ، httpletrequest request ، response) {taotaorultuld strup نتيجة العودة }2.6 حذف منتجات عربة التسوق
2.6.1 الخدمة
/** * حذف العناصر في عربة التسوق * <p> * العنوان: deleteItem * </p> * <p> * الوصف: * </p> * * param itemid * param request * param response * return * seee com.taotao.portal.service.cartservice#deleteitem javax.servlet.http.httpservletrequest ، * javax.servlet.http.httpservletresponse) */ @ @أوفر القائمة <item> deleteitem (itemid long ، httpservletrequest request ، httpservledsponse) // ابحث عن العنصر في عربة التسوق وحذفه لـ (العنصر العنصر: itemslist) {if (item.getID (). longValue () == itemId.longvalue ()) {itemlist.remove (item) ؛ استراحة؛ }} // تحديث بيانات عربة التسوق في ملفات تعريف الارتباط cookieutils.setCookie (طلب ، استجابة ، CART_ITEMS_LIST_KEY ، JSONUTILS.Objecttojson (headslist) ، cart_items_expire_time ، true) ؛ Return heatlist ؛ } 2.6.2 وحدة التحكم
requestMapping ("/delete/{itemId}") السلسلة العامة deleteItemById (pathVariable Long Itemid ، httpservletrequest request ، httpservletresponse ، model model) {list <item> list = cartservice.deleteItem (itemid ، request ، response) ؛ Model.AdDattribute ("Cartlist" ، List) ؛ إرجاع "عربة" ؛ }مشاكل مع عربة التسوق
1. لا يمكن مزامنة منتجات عربة التسوق عند استبدال المعدات
أ) لا يمكن حفظ عناصر عربة التسوق في قاعدة البيانات
ب) يتعين على المستخدمين تسجيل الدخول لمزامنة المعلومات
ج) يمكنك حفظ معلومات عربة التسوق إلى redis ، والمفتاح هو المستخدم ، والقيمة هي قائمة عربة التسوق
د) قضايا تسوق عربة التسوق.
2. بعد تقديم الطلب ، يجب مسح منتج عربة التسوق.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.