博客
关于我
购物车列表、提交订单、多端运行、多端发行
阅读量:343 次
发布时间:2019-03-04

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

购物车管理与订单处理技术文档

一、购物车列表功能

1. 总价钱、总数量及全选状态获取

  • 总数量:通过遍历购物车列表项,累加选中项的商品数量。
  • 总价钱:同理,累加选中项的商品总价。
  • 全选状态:检查所有购物车项,若全部选中则返回true,否则false。

2. 购物车信息修改

2.1 数量增减

  • 加法:直接修改项的num,并调用cartEdit方法执行数据库更新。
  • 减法:类似加法操作,但需处理num降至1的情况,同样调用cartEdit

2.2 单个状态切换

  • 通过changeChecked方法,根据当前状态切换选中状态,并执行数据库更新。

2.3 全选状态切换

  • 通过changeAllChecked事件,根据开关状态修改所有购物车项的选中状态,并执行数据库更新。

2.4 数据库修改操作

  • 参数

    • id:购物车编号(必填)
    • num:商品数量
    • checked:选中状态(0/1)
    • authorization:后台验证所需的token
  • 接口

    const _cartEdit = (header, data) => {
    let option = {
    url: "/api/cartedit",
    header,
    data
    };
    return http(option);
    }
  • 代码示例

    async cartEdit(index) {
    const { id, num, checked } = this.cartLists[index];
    const header = {
    authorization: uni.getStorageSync('userInfo').token
    };
    const res = await this.$api._cartEdit(header, { id, num, checked });
    console.log(res);
    }

3. 购物车删除

  • 接口

    const _cartDelete = (header, data) => {
    let option = {
    url: "/api/cartdelete",
    header,
    data
    };
    return http(option);
    }
  • 代码示例

    async cartDelete(index) {
    const { id } = this.cartLists[index];
    const header = {
    authorization: uni.getStorageSync('userInfo').token
    };
    const res = await this.$api._cartDelete(header, { id });
    console.log(res);
    this.cartLists.splice(index);
    }

4. 点击结算跳转

  • 逻辑:检查购物车中是否有至少一件商品,若无则提示,否则跳转至结算页面。

5. 提交订单

1. 获取购物车商品信息

  • 筛选选中商品:根据选中状态筛选出需要结算的商品列表。

2. 下单操作

  • 参数

    • uid:会员ID
    • username:收货人姓名
    • userphone:收货人电话
    • address:收货地址
    • countmoney:订单总金额
    • countnumber:订单商品数量
    • addtime:订单时间戳
    • idstr:购物车商品ID字符串
  • 接口

    const _orderAdd = (header, data) => {
    let option = {
    url: "/api/orderadd",
    header,
    data
    };
    return http(option);
    }
  • 代码示例

    async orderAdd() {
    const { uid, token } = uni.getStorageSync('userInfo');
    const params = {
    uid,
    username: this.information.name,
    userphone: this.information.phone,
    address: this.information.address,
    countmoney: this.totalPrice,
    countnumber: this.totalNum,
    addtime: new Date().getTime()
    };
    const idstr = this.cartLists.map(item => item.id).join(',');
    const header = { authorization: token };
    const data = { params, idstr };
    const res = await this.$api._orderAdd(header, data);
    console.log(res);
    if (res.data.code === 200) {
    uni.showToast({ title: res.data.msg });
    setTimeout(() => {
    uni.redirectTo({ url: "../order/order" });
    }, 1000);
    }
    }

6. 多端运行

  • 微信小程序:与支付宝小程序功能一致,仅需调整样式。
  • App开发:需配置Android和iOS的发布配置,注意证书签名和权限设置。

7. 多端发行

  • H5发布:配置网站标题和域名,发布至指定路径。

  • 小程序审核:完成合法域名设置,提交审核后上线。

  • App打包:注意证书管理和权限设置,确保包络正确。

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

你可能感兴趣的文章
opencv resize
查看>>
opencv SVM分类Demo
查看>>
OpenCV VideoCapture.get()参数详解
查看>>
opencv videocapture读取视频cap.isOpened 输出总是false
查看>>
opencv waitKey() 函数理解及应用
查看>>
OpenCV 中的图像转换
查看>>
OpenCV 人脸识别 C++实例代码
查看>>
OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
查看>>
Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
查看>>
opencv 模板匹配, 已解决模板过大程序不工作的bug
查看>>
OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
查看>>
opencv&Python——多种边缘检测
查看>>
opencv&python——高通滤波器和低通滤波器
查看>>
OpenCV+Python识别车牌和字符分割的实现
查看>>
OpenCV-Python接口、cv和cv2的性能比较
查看>>
OpenCV/Python/dlib眨眼检测
查看>>
opencv1-加载、修改、保存图像
查看>>
opencv10-形态学操作
查看>>
opencv11-提取水平直线和垂直直线
查看>>
opencv12-图像金字塔
查看>>