|
|
|
|
@ -19,154 +19,219 @@ import com.mapper.OrderMapper;
|
|
|
|
|
import com.mapper.ScheduleMapper;
|
|
|
|
|
import com.service.IScheduleService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 该类是场次服务接口(IScheduleService)的具体实现类,用于处理与电影场次相关的各种业务逻辑操作。
|
|
|
|
|
* 通过依赖注入相关的Mapper接口,与数据库进行交互,实现如查询、添加、更新、删除场次等功能,
|
|
|
|
|
* 并且在部分方法上使用了事务管理,确保数据操作的一致性和完整性。
|
|
|
|
|
* @Service注解用于将该类标记为Spring框架中的服务层组件,方便进行依赖注入和管理。
|
|
|
|
|
*/
|
|
|
|
|
@Service
|
|
|
|
|
public class ScheduleServiceImp implements IScheduleService{
|
|
|
|
|
@Autowired
|
|
|
|
|
private ScheduleMapper scheduleMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private HallMapper hallMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MovieMapper movieMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private OrderMapper orderMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private CinemaMapper cinemaMapper;
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
|
|
|
|
|
@Override
|
|
|
|
|
public Schedule findScheduleById(long schedule_id) {
|
|
|
|
|
Schedule schedule = this.scheduleMapper.findScheduleById(schedule_id);
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule_id);
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
return schedule;
|
|
|
|
|
}
|
|
|
|
|
public class ScheduleServiceImp implements IScheduleService {
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer addSchedule(Schedule schedule) {
|
|
|
|
|
return this.scheduleMapper.addSchedule(schedule);
|
|
|
|
|
}
|
|
|
|
|
// 使用@Autowired注解自动注入ScheduleMapper接口,用于调用数据库中与场次表相关的操作方法,比如根据ID查询场次、添加场次、更新场次等操作。
|
|
|
|
|
@Autowired
|
|
|
|
|
private ScheduleMapper scheduleMapper;
|
|
|
|
|
// 自动注入HallMapper接口,用于操作放映厅相关的数据,例如查询放映厅信息等,辅助场次相关业务逻辑处理,因为场次与放映厅存在关联关系。
|
|
|
|
|
@Autowired
|
|
|
|
|
private HallMapper hallMapper;
|
|
|
|
|
// 自动注入MovieMapper接口,用于获取电影相关信息,比如根据电影ID查找电影详细信息等,在处理场次业务时,需要关联电影信息进行展示等操作。
|
|
|
|
|
@Autowired
|
|
|
|
|
private MovieMapper movieMapper;
|
|
|
|
|
// 自动注入OrderMapper接口,用于查询与场次相关的订单信息,例如查找某个场次下的所有订单,方便在业务逻辑中涉及订单相关的操作(如统计场次收入等)。
|
|
|
|
|
@Autowired
|
|
|
|
|
private OrderMapper orderMapper;
|
|
|
|
|
// 自动注入CinemaMapper接口,用于获取影院相关信息,比如查找放映厅所属的影院信息等,因为场次关联放映厅,放映厅又属于特定影院,存在多层关联关系。
|
|
|
|
|
@Autowired
|
|
|
|
|
private CinemaMapper cinemaMapper;
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer updateSchedule(Schedule schedule) {
|
|
|
|
|
return this.scheduleMapper.updateSchedule(schedule);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 根据场次ID查找对应的场次信息,并关联相关的对象信息(如放映厅、电影、订单列表等),完整地返回包含关联信息的场次对象。
|
|
|
|
|
* 该方法使用了事务管理,设置传播行为为Propagation.REQUIRED,表示如果当前存在事务则加入该事务,如果不存在则创建一个新事务,
|
|
|
|
|
* 同时设置为只读事务(readOnly=true),因为该操作主要是查询数据,不需要进行数据修改操作,提高性能并保证数据一致性。
|
|
|
|
|
* @param schedule_id 要查找的场次的唯一标识符,用于从数据库中精准定位到对应的场次记录。
|
|
|
|
|
* @return 返回包含完整关联信息(放映厅、电影、订单列表等)的Schedule对象,如果未找到对应的场次则返回null。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
|
|
|
|
|
@Override
|
|
|
|
|
public Schedule findScheduleById(long schedule_id) {
|
|
|
|
|
// 首先通过ScheduleMapper根据场次ID从数据库中查询出基本的场次信息,得到一个Schedule对象。
|
|
|
|
|
Schedule schedule = this.scheduleMapper.findScheduleById(schedule_id);
|
|
|
|
|
// 根据场次中关联的放映厅ID,通过HallMapper查询对应的放映厅信息,得到一个Hall对象。
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
// 再通过CinemaMapper根据放映厅所属的影院ID,查找并设置放映厅对象中的所属影院信息,完善放映厅的关联信息。
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
// 将包含完整信息的放映厅对象设置到场次对象中,建立场次与放映厅的关联关系,方便后续业务操作获取放映厅详细信息。
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
// 通过MovieMapper根据场次中关联的电影ID,查找并设置场次对象中的放映电影信息,建立场次与电影的关联关系,以便获取电影详细信息。
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
// 通过OrderMapper根据场次ID查找该场次下的所有订单信息,得到一个订单列表,设置到场次对象中,方便后续统计订单相关数据等操作。
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule_id);
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
return schedule;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 场次下架功能 而非删除
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer deleteSchedule(long schedule_id) {
|
|
|
|
|
return this.scheduleMapper.deleteSchedule(schedule_id);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 添加新的电影场次信息到数据库中。
|
|
|
|
|
* 该方法使用了事务管理,设置传播行为为Propagation.REQUIRED,表示如果当前存在事务则加入该事务,如果不存在则创建一个新事务,
|
|
|
|
|
* 同时设置了rollbackFor属性为Exception.class,表示如果方法执行过程中抛出任何异常,都将回滚当前事务,保证数据的完整性,避免出现部分数据插入成功等异常情况。
|
|
|
|
|
* @param schedule 要添加的Schedule对象,包含了场次相关的详细信息(如所属放映厅、电影、时间、价格等),这些信息将被保存到数据库中。
|
|
|
|
|
* @return 返回受影响的行数,如果添加成功则返回大于0的值,通常返回1表示成功插入一条记录,若返回0则表示添加操作未对数据库产生影响(可能是数据不符合要求等原因)。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer addSchedule(Schedule schedule) {
|
|
|
|
|
return this.scheduleMapper.addSchedule(schedule);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer addScheduleRemain(long schedule_id) {
|
|
|
|
|
return this.scheduleMapper.addScheduleRemain(schedule_id);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 更新数据库中已存在的电影场次信息。
|
|
|
|
|
* 同样使用了事务管理,传播行为和异常回滚设置与添加场次方法类似,确保在更新操作出现异常时能够回滚事务,保证数据一致性。
|
|
|
|
|
* @param schedule 包含了更新后场次相关信息的Schedule对象,这些信息将覆盖数据库中对应场次记录的原有信息,实现数据更新。
|
|
|
|
|
* @return 返回受影响的行数,如果更新成功则返回大于0的值,例如返回1表示成功更新了一条记录,若返回0则表示未找到对应的场次记录或者更新操作未实际改变数据(数据与原数据一致等原因)。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer updateSchedule(Schedule schedule) {
|
|
|
|
|
return this.scheduleMapper.updateSchedule(schedule);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer delScheduleRemain(long schedule_id) {
|
|
|
|
|
return this.scheduleMapper.delScheduleRemain(schedule_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findScheduleByMovieName(Integer page,Integer limit,String movie_name) {
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findScheduleByMovieName(movie_name);
|
|
|
|
|
for(Schedule schedule: schedules) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 场次下架功能(而非删除),用于将场次的状态设置为下架状态,使其不再对外展示和售票等,但数据仍保留在数据库中。
|
|
|
|
|
* 采用了事务管理机制,确保在操作数据库进行场次下架时,若出现异常能够回滚事务,防止数据出现不一致的情况。
|
|
|
|
|
* @param schedule_id 要下架的场次的唯一标识符,用于定位到数据库中对应的场次记录进行下架操作。
|
|
|
|
|
* @return 返回受影响的行数,如果下架操作成功则返回大于0的值,一般返回1表示成功下架了对应的场次记录,若返回0则可能是未找到该场次记录等原因导致操作未生效。
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
* 场次下架功能 而非删除
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer deleteSchedule(long schedule_id) {
|
|
|
|
|
return this.scheduleMapper.deleteSchedule(schedule_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findOffScheduleByMovieName(Integer page, Integer limit, String movie_name) {
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findOffScheduleByMovieName(movie_name);
|
|
|
|
|
for(Schedule schedule: schedules) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 增加指定场次的剩余座位数,例如在退票等操作后,需要相应地增加场次的剩余可售票数。
|
|
|
|
|
* 该方法使用事务管理,保证在增加剩余座位数操作出现异常时能够回滚事务,确保座位数数据的准确性和一致性。
|
|
|
|
|
* @param schedule_id 要增加剩余座位数的场次的唯一标识符,用于确定是对哪个场次的座位数进行操作。
|
|
|
|
|
* @return 返回受影响的行数,如果操作成功则返回大于0的值,通常返回1表示成功更新了该场次的剩余座位数记录,若返回0则可能是未找到对应场次记录等原因导致操作未生效。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer addScheduleRemain(long schedule_id) {
|
|
|
|
|
return this.scheduleMapper.addScheduleRemain(schedule_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findAllScheduleByState(Integer page,Integer limit,int schedule_state) {
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findScheduleByState(schedule_state);
|
|
|
|
|
for(Schedule schedule: schedules) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findAllSchedule(Integer page,Integer limit) {
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findAllSchedule();
|
|
|
|
|
for(Schedule schedule: schedules) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 减少指定场次的剩余座位数,比如在购票成功后,需要相应地减少场次的剩余可售票数。
|
|
|
|
|
* 同样使用事务管理来保障数据操作的可靠性,在出现异常时回滚事务,避免剩余座位数数据出现错误。
|
|
|
|
|
* @param schedule_id 要减少剩余座位数的场次的唯一标识符,用于明确操作对应的场次。
|
|
|
|
|
* @return 返回受影响的行数,如果操作成功则返回大于0的值,一般返回1表示成功更新了该场次的剩余座位数记录,若返回0则可能是未找到对应场次记录等原因导致操作未生效。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
|
|
@Override
|
|
|
|
|
public Integer delScheduleRemain(long schedule_id) {
|
|
|
|
|
return this.scheduleMapper.delScheduleRemain(schedule_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
|
|
|
|
|
@Override
|
|
|
|
|
public List<Schedule> findScheduleByCinemaAndMovie(long cinema_id, long movie_id) {
|
|
|
|
|
return this.scheduleMapper.findScheduleByCinemaAndMovie(cinema_id, movie_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* selectSeat页面提供接口
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation=Propagation.REQUIRED,readOnly=true)
|
|
|
|
|
@Override
|
|
|
|
|
public List<Schedule> findScheduleByCineamIdAndMovieId(long cinema_id, long movie_id) {
|
|
|
|
|
List<Schedule> list = this.scheduleMapper.findScheduleByCinemaAndMovie(cinema_id, movie_id);
|
|
|
|
|
for(Schedule schedule: list) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
}
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 根据电影名称分页查询场次信息,并关联相关的对象信息(如放映厅、电影、订单列表等),返回包含完整关联信息的场次信息分页结果。
|
|
|
|
|
* 使用了事务管理,设置为只读事务(readOnly=true),因为主要是查询操作,传播行为为Propagation.REQUIRED,加入或创建事务保证查询过程的一致性。
|
|
|
|
|
* 同时借助PageHelper进行分页处理,先设置分页参数,然后查询符合条件的场次列表,再对每个场次进行关联信息的补充,最后封装成PageInfo对象返回给调用方。
|
|
|
|
|
* @param page 当前页码,用于指定要获取的场次信息分页页码,从第几页开始获取数据。
|
|
|
|
|
* @param limit 每页显示数量,用于确定每页显示的场次记录条数。
|
|
|
|
|
* @param movie_name 电影名称,用于筛选出放映该电影的场次信息进行分页查询展示。
|
|
|
|
|
* @return 返回包含完整关联信息(放映厅、电影、订单列表等)的场次信息分页结果对象(PageInfo<Schedule>),方便前端进行分页展示及数据展示。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findScheduleByMovieName(Integer page, Integer limit, String movie_name) {
|
|
|
|
|
// 使用PageHelper设置分页参数,指定当前页码和每页显示数量,后续查询操作将按照此分页规则获取数据。
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
// 通过ScheduleMapper根据电影名称查询符合条件的场次列表信息,得到一个包含基本场次信息的列表。
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findScheduleByMovieName(movie_name);
|
|
|
|
|
for (Schedule schedule : schedules) {
|
|
|
|
|
// 对每个场次信息进行关联信息的补充,以下步骤与findScheduleById方法中补充关联信息的逻辑类似,依次查找并设置放映厅、电影、订单列表等关联信息。
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
// 将包含完整关联信息的场次列表封装成PageInfo对象,该对象包含了分页相关信息(如总记录数、当前页码、每页数量等)以及场次数据列表,方便前端进行分页展示等操作。
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据电影名称分页查询已下架的场次信息,并关联相关的对象信息(如放映厅、电影、订单列表等),返回包含完整关联信息的场次信息分页结果。
|
|
|
|
|
* 与findScheduleByMovieName方法类似,同样使用事务管理、分页处理以及补充关联信息等操作,只是查询的是已下架的场次数据,用于特定的业务场景展示(如历史场次查看等)。
|
|
|
|
|
* @param page 当前页码,用于指定要获取的场次信息分页页码,从第几页开始获取数据。
|
|
|
|
|
* @param limit 每页显示数量,用于确定每页显示的场次记录条数。
|
|
|
|
|
* @param movie_name 电影名称,用于筛选出放映过该电影且已下架的场次信息进行分页查询展示。
|
|
|
|
|
* @return 返回包含完整关联信息(放映厅、电影、订单列表等)的已下架场次信息分页结果对象(PageInfo<Schedule>),方便前端进行分页展示及数据展示。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findOffScheduleByMovieName(Integer page, Integer limit, String movie_name) {
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findOffScheduleByMovieName(movie_name);
|
|
|
|
|
for (Schedule schedule : schedules) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据场次状态分页查询所有场次信息,并关联相关的对象信息(如放映厅、电影、订单列表等),返回包含完整关联信息的场次信息分页结果。
|
|
|
|
|
* 操作逻辑与前面根据电影名称查询场次的分页方法类似,通过指定场次状态筛选符合条件的场次列表,补充关联信息后封装成PageInfo对象返回,用于按照场次状态进行场次数据展示等业务场景。
|
|
|
|
|
* @param page 当前页码,用于指定要获取的场次信息分页页码,从第几页开始获取数据。
|
|
|
|
|
* @param limit 每页显示数量,用于确定每页显示的场次记录条数。
|
|
|
|
|
* @param schedule_state 场次状态,用于筛选出处于该状态的场次信息进行分页查询展示,例如可以传入1表示查询正在上映的场次,0表示查询已下架的场次等。
|
|
|
|
|
* @return 返回包含完整关联信息(放映厅、电影、订单列表等)的符合指定场次状态的场次信息分页结果对象(PageInfo<Schedule>),方便前端进行分页展示及数据展示。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findAllScheduleByState(Integer page, Integer limit, int schedule_state) {
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findScheduleByState(schedule_state);
|
|
|
|
|
for (Schedule schedule : schedules) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules);
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 分页查询所有场次信息,并关联相关的对象信息(如放映厅、电影、订单列表等),返回包含完整关联信息的场次信息分页结果。
|
|
|
|
|
* 该方法不进行特定条件筛选,直接查询所有场次信息进行分页展示,同样要补充每个场次的关联信息后封装成PageInfo对象返回,用于整体场次数据的分页展示等业务需求。
|
|
|
|
|
* @param page 当前页码,用于指定要获取的场次信息分页页码,从第几页开始获取数据。
|
|
|
|
|
* @param limit 每页显示数量,用于确定每页显示的场次记录条数。
|
|
|
|
|
* @return 返回包含完整关联信息(放映厅、电影、订单列表等)的所有场次信息分页结果对象(PageInfo<Schedule>),方便前端进行分页展示及数据展示。
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
|
|
|
|
|
@Override
|
|
|
|
|
public PageInfo<Schedule> findAllSchedule(Integer page, Integer limit) {
|
|
|
|
|
PageHelper.startPage(page, limit);
|
|
|
|
|
List<Schedule> schedules = this.scheduleMapper.findAllSchedule();
|
|
|
|
|
for (Schedule schedule : schedules) {
|
|
|
|
|
Hall hall = this.hallMapper.findHallById(schedule.getHall_id());
|
|
|
|
|
hall.setHall_cinema(this.cinemaMapper.findCinemaById(hall.getCinema_id()));
|
|
|
|
|
schedule.setSchedule_hall(hall);
|
|
|
|
|
schedule.setSchedule_movie(this.movieMapper.findMovieById(schedule.getMovie_id()));
|
|
|
|
|
List<Order> list = this.orderMapper.findOrdersByScheduleId(schedule.getSchedule_id());
|
|
|
|
|
schedule.setOrderList(list);
|
|
|
|
|
}
|
|
|
|
|
PageInfo<Schedule> info = new PageInfo<Schedule>(schedules
|