一个系统开发,人、财、物、事四个方面是必不可少的。前述章节我们已经把人,顾客注册、登录,员工、服务商都讲解完毕了。围绕着人就要有资金相关的内容,比如本篇我们讲解的会员充值就是和顾客相关。
1 创建数据源
2 搭建我的钱包视图
3 创建API
在这里插入代码片const ErrorCode ={
SUCCESS: 0,
PARAM_ERROR: 1001,
NOT_FOUND: 1002,
SYSTEM_ERROR: 1003,
USER_NOT_EXISTS: 1005,
MEMBER_NOT_EXISTS: 1006,
INVALID_AMOUNT: 1007
};
module.exports = async function(params, context){
console.log('充值API入参:', params);
// 1. 解析并校验参数
const { userId, memberId, amount, paymentMethod }= params;
if(!userId){
return{ code: ErrorCode.PARAM_ERROR, message: '用户ID不能为空'};
}
if(!memberId){
return{ code: ErrorCode.PARAM_ERROR, message: '会员ID不能为空'};
}
if(typeof amount !=='number'|| amount <=0){
return{ code: ErrorCode.INVALID_AMOUNT, message: '充值金额必须为正数'};
}
if(!paymentMethod){
return{ code: ErrorCode.PARAM_ERROR, message: '支付方式不能为空'};
}
try {
// 2. 查询会员详情(使用wedaGetItemV2)
const memberResult = await context.callModel({
name: "jz_members",
methodName: "wedaGetItemV2",
params: {
filter: {
where: {
_id: {$eq: memberId },
}
},
select: {
$master:true
}
}

});
// 检查会员是否存在
if(!memberResult ||
typeof memberResult !=='object'||
Object.keys(memberResult).length ===0||
!memberResult._id){
return{ code: ErrorCode.MEMBER_NOT_EXISTS, message: '会员记录不存在'};
}
const currentBalance = memberResult.balance ||0;
// 3. 创建充值记录
const rechargeResult = await context.callModel({
name: "recharge_records",
methodName: "wedaCreateV2",
params: {
data: {
user_id: { _id: userId },
member_id: { _id: memberId },
recharge_amount: amount,
payment_method: paymentMethod,
recharge_time: Date.now()
}
}
});
// 4. 更新会员余额(使用事务确保原子性)
const updateResult = await context.callModel({
name: "jz_members",
methodName: "wedaUpdateV2",
params: {
data: {
balance: currentBalance + amount,
// 如果需要根据充值金额增加积分,可以在这里添加逻辑
// points: memberResult.points + Math.floor(amount * 0.1) // 每充值1元积0.1分
},
filter: {
where: {
_id: {$eq: memberId }
}
}
}
});
// 5. 返回成功结果
return{
code: ErrorCode.SUCCESS,
data: {
rechargeId: rechargeResult.id,
newBalance: currentBalance + amount,
rechargeTime: Date.now()
},
message: '充值成功'
};
} catch (error){
console.error('充值API错误:', error);
return{
code: ErrorCode.SYSTEM_ERROR,
message: `系统错误: ${error.message}`
};
}
};
3 搭建充值页面
({
userId:$w.form1.submitParams.data.user_id._id,
memberId:$w.form1.submitParams.data.member_id._id,
paymentMethod:$w.form1.submitParams.data.payment_method,
amount:Number($w.form1.submitParams.data.recharge_amount)
})