第 3-9 课:云开发之订单品数据实现

目录

  • 开篇

    • 【系】微信小程序云开发实战坚果商城-开篇
  • 基础篇
    • 【系】微信小程序云开发实战坚果商城-弹性盒子
    • 【系】微信小程序云开发实战坚果商城-ES6 简单入门
    • 【系】微信小程序云开发实战坚果商城-官方案例先运行
  • 前端篇
    • 【系】微信小程序云开发实战坚果商城-商城项目搭建
    • 【系】微信小程序云开发实战坚果商城-所有目录…

1 集合处理

fields 文件夹新建 orderField.js

// order 指定返回结果中记录需返回的字段
module.exports = {ORDERFIELD: {buyer_name: true,buyer_phone: true,buyer_address: true,order_amount: true,orderdetail: true,create_time: true,order_status: true}
}

2 业务层实现

在开始的时候,订单和订单详情是分别存取的 每一个订单详情都关联了订单号,我采用的通过 node-uuid 生成ID的形式,后面再优化的时候,mongodb 非关系数据库是比较灵活的,直接把订单详情放入订单中,也更好相对比较号操作。下面的内容没有移除的原因,想告诉大家在日常使用的过程中,我们在云函数中是可以安装其他依赖的,云函数在安装的时候记得添加 --save ,写入到 package.json 不然云上是读取不到本来依赖的。

订单 id 这里我采用自己生成,因为订单详情也需要使用订单 id ,在云函数index打开客户端安装node-uuid依赖,在命令窗口输入以下命令:

npm install --save  node-uuid

node-uuid使用比较简单,如下

引入
var uuid = require('node-uuid');
// V1 是根据时间戳生成。
var uid = uuid.v1();
// V4 是随机数生成。
var uidv4 = uuid.v4();

在我们实际的开发选择 v1 ,安装之后我们继续我们订单业务层编写

注意:上面的node-uuid代码中已经移除

service/orderService.js

const model = require('../models/BaseModel.js')
const { ORDER } = require('../config/tableConfig.js')
const { ORDERFIELD } = require('../fields/orderField.js')//orderData,userInfo
const create = (orderData, userInfo) => {let orderdetailS = []// 添加订单详情let create_time = new Date()let update_time = new Date()for (let product of orderData.products) {let params_order_detail = {product_id: product._id,product_name: product.product_name,product_price: product.product_sell_price,product_count: product.counts,product_img: product.product_img,create_time: create_time,update_time: update_time}orderdetailS.push(params_order_detail)}// 订单信息let params_order = {buyer_openid: userInfo.openId,buyer_name: orderData.address.userName,buyer_phone: orderData.address.phone,buyer_address: orderData.address.detailAddress,order_amount: orderData.account,order_status: 0,// 默认未付款create_time: new Date(),update_time: new Date(),orderdetail: orderdetailS}// 订单生成let order = model.add(ORDER, params_order);return order
}
/*** 根据订单id获取订单信息* @param {*} orderId */
const getOrderById = (orderId) => {return model.findById(ORDER, ORDERFIELD, orderId)
}/*** 根据用户openid获取信息* @param {*} userInfo */
const getOrderList = (userInfo, page = 0, size = 20, order = {}) => {order.name = 'create_time'order.orderBy = 'desc'let options = { buyer_openid: userInfo.openId }return model.query(ORDER, ORDERFIELD, options, page, size, order)
}module.exports = {create,getOrderById,getOrderList
}

订单处理的数据比较多,在这里我们通过前台的数据解析出来,放进我们的自己的集合中,作为演示我是之前通过前台取值存进去,如果在真实的案例中,大家需要通过从后台取出数据与前台对比,以免前台数据传入错误。

3 入口文件实现

头部引入

const order = require('service/orderService.js')
  /***************************    订单   *****************************************/// 生成订单app.router('creatOrder', async (ctx, next) => {//event.data.orderData,event.userInfoctx.data = await order.create(event.data.orderData, event.userInfo)ctx.body = await returnUtil.success(ctx)await next()})// 根据订单获取信息app.router('getOrderById', async (ctx, next) => {let orderId = event.data.orderIdctx.data = await order.getOrderById(orderId)ctx.body = await returnUtil.success(ctx)await next()})// 获取订单信息app.router('getOrderList', async (ctx, next) => {ctx.data = await order.getOrderList(event.userInfo)ctx.body = await returnUtil.success(ctx)await next()})

源码地址

在搭建项目前,根据自己需要下载本系列文章的源代码

本项目源码地址:https://gitee.com/mtcarpenter/nux-shop

【系】微信小程序云开发实战坚果商城-云开发之订单品数据实现相关推荐

  1. 【系】微信小程序云开发实战坚果商城-云开发开篇

    第 3-2 课:云开发开篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信 ...

  2. 【系】微信小程序云开发实战坚果商城-云开发之商品信息和主题商品数据实现

    第 3-8 课:云开发之商品信息和主题商品数据实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES ...

  3. 【系】微信小程序云开发实战坚果商城-云开发之首页数据实现

    第 3-6 课:云开发之首页数据实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...

  4. 视频教程-微信小程序电商实战-PHP

    微信小程序电商实战 多年一线互联网开发实战以及培训经验,对php开发,linux运维架构有丰富的经验,善于分析问题,解决问题. lampol ¥117.00 立即订阅 扫码下载「CSDN程序员学院AP ...

  5. java计算机毕业设计基于安卓Android/微信小程序的电脑组装机配置商城APP

    项目介绍 网络的广泛应用给生活带来了十分的便利.所以把组装机配置商城管理与现在网络相结合,利用java技术建设组装机配置商城app,实现组装机配置的信息化.则对于进一步提高组装机配置商城管理发展,丰富 ...

  6. 【系】微信小程序云开发实战坚果商城-开篇

    开篇:无服务开发是未来? 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信小 ...

  7. 【系】微信小程序云开发实战坚果商城-商城项目搭建

    第 2-1 课:商城项目搭建 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微 ...

  8. 【系】微信小程序云开发实战坚果商城-扩展篇

    第 5-1 课:扩展篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信小程 ...

  9. 【系】微信小程序云开发实战坚果商城-弹性盒子

    第 1-1 课:微信小程序实操弹性盒子 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...

最新文章

  1. java gettext_JAVA中getText()怎么从一个JTextArea中读出内容?
  2. 前台开发之HTML定义语义化
  3. CTF盲水印工具安装(排雷)
  4. 2021年度训练联盟热身训练赛第一场 E Early Orders 思维 + 栈
  5. 工作263:弹性布局 修改样式
  6. DirectShow组件原理分析及应用
  7. 《南溪的目标检测学习笔记》——验证模式下出现“Process finished with exit code 137 (interrupted by signal 9: SIGKILL)“的问题
  8. Spark算子与RDD基本转换
  9. 一个自己主动依据xcode中的objective-c代码生成类关系图的神器
  10. eclipse不能自动编译生成class文件的解决办法
  11. 逃逸分析、栈上分配、标量替换、同步消除、锁消除
  12. 计算机软件在哪里建文本文档,如何新建文档
  13. excel文件修复工具_七款免费的PDF处理工具
  14. 获取Bootcamp 6 下载地址(mac装win10)
  15. [libtorrent] windows搭建 libtorrent 开发环境
  16. sed 批量替换字符串
  17. 不平凡的2021,末流普本生秋招上岸大厂的历程
  18. win10删除输入法后输入法找不到的解决方法
  19. 树莓派4B中中文字体和中文输入法设置不成功问题解决办法
  20. 谷歌学术403:某URL没有权限访问

热门文章

  1. 新房装修材料避坑分享
  2. 单调递增且值域非负的函数
  3. flutter-指纹识别(local_auth)
  4. 销售原理知识需要学习吗 如何系统学习销售
  5. 2021年中国同城配送行业发展势头良好,越来越受资本家的青睐[图]
  6. Http Post注册QQ号码 分析流程图 更新时间20141206
  7. python自动化:uiautomation、pyautogui操作会计记账系统(7):自动化填写会计软件系统
  8. sklearn.model_selection
  9. stem课程体系关联
  10. 台式计算机噪声,台式电脑有噪音怎么办