93 lines
3.6 KiB
Java
93 lines
3.6 KiB
Java
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<PlayroomMapper, PlayroomInfo> {
|
||
|
||
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<PlayroomDetails> getPlayrooms(Integer id) {
|
||
try {
|
||
List<Playrooms> playrooms = playroomsMapper.selectList(Wrappers.<Playrooms>lambdaQuery().eq(Playrooms::getId,id));
|
||
// System.out.println(playrooms);
|
||
List<PlayroomDetails> 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<PlayroomInfo> searchPlayroom(PlayroomInfo playroomInfo, Integer currentPage, Integer pageSize) {
|
||
try {
|
||
return playroomMapper.selectPage(new Page<>(currentPage,pageSize),Wrappers.<PlayroomInfo>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.<Playrooms>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<UserInfo> getMember(Integer r_id, Integer currentPage, Integer pageSize) {
|
||
try {
|
||
List<Playrooms> ids = playroomsMapper.selectPage(new Page<>(currentPage,pageSize),Wrappers.<Playrooms>lambdaQuery().eq(Playrooms::getR_id,r_id)).getRecords();
|
||
List<UserInfo> 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);
|
||
}
|
||
}
|
||
}
|