From 4597623cd9ea10b204923ad97eb0a060fc5b967d Mon Sep 17 00:00:00 2001 From: merlin Date: Tue, 2 Dec 2025 18:52:48 +0800 Subject: [PATCH] feat: playroom related logic refactor --- .../controller/InvitingController.java | 66 ++++++++-- .../controller/PlayroomController.java | 124 ++++++++++++++++++ .../controller/UserController.java | 7 +- .../myplayerbackend/entity/PlayroomInfo.java | 3 +- .../myplayerbackend/entity/Playrooms.java | 3 + .../myplayerbackend/entity/UserInfo.java | 3 +- .../entity/http/PlayroomDetails.java | 27 ++++ .../mapper/PlayroomMapper.java | 5 + .../myplayerbackend/mapper/PlayroomMapper.xml | 12 ++ .../service/impl/InvitingServiceImpl.java | 64 ++++++++- .../service/impl/PlayroomServiceImpl.java | 81 ++++++++++++ .../service/impl/PlayroomsServiceImpl.java | 20 +++ .../service/impl/UserServiceImpl.java | 22 +++- .../utils/result/ResultCode.java | 4 +- 14 files changed, 412 insertions(+), 29 deletions(-) create mode 100644 src/main/java/xin/merlin/myplayerbackend/controller/PlayroomController.java create mode 100644 src/main/java/xin/merlin/myplayerbackend/entity/http/PlayroomDetails.java create mode 100644 src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.xml diff --git a/src/main/java/xin/merlin/myplayerbackend/controller/InvitingController.java b/src/main/java/xin/merlin/myplayerbackend/controller/InvitingController.java index 4953e3b..19647a2 100644 --- a/src/main/java/xin/merlin/myplayerbackend/controller/InvitingController.java +++ b/src/main/java/xin/merlin/myplayerbackend/controller/InvitingController.java @@ -1,7 +1,5 @@ package xin.merlin.myplayerbackend.controller; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import xin.merlin.myplayerbackend.entity.Inviting; @@ -11,7 +9,6 @@ import xin.merlin.myplayerbackend.utils.JwtUtil; import xin.merlin.myplayerbackend.utils.result.Response; import xin.merlin.myplayerbackend.utils.result.ResultCode; -import java.util.Map; import java.util.Objects; import static com.baomidou.mybatisplus.extension.ddl.DdlScriptErrorHandler.PrintlnLogErrorHandler.log; @@ -25,26 +22,31 @@ public class InvitingController { private final JwtUtil jwtUtil; + // playroom鉴权 + private Boolean isAdmin(Integer id,Integer r_id){ + return invitingService.playroomIsAdmin(id,r_id)==0; + } + @PostMapping("/friends") Response requestFriend(@RequestHeader("Authorization")String token, @RequestBody UserInfo userInfo) { try { token = token.substring(7); Integer id = jwtUtil.getId(token); if (Objects.equals(id, userInfo.getId())) return Response.success(ResultCode.INVITING_ILLEGAL_REQUEST); - if(invitingService.inviting(id,userInfo.getId(),null)) return Response.success(ResultCode.SUCCESS); - return Response.success(ResultCode.INVITING_REQUEST_ERROR); + if(!invitingService.inviting(id,userInfo.getId(),null)) return Response.success(ResultCode.INVITING_RE_REQUEST); + return Response.success(ResultCode.SUCCESS); } catch (Exception e) { log.error(e.getMessage()); return Response.fail(ResultCode.SERVER_ERROR); } } - @GetMapping("/friends/get") - Response getFriend(@RequestHeader("Authorization")String token, @RequestParam Integer size, @RequestParam Integer page) { + @GetMapping("/get") + Response getFriend(@RequestHeader("Authorization")String token, @RequestParam Integer pageSize, @RequestParam Integer currentPage) { try { token = token.substring(7); Integer id = jwtUtil.getId(token); - return Response.success(ResultCode.SUCCESS, invitingService.getInvitingDetail(id,size,page)); + return Response.success(ResultCode.SUCCESS, invitingService.getInvitingDetail(id, pageSize, currentPage)); } catch (Exception e) { log.error(e.getMessage()); return Response.fail(ResultCode.SERVER_ERROR); @@ -52,13 +54,57 @@ public class InvitingController { } - @PostMapping("/friends/handle") + @PostMapping("/handle") Response handleFriend(@RequestHeader("Authorization")String token, @RequestBody Inviting inviting) { try { + if (Objects.equals(inviting.getInviter(), inviting.getTarget())) return Response.success(ResultCode.ACCOUNT_PERMISSION_DENY); token = token.substring(7); Integer id = jwtUtil.getId(token); if(!inviting.getTarget().equals(id)) return Response.success(ResultCode.INVITING_ILLEGAL_RESPONSE); - if(!invitingService.handleFriendInviting(inviting)) return Response.success(ResultCode.SERVER_ERROR); + if(!invitingService.handleFriendInviting(inviting)) return Response.success(ResultCode.INVITING_ILLEGAL_REQUEST); + return Response.success(ResultCode.SUCCESS); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + + @PostMapping("/playroom") + Response playRoom(@RequestBody Inviting inviting) { + try { + if(inviting.getRoom()==null || !inviting.getStatus().equals(0)) return Response.success(ResultCode.INVITING_REQUEST_ERROR); + if(!invitingService.inviting(inviting.getInviter(),inviting.getTarget(),inviting.getRoom())) return Response.success(ResultCode.INVITING_RE_REQUEST); + return Response.success(ResultCode.SUCCESS); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + + +// 管理员获取playroom + @GetMapping("/playroom/get/{r_id}") + Response playroomGet(@RequestHeader("Authorization")String token,@PathVariable("r_id") Integer r_id, @RequestParam Integer pageSize, @RequestParam Integer currentPage) { + try { + token = token.substring(7); + Integer id = jwtUtil.getId(token); + if (!isAdmin(id,r_id)) return Response.success(ResultCode.INVITING_AUTH_ERROR); + return Response.success(ResultCode.SUCCESS, invitingService.getSelfInvitingDetail(r_id, pageSize, currentPage)); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + +// 管理员对请求进行审批 + @PostMapping("/playroom/handle/{r_id}") + Response playroomHandle(@RequestHeader("Authorization")String token,@PathVariable("r_id") Integer r_id, @RequestBody Inviting inviting) { + try { + token = token.substring(7); + Integer id = jwtUtil.getId(token); + if (!isAdmin(id,r_id)) return Response.success(ResultCode.INVITING_AUTH_ERROR); + if(!invitingService.handlePlayroomInviting(inviting)) return Response.success(ResultCode.INVITING_ILLEGAL_REQUEST); + return Response.success(ResultCode.SUCCESS); } catch (Exception e) { log.error(e.getMessage()); diff --git a/src/main/java/xin/merlin/myplayerbackend/controller/PlayroomController.java b/src/main/java/xin/merlin/myplayerbackend/controller/PlayroomController.java new file mode 100644 index 0000000..cb0c9fc --- /dev/null +++ b/src/main/java/xin/merlin/myplayerbackend/controller/PlayroomController.java @@ -0,0 +1,124 @@ +package xin.merlin.myplayerbackend.controller; + + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import xin.merlin.myplayerbackend.entity.PlayroomInfo; +import xin.merlin.myplayerbackend.entity.Playrooms; +import xin.merlin.myplayerbackend.entity.UserInfo; +import xin.merlin.myplayerbackend.service.impl.PlayroomServiceImpl; +import xin.merlin.myplayerbackend.service.impl.PlayroomsServiceImpl; +import xin.merlin.myplayerbackend.utils.JwtUtil; +import xin.merlin.myplayerbackend.utils.result.Response; +import xin.merlin.myplayerbackend.utils.result.ResultCode; + +import static com.baomidou.mybatisplus.extension.ddl.DdlScriptErrorHandler.PrintlnLogErrorHandler.log; + +@RestController +@RequestMapping("/playroom") +@RequiredArgsConstructor +public class PlayroomController { + + private final JwtUtil jwtUtil; + + private final PlayroomServiceImpl playroomService; + + private final PlayroomsServiceImpl playroomsService; + + private Boolean isAdmin(Integer id,Integer r_id){ + return playroomsService.playroomIsAdmin(id,r_id)==0; + } + + @PostMapping("/create") + Response createPlayroom(@RequestHeader("Authorization")String token, @RequestBody PlayroomInfo playroomInfo) { + try { + token = token.substring(7); + Integer id = jwtUtil.getId(token); + return Response.success(ResultCode.SUCCESS, playroomService.createPlayroom(id,playroomInfo)); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + + @GetMapping("/get") + Response getPlayroom(@RequestHeader("Authorization")String token){ + try { + token = token.substring(7); + Integer id = jwtUtil.getId(token); + + return Response.success(ResultCode.SUCCESS,playroomService.getPlayrooms(id)); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + + } + + @PostMapping("/search") + Response searchPlayroom(@RequestBody PlayroomInfo playroomInfo) { + // TODO:视情况开放api参数currentPage和 pageSize + try { + Integer currentPage = 1; + Integer pageSize = 10; + + return Response.success(ResultCode.SUCCESS,playroomService.searchPlayroom(playroomInfo,currentPage,pageSize)); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + + @PostMapping("/update") + Response updatePlayroom(@RequestHeader("Authorization")String token, @RequestBody PlayroomInfo playroomInfo) { + try { + token = token.substring(7); + Integer id = jwtUtil.getId(token); + if(!isAdmin(id,playroomInfo.getR_id())) return Response.success(ResultCode.ACCOUNT_PERMISSION_DENY); + playroomService.updateById(playroomInfo); + return Response.success(ResultCode.SUCCESS); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + + @PostMapping("/delete") + Response deletePlayroom(@RequestHeader("Authorization")String token, @RequestBody PlayroomInfo playroomInfo) { + try { + token = token.substring(7); + Integer id = jwtUtil.getId(token); + if(!isAdmin(id,playroomInfo.getR_id())) return Response.success(ResultCode.ACCOUNT_PERMISSION_DENY); + return Response.success(ResultCode.SUCCESS,playroomService.deletePlayroom(playroomInfo)); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + + @GetMapping("/member/{r_id}") + Response getMember(@PathVariable("r_id")Integer r_id,@RequestParam Integer currentPage,@RequestParam Integer pageSize){ + try { + return Response.success(ResultCode.SUCCESS,playroomService.getMember(r_id,currentPage,pageSize)); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + + @PostMapping("/member/delete/{r_id}") + Response deleteMember(@RequestHeader("Authorization")String token, @PathVariable("r_id")Integer r_id, @RequestBody UserInfo userInfo){ + try { + token = token.substring(7); + Integer id = jwtUtil.getId(token); + if(!isAdmin(id,r_id)) return Response.success(ResultCode.ACCOUNT_PERMISSION_DENY); + playroomsService.remove(Wrappers.lambdaQuery().eq(Playrooms::getR_id,r_id).eq(Playrooms::getId,userInfo.getId())); + return Response.success(ResultCode.SUCCESS); + } catch (Exception e) { + log.error(e.getMessage()); + return Response.fail(ResultCode.SERVER_ERROR); + } + } + +} diff --git a/src/main/java/xin/merlin/myplayerbackend/controller/UserController.java b/src/main/java/xin/merlin/myplayerbackend/controller/UserController.java index aa27761..40329b3 100644 --- a/src/main/java/xin/merlin/myplayerbackend/controller/UserController.java +++ b/src/main/java/xin/merlin/myplayerbackend/controller/UserController.java @@ -57,12 +57,15 @@ public class UserController { @PostMapping("/search") Response search(@RequestBody UserInfo userinfo){ +// TODO:视情况开放api参数currentPage和 pageSize + Integer currentPage = 1; + Integer pageSize = 10; try { if(userinfo.getU_id()!=null){ - return Response.success(ResultCode.SUCCESS, Map.of("result",userService.searchByUID(userinfo.getU_id()))); + return Response.success(ResultCode.SUCCESS, Map.of("result",userService.searchByUID(userinfo.getU_id(),currentPage,pageSize))); } else - return Response.success(ResultCode.SUCCESS, Map.of("result",userService.searchByName(userinfo.getU_name()))); + return Response.success(ResultCode.SUCCESS, Map.of("result",userService.searchByName(userinfo.getU_name(),currentPage,pageSize))); } catch (Exception e) { log.error(e.getMessage(),e); return Response.fail(ResultCode.SERVER_ERROR); diff --git a/src/main/java/xin/merlin/myplayerbackend/entity/PlayroomInfo.java b/src/main/java/xin/merlin/myplayerbackend/entity/PlayroomInfo.java index d3c5a1f..17e9dc3 100644 --- a/src/main/java/xin/merlin/myplayerbackend/entity/PlayroomInfo.java +++ b/src/main/java/xin/merlin/myplayerbackend/entity/PlayroomInfo.java @@ -1,5 +1,6 @@ package xin.merlin.myplayerbackend.entity; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -7,7 +8,7 @@ import lombok.Data; @Data @TableName("playroominfo") public class PlayroomInfo { - @TableId("r_id") + @TableId(value = "r_id",type = IdType.AUTO) private Integer r_id; private String r_name; diff --git a/src/main/java/xin/merlin/myplayerbackend/entity/Playrooms.java b/src/main/java/xin/merlin/myplayerbackend/entity/Playrooms.java index c873315..ab0e725 100644 --- a/src/main/java/xin/merlin/myplayerbackend/entity/Playrooms.java +++ b/src/main/java/xin/merlin/myplayerbackend/entity/Playrooms.java @@ -2,12 +2,15 @@ package xin.merlin.myplayerbackend.entity; import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; import lombok.Data; @Data @TableName("playrooms") +@AllArgsConstructor public class Playrooms { private Integer r_id; private Integer id; private Integer role; + } diff --git a/src/main/java/xin/merlin/myplayerbackend/entity/UserInfo.java b/src/main/java/xin/merlin/myplayerbackend/entity/UserInfo.java index e8e2699..8f6a976 100644 --- a/src/main/java/xin/merlin/myplayerbackend/entity/UserInfo.java +++ b/src/main/java/xin/merlin/myplayerbackend/entity/UserInfo.java @@ -7,9 +7,8 @@ import lombok.Data; @Data @TableName("userinfo") public class UserInfo { - @TableId("u_id") private String u_id; - + @TableId("id") private Integer id; private String u_name; private String u_introduction; diff --git a/src/main/java/xin/merlin/myplayerbackend/entity/http/PlayroomDetails.java b/src/main/java/xin/merlin/myplayerbackend/entity/http/PlayroomDetails.java new file mode 100644 index 0000000..cc4de15 --- /dev/null +++ b/src/main/java/xin/merlin/myplayerbackend/entity/http/PlayroomDetails.java @@ -0,0 +1,27 @@ +package xin.merlin.myplayerbackend.entity.http; + + +import lombok.Data; +import lombok.NoArgsConstructor; +import xin.merlin.myplayerbackend.entity.PlayroomInfo; +import xin.merlin.myplayerbackend.entity.Playrooms; + +@Data +@NoArgsConstructor +public class PlayroomDetails { + private Integer id; + private Integer r_id; + private String r_name; + private String r_introduction; + private String r_avatar; + private Integer role; + + public PlayroomDetails(PlayroomInfo playroomInfo, Playrooms playrooms) { + this.id = playrooms.getId(); + this.r_id = playrooms.getR_id(); + this.role = playrooms.getRole(); + this.r_name = playroomInfo.getR_name(); + this.r_introduction = playroomInfo.getR_introduction(); + this.r_avatar = playroomInfo.getR_avatar(); + } +} diff --git a/src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.java b/src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.java index 0e8b062..e016f0c 100644 --- a/src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.java +++ b/src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.java @@ -2,8 +2,13 @@ package xin.merlin.myplayerbackend.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import xin.merlin.myplayerbackend.entity.PlayroomInfo; +import xin.merlin.myplayerbackend.entity.http.PlayroomDetails; + +import java.util.List; @Mapper public interface PlayroomMapper extends BaseMapper { + List selectPlayroomDetails(@Param("userId") Integer id); } diff --git a/src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.xml b/src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.xml new file mode 100644 index 0000000..e171afa --- /dev/null +++ b/src/main/java/xin/merlin/myplayerbackend/mapper/PlayroomMapper.xml @@ -0,0 +1,12 @@ + diff --git a/src/main/java/xin/merlin/myplayerbackend/service/impl/InvitingServiceImpl.java b/src/main/java/xin/merlin/myplayerbackend/service/impl/InvitingServiceImpl.java index 7283c31..12e041e 100644 --- a/src/main/java/xin/merlin/myplayerbackend/service/impl/InvitingServiceImpl.java +++ b/src/main/java/xin/merlin/myplayerbackend/service/impl/InvitingServiceImpl.java @@ -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 { private final FriendsMapper friendsMapper; + private final PlayroomsMapper playroomsMapper; + + // TODO: 修改关联查询逻辑 + private Map getInvitingDetails(List invitings) { + List invitingDetails = new ArrayList<>(); + for (Inviting inviting : invitings){ + InvitingDetails invitingDetail = new InvitingDetails(inviting, + userMapper.selectOne(Wrappers.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 { } public Map getInvitingDetail(Integer target, Integer size, Integer page){ - List invitings = invitingMapper.selectList(new Page(page,size), Wrappers.lambdaQuery().eq(Inviting::getTarget,target)); - List invitingDetails = new ArrayList<>(); - for (Inviting inviting : invitings){ - InvitingDetails invitingDetail = new InvitingDetails(inviting, - userMapper.selectOne(Wrappers.lambdaQuery().eq(UserInfo::getId,target))); - invitingDetails.add(invitingDetail); + try { + List invitings = invitingMapper.selectList(new Page<>(page,size), Wrappers.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 getSelfInvitingDetail(Integer room, Integer size, Integer page){ + try { + List invitings = invitingMapper.selectList(new Page<>(page,size), Wrappers.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 { } } + + public Integer playroomIsAdmin(Integer id, Integer r_id) { + try { + Playrooms playrooms = playroomsMapper.selectOne(Wrappers.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); + } + } } diff --git a/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomServiceImpl.java b/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomServiceImpl.java index d1acab7..d68477b 100644 --- a/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomServiceImpl.java +++ b/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomServiceImpl.java @@ -1,10 +1,91 @@ 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.apache.catalina.User; 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.selectObjs(Wrappers.lambdaQuery().eq(Playrooms::getId,id)); + 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 { + return playroomsMapper.delete(Wrappers.lambdaQuery().eq(Playrooms::getR_id,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); + } + } } diff --git a/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomsServiceImpl.java b/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomsServiceImpl.java index 343325f..8b0cb01 100644 --- a/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomsServiceImpl.java +++ b/src/main/java/xin/merlin/myplayerbackend/service/impl/PlayroomsServiceImpl.java @@ -1,10 +1,30 @@ package xin.merlin.myplayerbackend.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; 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.mapper.PlayroomMapper; import xin.merlin.myplayerbackend.mapper.PlayroomsMapper; @Service +@RequiredArgsConstructor public class PlayroomsServiceImpl extends ServiceImpl { + + private final PlayroomsMapper playroomsMapper; + + + public Integer playroomIsAdmin(Integer id, Integer r_id) { + try { + Playrooms playrooms = playroomsMapper.selectOne(Wrappers.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); + } + } } diff --git a/src/main/java/xin/merlin/myplayerbackend/service/impl/UserServiceImpl.java b/src/main/java/xin/merlin/myplayerbackend/service/impl/UserServiceImpl.java index 42f0c64..44fdf05 100644 --- a/src/main/java/xin/merlin/myplayerbackend/service/impl/UserServiceImpl.java +++ b/src/main/java/xin/merlin/myplayerbackend/service/impl/UserServiceImpl.java @@ -14,13 +14,23 @@ public class UserServiceImpl extends ServiceImpl { private final UserMapper userMapper; - public Object searchByUID(String u_id) { - Page page = new Page<>(1, 5); - return userMapper.selectList(page,Wrappers.lambdaQuery().like(UserInfo::getU_id, u_id)); + public Object searchByUID(String u_id,Integer currentPage,Integer pageSize) { + try { + Page page = new Page<>(currentPage, pageSize); + return userMapper.selectList(page,Wrappers.lambdaQuery().like(UserInfo::getU_id, u_id)); + } catch (Exception e) { + log.error(e.getMessage()); + throw new RuntimeException(e); + } } - public Object searchByName(String u_name) { - Page page = new Page<>(1, 5); - return userMapper.selectList(page,Wrappers.lambdaQuery().like(UserInfo::getU_name, u_name)); + public Object searchByName(String u_name,Integer currentPage,Integer pageSize) { + try { + Page page = new Page<>(currentPage, pageSize); + return userMapper.selectList(page,Wrappers.lambdaQuery().like(UserInfo::getU_name, u_name)); + } catch (Exception e) { + log.error(e.getMessage()); + throw new RuntimeException(e); + } } } diff --git a/src/main/java/xin/merlin/myplayerbackend/utils/result/ResultCode.java b/src/main/java/xin/merlin/myplayerbackend/utils/result/ResultCode.java index 2d2fdcb..ca354c7 100644 --- a/src/main/java/xin/merlin/myplayerbackend/utils/result/ResultCode.java +++ b/src/main/java/xin/merlin/myplayerbackend/utils/result/ResultCode.java @@ -50,7 +50,9 @@ public enum ResultCode { //邀请相关 INVITING_REQUEST_ERROR("4301","邀请请求错误"), INVITING_ILLEGAL_REQUEST("4302","非法邀请"), - INVITING_ILLEGAL_RESPONSE("4303","非法邀请"); + INVITING_ILLEGAL_RESPONSE("4303","非法邀请"), + INVITING_RE_REQUEST("4304","重复请求"), + INVITING_AUTH_ERROR("4305","权限错误");