package com.scco.controller;
import com.scco.entity.Student;
import com.scco.entity.StudentTeacher;
import com.scco.entity.Teacher;
import com.scco.service.StudentService;
import com.scco.service.TeacherService;
import com.scco.utils.CommonResult;
import com.scco.utils.TableResult;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.*;
@SessionAttributes("currentStudent")
@RequestMapping("student")
@Controller
public class StudentController {
@Resource
private StudentService studentService;
@Resource
private TeacherService teacherService;
private Logger logger = Logger.getLogger(StudentController.class.getName());
// 列表分页
@ResponseBody
@RequestMapping(value = "/studentList", method = RequestMethod.GET)
public TableResult<Student> queryList(Integer page, Integer limit) {
page = (page - 1) * limit;
Map<String, Integer> pageMap = new HashMap<>();
pageMap.put("page", page);
pageMap.put("limit", limit);
List<Student> studentList = studentService.queryData(pageMap);
int count = studentService.queryCount();
return new TableResult<Student>(0, "请求成功", count, studentList);
}
// 新增用户
@ResponseBody
@RequestMapping(value = "addStudent", method = RequestMethod.POST)
public Integer save(Student student) {
logger.debug("------------开始添加用户");
int result;
String s_id = studentService.checkStudentById(student.getS_id());
if (s_id == null) {
result = studentService.insertStudent(student);
} else {
result = -2;
}
logger.debug("---add===>result:" + result);
return result;
}
// 删除用户数据
@ResponseBody
@RequestMapping(value = "batchDelStudent", method = RequestMethod.POST)
public Integer delete(String ids) {
logger.debug("-----------开始删除数据");
logger.debug("---ids:" + ids);
int result;
String[] idArray = ids.split(",");
List<String> idList = new ArrayList<>();
for (String id : idArray) {
idList.add(id);
}
logger.debug("---删除集合idList:" + idList);
result = studentService.batchDelStudent(idList);
studentService.batchDelStudent2(idList);
logger.debug("---delete===>result:" + result);
logger.debug("------------删除结束");
return result;
}
// 获取更新用户数据
@RequestMapping(value = "queryStudentById", method = RequestMethod.GET)
public ModelAndView update(String s_id, String data) {
logger.debug("------------获取用户更新页数据");
logger.debug("---s_id:" + s_id);
ModelAndView mav = new ModelAndView();
Student student = studentService.queryStudentById(s_id);
logger.debug("---student:" + student);
mav.addObject("student", student);
if (data == null) {
data = "";
}
if (data.equals("0")) {
mav.setViewName("/student/student_data");
} else if (data.equals("1")) {
mav.setViewName("/student/student_pwd");
} else {
mav.setViewName("/student/student_update");
}
logger.debug("查询用户结束");
return mav;
}
// 更新用户数据
@RequestMapping(value = "updateStudent", method = RequestMethod.POST)
public String update(Student student) {
logger.debug("------------开始更新用户数据");
logger.debug("---student:" + student);
Integer result = 0;
if (student != null) {
result = studentService.updateStudent(student);
}
logger.debug("---update===>result:" + result);
logger.debug("------------更新用户结束");
return "student_list";
}
// 更新用户数据
@ResponseBody
@RequestMapping(value = "updateStu", method = RequestMethod.POST)
public Integer updateStu(Student student) {
logger.debug("------------开始更新用户数据");
logger.debug("---student:" + student);
Integer result = 0;
if (student != null) {
result = studentService.updateStudent(student);
}
logger.debug("---update===>result:" + result);
logger.debug("------------更新用户结束");
return result;
}
// 更新用户密码
@ResponseBody
@RequestMapping(value = "updateStudentPwd", method = RequestMethod.POST)
public Integer update(String s_pwd, HttpSession session) {
logger.debug("------------开始更新用户密码");
logger.debug("---s_pwd:" + s_pwd);
Integer result = 0;
String uid = (String) session.getAttribute("UID");
if (s_pwd != null && !s_pwd.equals("") && uid != null && !uid.equals("")) {
result = studentService.updateStudentPwd(uid, s_pwd);
}
logger.debug("---update===>result:" + result);
logger.debug("------------更新用户密码结束");
return result;
}
// 查询页
@ResponseBody
@RequestMapping(value = "searchStudent", method = RequestMethod.POST)
public TableResult<Student> queryList(Integer page, Integer limit, HttpServletRequest request) {
logger.debug("-----------开始用户查询");
String s_id = request.getParameter("s_id");
String s_name = request.getParameter("s_name");
String s_institute = request.getParameter("s_institute");
String s_major = request.getParameter("s_major");
List<Student> studentList = null;
if ((s_id == null || s_id.equals("")) && (s_name == null || s_name.equals("")) && (s_institute == null || s_institute.equals("")) && (s_major == null || s_major.equals(""))) {
return new TableResult<Student>(0, "查询无数据", null, null);
} else {
page = (page - 1) * limit;
studentList = studentService.queryStudentBySome(page, limit, s_id, s_name, s_institute, s_major);
}
int count = studentService.queryCountBySome(s_id, s_name, s_institute, s_major);
logger.debug("返回数据总条数:" + count);
logger.debug("----------查询结束");
return new TableResult<Student>(0, "请求成功", count, studentList);
}
//查询学生已选课程
@ResponseBody
@RequestMapping(value = "queryUserCourseListById", method = RequestMethod.GET)
public TableResult<CommonResult> queryUserCourseList(Integer page, Integer limit, String s_id) {
logger.debug("----------开始查询学生已选课程");
List<CommonResult> list = new ArrayList();
if (s_id == null || s_id.equals("")) {
return new TableResult<CommonResult>(0, "暂未选课", null, null);
}
page = (page - 1) * limit;
Student student = studentService.queryCourseList(page, limit, s_id);
Set<Teacher> teachers = student.getTeachers();
for (Teacher teacher : teachers) {
CommonResult studentResult = new CommonResult();
studentResult.setS_id(student.getS_id());
if (teacher.getCourse() == null) {
studentResult.setC_id("");
studentResult.setC_name("该教师已结束此课程");
stud