async createRechargeOrder(uid, money, type) {
const start = new Date().getTime();
// 使用 usemall-member-wallet-change 集合记录用户钱包变动
const walletChangeCollection = this.db.collection('usemall-member-wallet-change');
// 使用 usemall-member-wallet 集合记录用户的钱包信息
const walletCollection = this.db.collection('usemall-member-wallet');
const currentTime = new Date().getTime();
// 创建一条充值记录
const rechargeRecord = {
wallet_id: uid,
user_id: uid,
order_id: null,
balance_change: money,
type: type,
created_at: currentTime,
};
// 向 usemall-member-wallet-change 表中插入记录
const result = await walletChangeCollection.add(rechargeRecord);
// 获取当前用户的钱包信息
const walletInfo = await walletCollection.doc(uid).get();
console.log(walletInfo.data)
if (walletInfo.data) {
// 如果用户的钱包信息存在,更新余额
// 使用0作为默认值,如果balance为null
const currentBalance = walletInfo.data.balance || 0;
const newBalance = currentBalance + parseInt(money, 10);
// 更新用户钱包表
await walletCollection.doc(uid).update({
balance: newBalance,
// 根据你的业务需求更新其他字段
});
console.log(`用户 ${uid} 的钱包余额更新成功,新余额:${currentBalance}`);
} else {
// 如果用户的钱包信息不存在,根据实际需求进行处理
console.error(`用户 ${uid} 的钱包信息不存在`);
}
const end = new Date().getTime();
console.log(`生成充值订单耗时:${end - start}ms`);
return {
order_id: result.id
};
} catch (error) {
console.error('创建充值订单失败', error);
throw error; // 抛出错误以便外部捕获
}
}
这里的const currentBalance = walletInfo.data.balance || 0; 这里可以获取到null,但是我的数据库里数据并不是null
,图片里是我的对应的数据库,balance是int类型。
【已解决】 数据是数据形式需要const currentBalance = walletInfo.data[0].balance || 0; 选择第一个数据