|
|
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);
|
|
|
}
|
|
|
} |