// 云函数createOrder const cloud = require('wx-server-sdk') // 初始化cloud cloud.init({ env: 'cloud1-5gqeisa06659849a' // 使用您的云环境ID }) const db = cloud.database() exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const openid = wxContext.OPENID // 获取请求参数 const { type, // 'secondhand' itemId, note } = event if (!type || !itemId) { return { success: false, message: '参数错误' } } // 事务处理 const transaction = await db.startTransaction() try { let item, itemCollection, status // 只支持二手商品 if (type === 'secondhand') { itemCollection = 'secondhand_goods' status = 'sold' // 二手商品状态变为已售出 } else { return { success: false, message: '类型错误' } } // 获取商品信息 const itemResult = await transaction.collection(itemCollection).doc(itemId).get() item = itemResult.data if (!item) { await transaction.rollback() return { success: false, message: '商品不存在' } } // 检查状态是否可购买 if (item.status !== 'available') { await transaction.rollback() return { success: false, message: '该商品已售出' } } // 更新商品状态 await transaction.collection(itemCollection).doc(itemId).update({ data: { status, updateTime: db.serverDate() } }) // 创建订单 const orderResult = await transaction.collection('orders').add({ data: { type, itemId, title: item.title, price: item.price, publisherOpenid: item.openid, // 发布者openid buyerOpenid: openid, // 购买者openid note, status: 'waiting', // 订单状态:待完成 createTime: db.serverDate(), updateTime: db.serverDate() } }) // 提交事务 await transaction.commit() return { success: true, orderId: orderResult._id, message: '下单成功' } } catch (error) { // 回滚事务 await transaction.rollback() return { success: false, message: '下单失败', error: error.message } } }