博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
egg(95)--egg之商品加入购物车
阅读量:7223 次
发布时间:2019-06-29

本文共 3318 字,大约阅读时间需要 11 分钟。

流程

  1. 选择版本,
  2. 选择颜色,
  3. 加入购物车

router.js

router.get('/addCart', controller.default.cart.addCart);

view

app/view/default/product_info.html

选中版本,选中颜色,然后点击加入购物车

$(function() {                $('#addCart').click(function() {                    var goods_id = $('#color_list .active').attr('goods_id');                    var color_id = $('#color_list .active').attr('color_id');                    location.href = "/addCart?goods_id=" + goods_id + '&color_id=' + color_id;                })            })

controller

app/controller/default/cart.js

根据传过来的good_idcolor_id,查找商品和商品颜色

async addCart() {        var goods_id = this.ctx.request.query.goods_id;        var color_id = this.ctx.request.query.color_id;        //1、获取商品信息        var goodsResult = await this.ctx.model.Goods.find({ "_id": goods_id });        var colorResult = await this.ctx.model.GoodsColor.find({ "_id": color_id });        console.log(goodsResult);        if (goodsResult.length == 0 || colorResult.length == 0) {            this.ctx.status = 404;            this.ctx.body = '错误404'; //404        } else {            // 赠品            var goodsGiftIds = this.ctx.service.goods.strToArray(goodsResult[0].goods_gift);            var goodsGift = await this.ctx.model.Goods.find({                $or: goodsGiftIds            });            var currentData = {                _id: goods_id,                title: goodsResult[0].title,                price: goodsResult[0].shop_price,                goods_version: goodsResult[0].goods_version,                num: 1,                color: colorResult[0].color_name,                goods_img: goodsResult[0].goods_img,                goods_gift: goodsGift,                /*赠品*/                checked: true /*默认选中*/            }            //2、判断购物车有没有数据            var cartList = this.service.cookies.get('cartList');            if (cartList && cartList.length > 0) { //存在                //4、判断购物车有没有当前数据                  if (this.service.cart.cartHasData(cartList, currentData)) {                    for (var i = 0; i < cartList.length; i++) {                        if (cartList[i]._id == currentData._id) {                            cartList[i].num = cartList[i].num + 1;                        }                    }                    this.service.cookies.set('cartList', cartList);                } else {                    //如果购物车里面没有当前数据   把购物车以前的数据和当前数据拼接 然后重新写入                    var tempArr = cartList;                    tempArr.push(currentData);                    this.service.cookies.set('cartList', tempArr);                }            } else {                // 3、如果购物车没有任何数据  直接把当前数据写入cookies                var tempArr = [];                tempArr.push(currentData);                this.service.cookies.set('cartList', tempArr);            }            this.ctx.body = '加入购物车成功';        }    }

service

app/service/cookies.js
class CookiesService extends Service {    set(key, value, expires) {        expires = expires ? expires : 24 * 3600 * 1000;        this.ctx.cookies.set(key, JSON.stringify(value), {            maxAge: expires,            httpOnly: true,            encrypt: true        })    }    get(key) {        var data = this.ctx.cookies.get(key, {            encrypt: true        });        if (data) {            return JSON.parse(data);        }        return null;    }}

效果

clipboard.png

clipboard.png

转载地址:http://unkfm.baihongyu.com/

你可能感兴趣的文章
HBuilder 学习笔记
查看>>
利用OpenStreetMap(OSM)数据搭建一个地图服务
查看>>
TopN算法与排行榜
查看>>
lucene排序算法之向量空间模型(一)
查看>>
新浪微博数据Json格式解析
查看>>
WLAN 802.11 wifl区别
查看>>
oracle授权动态视图权限给用户
查看>>
Debian – 出现-bash: pip: command not found错误解决办法
查看>>
Zxing扫描二维码
查看>>
我的友情链接
查看>>
aspcms后台拿shell漏洞(非添加模块)及修复方法
查看>>
C语言冒泡排序法
查看>>
B2B行业门户网站群发邮件时间及发送频率
查看>>
关于虚拟机能ping通物理机,而物理机ping不通虚拟机问题解决。
查看>>
同台机器启动多个mysql
查看>>
iframe 跨域高度自适应
查看>>
struts2+hibernate3+spring3(ssh2)框架下的web应用
查看>>
Linux下的三个时间属性
查看>>
semanage
查看>>
[case分享]Exchange 2010 登陆OWA查看邮件出现Rights managem operation failed
查看>>