国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

電商購物網(wǎng)站 - 購物車結(jié)算

PingCAP / 2950人閱讀

摘要:通過查詢用戶所有商品并傳入模板,條件用戶,結(jié)算狀態(tài)。貼出部分代碼用戶加入購物車按鈕鏈接所對應(yīng)路徑的處理,如商品通過獲取商品號并檢測登陸用戶狀態(tài)。通過方法獲取購物車商品模型。附上本電商網(wǎng)站項(xiàng)目的源碼,供各位研究開發(fā)擴(kuò)展歡迎提

1、添加視圖和集合

添加商品鏈接

上節(jié)課程里我們已經(jīng)實(shí)現(xiàn)了商品的添加和展示,接下來我們開始進(jìn)行對商品的操作——加入購物車。

首先,商品頁的加入購物車按鈕、購物車查看按鈕添加鏈接,如下所示:

加入購物車

我們先定義購物車(cart)集合的Schema屬性,包含:uId(用戶ID)、cId(商品ID)、cName(商品名稱)、cPrice(商品價(jià)格)、cImgSrc(商品展示圖片路徑)、cQuantity(商品數(shù)量)、cStatus(商品結(jié)算狀態(tài),默認(rèn)為false),參考如下:

cart: {
    uId: {type: String},
    cId: {type: String},
    cName: {type: String},
    cPrice: {type: String},
    cImgSrc: {type: String},
    cQuantity: {type: Number},
    cStatus: {type: Boolean, default: false}
}

以上屬性定義我們還是統(tǒng)一放到models.js文件中以方便管理和操作。

接著views目錄下添加購物車(cart.html)視圖頁面,參考如下:

購物車頁面的展示實(shí)現(xiàn)可參考如下貼圖:


2、定義視圖路由

訪問視圖

接著在routes目錄添加cart.js文件(index.js文件中引用),來定義路由處理規(guī)則。

比如cart路徑的處理,如下:

1.檢測登陸用戶是否過期,已過期則跳轉(zhuǎn)login頁同時(shí)給出提示信息。

2.通過global.dbHelper.getModel方法獲取cart模型。

3.通過find查詢用戶所有商品并傳入模板,條件:用戶ID,結(jié)算狀態(tài)。

4.貼出部分代碼:

app.get("/cart", function (req, res) {
    ......
    Cart.find({"uId": 用戶ID, "cStatus": false}, function (error, docs) {
        res.render("cart", {carts: docs});
    });
});

加入購物車按鈕鏈接所對應(yīng)路徑的處理,如:/addToCart/:商品id

app.get("/addToCart/:id", function(req, res) {...});

1.通過req.params.id獲取商品ID號并檢測登陸用戶狀態(tài)。

2.通過global.dbHelper.getModel方法獲取購物車(cart)、商品(commodity)模型。

3.商品已存在則進(jìn)行更新操作,貼出部分參考代碼:

Cart.update({"uId":用戶ID,"cId":商品ID},{$set:{cQuantity:已有數(shù)量+1}}

4.商品未存在則進(jìn)行添加操作,貼出部分代碼:

Commodity.findOne({"_id": 商品ID}, function (error, doc) {
        Cart.create({
            uId: 用戶ID,
            cId: 商品ID,
            cName: doc.name,
            cPrice: doc.price,
            cImgSrc: doc.imgSrc,
            cQuantity : 1
        },function(error,doc){
            if(doc){
                res.redirect("/home");
            }
        });
});
3、商品的單選和全選

在購物車頁面展示還是使用ejs模板(具體實(shí)現(xiàn)可參考貼圖)來實(shí)現(xiàn)用戶購物車商品的展示,現(xiàn)期間我們用到了checkbox,這里我們就來簡單的實(shí)現(xiàn)商品的全選和單選。

首先,簡單介紹實(shí)現(xiàn)步驟:

用戶選中全選按鈕時(shí),列表內(nèi)選框全部變?yōu)楣催x狀態(tài)。

