目录
- [1 扩展表结构](#1 扩展表结构)
- [2 搭建后台管理功能](#2 搭建后台管理功能)
-
- [2.1 创建页面](#2.1 创建页面)
- [2.2 搭建布局](#2.2 搭建布局)
- [2.3 搭建审核方法](#2.3 搭建审核方法)
- 最终效果
- 总结
上一篇我们讲解了教练在小程序的账号注册,教练注册之后并不是直接可以使用系统,需要等待管理员进行审核。本篇讲解一下审核功能的搭建。
1 扩展表结构
目前我们的教练表只有基础的字段,需要添加审核字段,我们添加一个审核的状态字段,枚举值包括待审核、审核通过和审核不通过。

2 搭建后台管理功能
2.1 创建页面
点击创建页面的图标,添加教练审核页面

切换到布局设计,添加对应的菜单

2.2 搭建布局
回到页面设计,添加布局组件

修改布局的标题,改为教练审核

添加数据表格,数据模型选择教练扩展表

在操作列上添加两个按钮,将按钮的名称改为通过和不通过

2.3 搭建审核方法
在用户点击按钮的时候,我们要更新教练扩展表的状态为对应的审核状态,同时根据审核状态来设置用户主表的状态是启用还是禁用
在代码区点击新建,创建一个javascript方法


粘贴如下代码到编辑器里
bash
/**
* 教练审核方法
* 更新教练扩展表的审核状态,同时设置用户表的状态为1
*/
export default async function({ event, data }) {
try {
// 从data.target获取传入参数
const target = data.target || {};
const userId = target.userId; // 关联用户ID
const trainerId = target.trainerId; // 教练ID(教练扩展表的数据标识)
const auditStatus = target.auditStatus; // 审核状态
// 参数校验
if (!userId) {
$w.utils.showToast({
title: '用户ID不能为空',
icon: 'error'
});
return;
}
if (!trainerId) {
$w.utils.showToast({
title: '教练ID不能为空',
icon: 'error'
});
return;
}
if (!auditStatus) {
$w.utils.showToast({
title: '审核状态不能为空',
icon: 'error'
});
return;
}
// 显示加载中
await $w.utils.showLoading({ title: '审核中...' });
// 1. 更新教练扩展表的审核状态
const trainerResult = await $w.cloud.callDataSource({
dataSourceName: 'fit_trainer_profiles',
methodName: 'wedaUpdateV2',
params: {
data: {
aduit_status: auditStatus // 更新审核状态
},
filter: {
where: { _id: { $eq: trainerId } }
}
}
});
// 2. 根据审核状态确定用户状态
// 审核状态为2时,用户状态为1;审核状态为3时,用户状态为2
const userStatus = auditStatus === '2' ? '1' : (auditStatus === '3' ? '2' : '');
// 更新用户表的状态
const userResult = await $w.cloud.callDataSource({
dataSourceName: 'fit_users',
methodName: 'wedaUpdateV2',
params: {
data: {
status: userStatus // 根据审核状态设置用户状态
},
filter: {
where: { _id: { $eq: userId } }
}
}
});
// 隐藏加载
$w.utils.hideLoading();
// 判断更新结果
if (trainerResult.count > 0 && userResult.count > 0) {
$w.utils.showToast({
title: '审核成功',
icon: 'success'
});
return {
success: true,
message: '审核成功',
data: {
trainerUpdateCount: trainerResult.count,
userUpdateCount: userResult.count
}
};
} else {
$w.utils.showToast({
title: '审核失败,未找到对应记录',
icon: 'error'
});
return {
success: false,
message: '审核失败,未找到对应记录',
data: {
trainerUpdateCount: trainerResult.count,
userUpdateCount: userResult.count
}
};
}
} catch (error) {
console.error('审核失败:', error);
$w.utils.hideLoading();
$w.utils.showToast({
title: '审核失败,请重试',
icon: 'error'
});
return {
success: false,
message: error.message || '审核失败',
data: null
};
}
}
然后给按钮配置点击事件,通过的时候调用方法,传入入参

入参要传入方法需要的对象结构,传入三个参数用户标识、教练标识和审核状态
bash
({userId:$w.table1.cell__custom__option.record.user_id._id,trainerId:$w.table1.cell__custom__option.record._id,auditStatus:'2'})
调用完方法之后,要配置刷新表格,这样可以看到数据的更新情况。
审核不通过按钮配置相同,只是auditStatus的状态传入3
最终效果
管理员登录后台后,可以看到需要审核的教练信息,点击审核按钮既可以完成审核动作

总结
本篇我们介绍了教练账号后台开通的流程,从扩展数据表,到后台搭建页面布局,编写审核逻辑的方法。对于这种主表是用户表,业务表写入子表的场景,我们通常都会更新主子表来完成业务动作。