export default async function afterUpdate({ event, data }) {
const order = data.target;
const orderId = order._id;
const customer = order.rel_customer_id;
const product = order.rel_prod_id;
const order_status = $w.select10.value;
if (order_status === '3') {
try {
await $w.utils.showLoading({ title: '正在开课...' });
const studentRes = await $w.cloud.callDataSource({
dataSourceName: 'MBA_StudentProfiles',
methodName: 'wedaGetRecordsV2',
params: {
filter: { where: { rel_customer_id: { $eq: customer._id } } },
select: { $master: true }
}
});
let studentId;
if (studentRes.records && studentRes.records.length > 0) {
const existingStudent = studentRes.records[0];
await $w.cloud.callDataSource({
dataSourceName: 'MBA_StudentProfiles',
methodName: 'wedaUpdateV2',
params: {
data: { status: '1',
enroll_date: Date.now(),
},
filter: { where: { _id: { $eq: existingStudent._id } } }
}
});
studentId = existingStudent._id;
} else {
const newStudentRes = await $w.cloud.callDataSource({
dataSourceName: 'MBA_StudentProfiles',
methodName: 'wedaCreateV2',
params: {
data: {
student_name: customer.name,
mobile: customer.phone,
rel_customer_id: { _id: customer._id },
openid: null,
status: '1',
enroll_date: Date.now(),
}
}
});
studentId = newStudentRes.id;
}
const expiryDate = new Date();
expiryDate.setFullYear(expiryDate.getFullYear() + 1);
await $w.cloud.callDataSource({
dataSourceName: 'MBA_LearningCards',
methodName: 'wedaCreateV2',
params: {
data: {
rel_student_id: { _id: studentId },
rel_order_id: { _id: orderId },
rel_prod_id: { _id: product._id },
total_hours: order.product_hours || product.total_hours || 0,
remain_hours: order.product_hours || product.total_hours || 0,
assign_status: '1',
expiry_date: expiryDate.getTime(),
}
}
});
console.log(`学员档案和课时卡创建成功:订单 ${orderId}`);
$w.utils.showToast({ title: '自动化开课成功', icon: 'success' });
} catch (error) {
console.error('自动化开课失败:', error);
$w.utils.showToast({ title: '开课失败:' + error.message, icon: 'error' });
} finally {
$w.utils.hideLoading();
}
}
}
export default async function login({ event, data }) {
try {
$w.utils.showLoading({ title: '加载工作台中...' });
const phone = $w.auth.currentUser?.phone || $w.input1.value;
if (!phone) {
return $w.utils.showToast({ title: '获取授权信息失败,请重新登录', icon: 'error' });
}
const channelRes = await $w.cloud.callDataSource({
dataSourceName: 'MBA_ChannelPartners',
methodName: 'wedaGetRecordsV2',
params: {
filter: { where: { phone: { $eq: phone } } },
select: { $master: true }
}
});
console.log("channelRes", channelRes);
if (channelRes.records && channelRes.records.length > 0) {
const channelInfo = channelRes.records[0];
$w.app.dataset.state.currentChannel = channelInfo;
$w.app.dataset.state.userRoles = ['ROLE_CHANNEL'];
$w.utils.showToast({ title: '渠道登录成功', icon: 'success' });
return;
}
const userRes = await $w.cloud.callDataSource({
dataSourceName: 'MBA_Users',
methodName: 'wedaGetRecordsV2',
params: {
filter: { where: { phone: { $eq: phone } } },
select: { $master: true, department_id: true, position_id: true }
}
});
if (!userRes.records.length) {
return $w.utils.showToast({ title: '该手机号未在系统中注册,请联系管理员', icon: 'error' });
}
const user = userRes.records[0];
console.log("user", user);
$w.cloud.callDataSource({
dataSourceName: 'MBA_Users',
methodName: 'wedaUpdateV2',
params: {
data: { last_login: Date.now() },
filter: { where: { _id: { $eq: user._id } } }
}
}).catch(e => console.error('更新登录时间失败', e));
const roleRes = await $w.cloud.callDataSource({
dataSourceName: 'MBA_RoleUsers',
methodName: 'wedaGetRecordsV2',
params: {
filter: { where: { user_id: { $eq: user._id } } },
select: { $master: true, role_id: true }
}
});
console.log("roleRes", roleRes);
const roleCodes = roleRes.records.map(item => item.role_id?.code).filter(Boolean);
console.log("roleCodes", roleCodes);
const userInfo = { ...user, deptInfo: user.department_id, postInfo: user.position_id };
const userType = getUserTypeByPosition(user.position_id);
$w.app.dataset.state.currentUser = userInfo;
$w.app.dataset.state.userRoles = roleCodes;
$w.app.dataset.state.userType = userType;
} catch (e) {
console.error('初始化门户失败', e);
$w.utils.showToast({ title: '系统加载失败,请刷新重试', icon: 'error' });
} finally {
$w.utils.hideLoading();
}
}
export function getUserTypeByPosition(position) {
if (!position) return 'employee';
const positionName = position.name || '';
const positionCode = position.code || '';
const positionToTypeMap = {
'销售': 'sales',
'销售经理': 'sales-manager',
'销售总监': 'sales-manager',
'教师': 'teacher',
'讲师': 'teacher',
'教授': 'teacher',
'客服': 'employee',
'行政': 'employee',
'财务': 'finance'
};
if (positionCode) {
if (positionCode.includes('SALES')) return 'sales';
if (positionCode.includes('TEACHER')) return 'teacher';
if (positionCode.includes('MANAGER')) return 'sales-manager';
if (positionCode.includes('POST-FM')) return 'finance';
}
return positionToTypeMap[positionName] || 'employee';
}