feat: playroom related logic refactor

This commit is contained in:
merlin
2025-12-02 18:52:48 +08:00
parent 3fce5b2f01
commit 4597623cd9
14 changed files with 412 additions and 29 deletions

View File

@@ -8,10 +8,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import xin.merlin.myplayerbackend.entity.Friends;
import xin.merlin.myplayerbackend.entity.Inviting;
import xin.merlin.myplayerbackend.entity.Playrooms;
import xin.merlin.myplayerbackend.entity.UserInfo;
import xin.merlin.myplayerbackend.entity.http.InvitingDetails;
import xin.merlin.myplayerbackend.mapper.FriendsMapper;
import xin.merlin.myplayerbackend.mapper.InvitingMapper;
import xin.merlin.myplayerbackend.mapper.PlayroomsMapper;
import xin.merlin.myplayerbackend.mapper.UserMapper;
import java.util.ArrayList;
@@ -28,6 +30,19 @@ public class InvitingServiceImpl extends ServiceImpl<InvitingMapper, Inviting> {
private final FriendsMapper friendsMapper;
private final PlayroomsMapper playroomsMapper;
// TODO: 修改关联查询逻辑
private Map<String, Object> getInvitingDetails(List<Inviting> invitings) {
List<InvitingDetails> invitingDetails = new ArrayList<>();
for (Inviting inviting : invitings){
InvitingDetails invitingDetail = new InvitingDetails(inviting,
userMapper.selectOne(Wrappers.<UserInfo>lambdaQuery().eq(UserInfo::getId,inviting.getInviter())));
invitingDetails.add(invitingDetail);
}
return Map.of("result",invitingDetails);
}
public Boolean inviting(Integer inviter, Integer target,Integer room){
Inviting inviting = new Inviting();
inviting.setInviter(inviter);
@@ -41,16 +56,26 @@ public class InvitingServiceImpl extends ServiceImpl<InvitingMapper, Inviting> {
}
public Map<String,Object> getInvitingDetail(Integer target, Integer size, Integer page){
List<Inviting> invitings = invitingMapper.selectList(new Page<Inviting>(page,size), Wrappers.<Inviting>lambdaQuery().eq(Inviting::getTarget,target));
List<InvitingDetails> invitingDetails = new ArrayList<>();
for (Inviting inviting : invitings){
InvitingDetails invitingDetail = new InvitingDetails(inviting,
userMapper.selectOne(Wrappers.<UserInfo>lambdaQuery().eq(UserInfo::getId,target)));
invitingDetails.add(invitingDetail);
try {
List<Inviting> invitings = invitingMapper.selectList(new Page<>(page,size), Wrappers.<Inviting>lambdaQuery().eq(Inviting::getTarget,target));
return getInvitingDetails(invitings);
} catch (Exception e) {
log.error(e.getMessage());
throw new RuntimeException(e);
}
return Map.of("result",invitingDetails);
}
public Map<String,Object> getSelfInvitingDetail(Integer room, Integer size, Integer page){
try {
List<Inviting> invitings = invitingMapper.selectList(new Page<>(page,size), Wrappers.<Inviting>lambdaQuery().eq(Inviting::getRoom,room).apply("inviter = target"));
return getInvitingDetails(invitings);
} catch (Exception e) {
log.error(e.getMessage());
throw new RuntimeException(e);
}
}
@Transactional
public Boolean handleFriendInviting(Inviting inviting) {
@@ -68,4 +93,29 @@ public class InvitingServiceImpl extends ServiceImpl<InvitingMapper, Inviting> {
}
}
public Integer playroomIsAdmin(Integer id, Integer r_id) {
try {
Playrooms playrooms = playroomsMapper.selectOne(Wrappers.<Playrooms>lambdaQuery().eq(Playrooms::getId,id).eq(Playrooms::getR_id,r_id));
if (playrooms == null) return 1;
else return playrooms.getRole();
} catch (Exception e) {
log.error(e.getMessage());
throw new RuntimeException(e);
}
}
public Boolean handlePlayroomInviting(Inviting inviting) {
try {
if (inviting.getStatus().equals(0) || inviting.getRoom() == null) return false;
else if (inviting.getStatus().equals(1)){
playroomsMapper.insert(new Playrooms(inviting.getRoom(), inviting.getTarget(), 1));
return true;
}
else return true;
} catch (Exception e) {
log.error(e.getMessage());
throw new RuntimeException(e);
}
}
}