用戶取消全選按鈕選中狀態(tài)時(shí),列表內(nèi)選框全部取消勾選狀態(tài)。

列表內(nèi)選框?yàn)槿抗催x狀態(tài)時(shí),全選按鈕為選中狀態(tài),反之不勾選。

全選按鈕未選中情況下,當(dāng)列表內(nèi)按鈕全部選中則全選按鈕也要被選中。

對于checkbox按鈕如下圖所示:

注:data-index屬性存儲索引值用來獲取商品數(shù)量,data=id存儲商品IDdata-price存儲商品價(jià)格。

實(shí)現(xiàn)全選:為全選框(如idCheckAll)添加單擊事件,這里我們使用prop方法設(shè)置checkbox狀態(tài)、is方法判斷checkbox狀態(tài),如下參考示例:

$("#CheckAll").click(function(){
       var self = $(this);
       $("input[name="chkItem"]").each(function(){
          $(this).prop("checked",self.is(":checked"));
       });
 });

實(shí)現(xiàn)單選:單選框(如namechkItem)添加單擊事件,這里我們使用prop方法設(shè)置checkbox狀態(tài)、not方法判斷checkbox狀態(tài),如下參考示例:

$("input[name="chkItem"]:checkbox").click(function(){
   var isCheck = $("input[name="chkItem"]:not(:checked)").length?false:true;
   $("#CheckAll").prop("checked",isCheck);
});

到這里我們就簡單實(shí)現(xiàn)了按鈕的全選和單選,以上方法可供參考也可以自行思路去實(shí)現(xiàn)。

4、商品的數(shù)量加減

前面我們實(shí)現(xiàn)了對于商品的單選和全選功能,下面我們就開始實(shí)現(xiàn)商品數(shù)量的加減。

對于+-按鈕如下所示:

+ -

簡單實(shí)現(xiàn)步驟如下:

定義data-type屬性用于區(qū)分+-按鈕。

a標(biāo)簽添加單擊事件。并同時(shí)改變顯示框的值。

使用siblings()方法改變同級標(biāo)簽的數(shù)量值。

具體實(shí)現(xiàn)可參考如下方法:

$(".li-quantity a").click(function(){
    var self = $(this);
    var type = self.attr("data-type"),
        num = parseFloat(self.siblings("input").val());
    if(type == "add"){
          num += 1;
     }else if(type == "subtr"){
          if(num > 1){
             num -= 1;
          }else{
             return false;
          }
     }
    self.siblings("input").val(num);
});

到這里對于商品數(shù)量的加、減也實(shí)現(xiàn)了,接著我們開始實(shí)現(xiàn)用戶選中商品的總價(jià)格計(jì)算功能。

5、商品總金額的計(jì)算

計(jì)算總金額

商品的狀態(tài)選擇和數(shù)量的加減功能我們已經(jīng)實(shí)現(xiàn)了,選擇我們就開始實(shí)現(xiàn)當(dāng)用戶選擇相關(guān)商品時(shí)總金額的計(jì)算功能。

實(shí)現(xiàn)步驟如下:

定義公共方法,用于用戶不同加、減、全選等操作時(shí)皆可調(diào)用。

循環(huán)列表內(nèi)所有被選中的checkbox(假設(shè)namechkItem)。

使用checkbox的相應(yīng)屬性值,來獲取價(jià)格和數(shù)量。

定義全局變量(假設(shè)為sum)存儲總金額并賦值顯示。

具體方法實(shí)現(xiàn)可參考如下內(nèi)容:

sum = 0;
$("input[name="chkItem"]:checked").each(function () {
    var self = $(this),
        price = self.attr("data-price"),
        index = self.attr("data-index");
    var quantity = $("#Q" + index).val();
    sum += (parseFloat(price) * parseFloat(quantity));
});
$("金額標(biāo)簽").html("¥" + sum + ".00");

