问题修复01-easy

parent 7f858e77
/**成长寄语汇总 */ /**成长寄语汇总 */
import { selectDataListByParam, selectOneDataByParam, selectPaginatedDataWithOrder, selectDataToTableAssociation } from "../../data/findData"; import { selectDataListByParam, selectDataCountByParam, selectOneDataByParam, selectPaginatedDataWithOrder, selectDataToTableAssociation } from "../../data/findData";
import { TABLENAME } from "../../config/dbEnum"; import { TABLENAME } from "../../config/dbEnum";
import { getCurrentSemester } from "../common/semesterService"; import { getCurrentSemester } from "../common/semesterService";
import { BizError } from "../../util/bizError"; import { BizError } from "../../util/bizError";
import { ERRORENUM } from "../../config/errorEnum"; import { ERRORENUM } from "../../config/errorEnum";
/**
* 获取所在班学生列表
*
* @param headteacherId
* @param studentName
* @param grade
* @param classId
* @param page
* @param pageSize
*/
export async function getClassStudents(
headteacherId: string,
studentName?:string,
grade?:number,
page:number = 1,
pageSize:number = 10
) {
// 1. 获取班主任所带班级
let classInfo = await selectOneDataByParam(TABLENAME.班级表, {
head_teacher_id: headteacherId,
});
if (!classInfo.data) {
throw new BizError(ERRORENUM.权限不足, '您不是班主任');
}
const classId = classInfo.data.id;
// 获取本班所有学生
let studentAll = await selectDataListByParam(TABLENAME.用户扩展信息表, {
class_id: classId,
roles: { "%like%": '3' }, // 学生角色代码
});
let students = [];
if (studentAll.data.length === 0) {
return { count: 0, dataList: [] };
}
for (let bean of studentAll.data) {
let student_id = bean.user_id;
/**获取学生基本信息 */
let student = await selectOneDataByParam(TABLENAME.统一用户表, { user_id: student_id });
let studentProfile = await selectOneDataByParam(TABLENAME.用户扩展信息表, { user_id: student_id });
// 按学生姓名筛选
if (studentName && student.data && student.data.user_name && !student.data.user_name.includes(studentName)) {
continue;
}
/**获取班级信息 */
let classInfo = null;
if (studentProfile.data && studentProfile.data.class_id) {
classInfo = await selectOneDataByParam(TABLENAME.班级表, { id: studentProfile.data.class_id });
}
// 按年级筛选
if (grade && classInfo.data && classInfo.data.grade !== grade) {
continue;
}
// 按班级筛选
if (classId && studentProfile.data && studentProfile.data.class_id !== classId) {
continue;
}
/**获取交流次数 */
let communications = await selectDataCountByParam(TABLENAME.交流记录表, {
teacher_id: headteacherId,
student_id: student_id
});
/**获取最近交流 */
let lastComm = await selectDataListByParam(TABLENAME.交流记录表, {
teacher_id: headteacherId,
student_id: student_id,
"%orderDesc%": "date",
"%limit%": 1
});
students.push({
student_id: student_id,
student_name: student.data ? student.data.user_name : '',
gender: student.data ? student.data.gender : '',
class_name: classInfo && classInfo.data ? classInfo.data.full_name : '',
communication_count: communications.data || 0,
last_communication: lastComm.data && lastComm.data.length > 0 ? {
date: lastComm.data[0].date,
content: lastComm.data[0].content ? lastComm.data[0].content.substring(0, 50) + '...' : ''
} : null
});
}
// 分页处理
let total = students.length;
let startIndex = (page - 1) * pageSize;
let endIndex = startIndex + pageSize;
let dataList = students.slice(startIndex, endIndex);
return {
count: total,
dataList
};
}
/** /**
* 获取本班学生成长寄语汇总(支持按学生ID、学期ID筛选,均为可选) * 获取本班学生成长寄语汇总(支持按学生ID、学期ID筛选,均为可选)
......
...@@ -52,16 +52,28 @@ export async function createCase(data: any) { ...@@ -52,16 +52,28 @@ export async function createCase(data: any) {
* @param page 页码 * @param page 页码
* @param pageSize 每页大小 * @param pageSize 每页大小
*/ */
export async function getCaseList(teacherId: string, case_name?: string, page: number = 1, pageSize: number = 10) { export async function getCaseList(teacherId: string, case_name?: string, semesterId?: number, page: number = 1, pageSize: number = 10) {
/**获取当前学期 */
let semester = await getCurrentSemester();
let selectParam: any = { let selectParam: any = {
teacher_id: teacherId teacher_id: teacherId
}; };
if (semester) { let semesterName = "";
selectParam.semester_id = semester.id;
if (!semesterId) {
/**获取当前学期 */
let semester = await getCurrentSemester();
if (semester) {
selectParam.semester_id = semester.id;
semesterName = semester.name
}
} else {
selectParam.semester_id = semesterId;
let semester = await selectOneDataByParam(TABLENAME.学期表, {id: semesterId}, ["id", "name"]);
if (semester) {
semesterName = semester.data.name
}
} }
// 按案例名称模糊搜索 // 按案例名称模糊搜索
...@@ -103,6 +115,7 @@ export async function getCaseList(teacherId: string, case_name?: string, page: n ...@@ -103,6 +115,7 @@ export async function getCaseList(teacherId: string, case_name?: string, page: n
let dataList = result.data.map(item => ({ let dataList = result.data.map(item => ({
id: item.id, id: item.id,
case_name: item.case_name, case_name: item.case_name,
semester_name: semesterName,
attachment: formatAttachmentField(item.attachment), attachment: formatAttachmentField(item.attachment),
upload_time: item.upload_time upload_time: item.upload_time
})); }));
......
...@@ -21,21 +21,25 @@ import { COMMUNICATIONTYPE } from "../../config/enum"; ...@@ -21,21 +21,25 @@ import { COMMUNICATIONTYPE } from "../../config/enum";
* @param page 页码 * @param page 页码
* @param pageSize 每页大小 * @param pageSize 每页大小
*/ */
export async function getMyStudents(teacherId:string, studentName?:string, grade?:number, classId?:number,page:number = 1, pageSize:number = 10) { export async function getMyStudents(teacherId:string, studentName?:string, semesterId?:number, grade?:number, classId?:number,page:number = 1, pageSize:number = 10) {
/**获取当前学期 */ if (!semesterId) {
let semester = await getCurrentSemester(); /**获取当前学期 */
let semester = await getCurrentSemester();
if (!semester) {
return { if (!semester) {
count: 0, return {
dataList: [] count: 0,
}; dataList: []
};
}
semesterId = semester.id;
} }
/**获取匹配的学生 */ /**获取匹配的学生 */
let matchParam: any = { let matchParam: any = {
teacher_id: teacherId, teacher_id: teacherId,
semester_id: semester.id, semester_id: semesterId,
is_active: true is_active: true
}; };
...@@ -122,19 +126,23 @@ export async function getMyStudents(teacherId:string, studentName?:string, grade ...@@ -122,19 +126,23 @@ export async function getMyStudents(teacherId:string, studentName?:string, grade
* @param teacherId 导师ID * @param teacherId 导师ID
* @param studentId 学生ID * @param studentId 学生ID
*/ */
export async function getStudentDetail(teacherId: string, studentId: string) { export async function getStudentDetail(teacherId: string, studentId: string, semesterId: string) {
/**获取当前学期 */ /**获取当前学期 */
let semester = await getCurrentSemester(); if (!semesterId) {
let semester = await getCurrentSemester();
if (!semester) {
throw new BizError(ERRORENUM.操作失败, '当前没有进行中的学期'); if (!semester) {
throw new BizError(ERRORENUM.操作失败, '当前没有进行中的学期');
}
semesterId = semester.id;
} }
/**验证师生关系 */ /**验证师生关系 */
let match = await selectOneDataByParam(TABLENAME.师生匹配表, { let match = await selectOneDataByParam(TABLENAME.师生匹配表, {
teacher_id: teacherId, teacher_id: teacherId,
student_id: studentId, student_id: studentId,
semester_id: semester.id, semester_id: semesterId,
is_active: true is_active: true
}); });
...@@ -218,7 +226,7 @@ export async function getStudentDetail(teacherId: string, studentId: string) { ...@@ -218,7 +226,7 @@ export async function getStudentDetail(teacherId: string, studentId: string) {
* @param param.attachment 上传文件附件(可选),支持数组格式 * @param param.attachment 上传文件附件(可选),支持数组格式
*/ */
export async function addCommunication(teacherId: string, param: any) { export async function addCommunication(teacherId: string, param: any) {
let { student_ids, subtype_id, date, location, content, attachment } = param; let { student_ids, semesterId, subtype_id, date, location, content, attachment } = param;
/**参数校验 */ /**参数校验 */
if (!student_ids || student_ids.length === 0) { if (!student_ids || student_ids.length === 0) {
...@@ -238,9 +246,12 @@ export async function addCommunication(teacherId: string, param: any) { ...@@ -238,9 +246,12 @@ export async function addCommunication(teacherId: string, param: any) {
} }
/**获取当前学期 */ /**获取当前学期 */
let semester = await getCurrentSemester(); if (!semesterId) {
if (!semester) { let semester = await getCurrentSemester();
throw new BizError(ERRORENUM.操作失败, '当前没有进行中的学期'); if (!semester) {
throw new BizError(ERRORENUM.操作失败, '当前没有进行中的学期');
}
semesterId = semester.id;
} }
/**获取子类型信息 */ /**获取子类型信息 */
...@@ -260,7 +271,7 @@ export async function addCommunication(teacherId: string, param: any) { ...@@ -260,7 +271,7 @@ export async function addCommunication(teacherId: string, param: any) {
let match = await selectOneDataByParam(TABLENAME.师生匹配表, { let match = await selectOneDataByParam(TABLENAME.师生匹配表, {
teacher_id: teacherId, teacher_id: teacherId,
student_id: studentId, student_id: studentId,
semester_id: semester.id, semester_id: semesterId,
is_active: true is_active: true
}); });
...@@ -279,7 +290,7 @@ export async function addCommunication(teacherId: string, param: any) { ...@@ -279,7 +290,7 @@ export async function addCommunication(teacherId: string, param: any) {
// 添加交流记录 // 添加交流记录
await addData(TABLENAME.交流记录表, { await addData(TABLENAME.交流记录表, {
main_type: COMMUNICATIONTYPE.师生交流, main_type: COMMUNICATIONTYPE.师生交流,
semester_id: semester.id, semester_id: semesterId,
student_id: studentId, student_id: studentId,
teacher_id: teacherId, teacher_id: teacherId,
date: date, date: date,
......
/**导师信息 */
import { selectDataListByParam, selectOneDataByParam } from "../../data/findData";
import { updateManyData } from "../../data/updateData";
import { addData } from "../../data/addData";
import { delData } from "../../data/delData";
import { TABLENAME } from "../../config/dbEnum";
import { BizError } from "../../util/bizError";
import { ERRORENUM } from "../../config/errorEnum";
import { getCurrentSemester } from "../common/semesterService";
/**
* 导师信息
* @param teacherId 导师ID
*/
export async function teacherInfo(teacherId: string) {
// 获取UAC基础信息
let uacUser = await selectOneDataByParam(TABLENAME.统一用户表, { user_id: teacherId });
if (!uacUser.data || !uacUser.data.user_id) {
throw new BizError(ERRORENUM.未找到数据, `库中不存在teacher_id=${teacherId}的导师`);
}
// 获取扩展信息
let profile = await selectOneDataByParam(TABLENAME.用户扩展信息表, { user_id: teacherId });
// 获取任教班级(返回班级名称,用于详情展示)
let teacherClassList = await selectDataListByParam(TABLENAME.导师任教班级表, { teacher_id: teacherId });
let classNames = [];
let classIds = [];
for (let item of teacherClassList.data) {
let classInfo = await selectOneDataByParam(TABLENAME.班级表, { id: item.class_id });
if (classInfo.data) {
classNames.push(classInfo.data.full_name);
classIds.push(item.class_id);
}
}
// 获取任教科目
let subjectList = await selectDataListByParam(TABLENAME.教师任教科目表, { teacher_id: teacherId });
let subjects = subjectList.data.map((item: any) => item.subject);
// 返回字段与列表保持一致,同时保留编辑所需的ID字段
let dataInfo = {
teacher_id: uacUser.data.user_id,
teacher_name: uacUser.data.user_name,
gender: uacUser.data.gender,
phone: uacUser.data.phone,
email: uacUser.data.email,
political_status: profile.data ? profile.data.political_status : "",
is_class_teacher: profile.data ? profile.data.is_class_teacher : false,
max_students: profile.data ? profile.data.max_students : 0,
// 用于详情展示的字符串
classes: classNames.join('、'),
subjects: subjects.join('、'),
// 用于编辑时回显的ID数组
class_ids: classIds,
subject_list: subjects
};
return { dataInfo };
}
/**
* 导师信息-修改
* @param teacherId 导师ID
* @param param 修改参数
* @param param.political_status 政治面貌
* @param param.is_class_teacher 是否班主任
* @param param.max_students 最大可带学生数
* @param param.class_ids 任教班级ID数组
* @param param.subjects 任教科目数组
* @param param.semester_id 学期ID(可选,默认使用当前学期)
*/
export async function teacherUpdate(teacherId: string, param: any) {
/**校验导师是否存在 */
let profile = await selectOneDataByParam(TABLENAME.用户扩展信息表, { user_id: teacherId });
if (!profile.data) {
throw new BizError(ERRORENUM.未找到数据, `库中不存在teacher_id=${teacherId}的导师`);
}
/**获取当前学期ID(如果参数中没有传入) */
let semesterId = param.semester_id;
if (!semesterId) {
let semester = await getCurrentSemester();
if (!semester) {
throw new BizError(ERRORENUM.参数错误, '无法获取当前学期,请传入 semester_id 参数');
}
semesterId = semester.id;
}
/**更新导师扩展信息 */
let updateData: any = {};
if (param.political_status !== undefined) updateData.political_status = param.political_status;
if (param.is_class_teacher !== undefined) updateData.is_class_teacher = param.is_class_teacher;
if (param.max_students !== undefined) updateData.max_students = param.max_students;
if (Object.keys(updateData).length > 0) {
await updateManyData(TABLENAME.用户扩展信息表, { user_id: teacherId }, updateData);
}
/**更新任教班级(teacher_class 表没有 semester_id,直接操作) */
if (param.class_ids && Array.isArray(param.class_ids)) {
// 先删除原有任教班级
await delData(TABLENAME.导师任教班级表, { teacher_id: teacherId });
// 批量新增
for (let classId of param.class_ids) {
await addData(TABLENAME.导师任教班级表, {
teacher_id: teacherId,
class_id: classId
});
}
}
/**更新任教科目(teacher_subject 表需要 semester_id) */
if (param.subjects && Array.isArray(param.subjects)) {
// 先删除该学期原有的任教科目
await delData(TABLENAME.教师任教科目表, {
teacher_id: teacherId,
semester_id: semesterId
});
// 批量新增,created_at 有默认值,不需要显式传入
for (let subject of param.subjects) {
let subjectStr = String(subject).trim();
if (subjectStr) {
await addData(TABLENAME.教师任教科目表, {
teacher_id: teacherId,
subject: subjectStr,
semester_id: semesterId
// created_at 有默认值 DataTypes.NOW,会自动填充
});
}
}
}
return { isSuccess: true };
}
...@@ -31,7 +31,7 @@ export class httpServer { ...@@ -31,7 +31,7 @@ export class httpServer {
httpServer.use(bodyParser.json({ limit: "500kb" })); httpServer.use(bodyParser.json({ limit: "500kb" }));
routers.setRouter(httpServer); routers.setRouter(httpServer);
httpServer.use(httpErrorHandler); httpServer.use(httpErrorHandler);
const root = path.join(__dirname, "../../public"); const root = path.join(__dirname, "../../public/dist");
httpServer.use(express.static(root)) httpServer.use(express.static(root))
// 使用 fallback 函数 // 使用 fallback 函数
httpServer.use(fallback('index.html', { root })); httpServer.use(fallback('index.html', { root }));
......
...@@ -24,6 +24,9 @@ export function setRouter(httpServer) { ...@@ -24,6 +24,9 @@ export function setRouter(httpServer) {
httpServer.post('/api/headteacher/match/export', checkUser, checkClassTeacher(), asyncHandler(exportClassMatchList)); httpServer.post('/api/headteacher/match/export', checkUser, checkClassTeacher(), asyncHandler(exportClassMatchList));
// ===== 成长寄语汇总 ===== // ===== 成长寄语汇总 =====
/** 获取所在班学生列表 - growthMessageSummary.ts */
httpServer.post('/api/headteacher/student/list', checkUser, checkClassTeacher(), asyncHandler(getClassStudents));
/** 获取本班学生成长寄语汇总 - growthMessageSummary.ts */ /** 获取本班学生成长寄语汇总 - growthMessageSummary.ts */
httpServer.post('/api/headteacher/growth/list', checkUser, checkClassTeacher(), asyncHandler(getClassGrowthMessages)); httpServer.post('/api/headteacher/growth/list', checkUser, checkClassTeacher(), asyncHandler(getClassGrowthMessages));
...@@ -104,6 +107,31 @@ async function exportClassMatchList(req, res) { ...@@ -104,6 +107,31 @@ async function exportClassMatchList(req, res) {
/** /**
* 获取所在班学生列表
* @param studentName 学生姓名(可选)
* @param grade 年级(可选)
* @param classId 班级ID(可选)
* @param page 页码
* @param pageSize 每页大小
*/
async function getClassStudents(req, res) {
const userInfo = req.userInfo;
let reqConf = {studentName:'String', grade:'Number', page:'Number', pageSize:'Number'};
const NotMustHaveKeys = ['studentName', 'grade', 'pageSize'];
let { studentName, grade, page, pageSize } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await growthMessageSummaryBiz.getClassStudents(
userInfo.userId,
studentName,
grade,
page || 1,
pageSize || 10
);
res.success(result);
}
/**
* 获取本班学生成长寄语汇总 * 获取本班学生成长寄语汇总
* @param studentId 学生ID(可选) * @param studentId 学生ID(可选)
* @param semesterId 学期ID(可选) * @param semesterId 学期ID(可选)
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
import asyncHandler from 'express-async-handler'; import asyncHandler from 'express-async-handler';
import * as teacherInfoBiz from '../biz/teacher/teacherInfo';
import * as myStudentsBiz from '../biz/teacher/myStudents'; import * as myStudentsBiz from '../biz/teacher/myStudents';
import * as communicationBiz from '../biz/teacher/communication'; import * as communicationBiz from '../biz/teacher/communication';
import * as growthMessageBiz from '../biz/teacher/growthMessage'; import * as growthMessageBiz from '../biz/teacher/growthMessage';
...@@ -23,6 +24,9 @@ export function setRouter(httpServer) { ...@@ -23,6 +24,9 @@ export function setRouter(httpServer) {
/** 学生详情 - myStudents.ts */ /** 学生详情 - myStudents.ts */
httpServer.post('/api/teacher/student/detail', checkUser, checkRole(USERROLE.教师), asyncHandler(getStudentDetail)); httpServer.post('/api/teacher/student/detail', checkUser, checkRole(USERROLE.教师), asyncHandler(getStudentDetail));
/** 历史导师 - teacherInfo.ts */
httpServer.post('/api/teacher/student/history', checkUser, checkRole(USERROLE.教师), asyncHandler(getHistoryTeacher));
// ===== 交流记录 ===== // ===== 交流记录 =====
/** 获取学生选项列表(用于下拉选择) - communication.ts */ /** 获取学生选项列表(用于下拉选择) - communication.ts */
...@@ -137,6 +141,12 @@ export function setRouter(httpServer) { ...@@ -137,6 +141,12 @@ export function setRouter(httpServer) {
// ===== 数据看板 ===== // ===== 数据看板 =====
/** 导师首页数据 - dashboard.ts */ /** 导师首页数据 - dashboard.ts */
httpServer.post('/api/teacher/dashboard', checkUser, checkRole(USERROLE.教师), asyncHandler(teacherDashboard)); httpServer.post('/api/teacher/dashboard', checkUser, checkRole(USERROLE.教师), asyncHandler(teacherDashboard));
// ===== 个人信息 =====
/** 导师详情 - teacherInfo.ts */
httpServer.post('/api/teacher/teacher/info', checkUser, checkRole(USERROLE.教师), asyncHandler(teacherInfo));
/** 修改导师信息 - teacherInfo.ts */
httpServer.post('/api/teacher/teacher/update', checkUser, checkRole(USERROLE.教师), asyncHandler(teacherUpdate));
} }
/** /**
...@@ -150,13 +160,14 @@ export function setRouter(httpServer) { ...@@ -150,13 +160,14 @@ export function setRouter(httpServer) {
async function getMyStudents(req, res) { async function getMyStudents(req, res) {
const userInfo = req.userInfo; const userInfo = req.userInfo;
let reqConf = {studentName:'String', grade:'Number', classId:'Number', page:'Number', pageSize:'Number'}; let reqConf = {studentName:'String', semesterId:'Number', grade:'Number', classId:'Number', page:'Number', pageSize:'Number'};
const NotMustHaveKeys = ['studentName', 'grade', 'classId', 'pageSize']; const NotMustHaveKeys = ['studentName', 'semesterId', 'grade', 'classId', 'pageSize'];
let { studentName, grade, classId, page, pageSize } = eccReqParamater(reqConf, req.body, NotMustHaveKeys); let { studentName, semesterId, grade, classId, page, pageSize } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await myStudentsBiz.getMyStudents( let result = await myStudentsBiz.getMyStudents(
userInfo.userId, userInfo.userId,
studentName, studentName,
semesterId,
grade, grade,
classId, classId,
page || 1, page || 1,
...@@ -172,11 +183,11 @@ async function getMyStudents(req, res) { ...@@ -172,11 +183,11 @@ async function getMyStudents(req, res) {
async function getStudentDetail(req, res) { async function getStudentDetail(req, res) {
const userInfo = req.userInfo; const userInfo = req.userInfo;
let reqConf = {studentId:'String'}; let reqConf = {studentId:'String', semesterId:'Number'};
const NotMustHaveKeys = []; const NotMustHaveKeys = [];
let { studentId } = eccReqParamater(reqConf, req.body, NotMustHaveKeys); let { studentId, semesterId } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await myStudentsBiz.getStudentDetail(userInfo.userId, studentId); let result = await myStudentsBiz.getStudentDetail(userInfo.userId, studentId, semesterId);
res.success(result); res.success(result);
} }
...@@ -192,12 +203,13 @@ async function getStudentDetail(req, res) { ...@@ -192,12 +203,13 @@ async function getStudentDetail(req, res) {
async function addCommunication(req, res) { async function addCommunication(req, res) {
const userInfo = req.userInfo; const userInfo = req.userInfo;
let reqConf = {student_ids:'[String]', subtype_id:'Number', date:'String', location:'String', content:'String', attachment:'[String]'}; let reqConf = {student_ids:'[String]', semesterId:'Number', subtype_id:'Number', date:'String', location:'String', content:'String', attachment:'[String]'};
const NotMustHaveKeys = ['location', 'attachment']; const NotMustHaveKeys = ['location', 'attachment'];
let { student_ids, subtype_id, date, location, content, attachment } = eccReqParamater(reqConf, req.body, NotMustHaveKeys); let { student_ids, semesterId, subtype_id, date, location, content, attachment } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let commData = { let commData = {
student_ids, student_ids,
semesterId,
subtype_id, subtype_id,
date, date,
location: location || '', location: location || '',
...@@ -805,11 +817,11 @@ async function createCase(req, res) { ...@@ -805,11 +817,11 @@ async function createCase(req, res) {
async function getCaseList(req, res) { async function getCaseList(req, res) {
const userInfo = req.userInfo; const userInfo = req.userInfo;
let reqConf = {case_name:'String', page:'Number', pageSize:'Number'}; let reqConf = {case_name:'String', semesterId:'Number', page:'Number', pageSize:'Number'};
const NotMustHaveKeys = ['case_name', 'pageSize']; const NotMustHaveKeys = ['case_name', 'semesterId', 'pageSize'];
let { case_name, page, pageSize } = eccReqParamater(reqConf, req.body, NotMustHaveKeys); let { case_name, semesterId, page, pageSize } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let result = await caseBiz.getCaseList(userInfo.userId, case_name, page || 1, pageSize || 10); let result = await caseBiz.getCaseList(userInfo.userId, case_name, semesterId, page || 1, pageSize || 10);
res.success(result); res.success(result);
} }
...@@ -872,6 +884,54 @@ async function teacherDashboard(req, res) { ...@@ -872,6 +884,54 @@ async function teacherDashboard(req, res) {
res.success(result); res.success(result);
} }
/**
* 导师详情
* @param teacherId 教师user_id
*/
async function teacherInfo(req, res) {
const userInfo = req.userInfo;
let result = await teacherInfoBiz.teacherInfo(userInfo.user_id);
res.success(result);
}
/**
* 修改导师信息
* @param teacherId 教师user_id
* @param political_status 政治面貌
* @param is_class_teacher 是否班主任
* @param max_students 最大可带学生数
* @param class_ids 班级ID数组
* @param subjects 任教科目数组
*/
async function teacherUpdate(req, res) {
const userInfo = req.userInfo;
let reqConf = {political_status:'String', is_class_teacher:'Boolean', max_students:'Number', class_ids:'[Number]', subjects:'[String]'};
const NotMustHaveKeys = ['political_status', 'is_class_teacher', 'max_students', 'class_ids', 'subjects'];
let { political_status, is_class_teacher, max_students, class_ids, subjects } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let updateData = {
political_status,
is_class_teacher,
max_students,
class_ids,
subjects
};
let result = await teacherInfoBiz.teacherUpdate(userInfo.user_id, updateData);
res.success(result);
}
/**
* 学生历年导师列表
* @param req
* @param res
*/
async function getHistoryTeacher(req, res) {
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment