HotelServiceImpl.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.example.hotel.blImpl.hotel;
  2. import com.example.hotel.bl.hotel.HotelService;
  3. import com.example.hotel.bl.hotel.RoomService;
  4. import com.example.hotel.bl.order.OrderService;
  5. import com.example.hotel.bl.user.AccountService;
  6. import com.example.hotel.data.hotel.HotelMapper;
  7. import com.example.hotel.data.hotel.RoomMapper;
  8. import com.example.hotel.data.user.AccountMapper;
  9. import com.example.hotel.enums.BizRegion;
  10. import com.example.hotel.enums.HotelStar;
  11. import com.example.hotel.enums.UserType;
  12. import com.example.hotel.po.Hotel;
  13. import com.example.hotel.po.HotelRoom;
  14. import com.example.hotel.po.Order;
  15. import com.example.hotel.po.User;
  16. import com.example.hotel.util.ServiceException;
  17. import com.example.hotel.vo.CouponVO;
  18. import com.example.hotel.vo.HotelVO;
  19. import com.example.hotel.vo.RoomVO;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import java.util.List;
  23. import java.util.stream.Collectors;
  24. @Service
  25. public class HotelServiceImpl implements HotelService {
  26. @Autowired
  27. private HotelMapper hotelMapper;
  28. @Autowired
  29. private AccountService accountService;
  30. @Autowired
  31. private OrderService orderService;
  32. @Autowired
  33. private RoomService roomService;
  34. @Override
  35. public void addHotel(HotelVO hotelVO) throws ServiceException {
  36. User manager = accountService.getUserInfo(hotelVO.getManagerId());
  37. if(manager == null || !manager.getUserType().equals(UserType.HotelManager)){
  38. throw new ServiceException("管理员不存在或者无权限!创建酒店失败!");
  39. }
  40. Hotel hotel = new Hotel();
  41. hotel.setDescription(hotelVO.getDescription());
  42. hotel.setAddress(hotelVO.getAddress());
  43. hotel.setHotelName(hotelVO.getName());
  44. hotel.setPhoneNum(hotelVO.getPhoneNum());
  45. hotel.setManagerId(hotelVO.getManagerId());
  46. hotel.setRate(hotelVO.getRate());
  47. hotel.setBizRegion(BizRegion.valueOf(hotelVO.getBizRegion()));
  48. hotel.setHotelStar(HotelStar.valueOf(hotelVO.getHotelStar()));
  49. hotelMapper.insertHotel(hotel);
  50. }
  51. @Override
  52. public void updateRoomInfo(Integer hotelId, String roomType, Integer rooms) {
  53. roomService.updateRoomInfo(hotelId,roomType,rooms);
  54. }
  55. @Override
  56. public int getRoomCurNum(Integer hotelId, String roomType) {
  57. return roomService.getRoomCurNum(hotelId,roomType);
  58. }
  59. @Override
  60. public List<HotelVO> retrieveHotels() {
  61. return hotelMapper.selectAllHotel();
  62. }
  63. @Override
  64. public HotelVO retrieveHotelDetails(Integer hotelId) {
  65. HotelVO hotelVO = hotelMapper.selectById(hotelId);
  66. List<HotelRoom> rooms = roomService.retrieveHotelRoomInfo(hotelId);
  67. List<RoomVO> roomVOS = rooms.stream().map(r -> {
  68. RoomVO roomVO = new RoomVO();
  69. roomVO.setId(r.getId());
  70. roomVO.setPrice(r.getPrice());
  71. roomVO.setRoomType(r.getRoomType().toString());
  72. roomVO.setCurNum(r.getCurNum());
  73. roomVO.setTotal(r.getTotal());
  74. return roomVO;
  75. }).collect(Collectors.toList());
  76. hotelVO.setRooms(roomVOS);
  77. return hotelVO;
  78. }
  79. /**
  80. * 反例:
  81. * 错误的例子,HotelService依赖OrderService去获取hotel的所有订单信息
  82. * 1、功能划分错误,获取酒店订单应属于订单服务的功能
  83. * 2、糟糕的实现方式,有欸有更好的实现方式?
  84. * 3、循环依赖
  85. * @param hotelId
  86. * @return
  87. */
  88. @Override
  89. public List<Order> getHotelOrders(Integer hotelId) {
  90. List<Order> orders = orderService.getAllOrders();
  91. return orders.stream().filter(order -> order.getHotelId().equals(hotelId)).collect(Collectors.toList());
  92. }
  93. }