Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import com.mtvs.devlinkbackend.comment.entity.Comment;
import com.mtvs.devlinkbackend.comment.repository.CommentViewRepository;
import com.mtvs.devlinkbackend.guild.repository.GuildRepository;
import com.mtvs.devlinkbackend.guild.repository.GuildViewRepository;
import com.mtvs.devlinkbackend.user.command.model.entity.User;
import com.mtvs.devlinkbackend.user.query.model.dto.response.UserDetailSingleResponseDTO;
import com.mtvs.devlinkbackend.user.query.model.dto.response.sub.CharacterInfoDTO;
Expand All @@ -29,15 +30,15 @@ public class CommentViewService {
private final UserCharacterViewService userCharacterViewService;
private final UserViewRepository userViewRepository;
private final SkillCategoryInfoViewRepository skillCategoryInfoViewRepository;
private final GuildRepository guildRepository;
private final GuildViewRepository guildViewRepository;

public CommentViewService(CommentViewRepository commentViewRepository, UserViewService userViewService, UserCharacterViewService userCharacterViewService, UserViewRepository userViewRepository, SkillCategoryInfoViewRepository skillCategoryInfoViewRepository, GuildRepository guildRepository) {
public CommentViewService(CommentViewRepository commentViewRepository, UserViewService userViewService, UserCharacterViewService userCharacterViewService, UserViewRepository userViewRepository, SkillCategoryInfoViewRepository skillCategoryInfoViewRepository, GuildViewRepository guildViewRepository) {
this.commentViewRepository = commentViewRepository;
this.userViewService = userViewService;
this.userCharacterViewService = userCharacterViewService;
this.userViewRepository = userViewRepository;
this.skillCategoryInfoViewRepository = skillCategoryInfoViewRepository;
this.guildRepository = guildRepository;
this.guildViewRepository = guildViewRepository;
}

public CommentSingleResponseDTO findCommentByCommentId(Long commentId) {
Expand Down Expand Up @@ -67,7 +68,7 @@ public CommentDetailSingleResponseDTO findCommentDetailByCommentId(Long commentI
foundUserCharacter != null ?
new CharacterInfoDTO(
foundUserCharacter.getGuildId() != null ?
guildRepository.findByGuildId(foundUserCharacter.getGuildId()) : null,
guildViewRepository.findByGuildId(foundUserCharacter.getGuildId()) : null,
foundUserCharacter.getCharacterPicture())
: null;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package com.mtvs.devlinkbackend.guild.controller;

import com.mtvs.devlinkbackend.guild.dto.request.GuildMemberModifyRequestDTO;
import com.mtvs.devlinkbackend.guild.dto.request.GuildRegistRequestDTO;
import com.mtvs.devlinkbackend.guild.dto.request.GuildUpdateRequestDTO;
import com.mtvs.devlinkbackend.guild.dto.response.GuildDetailSingleResponseDTO;
import com.mtvs.devlinkbackend.guild.dto.response.GuildSingleResponseDTO;
import com.mtvs.devlinkbackend.guild.service.GuildService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/guild")
public class GuildCommandController {

private final GuildService guildService;

public GuildCommandController(GuildService guildService) {
this.guildService = guildService;
}

@Operation(summary = "길드 생성", description = "새로운 길드를 생성합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "길드가 성공적으로 생성되었습니다."),
@ApiResponse(responseCode = "400", description = "길드 생성 요청이 잘못되었습니다.")
})
@PostMapping
public ResponseEntity<GuildSingleResponseDTO> createGuild(
@RequestBody GuildRegistRequestDTO guildRegistRequestDTO) {

return ResponseEntity.ok(guildService.createGuild(guildRegistRequestDTO));
}

@Operation(summary = "길드 수정", description = "길드 정보를 수정합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "길드가 성공적으로 수정되었습니다."),
@ApiResponse(responseCode = "403", description = "수정 권한이 없습니다."),
@ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.")
})
@PatchMapping
public ResponseEntity<GuildSingleResponseDTO> updateGuild(
@RequestBody GuildUpdateRequestDTO guildUpdateRequestDTO) {

return ResponseEntity.ok(guildService.updateGuild(guildUpdateRequestDTO));
}

@Operation(summary = "길드 멤버 추가", description = "길드에 멤버를 추가합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "멤버가 성공적으로 추가되었습니다."),
@ApiResponse(responseCode = "403", description = "추가 권한이 없습니다."),
@ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.")
})
@PostMapping("/apply/{guildId}")
public GuildDetailSingleResponseDTO addMemberToGuild(
@RequestBody GuildMemberModifyRequestDTO guildMemberModifyRequestDTO) {

return guildService.applyMemberToGuild(guildMemberModifyRequestDTO);
}

@Operation(summary = "길드 삭제", description = "길드를 삭제합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "길드가 성공적으로 삭제되었습니다."),
@ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.")
})
@DeleteMapping("/{guildId}")
public ResponseEntity<Void> deleteGuild(@PathVariable Long guildId) {

guildService.deleteGuild(guildId);
return ResponseEntity.ok().build();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package com.mtvs.devlinkbackend.guild.controller;

import com.mtvs.devlinkbackend.common.util.JwtUtil;
import com.mtvs.devlinkbackend.guild.dto.response.GuildDetailListResponseDTO;
import com.mtvs.devlinkbackend.guild.dto.response.GuildDetailSingleResponseDTO;
import com.mtvs.devlinkbackend.guild.dto.response.GuildListResponseDTO;
import com.mtvs.devlinkbackend.guild.service.GuildViewService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/guild")
public class GuildQueryController {
private final GuildViewService guildViewService;
private final JwtUtil jwtUtil;

public GuildQueryController(GuildViewService guildViewService, JwtUtil jwtUtil) {
this.guildViewService = guildViewService;
this.jwtUtil = jwtUtil;
}

@Operation(summary = "길드 조회", description = "길드 ID로 길드를 조회합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "길드가 성공적으로 조회되었습니다."),
@ApiResponse(responseCode = "404", description = "길드를 찾을 수 없습니다.")
})
@GetMapping("/{guildId}")
public ResponseEntity<GuildDetailSingleResponseDTO> findGuildByGuildId(@PathVariable Long guildId) {
return ResponseEntity.ok(guildViewService.findGuildDetailByGuildId(guildId));
}

@Operation(summary = "길드 목록 조회", description = "이름이 특정 문자열을 포함하는 길드 목록을 조회합니다.")
@ApiResponse(responseCode = "200", description = "길드 목록이 성공적으로 조회되었습니다.")
@GetMapping("/list/{page}")
public ResponseEntity<GuildDetailListResponseDTO> findGuildsWithPagination(@PathVariable Integer page) {
return ResponseEntity.ok(guildViewService.findGuildDetailsWithPagination(page));
}

@Operation(summary = "사용자가 소유자인 길드 조회", description = "사용자가 소유자인 길드를 조회합니다.")
@ApiResponse(responseCode = "200", description = "길드 목록이 성공적으로 조회되었습니다.")
@GetMapping("/owner")
public ResponseEntity<GuildListResponseDTO> findGuildsByOwnerId(
@RequestHeader(name = "Authorization") String authorizationHeader) throws Exception {

String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader);
return ResponseEntity.ok(guildViewService.findGuildsByMasterAccountId(accountId));
}

@Operation(summary = "사용자가 멤버인 길드 조회", description = "사용자가 멤버인 길드를 조회합니다.")
@ApiResponse(responseCode = "200", description = "길드 목록이 성공적으로 조회되었습니다.")
@GetMapping("/member")
public ResponseEntity<GuildListResponseDTO> findGuildsByMemberIdContaining(
@RequestHeader(name = "Authorization") String authorizationHeader) throws Exception {

String accountId = jwtUtil.getSubjectFromAuthHeaderWithoutAuth(authorizationHeader);
return ResponseEntity.ok(guildViewService.findGuildsByAccountIdInGuild(accountId));
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.mtvs.devlinkbackend.guild.dto.request;

import com.mtvs.devlinkbackend.member.command.model.entity.Member;
import lombok.*;

import java.util.List;
Expand All @@ -10,5 +11,6 @@
@ToString
public class GuildMemberModifyRequestDTO {
private Long guildId;
private List<String> newMemberList;
private Long masterUserId;
private List<Member> guildMemberList;
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
@ToString
public class GuildRegistRequestDTO {
private String guildName;
private String introduction;
private Long maximumMember;
private List<String> memberList;
private String guildIntroduction;
private Long masterUserId;
private Integer maximumMember;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.mtvs.devlinkbackend.guild.dto.request;

import com.mtvs.devlinkbackend.member.command.model.entity.Member;
import lombok.*;

import java.util.List;
Expand All @@ -12,8 +13,7 @@
public class GuildUpdateRequestDTO {
private Long guildId;
private String guildName;
private String introduction;
private Long maximumMember;
private List<String> memberList;
private Long channelId;
private String guildIntroduction;
private Long masterUserId;
private Integer maximumMember;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.mtvs.devlinkbackend.guild.dto.response;

import com.mtvs.devlinkbackend.guild.dto.response.sub.GuildAndMemberDTO;
import lombok.*;

import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class GuildDetailListResponseDTO {
private List<GuildAndMemberDTO> data;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mtvs.devlinkbackend.guild.dto.response;

import com.mtvs.devlinkbackend.guild.dto.response.sub.GuildAndMemberDTO;
import lombok.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class GuildDetailSingleResponseDTO {
private GuildAndMemberDTO data;
}
Loading