RoomServiceImpl.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package com.chuanghai.ihotel.service.impl;
  2. import com.chuanghai.ihotel.common.exception.BizCodeEnume;
  3. import com.chuanghai.ihotel.common.exception.RRException;
  4. import com.chuanghai.ihotel.controller.request.RoomQueryRequest;
  5. import com.chuanghai.ihotel.entity.RoomTypeEntity;
  6. import com.chuanghai.ihotel.service.RoomTypeService;
  7. import com.chuanghai.ihotel.vo.RoomGroupVO;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.cache.annotation.CacheEvict;
  10. import org.springframework.cache.annotation.Cacheable;
  11. import org.springframework.stereotype.Service;
  12. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  13. import com.baomidou.mybatisplus.core.metadata.IPage;
  14. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  15. import com.chuanghai.ihotel.common.utils.PageUtils;
  16. import com.chuanghai.ihotel.common.utils.MyQuery;
  17. import com.chuanghai.ihotel.common.utils.PageParam;
  18. import com.chuanghai.ihotel.dao.RoomDao;
  19. import com.chuanghai.ihotel.entity.RoomEntity;
  20. import com.chuanghai.ihotel.service.RoomService;
  21. import org.springframework.util.StringUtils;
  22. import java.util.List;
  23. import java.util.Map;
  24. import java.util.Set;
  25. @Service("roomService")
  26. public class RoomServiceImpl extends ServiceImpl<RoomDao, RoomEntity> implements RoomService {
  27. @Autowired
  28. private RoomTypeService roomTypeService;
  29. @Cacheable(value = {"room"}, key = "#root.method.name " +
  30. "+ '-' + #pageParam.curPage " +
  31. "+ '-' + #pageParam.pageSize " +
  32. "+ '-' + #pageParam.orderField " +
  33. "+ '-' + #pageParam.order " +
  34. "+ '-' + #request.roomNo " +
  35. "+ '-' + #request.build " +
  36. "+ '-' + #request.floor " +
  37. "+ '-' + #request.roomTypeId")
  38. @Override
  39. public PageUtils queryPage(PageParam pageParam, RoomQueryRequest request) {
  40. QueryWrapper<RoomEntity> queryWrapper = new QueryWrapper<>();
  41. queryWrapper.eq(StringUtils.hasText(request.getRoomNo()), "room_no", request.getRoomNo());
  42. queryWrapper.eq(StringUtils.hasText(request.getBuild()), "build", request.getBuild());
  43. queryWrapper.eq(StringUtils.hasText(request.getFloor()), "floor", request.getFloor());
  44. queryWrapper.eq(request.getRoomTypeId() != null, "room_type_id", request.getRoomTypeId());
  45. IPage<RoomEntity> page = this.page(
  46. new MyQuery<RoomEntity>().getPage(pageParam),
  47. queryWrapper
  48. );
  49. return new PageUtils(page);
  50. }
  51. @Cacheable(value = {"room"},
  52. key = "#root.method.name " +
  53. "+ '-' + #pageParam.curPage " +
  54. "+ '-' + #pageParam.pageSize " +
  55. "+ '-' + #pageParam.orderField " +
  56. "+ '-' + #pageParam.order " +
  57. "+ '-' + #request.roomNo " +
  58. "+ '-' + #request.build " +
  59. "+ '-' + #request.floor " +
  60. "+ '-' + #request.roomTypeId")
  61. @Override
  62. public PageUtils queryPageGroup(PageParam pageParam, RoomQueryRequest request) {
  63. IPage<RoomGroupVO> page =this.getBaseMapper().queryPageGroup(new MyQuery<RoomEntity>().getPage(pageParam), request);
  64. return new PageUtils<>(page);
  65. }
  66. @CacheEvict(value = "room", allEntries = true)
  67. @Override
  68. public void mySave(RoomEntity room) {
  69. // 检测房型是否存在
  70. RoomTypeEntity roomType = roomTypeService.getById(room.getRoomTypeId());
  71. if (roomType == null) {
  72. throw new RRException(BizCodeEnume.PARAMETER_ERROR, "无效的roomTypeId");
  73. }
  74. room.setRoomTypeName(roomType.getTypeName());
  75. this.save(room);
  76. // 增加房型数量
  77. roomType.setRoomNum(roomType.getRoomNum() + 1);
  78. roomTypeService.updateById(roomType);
  79. }
  80. @Override
  81. public Long getRoomIdNotIn(Long roomTypeId, List<Long> roomIds) {
  82. QueryWrapper<RoomEntity> queryWrapper = new QueryWrapper<>();
  83. queryWrapper.eq("room_type_id", roomTypeId);
  84. queryWrapper.notIn(roomIds.size()> 0, "id", roomIds);
  85. queryWrapper.last("limit 1");
  86. RoomEntity room = this.getOne(queryWrapper);
  87. if (room != null) {
  88. return room.getId();
  89. } else {
  90. return null;
  91. }
  92. }
  93. @CacheEvict(value = "room", allEntries = true)
  94. @Override
  95. public boolean myUpdate(RoomEntity room) {
  96. return this.updateById(room);
  97. }
  98. @CacheEvict(value = "room", allEntries = true)
  99. @Override
  100. public boolean myRemoveByIds(List<Long> ids) {
  101. return this.removeByIds(ids);
  102. }
  103. @Override
  104. public List<RoomEntity> getByRoomIds(Set<Long> roomIds) {
  105. QueryWrapper<RoomEntity> queryWrapper = new QueryWrapper<>();
  106. queryWrapper.in("id", roomIds);
  107. return this.list(queryWrapper);
  108. }
  109. }