到這里,選中商品的價(jià)格總計(jì)功能也就簡單實(shí)現(xiàn)了。

6、結(jié)算功能的實(shí)現(xiàn)

商品結(jié)算

關(guān)于結(jié)算功能,這里就做簡單介紹,當(dāng)用戶點(diǎn)擊結(jié)算按鈕時(shí),計(jì)算出被選商品的總金額,給予alert出總金額,數(shù)據(jù)庫則更新相應(yīng)商品的結(jié)算狀態(tài)和數(shù)量,當(dāng)然你也可以在購物車集合中添加一個(gè)用戶消費(fèi)金額的屬性來保存所消費(fèi)的金額總數(shù)更好,這里就簡單處理了。

具體功能實(shí)現(xiàn)這里簡單介紹如下:

定義公共方法,用于用戶不同加、減、全選等操作時(shí)皆可調(diào)用。

循環(huán)列表內(nèi)所有被選中的checkbox(假設(shè)namechkItem)。

使用checkbox的相應(yīng)屬性值,來獲取價(jià)格和數(shù)量。

定義全局變量(假設(shè)為sum)存儲總金額并賦值顯示。

這里貼出部分實(shí)現(xiàn)代碼,如下:

//結(jié)算方法內(nèi)容
$("input[name="chkItem"]:checked").each(function(){
     var self = $(this),
         //通過data-index屬性,獲取索引值
         index = self.attr("data-index"),
        //通過data-id屬性,獲取對應(yīng)ID
         ID= self.attr("data-id");
     var 數(shù)量= $("#Q"+index).val();
     var data = { "cid": ID, "cnum":數(shù)量};
     //發(fā)送數(shù)據(jù)請求
     ...   
});
alert("所付金額為:¥"+sum);
location.href = "cart";

cart.js文件添加對應(yīng)路由處理如下:

