package xin.merlin.myplayerbackend.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import xin.merlin.myplayerbackend.entity.PlayroomInfo; import xin.merlin.myplayerbackend.entity.Playrooms; import xin.merlin.myplayerbackend.entity.UserInfo; import xin.merlin.myplayerbackend.entity.http.PlayroomDetails; import xin.merlin.myplayerbackend.mapper.PlayroomMapper; import xin.merlin.myplayerbackend.mapper.PlayroomsMapper; import xin.merlin.myplayerbackend.mapper.UserMapper; import java.util.ArrayList; import java.util.List; @Service @RequiredArgsConstructor public class PlayroomServiceImpl extends ServiceImpl { private final PlayroomMapper playroomMapper; private final PlayroomsMapper playroomsMapper; private final UserMapper userMapper; @Transactional public PlayroomInfo createPlayroom(Integer id, PlayroomInfo playroomInfo) { try { playroomMapper.insert(playroomInfo); playroomsMapper.insert(new Playrooms(playroomInfo.getR_id(),id,0)); return playroomInfo; } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } // TODO: 优化点:使用xml语句写关联查询 public List getPlayrooms(Integer id) { try { List playrooms = playroomsMapper.selectList(Wrappers.lambdaQuery().eq(Playrooms::getId,id)); // System.out.println(playrooms); List playroomDetails = new ArrayList<>(); for (Playrooms playroom : playrooms) { playroomDetails.add(new PlayroomDetails(playroomMapper.selectById(playroom.getR_id()),playroom)); } return playroomDetails; } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } public Page searchPlayroom(PlayroomInfo playroomInfo, Integer currentPage, Integer pageSize) { try { return playroomMapper.selectPage(new Page<>(currentPage,pageSize),Wrappers.lambdaQuery().like(PlayroomInfo::getR_name,playroomInfo.getR_name())); } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } @Transactional public Integer deletePlayroom(PlayroomInfo playroomInfo) { try { playroomsMapper.delete(Wrappers.lambdaQuery().eq(Playrooms::getR_id,playroomInfo.getR_id())); return playroomMapper.deleteById(playroomInfo.getR_id()); } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } public List getMember(Integer r_id, Integer currentPage, Integer pageSize) { try { List ids = playroomsMapper.selectPage(new Page<>(currentPage,pageSize),Wrappers.lambdaQuery().eq(Playrooms::getR_id,r_id)).getRecords(); List members = new ArrayList<>(); for(Playrooms playroom:ids){ members.add(userMapper.selectById(playroom.getId())); } return members; } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException(e); } } }