家政维修平台实战31会员充值


一个系统开发,人、财、物、事四个方面是必不可少的。前述章节我们已经把人,顾客注册、登录,员工、服务商都讲解完毕了。围绕着人就要有资金相关的内容,比如本篇我们讲解的会员充值就是和顾客相关。

1 创建数据源

顾客充值的时候需要记录会员的充值记录,我们创建一个数据模型用来记录相关信息
在这里插入图片描述
在这里插入图片描述

这里用户标识和用户表关联,会员标识和会员表关联,这样就可以知道是哪个用户的哪个会员充值的金额是多少。

2 搭建我的钱包视图

首先我们需要在我的界面要搭建会员的余额显示部分
在这里插入图片描述
添加普通容器,设置10px的外边距
在这里插入图片描述
设置白色背景
在这里插入图片描述
设置一定的圆角
在这里插入图片描述
设置内边距
在这里插入图片描述
里边添加文本组件,内容改为我的钱包,文本格式改为标题H8
在这里插入图片描述
在文本组件下添加普通容器
在这里插入图片描述
添加三个普通容器
在这里插入图片描述
设置外层的容器的样式为横向排列,水平平分
在这里插入图片描述
第一个普通容器下添加两个文本组件,第一个文本组件的文本内容绑定为我们的余额
在这里插入图片描述
第二个普通容器里也添加两个文本组件,我们先显示优惠券,不绑定内容
在这里插入图片描述
第三个普通容器,我们绑定积分
在这里插入图片描述

3 创建API

当用户点击充值按钮的时候,需要将信息记录到表里并且更新会员表的余额,为此我们创建一个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)
})

充值成功后,添加返回上一页
在这里插入图片描述
回到我的页面,当点击余额的时候跳转到充值页面
在这里插入图片描述

总结

本篇我们介绍了会员充值功能的开发,包括创建充值记录表、编写API用来写入数据、搭建界面等。会员有了余额,在支付的时候我们就可以从余额进行扣减了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低代码布道师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值