app.post("路徑",function(req,res){
   var Cart = global.dbHelper.getModel("cart");
   Cart.update({"_id":req.body.ID},{$set : { cQuantity : req.body.數(shù)量,cStatus:true }},function(error,doc){ 
...
7、購物車商品的刪除

商品刪除

關(guān)于商品的刪除功能就簡單多了,我們只需獲取其ID即可實(shí)現(xiàn)對于購物車內(nèi)商品的刪除操作

在購物車商品的展示功能實(shí)現(xiàn)時(shí),我們就可以獲取其ID,如下參考:

刪除

cart.js文件,添加對應(yīng)路徑處理方法,這里簡單實(shí)現(xiàn)參考如下:

app.get("/delFromCart/:id", function(req, res) {
   //req.params.id 獲取ID號
   var Cart = global.dbHelper.getModel("cart");
   Cart.remove({"_id":req.params.id},function(error,doc){
       //成功返回1  失敗返回0
       if(doc > 0){
           res.redirect("/cart");
       }
   });
});

好,到這里所有功能都已經(jīng)實(shí)現(xiàn)了。

附上本電商網(wǎng)站項(xiàng)目的源碼,供各位研究、開發(fā)、擴(kuò)展

歡迎提issues

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19039.html

相關(guān)文章

  • 電商購物產(chǎn)品在做什么?

    摘要:本文由網(wǎng)易跨境電商部產(chǎn)品經(jīng)理曹宏授權(quán)發(fā)表。根據(jù)交易鏈路的環(huán)節(jié),分工可以進(jìn)一步簡單細(xì)化為商詳頁產(chǎn)品導(dǎo)購頁產(chǎn)品,購物車產(chǎn)品,訂單產(chǎn)品,支付產(chǎn)品。那么購物車的產(chǎn)品都在做什么為了避免假大空,就以購物車改版這個(gè)項(xiàng)目介紹一下電商購物車產(chǎn)品的工作。 本文由網(wǎng)易跨境電商部產(chǎn)品經(jīng)理曹宏授權(quán)發(fā)表。 作為電商交易鏈路的產(chǎn)品,很多人會問,你們都在做什么? 關(guān)于電商產(chǎn)品的工作分類,從流量角度我簡單分為以下幾類(...

    shixinzhang 評論0 收藏0
  • 電商購物網(wǎng)站 - 需求與設(shè)計(jì)

    摘要:登錄之后,用戶可以對相關(guān)商品進(jìn)行選購并添加到購物車。結(jié)構(gòu)劃分項(xiàng)目主要分為以下幾大模塊注冊模塊,登錄模塊,商品模塊購物車模塊結(jié)算模塊。購物車模塊對相關(guān)商品進(jìn)行增加減少刪除操作。結(jié)算模塊對購物車內(nèi)已選擇商品進(jìn)行結(jié)算。 1、功能介紹 用戶可以完成注冊、登錄,登錄后對商品進(jìn)行瀏覽。 登錄之后,用戶可以對相關(guān)商品進(jìn)行選購并添加到購物車。 用戶可以對購物車?yán)锩娴纳唐愤M(jìn)行增加、減少、刪除操作。 用...

    Anshiii 評論0 收藏0
  • 電商購物網(wǎng)站 - 數(shù)據(jù)庫設(shè)計(jì)

    摘要:同時(shí)它也是一個(gè)對象數(shù)據(jù)庫,沒有表行等概念,也沒有固定的模式和結(jié)構(gòu),所有的數(shù)據(jù)以文檔的形式存儲,數(shù)據(jù)格式就是。我們一共要?jiǎng)?chuàng)建三個(gè)集合,分別是用戶集合商品集合購物車集合。 1、數(shù)據(jù)庫介紹 MongoDB的簡單介紹如下: MongoDB是一個(gè)開源的NoSQL數(shù)據(jù)庫,相比MySQL那樣的關(guān)系型數(shù)據(jù)庫,它更顯得輕巧、靈活, 非常適合在數(shù)據(jù)規(guī)模很大、事務(wù)性不強(qiáng)的場合下使用。同時(shí)它也是一個(gè)對象數(shù)據(jù)庫...

    dmlllll 評論0 收藏0
  • 電商購物網(wǎng)站 - 詳細(xì)設(shè)計(jì)

    摘要:用戶注冊模塊的設(shè)計(jì)與實(shí)現(xiàn)注冊模塊功能設(shè)計(jì)介紹功能本模塊主要用于新用戶注冊,用戶通過表單提供用戶名和密碼信息,系統(tǒng)根據(jù)用戶提供的注冊信息對用戶進(jìn)行具體操作。如果身份合法,則用戶可進(jìn)入商品頁面。 1、用戶注冊模塊的設(shè)計(jì)與實(shí)現(xiàn) 注冊模塊功能設(shè)計(jì)介紹 功能:本模塊主要用于新用戶注冊,用戶通過表單提供用戶名和密碼信息,系統(tǒng)根據(jù)用戶提供的注冊信息對用戶進(jìn)行具體操作。 輸入操作:用戶名、密碼、確認(rèn)密...

    yck 評論0 收藏0
  • 電商系統(tǒng)設(shè)計(jì)之商品 (下)

    摘要:訂單號用戶商品標(biāo)題商品價(jià)格商品封面圖商品其他屬性小明愛瘋手機(jī)其他屬性像上表中設(shè)計(jì),有人會問了那關(guān)聯(lián)的意義何在呢我的回答是保持?jǐn)?shù)據(jù)關(guān)聯(lián),雖然商戶有可能改變商品屬性,但作為一名程序員,應(yīng)該盡可能的記錄用戶所有的動作。 showImg(https://segmentfault.com/img/bVbdtuc?w=1824&h=1028); 電商大伙每天都在用,類似某貓,某狗等。電商系統(tǒng)設(shè)計(jì)看...

    shiguibiao 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<