package com.itheima.controller; import com.itheima.po.Dormitory; import com.itheima.po.PageInfo; import com.itheima.service.DormitoryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpSession; import java.util.List; /** * 用户控制器类,主要负责处理与宿舍相关的各类业务操作,比如查询宿舍信息、添加、删除、修改宿舍信息以及查询宿舍人员信息等,并且与相应的视图进行交互。 */ @Controller public class DormitoryController { // 依赖注入,通过Spring框架自动装配DormitoryService的实例,方便后续在本类中调用其提供的业务方法,来处理具体的宿舍业务逻辑。 @Autowired private DormitoryService dormitoryService; /** * 分页查询宿舍信息的方法 * * @param a_name 宿舍相关的名称属性(具体含义可能根据业务而定,可为null,用于根据名称进行模糊或精确筛选宿舍记录,若为null则不按此条件筛选)。 * @param s_dormitoryid 宿舍的唯一标识ID(可为null,用于根据具体ID精确筛选宿舍记录,若为null则不按此条件筛选)。 * @param d_dormbuilding 宿舍楼栋信息(可为null,用于模糊或精确筛选对应楼栋的宿舍记录,若为null则不按此条件筛选)。 * @param pageIndex 当前页码,用于确定要显示的页面,比如pageIndex为1表示显示第一页的宿舍信息。 * @param pageSize 显示条数,即每页显示的宿舍记录数量,例如pageSize为10表示每页展示10条宿舍信息。 * @param model Spring框架的Model对象,用于向视图传递数据,比如将查询到的宿舍信息传递给视图进行展示。 * @return 返回视图名称 "dormitory_list",该视图会展示分页查询后的宿舍信息列表。 */ @RequestMapping(value = "/findDormitory") public String findDormitory(String a_name, Integer s_dormitoryid, String d_dormbuilding, Integer pageIndex, Integer pageSize, Model model) { // 调用DormitoryService的findPageInfo方法,传入相应的筛选参数,获取包含分页后的宿舍信息的PageInfo对象。 PageInfo di = dormitoryService.findPageInfo(a_name, s_dormitoryid, d_dormbuilding, pageIndex, pageSize); // 将包含宿舍信息的PageInfo对象存入Model中,以便传递给视图(如"dormitory_list"页面)进行展示。 model.addAttribute("di", di); return "dormitory_list"; } /** * 导出Excel的方法,用于将宿舍信息导出为Excel文件。 * 此方法接收POST请求,使用@ResponseBody注解表示返回的数据会直接作为响应体内容,通常以JSON等格式返回给客户端(此处返回宿舍信息列表数据)。 * * @return 返回宿舍信息的列表,便于后续进行Excel文件生成等相关操作。 */ @RequestMapping(value = "/exportdormitorylist", method = RequestMethod.POST) @ResponseBody public List exportDormitory() { // 调用DormitoryService的getAll方法获取所有宿舍信息的列表。 List dormitoryList = dormitoryService.getAll(); return dormitoryList; } /** * 添加宿舍信息的方法 * 接收一个包含宿舍详细信息的Dormitory对象(通过@RequestBody注解从请求体中获取JSON等格式数据并转换为Dormitory对象),调用业务层方法进行添加操作,然后返回视图名称 "dormitory_list"。 * * @param dormitory 包含要添加的宿舍详细信息的对象,例如宿舍编号、可容纳人数、所属楼栋等信息。 * @return 返回视图名称 "dormitory_list",用于页面刷新等操作,展示添加后的宿舍信息列表情况。 */ @RequestMapping(value = "/addDormitory", method = RequestMethod.POST) @ResponseBody public String addDormitory(@RequestBody Dormitory dormitory) { // 调用DormitoryService的addDormitory方法,传入包含宿舍信息的Dormitory对象,执行添加宿舍信息到数据库等存储介质的操作。 int d = dormitoryService.addDormitory(dormitory); return "dormitory_list"; } /** * 删除宿舍信息的方法 * 接收要删除的宿舍的ID作为参数,调用业务层方法进行删除操作,并返回视图名称 "dormitory_list"。 * * @param d_id 要删除的宿舍的唯一标识ID。 * @return 返回视图名称 "dormitory_list",可能用于页面刷新等操作,展示删除后的宿舍信息列表情况。 */ @RequestMapping("/deleteDormitory") @ResponseBody public String deleteDormitory(Integer d_id) { // 调用DormitoryService的deleteDormitory方法,传入要删除的宿舍ID,执行删除操作。 int d = dormitoryService.deleteDormitory(d_id); return "dormitory_list"; } /** * 修改宿舍信息的方法 * 接收包含修改后宿舍信息的Dormitory对象,调用业务层方法进行更新操作,更新成功后重定向到分页查询宿舍信息的方法对应的请求路径("/findDormitory"),以便刷新页面展示最新的宿舍信息列表。 * * @param dormitory 包含修改后的宿舍详细信息的对象,例如更新后的宿舍可容纳人数、宿舍设施情况等信息。 * @return 返回重定向的路径 "/findDormitory",实现页面刷新展示更新后的宿舍信息。 */ @RequestMapping("/updateDormitory") public String updateDormitory(Dormitory dormitory) { // 调用DormitoryService的updateDormitory方法,传入包含修改后宿舍信息的Dormitory对象,执行更新宿舍信息到数据库等存储介质的操作。 int d = dormitoryService.updateDormitory(dormitory); return "redirect:/findDormitory"; } /** * 根据宿舍ID查询宿舍信息的方法 * 将查询到的宿舍信息存入HttpSession中,方便在后续的操作中(比如在不同请求之间共享数据)使用,然后返回视图名称 "dormitory_edit",可能用于展示宿舍信息以便进行编辑等操作。 * * @param d_id 要查询的宿舍的唯一标识ID。 * @param session HttpSession对象,用于存储和获取会话相关的数据,如将查询到的宿舍信息暂存于此,供后续编辑页面获取使用。 * @return 返回视图名称 "dormitory_edit",用于展示宿舍详细信息,可能是编辑页面等。 */ @RequestMapping("/findDormitoryById") public String findDormitoryById(Integer d_id, HttpSession session) { Dormitory d = dormitoryService.findDormitoryById(d_id); session.setAttribute("d", d); return "dormitory_edit"; } /** * 宿舍人员信息查询的方法 * 查询指定宿舍的人员信息,将查询到的宿舍人员信息列表存入Model对象中,以便传递给视图进行展示,最后返回视图名称 "dormitory_Studentlist"。 * * @param dormitory 包含宿舍相关筛选条件等信息的对象,可用于精确查询某个宿舍的人员信息。 * @param model Spring框架的Model对象,用于向视图传递数据。 * @return 返回视图名称 "dormitory_Studentlist",用于展示宿舍人员信息列表。 */ @RequestMapping(value = "/findDormitoryStudent") public String findDormitoryStudent(Dormitory dormitory, Model model) { // 调用DormitoryService的findDormitoryStudent方法,传入包含宿舍相关条件的Dormitory对象,查询对应宿舍的人员信息。 List d = dormitoryService.findDormitoryStudent(dormitory); // 将查询到的宿舍人员信息列表存入Model中,以便传递给视图进行展示。 model.addAttribute("ds", d); return "dormitory_Studentlist"; } }