You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

222 lines
12 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package comxyp.controller;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import comxyp.pojo.Room;
import comxyp.service.RoomService;
import comxyp.utils.DataGridViewResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// 控制器类处理与房间Room相关的请求
// 该类使用了 Spring 框架的相关注解,被标记为一个控制器,用于接收和处理与房间相关的各种 Web 请求
// 通过 @RequestMapping 注解将该控制器映射到 "/rooms" 路径下,即该控制器下的所有请求都将以 "/rooms" 作为请求的前缀
@Controller
@RequestMapping("/rooms")
public class RoomConroller {
// 自动注入 RoomService用于调用业务逻辑层的方法
// 通过 Spring 的依赖注入机制,将 RoomService 的实现类自动注入到这个控制器中
// 这样可以方便地调用 RoomService 中的业务逻辑方法,实现房间信息的增删改查等操作,而无需手动创建 RoomService 的实例
@Autowired
private RoomService roomService;
// 处理房间列表请求
// 该方法用于获取房间列表,并将结果以分页的形式返回给客户端
// 通过 @RequestMapping 注解将该方法映射到 "/rooms/roomsList" 请求路径上
// 当客户端发起该请求时,此方法会被调用
// 使用 @ResponseBody 注解表示该方法的返回值将直接作为 HTTP 响应体的内容,通常会以 JSON 等格式返回给客户端
@RequestMapping("/roomsList")
@ResponseBody
public DataGridViewResult roomsList() {
// 设置分页信息,从第 1 页开始,每页显示 1000 条记录
// 使用 PageHelper 工具进行分页设置,它会对后续的查询操作进行拦截并添加分页逻辑
// 例如,在数据库查询时添加 LIMIT 子句,以实现分页效果
PageHelper.startPage(1, 1000);
// 调用 roomService 的 roomList 方法获取房间列表
// 该方法将从数据源(如数据库)中查询房间信息,具体的查询逻辑在 RoomService 中实现
// 并将查询结果存储在一个 List<Room> 集合中,其中包含了符合条件的房间信息
List<Room> list = roomService.roomList();
// 创建分页对象,将房间列表放入分页对象中
// 使用 PageInfo 类对查询得到的房间列表进行包装,以获取更多的分页信息,如总记录数、总页数等
// 这些信息对于前端进行分页展示和操作非常重要,例如可以根据总记录数计算分页导航栏的页数,根据当前页的数据展示房间列表
PageInfo<Room> pageInfo = new PageInfo<>(list);
// 以 DataGridViewResult 的形式返回分页信息,包括总记录数和当前页的房间列表
// DataGridViewResult 可能是一个自定义的结果类,它将存储分页的总记录数和当前页的房间列表
// 这样可以将数据以一种结构化的方式返回给前端,方便前端进行展示和处理
// 前端可以根据返回的结果,将房间信息展示在页面上,并根据分页信息进行分页操作,如切换页面、显示总记录数等
return new DataGridViewResult(pageInfo.getTotal(), pageInfo.getList());
}
// 处理添加房间请求
// 该方法用于处理添加房间的操作,接收一个 Room 对象作为参数
// 通过 @RequestMapping 注解将该方法映射到 "/rooms/addRoom" 请求路径上
// 当客户端发起该请求时,此方法会被调用
// 使用 @ResponseBody 注解表示该方法的返回值将直接作为 HTTP 响应体的内容,通常会以 JSON 等格式返回给客户端
@RequestMapping("/addRoom")
@ResponseBody
public String addRoom(Room room) {
// 创建一个 Map 存储响应信息
// 该 Map 用于存储添加房间操作的结果信息,包括操作是否成功和相应的消息
// 可以使用不同的键值对存储不同的信息,方便后续将其转换为 JSON 字符串返回给客户端
Map<String, Object> map = new HashMap<>();
// 调用 roomService 的 addRoom 方法添加房间
// 该方法将执行添加房间的业务逻辑,将传入的 Room 对象存储到数据库或其他存储介质中
// 并返回受影响的行数,以此来判断添加操作是否成功
int n = roomService.addRoom(room);
// 若添加成功,设置相应的成功信息
// 当受影响的行数大于 0 时,表示添加操作成功
if (n > 0) {
// 在 Map 中设置 success 键的值为 true表示添加操作成功
map.put("success", true);
// 在 Map 中设置 msg 键的值为 "添加成功",作为给客户端的成功消息
// 客户端可以根据该消息提示用户添加操作成功
map.put("msg", "添加成功");
} else {
// 若添加失败,设置相应的错误信息
// 当受影响的行数小于或等于 0 时,表示添加操作失败
// 可能是由于数据库操作错误、数据不合法等原因导致添加失败
// 在 Map 中设置 success 键的值为 false表示添加操作失败
map.put("success", false);
// 在 Map 中设置 msg 键的值为 "添加失败",作为给客户端的错误消息
// 客户端可以根据该消息提示用户添加操作失败,并可以根据具体情况进行相应的处理,如重新输入房间信息等
map.put("msg", "添加失败");
}
// 将结果转换为 JSON 字符串并返回
// 使用阿里巴巴的 fastjson 工具将存储操作结果的 Map 转换为 JSON 字符串
// 以便将结果以 JSON 格式返回给客户端,客户端可以方便地解析该 JSON 字符串,获取操作结果信息
return JSON.toJSONString(map);
}
// 处理更新房间请求
// 该方法用于处理更新房间信息的操作,接收一个 Room 对象作为参数
// 通过 @RequestMapping 注解将该方法映射到 "/rooms/updateRoom" 请求路径上
// 当客户端发起该请求时,此方法会被调用
// 使用 @ResponseBody 注解表示该方法的返回值将直接作为 HTTP 响应体的内容,通常会以 JSON 等格式返回给客户端
@RequestMapping("/updateRoom")
@ResponseBody
public String updateRoom(Room room) {
// 创建一个 Map 存储响应信息
// 该 Map 用于存储更新房间操作的结果信息,包括操作是否成功和相应的消息
// 可以使用不同的键值对存储不同的信息,方便后续将其转换为 JSON 字符串返回给客户端
Map<String, Object> map = new HashMap<>();
// 调用 roomService 的 updateRoom 方法更新房间信息
// 该方法将根据传入的 Room 对象更新数据库或其他存储介质中的房间信息
// 并返回受影响的行数,以此来判断更新操作是否成功
int n = roomService.updateRoom(room);
// 若更新成功,设置相应的成功信息
// 当受影响的行数大于 0 时,表示更新操作成功
if (n > 0) {
// 在 Map 中设置 success 键的值为 true表示更新操作成功
map.put("success", true);
// 在 Map 中设置 msg 键的值为 "更新成功",作为给客户端的成功消息
// 客户端可以根据该消息提示用户更新操作成功
map.put("msg", "更新成功");
} else {
// 若更新失败,设置相应的错误信息
// 当受影响的行数小于或等于 0 时,表示更新操作失败
// 可能是由于数据库操作错误、数据不合法等原因导致更新失败
// 在 Map 中设置 success 键的值为 false表示更新操作失败
map.put("success", false);
// 在 Map 中设置 msg 键的值为 "更新失败",作为给客户端的错误消息
// 客户端可以根据该消息提示用户更新操作失败,并可以根据具体情况进行相应的处理,如检查更新的房间信息是否正确等
map.put("msg", "更新失败");
}
// 将结果转换为 JSON 字符串并返回
// 使用阿里巴巴的 fastjson 工具将存储操作结果的 Map 转换为 JSON 字符串
// 以便将结果以 JSON 格式返回给客户端,客户端可以方便地解析该 JSON 字符串,获取操作结果信息
return JSON.toJSONString(map);
}
// 处理删除房间请求
// 该方法用于处理删除房间的操作,接收一个房间的唯一标识符(通常是房间的 ID作为参数
// 通过 @RequestMapping 注解将该方法映射到 "/rooms/deleteRoom" 请求路径上
// 当客户端发起该请求时,此方法会被调用
// 使用 @ResponseBody 注解表示该方法的返回值将直接作为 HTTP 响应体的内容,通常会以 JSON 等格式返回给客户端
@RequestMapping("/deleteRoom")
@ResponseBody
public String deleteRoom(int id) {
// 创建一个 Map 存储响应信息
// 该 Map 用于存储删除房间操作的结果信息,包括操作是否成功和相应的消息
// 可以使用不同的键值对存储不同的信息,方便后续将其转换为 JSON 字符串返回给客户端
Map<String, Object> map = new HashMap<>();
// 调用 roomService 的 deleteRoom 方法删除房间
// 该方法将根据传入的房间 ID 删除数据库或其他存储介质中的房间信息
// 并返回受影响的行数,以此来判断删除操作是否成功
int n = roomService.deleteRoom(id);
// 若删除成功,设置相应的成功信息
// 当受影响的行数大于 0 时,表示删除操作成功
if (n > 0) {
// 在 Map 中设置 success 键的值为 true表示删除操作成功
map.put("success", true);
// 在 Map 中设置 msg 键的值为 "删除成功",作为给客户端的成功消息
// 客户端可以根据该消息提示用户删除操作成功
map.put("msg", "删除成功");
} else {
// 若删除失败,设置相应的错误信息
// 当受影响的行数小于或等于 0 时,表示删除操作失败
// 可能是由于数据库操作错误、数据不合法等原因导致删除失败
// 在 Map 中设置 success 键的值为 false表示删除操作失败
map.put("success", false);
// 在 Map 中设置 msg 键的值为 "删除失败",作为给客户端的错误消息
// 客户端可以根据该消息提示用户删除操作失败,并可以根据具体情况进行相应的处理,如检查房间是否已被占用等
map.put("msg", "删除失败");
}
// 将结果转换为 JSON 字符串并返回
// 使用阿里巴巴的 fastjson 工具将存储操作结果的 Map 转换为 JSON 字符串
// 以便将结果以 JSON 格式返回给客户端,客户端可以方便地解析该 JSON 字符串,获取操作结果信息
return JSON.toJSONString(map);
}
}