| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package com.example.hotel.blImpl.hotel;
- import com.example.hotel.bl.hotel.HotelService;
- import com.example.hotel.bl.hotel.RoomService;
- import com.example.hotel.bl.order.OrderService;
- import com.example.hotel.bl.user.AccountService;
- import com.example.hotel.data.hotel.HotelMapper;
- import com.example.hotel.data.hotel.RoomMapper;
- import com.example.hotel.data.user.AccountMapper;
- import com.example.hotel.enums.BizRegion;
- import com.example.hotel.enums.HotelStar;
- import com.example.hotel.enums.UserType;
- import com.example.hotel.po.Hotel;
- import com.example.hotel.po.HotelRoom;
- import com.example.hotel.po.Order;
- import com.example.hotel.po.User;
- import com.example.hotel.util.ServiceException;
- import com.example.hotel.vo.CouponVO;
- import com.example.hotel.vo.HotelVO;
- import com.example.hotel.vo.RoomVO;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.List;
- import java.util.stream.Collectors;
- @Service
- public class HotelServiceImpl implements HotelService {
- @Autowired
- private HotelMapper hotelMapper;
- @Autowired
- private AccountService accountService;
- @Autowired
- private OrderService orderService;
- @Autowired
- private RoomService roomService;
- @Override
- public void addHotel(HotelVO hotelVO) throws ServiceException {
- User manager = accountService.getUserInfo(hotelVO.getManagerId());
- if(manager == null || !manager.getUserType().equals(UserType.HotelManager)){
- throw new ServiceException("管理员不存在或者无权限!创建酒店失败!");
- }
- Hotel hotel = new Hotel();
- hotel.setDescription(hotelVO.getDescription());
- hotel.setAddress(hotelVO.getAddress());
- hotel.setHotelName(hotelVO.getName());
- hotel.setPhoneNum(hotelVO.getPhoneNum());
- hotel.setManagerId(hotelVO.getManagerId());
- hotel.setRate(hotelVO.getRate());
- hotel.setBizRegion(BizRegion.valueOf(hotelVO.getBizRegion()));
- hotel.setHotelStar(HotelStar.valueOf(hotelVO.getHotelStar()));
- hotelMapper.insertHotel(hotel);
- }
- @Override
- public void updateRoomInfo(Integer hotelId, String roomType, Integer rooms) {
- roomService.updateRoomInfo(hotelId,roomType,rooms);
- }
- @Override
- public int getRoomCurNum(Integer hotelId, String roomType) {
- return roomService.getRoomCurNum(hotelId,roomType);
- }
- @Override
- public List<HotelVO> retrieveHotels() {
- return hotelMapper.selectAllHotel();
- }
- @Override
- public HotelVO retrieveHotelDetails(Integer hotelId) {
- HotelVO hotelVO = hotelMapper.selectById(hotelId);
- List<HotelRoom> rooms = roomService.retrieveHotelRoomInfo(hotelId);
- List<RoomVO> roomVOS = rooms.stream().map(r -> {
- RoomVO roomVO = new RoomVO();
- roomVO.setId(r.getId());
- roomVO.setPrice(r.getPrice());
- roomVO.setRoomType(r.getRoomType().toString());
- roomVO.setCurNum(r.getCurNum());
- roomVO.setTotal(r.getTotal());
- return roomVO;
- }).collect(Collectors.toList());
- hotelVO.setRooms(roomVOS);
- return hotelVO;
- }
-
- /**
- * 反例:
- * 错误的例子,HotelService依赖OrderService去获取hotel的所有订单信息
- * 1、功能划分错误,获取酒店订单应属于订单服务的功能
- * 2、糟糕的实现方式,有欸有更好的实现方式?
- * 3、循环依赖
- * @param hotelId
- * @return
- */
- @Override
- public List<Order> getHotelOrders(Integer hotelId) {
- List<Order> orders = orderService.getAllOrders();
- return orders.stream().filter(order -> order.getHotelId().equals(hotelId)).collect(Collectors.toList());
- }
- }
|