diff --git a/AES-front/src/api/admin.js b/AES-front/src/api/admin.js index e9d4817..e946ae8 100644 --- a/AES-front/src/api/admin.js +++ b/AES-front/src/api/admin.js @@ -43,4 +43,8 @@ export default { findAllTeacher: (data) => request.post('/adminusers/findAllTeacher', data), findClassNotInCourse: (data) => request.post('/classes/findClassNotInCourse', data), + addClassToCourse: (data) => request.post('/classes/addClassToCourse', data), + findClassStudentsByIdPage: (data) => request.post('/classes/findClassStudentsByIdPage', data), + deleteClassStudentsById: (data) => request.post('/classes/deleteClassStudentsById', data), + getUserAdd: (data) => request.post('/user/getUserAdd', data), } diff --git a/AES-front/src/views/admin/class/class-list.vue b/AES-front/src/views/admin/class/class-list.vue index 60fc525..7dfd6d7 100644 --- a/AES-front/src/views/admin/class/class-list.vue +++ b/AES-front/src/views/admin/class/class-list.vue @@ -264,13 +264,11 @@ const onDeleteClass = async (classid)=>{ } } const onStudentClass = async (classid)=>{ - // const {id} = classid - const id=1 + const {id} = classid await router.push({name: 'AdminClassStudents', params: {clId: id}}) } const onAssistantClass = async (classid)=>{ - // const {id} = classid - const id=1 + const {id} = classid await router.push({name: 'AdminClassAssistant', params: {clId: id}}) } const onEditClass = async (classid)=>{ diff --git a/AES-front/src/views/admin/class/class-student-list.vue b/AES-front/src/views/admin/class/class-student-list.vue index beb8b26..446cbfd 100644 --- a/AES-front/src/views/admin/class/class-student-list.vue +++ b/AES-front/src/views/admin/class/class-student-list.vue @@ -11,7 +11,7 @@ :single-line="false" ref="table" :columns="columns" - :data="classList" + :data="studentList" :loading="loading" :pagination="paginationReactive" :row-key="rowKey" @@ -34,8 +34,8 @@ const userStore = useUserStore() const router = useRouter() const route = useRoute() const loading = ref(true) -const classList = - ref([{studentNo:"211310509",chineseName:"张三",username:"zhangsan",banji:"计算机2101",email:"2286848422@qq.com"}]) +const studentList = + ref([]) const {clId} = route.params const cIId=parseInt(clId) const options = ref([]) @@ -131,7 +131,7 @@ const queryByPage = async ()=>{ paginationReactive.page = pageNum paginationReactive.pageSize = pageSize paginationReactive.itemCount = total - classList.value=list.map((item,i)=>{ + studentList.value=list.map((item,i)=>{ if (item.username===''||item.username===null){ item.username='请学生注册' } @@ -147,8 +147,8 @@ const onChangePage = (page) => { queryByPage() } } -const onDeleteClass = async (classId)=>{ - classInfoValue.value.userId = classId.id +const onDeleteClass = async (student)=>{ + classInfoValue.value.userId = student.id try { await api.deleteClassStudentsById({...classInfoValue.value}) $message.success("删除成功") diff --git a/AES-front/src/views/admin/course/course-list.vue b/AES-front/src/views/admin/course/course-list.vue index 76e012e..af3ef90 100644 --- a/AES-front/src/views/admin/course/course-list.vue +++ b/AES-front/src/views/admin/course/course-list.vue @@ -144,11 +144,11 @@ const onUpdatePageSize = (pageSize) => { paginationReactive.page = 1; queryByPage(1) } -const onBanjiCourse= async (classId)=>{ - const { id } = classId +const onBanjiCourse= async (courseId)=>{ + const { id } = courseId try { await router.push({ name: - 'AdminClassManage', query: { classId: id + 'AdminClassManage', query: { courseId: id } }) }catch (err){ $message.error('无法查看') diff --git a/AES-front/src/views/admin/course/view-classes-not-in-course.vue b/AES-front/src/views/admin/course/view-classes-not-in-course.vue index 5b99545..a52ba95 100644 --- a/AES-front/src/views/admin/course/view-classes-not-in-course.vue +++ b/AES-front/src/views/admin/course/view-classes-not-in-course.vue @@ -33,7 +33,7 @@ style="margin-left: 30px" type="primary" :loading="queryLoading" - @click="getClassesNotInExam" + @click="getClassesNotInCourse" > 查询 @@ -80,11 +80,11 @@ const options1 = const options2 = ref([]) const queryLoading = ref(false) const teacherInfoValue = ref({ - schoolId: '1', + // schoolId: '1', teacherId: '', }) const teacherId = ref(0) -const classes = ref([{id:1,name:'班级1',teacherName:'黄秋波',studentNum:40}]) +const classes = ref([]) const loading = ref(false) const otherSchool = ref(false) const columns = [ @@ -130,7 +130,8 @@ const columns = [ return h( ExamClassesAddActions, { - onClickAdd: () => addClassToExam(row), + onClickAdd: () => + addClassToCourse(row), onClickStudentInfo: () => onStudentClass(row), showStudentInfoButton: isAdmin || isTeacher, onClickAssistant: () => onAssistantClass(row), @@ -221,11 +222,11 @@ const onStudentClass = (classId)=>{ const {id} = classId router.push({name: 'AdminClassStudents',params:{clId: id}}) } -const addClassToExam = async (classId) => { +const addClassToCourse = async (classId) => { const {id} = classId try { - await api.addClassToExam({ - examId: examId, + await api.addClassToCourse({ + courseId:courseId, classId: id, history:history }) diff --git a/AES/src/main/java/com/example/aes/user/controller/ClassesController.java b/AES/src/main/java/com/example/aes/user/controller/ClassesController.java index e4f0f5b..ced0b70 100644 --- a/AES/src/main/java/com/example/aes/user/controller/ClassesController.java +++ b/AES/src/main/java/com/example/aes/user/controller/ClassesController.java @@ -3,6 +3,8 @@ package com.example.aes.user.controller; import com.example.aes.global.model.DecodeToken; import com.example.aes.global.model.PageBean; import com.example.aes.global.model.RespBean; +import com.example.aes.user.dao.ClassesDaoI; +import com.example.aes.user.dao.ClassstudentsDaoI; import com.example.aes.user.model.DataGrid; import com.example.aes.user.model.Json; import com.example.aes.user.model.PMClasses; @@ -25,16 +27,16 @@ public class ClassesController{ @Autowired private ClassesServiceI classesServiceI; // private int classId, userId, examId,paperexamId,ClassTimeId; -// @Autowired -// private ClassstudentsDaoI classstudentsDao; + @Autowired + private ClassstudentsDaoI classstudentsDao; // @Autowired // private ExamClassesDaoI examclassesDao; // @Autowired // private ExamClasseshisDaoI examClasseshisDaoI; // @Autowired // private PaperExamClassesDaoI paperexamclassesDao; -// @Autowired -// private ClassesDaoI classesDao; + @Autowired + private ClassesDaoI classesDao; // @Autowired // private ExamServiceI examService; // @@ -106,12 +108,42 @@ public class ClassesController{ return RespBean.error("删除班级失败", result); } } + @PostMapping("/addClassToCourse") + public RespBean addClassToCourse(@RequestBody UClass uClass,HttpServletRequest request) // 添加班级到课程中 + { + + classesServiceI.addClassToCourse(uClass); + return RespBean.ok("添加班级成功"); + } + @PostMapping("/addClass") public RespBean addClass(@RequestBody PMClasses pmclasses) // 添加班级 { classesServiceI.addClass(pmclasses); return RespBean.ok("添加班级成功"); } + @PostMapping("/findClassStudentsByIdPage") + public RespBean findClassStudentsByIdPage(@RequestBody PageBean pageBean) { + if (pageBean.getPageNum() < 1 || pageBean.getPageSize() < 1) + return RespBean.error("参数错误!"); + int classId = pageBean.getId(); + + DataGrid users = classesServiceI.findClassStudentsByIdPage(classId, pageBean.getPageNum(), pageBean.getPageSize()); + return RespBean.ok("查询班级所有学生信息成功", users); + } + @PostMapping("/deleteClassStudentsById") + public RespBean deleteClassStudentsById(@RequestBody UClass uClass) // 通过编号删除班级学生 + { + boolean result = classesServiceI.deleteClassStudentsByUserId(uClass.getClassId(), uClass.getUserId()); + if (result == true) { + int studentsNum = classstudentsDao.getClassStudentsNum(uClass.getClassId()); + classesDao.updateClassStudentsNum(uClass.getClassId(), studentsNum); + return RespBean.ok("删除班级学生成功"); + } else { + return RespBean.error("删除班级学生失败"); + } + + } @PostMapping("/findClassNotInCourse") public RespBean findClassNotInCourse(@RequestBody UClass uClass, HttpServletRequest request) // 查看参与课程的班级 { diff --git a/AES/src/main/java/com/example/aes/user/controller/UserController.java b/AES/src/main/java/com/example/aes/user/controller/UserController.java index db0bf9e..3ca0193 100644 --- a/AES/src/main/java/com/example/aes/user/controller/UserController.java +++ b/AES/src/main/java/com/example/aes/user/controller/UserController.java @@ -3,6 +3,8 @@ package com.example.aes.user.controller; import com.auth0.jwt.exceptions.JWTDecodeException; import com.example.aes.global.model.DecodeToken; import com.example.aes.global.model.RespBean; +import com.example.aes.user.dao.AdminusersDaoI; +import com.example.aes.user.dao.ClassesDaoI; import com.example.aes.user.model.*; import com.example.aes.user.service.UserServiceI; import com.example.aes.user.dao.ClassstudentsDaoI; @@ -29,6 +31,10 @@ public class UserController { private UserServiceI userService; @Resource private ClassstudentsDaoI classstudentsDao; + @Resource + private ClassesDaoI classesDao; + @Resource + private AdminusersDaoI adminusersDao; // 修改用户信息 @PostMapping("/editUserInfo") public RespBean editUserInfo(@RequestBody PMUser user, HttpServletRequest request) { @@ -120,6 +126,82 @@ public class UserController { return RespBean.error("获取学生信息失败"); } } + @PostMapping("/getUserAdd") + public RespBean getUserAdd(@RequestBody PMUser user1) // 添加学生的信息 + { + String studentNo = user1.getStudentNo(); + String chineseName = user1.getChineseName(); + String username = ""; + String banji = user1.getBanji(); + String sessionId = ""; + String password = ""; + int classId = user1.getId(); + + try { + Classes onclass = classesDao.get(Classes.class, classId); + if (onclass != null) { + int teacherId = onclass.getTeacherId(); + Adminusers adminuser = adminusersDao.get(Adminusers.class, teacherId); + if (adminuser != null) { +// int schoolId = adminuser.getSchoolId(); + Users user = userService.findUserByStudentNo(studentNo); // 用户信息 + if (user != null) { + boolean result = classstudentsDao.findClassStudentByUserId(user.getId(), classId); // 如果为true则表明该学生已在表中 + if (result) { + return RespBean.error("该学生已存在,不能重复添加!"); + } else { + result = classstudentsDao.insertClassStudent(user.getId(), classId); // 强用户插入classstudents表 + // 更新学生人数 + int studentsNum = classstudentsDao.getClassStudentsNum(classId); + boolean results = classesDao.updateClassStudentsNum(classId, studentsNum); + if (results) { + return RespBean.ok("添加学生信息成功"); + } else { + return RespBean.error("添加学生信息失败"); + } + + } + + } else { + boolean flag = false; + PMUser pMuser = new PMUser(); + // 将pMProblemTestCaseAdd 同属性的数据复制到problems + pMuser.setBanji(banji); +// pMuser.setSchoolId(schoolId); + pMuser.setChineseName(chineseName); + pMuser.setStudentNo(studentNo); + pMuser.setUsername(username); + pMuser.setSessionId(sessionId); + pMuser.setPassword(password); + + flag = userService.addSignStudent(pMuser); + if (flag) { + Users u = userService.findUserByStudentNo(studentNo); + if (u != null) { + boolean result = classstudentsDao.findClassStudentByUserId(u.getId(), classId); // 如果为true则表明该学生已在表中 + if (result == false) + result = classstudentsDao.insertClassStudent(u.getId(), classId); // 强用户插入classstudents表 + } + + // 更新学生人数 + int studentsNum = classstudentsDao.getClassStudentsNum(classId); + boolean results = classesDao.updateClassStudentsNum(classId, studentsNum); + return RespBean.ok("添加学生信息成功"); + } else { + return RespBean.error("添加学生信息失败"); + } + + } + } + } + + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + // 新增 + return RespBean.error("添加学生信息失败"); + } @PostMapping("/getPassword") public RespBean getPassword(@RequestBody PMUser user1) // 获取学生的密码 diff --git a/AES/src/main/java/com/example/aes/user/dao/ClassesDaoI.java b/AES/src/main/java/com/example/aes/user/dao/ClassesDaoI.java index 9b6e4ea..ec1f94a 100644 --- a/AES/src/main/java/com/example/aes/user/dao/ClassesDaoI.java +++ b/AES/src/main/java/com/example/aes/user/dao/ClassesDaoI.java @@ -45,4 +45,8 @@ public interface ClassesDaoI extends BaseDaoI { public long findClassNotInCourseNum(int courseId, int teacherId, boolean history); public List findAllClass(); // 查询所有班级 public void addClass(PMClasses pclass); // 添加班级 + public void addClassToCourse(UClass uClass);//添加班级到课程 + public long findClassStudentsByIdNum(int classId); + public List findClassStudentsByIdPage(int classId, int pageNum, int pageSize); + public boolean deleteClassStudentsByUserId(int classId, int userId); // 通过userId删除班级学生 } diff --git a/AES/src/main/java/com/example/aes/user/dao/impl/ClassesDaoImpl.java b/AES/src/main/java/com/example/aes/user/dao/impl/ClassesDaoImpl.java index 778cc76..7b752ad 100644 --- a/AES/src/main/java/com/example/aes/user/dao/impl/ClassesDaoImpl.java +++ b/AES/src/main/java/com/example/aes/user/dao/impl/ClassesDaoImpl.java @@ -336,7 +336,7 @@ public class ClassesDaoImpl extends BaseDaoImpl implements ClassesDaoI public List findClassNotInCourse(int courseId, int teacherId, int pageNum, int pageSize, boolean history) { // TODO Auto-generated method stub StringBuffer sql = new StringBuffer(); - Map params = new HashMap(); +// Map params = new HashMap(); if(history){ sql.append("from Classes where " + "courseId is null"); @@ -346,9 +346,9 @@ public class ClassesDaoImpl extends BaseDaoImpl implements ClassesDaoI "courseId is null"); } if(teacherId!=0){ - sql.append(" and teacherId" + - "=:teacherId "); - params.put("teacherId", teacherId); + sql.append(" and teacherId=" + + teacherId); +// params.put("teacherId", teacherId); } sql.append(" order by id desc "); // params.put("courseId", courseId); @@ -483,10 +483,59 @@ public class ClassesDaoImpl extends BaseDaoImpl implements ClassesDaoI this.save(c); } @Override + public void addClassToCourse(UClass uClass){ + // TODO Auto-generated method stub + String hql = + "update Classes set courseId=" + uClass.getCourseId() + " where id=" + + uClass.getClassId(); + this.executeHql(hql); + }; + @Override public List findAllClass() { // TODO Auto-generated method stub String hql = "from Classes"; return this.find(hql); } + @Override + public List findClassStudentsByIdPage(int classId, int pageNum, int pageSize){ + String hql = "select u from Users u,Classstudents c where c.classId=" + + classId + " and u.id=c.userId order by u.studentNo asc"; + Query q = this.getCurrentSession().createQuery(hql); + List classstudentsList = q.setFirstResult((pageNum - 1) * pageSize).setMaxResults(pageSize).list(); + List userList = new ArrayList(); + for (int i = 0; i < classstudentsList.size(); i++) { + Users user = classstudentsList.get(i); + if (user != null) { + PMUser p = new PMUser(); + p.setId(user.getId()); + p.setStudentNo(user.getStudentNo()); + p.setUsername(user.getUsername()); + p.setChineseName(user.getChineseName()); + p.setBanji(user.getBanji()); + p.setEmail(user.getEmail()); + userList.add(p); + } + } + return userList; + } + @Override + public boolean deleteClassStudentsByUserId(int classId, int userId) { + // TODO Auto-generated method stub + String hql = "delete from Classstudents where classId=" + classId + + " and userId=" + userId; + int result = classstudentsDao.executeHql(hql); + if (result == 1) + return true; + else + return false; + } + + @Override + public long findClassStudentsByIdNum(int classId){ + String totalhql = "select count(distinct u.id ) from Users u,Classstudents c where c.classId=" + + classId + " and u.id=c.userId order by u.studentNo asc"; + + return this.count(totalhql).longValue(); + } } diff --git a/AES/src/main/java/com/example/aes/user/service/ClassesServiceI.java b/AES/src/main/java/com/example/aes/user/service/ClassesServiceI.java index 4ba49fd..2fe94f4 100644 --- a/AES/src/main/java/com/example/aes/user/service/ClassesServiceI.java +++ b/AES/src/main/java/com/example/aes/user/service/ClassesServiceI.java @@ -20,7 +20,9 @@ public interface ClassesServiceI { public boolean deleteClass(int id); // 删除班级 public void addClass(PMClasses pclass); // 添加班级 - + public void addClassToCourse(UClass uClass);//添加班级到课程 + public DataGrid findClassStudentsByIdPage(int classId,int pageNum, int pageSize); + public boolean deleteClassStudentsByUserId(int classId, int userId); public DataGrid findClassNotInCourse(UClass uClass, int pageNum, int pageSize); // 获取未参加课程的班级 public DataGrid findClassNotInCourse(int courseId, int teacherId, int pageNum, int pageSize, boolean history); // 获取未参加课程的班级 diff --git a/AES/src/main/java/com/example/aes/user/service/impl/ClassesServiceImpl.java b/AES/src/main/java/com/example/aes/user/service/impl/ClassesServiceImpl.java index b2be4b9..797fcc1 100644 --- a/AES/src/main/java/com/example/aes/user/service/impl/ClassesServiceImpl.java +++ b/AES/src/main/java/com/example/aes/user/service/impl/ClassesServiceImpl.java @@ -184,6 +184,9 @@ public void setclassstudentsDao(ClassstudentsDaoI classstudentsDao) { } classesDao.addClass(pclass); } + public void addClassToCourse(UClass uClass){ + classesDao.addClassToCourse(uClass); + }; // addclass要用的方法 public String getInviteCode() { // 1.������֤�룬2.��֤���ݿ� @@ -198,5 +201,35 @@ public void setclassstudentsDao(ClassstudentsDaoI classstudentsDao) { } return shortBuffer.toString(); } + @Override + public DataGrid findClassStudentsByIdPage(int classId,int pageNum, int pageSize){ + DataGrid dg = new DataGrid(); + long totalLines; + List userList; + totalLines = classesDao.findClassStudentsByIdNum(classId); + userList = classesDao.findClassStudentsByIdPage(classId, pageNum, pageSize); + + if (userList == null) { + return null; + } else{ + // 设置总的记录行数 + dg.setTotal(totalLines); + // 设置每页显示多少行 + dg.setPageSize(pageSize); + // 设置总的页数,总页数 = (总行数/每页显示多少行)向上取整 + dg.setTotalPages((long) (Math.ceil((double) dg.getTotal() / (double) dg.getPageSize()))); + // 设置当前显示第几页 + dg.setPageNum(pageNum); + // 设置当前页的数据行数量 + dg.setCurrentPageLineNum(userList.size()); + // 设置当前页的所有数据行 + dg.setList(userList); + return dg; + } + } + @Override + public boolean deleteClassStudentsByUserId(int classId, int userId) { + return classesDao.deleteClassStudentsByUserId(classId, userId); + } }