【系】微信小程序云开发实战坚果商城-云开发之订单品数据实现
第 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
【系】微信小程序云开发实战坚果商城-云开发之订单品数据实现相关推荐
- 【系】微信小程序云开发实战坚果商城-云开发开篇
第 3-2 课:云开发开篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信 ...
- 【系】微信小程序云开发实战坚果商城-云开发之商品信息和主题商品数据实现
第 3-8 课:云开发之商品信息和主题商品数据实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES ...
- 【系】微信小程序云开发实战坚果商城-云开发之首页数据实现
第 3-6 课:云开发之首页数据实现 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...
- 视频教程-微信小程序电商实战-PHP
微信小程序电商实战 多年一线互联网开发实战以及培训经验,对php开发,linux运维架构有丰富的经验,善于分析问题,解决问题. lampol ¥117.00 立即订阅 扫码下载「CSDN程序员学院AP ...
- java计算机毕业设计基于安卓Android/微信小程序的电脑组装机配置商城APP
项目介绍 网络的广泛应用给生活带来了十分的便利.所以把组装机配置商城管理与现在网络相结合,利用java技术建设组装机配置商城app,实现组装机配置的信息化.则对于进一步提高组装机配置商城管理发展,丰富 ...
- 【系】微信小程序云开发实战坚果商城-开篇
开篇:无服务开发是未来? 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信小 ...
- 【系】微信小程序云开发实战坚果商城-商城项目搭建
第 2-1 课:商城项目搭建 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微 ...
- 【系】微信小程序云开发实战坚果商城-扩展篇
第 5-1 课:扩展篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信小程 ...
- 【系】微信小程序云开发实战坚果商城-弹性盒子
第 1-1 课:微信小程序实操弹性盒子 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 ...
最新文章
- java gettext_JAVA中getText()怎么从一个JTextArea中读出内容?
- 前台开发之HTML定义语义化
- CTF盲水印工具安装(排雷)
- 2021年度训练联盟热身训练赛第一场 E Early Orders 思维 + 栈
- 工作263:弹性布局 修改样式
- DirectShow组件原理分析及应用
- 《南溪的目标检测学习笔记》——验证模式下出现“Process finished with exit code 137 (interrupted by signal 9: SIGKILL)“的问题
- Spark算子与RDD基本转换
- 一个自己主动依据xcode中的objective-c代码生成类关系图的神器
- eclipse不能自动编译生成class文件的解决办法
- 逃逸分析、栈上分配、标量替换、同步消除、锁消除
- 计算机软件在哪里建文本文档,如何新建文档
- excel文件修复工具_七款免费的PDF处理工具
- 获取Bootcamp 6 下载地址(mac装win10)
- [libtorrent] windows搭建 libtorrent 开发环境
- sed 批量替换字符串
- 不平凡的2021,末流普本生秋招上岸大厂的历程
- win10删除输入法后输入法找不到的解决方法
- 树莓派4B中中文字体和中文输入法设置不成功问题解决办法
- 谷歌学术403:某URL没有权限访问