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
@@ -0,0 +1,65 @@
package com.mtvs.devlinkbackend.member.command.controller;

import com.mtvs.devlinkbackend.member.command.service.MemberService;
import com.mtvs.devlinkbackend.member.query.view.response.MemberStatusResponseDTO;
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/member")
public class MemberCommandController {

private final MemberService memberService;

public MemberCommandController(MemberService memberService) {
this.memberService = memberService;
}

@Operation(summary = "멤버 지원 수락", description = "멤버 지원을 수락합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "팀이 성공적으로 반영되었습니다."),
@ApiResponse(responseCode = "404", description = "팀을 찾을 수 없습니다.")
})
@PatchMapping("/accpet/{memberId}")
public ResponseEntity<MemberStatusResponseDTO> updateTeam(
@PathVariable(name = "memberId") Long memberId) {

MemberStatusResponseDTO memberStatusResponseDTO = memberService.acceptSupplyByMemberId(memberId);
return memberStatusResponseDTO != null ?
ResponseEntity.ok(memberStatusResponseDTO) :
ResponseEntity.notFound().build();
}

@Operation(summary = "멤버 지원 거절", description = "멤버 지원을 거절합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "성공적으로 반영되었습니다."),
@ApiResponse(responseCode = "404", description = "팀을 찾을 수 없습니다.")
})
@PatchMapping("/reject/{memberId}")
public ResponseEntity<MemberStatusResponseDTO> addMemberToTeam(
@PathVariable(name = "memberId") Long memberId) {

MemberStatusResponseDTO memberStatusResponseDTO = memberService.rejectSupplyByMemberId(memberId);
return memberStatusResponseDTO != null ?
ResponseEntity.ok(memberStatusResponseDTO) :
ResponseEntity.notFound().build();
}

@Operation(summary = "팀에서 멤버 제거 ", description = "길드에서 멤버를 제거합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "멤버가 성공적으로 제거되었습니다."),
@ApiResponse(responseCode = "404", description = "팀을 찾을 수 없습니다.")
})
@DeleteMapping("/{memberId}")
public ResponseEntity<MemberStatusResponseDTO> removeMemberFromTeam(
@PathVariable(name = "memberId") Long memberId) {

MemberStatusResponseDTO memberStatusResponseDTO = memberService.deleteMemberByMemberId(memberId);
return memberStatusResponseDTO != null ?
ResponseEntity.ok(memberStatusResponseDTO) :
ResponseEntity.notFound().build();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mtvs.devlinkbackend.member.entity;
package com.mtvs.devlinkbackend.member.command.model.entity;

public enum AcceptStatus {
DELETED(0),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mtvs.devlinkbackend.member.entity;
package com.mtvs.devlinkbackend.member.command.model.entity;

import com.mtvs.devlinkbackend.util.converter.AcceptStatusConverter;
import jakarta.persistence.*;
Expand Down Expand Up @@ -52,4 +52,8 @@ public Member(String type, Long assigneesId, Long userId, String motive, AcceptS
this.motive = motive;
this.isAccepted = isAccepted;
}

public void setIsAccepted(AcceptStatus isAccepted) {
this.isAccepted = isAccepted;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mtvs.devlinkbackend.member.repository;
package com.mtvs.devlinkbackend.member.command.repository;

import com.mtvs.devlinkbackend.member.entity.Member;
import com.mtvs.devlinkbackend.member.command.model.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.mtvs.devlinkbackend.member.command.service;

import com.mtvs.devlinkbackend.member.command.model.entity.AcceptStatus;
import com.mtvs.devlinkbackend.member.command.model.entity.Member;
import com.mtvs.devlinkbackend.member.command.repository.MemberRepository;
import com.mtvs.devlinkbackend.member.query.view.response.MemberStatusResponseDTO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@Service
public class MemberService {
private final MemberRepository memberRepository;

public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

@Transactional
public void registAll(List<Member> memberList) {
memberRepository.saveAll(memberList);
}

@Transactional
public void deleteAll(List<Long> memberIdList) {
memberRepository.deleteMembersByMemberIdIn(memberIdList);
}

@Transactional
public MemberStatusResponseDTO acceptSupplyByMemberId(Long memberId) {
Optional<Member> member = memberRepository.findById(memberId);
if (member.isPresent()) {
Member foundMember = member.get();
foundMember.setIsAccepted(AcceptStatus.ACCEPTED);
return new MemberStatusResponseDTO(foundMember);
}
return null;
}

@Transactional
public MemberStatusResponseDTO rejectSupplyByMemberId(Long memberId) {
Optional<Member> member = memberRepository.findById(memberId);
if (member.isPresent()) {
Member foundMember = member.get();
foundMember.setIsAccepted(AcceptStatus.REJECTED);
return new MemberStatusResponseDTO(foundMember);
}
return null;
}

public MemberStatusResponseDTO deleteMemberByMemberId(Long memberId) {
Optional<Member> member = memberRepository.findById(memberId);
if (member.isPresent()) {
Member foundMember = member.get();
foundMember.setIsAccepted(AcceptStatus.DELETED);
return new MemberStatusResponseDTO(foundMember);
}
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.mtvs.devlinkbackend.member.query.controller;

import com.mtvs.devlinkbackend.member.query.service.MemberViewService;
import com.mtvs.devlinkbackend.member.query.view.response.MemberStatusResponseDTO;
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.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/member")
public class MemberQueryController {

private final MemberViewService memberViewService;

public MemberQueryController(MemberViewService memberViewService) {
this.memberViewService = memberViewService;
}

@Operation(summary = "멤버 정보 조회", description = "지원한 멤버의 정보를 조회합니다.")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "성공적으로 조회되었습니다."),
@ApiResponse(responseCode = "404", description = "팀을 찾을 수 없습니다.")
})
@PatchMapping("/accpet/{memberId}")
public ResponseEntity<MemberStatusResponseDTO> updateTeam(
@PathVariable(name = "memberId") Long memberId) {

MemberStatusResponseDTO memberStatusResponseDTO = memberViewService.findMemberByMemberId(memberId);
return memberStatusResponseDTO != null ?
ResponseEntity.ok(memberStatusResponseDTO) :
ResponseEntity.notFound().build();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mtvs.devlinkbackend.member.repository;
package com.mtvs.devlinkbackend.member.query.repository;

import com.mtvs.devlinkbackend.member.entity.Member;
import com.mtvs.devlinkbackend.member.command.model.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.mtvs.devlinkbackend.member.query.service;

import com.mtvs.devlinkbackend.member.query.repository.MemberViewRepository;
import com.mtvs.devlinkbackend.member.query.view.response.MemberStatusResponseDTO;
import org.springframework.stereotype.Service;

@Service
public class MemberViewService {
private final MemberViewRepository memberViewRepository;

public MemberViewService(MemberViewRepository memberViewRepository) {
this.memberViewRepository = memberViewRepository;
}

public MemberStatusResponseDTO findMemberByMemberId(Long memberId) {
return new MemberStatusResponseDTO(memberViewRepository.findById(memberId).orElse(null));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.mtvs.devlinkbackend.member.query.view.response;

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

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class MemberStatusResponseDTO {
private Member data;
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mtvs.devlinkbackend.team.dto.request;

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

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mtvs.devlinkbackend.team.dto.request;

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

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.mtvs.devlinkbackend.team.service;

import com.mtvs.devlinkbackend.member.entity.AcceptStatus;
import com.mtvs.devlinkbackend.member.entity.Member;
import com.mtvs.devlinkbackend.member.service.MemberService;
import com.mtvs.devlinkbackend.member.command.model.entity.AcceptStatus;
import com.mtvs.devlinkbackend.member.command.model.entity.Member;
import com.mtvs.devlinkbackend.member.command.service.MemberService;
import com.mtvs.devlinkbackend.team.dto.request.TeamMemberModifyRequestDTO;
import com.mtvs.devlinkbackend.team.dto.request.TeamRegistRequestDTO;
import com.mtvs.devlinkbackend.team.dto.request.TeamUpdateRequestDTO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ public DevSingleResponseDTO registDev(DevRegistRequestDTO devRegistRequestDTO,
savedUser.getUserId()
);


List<SkillCategoryInfo> skillCategoryInfoList = devInfoRequestDTO.getCategoryNameList()
.stream().map(categoryName -> new SkillCategoryInfo(categoryName, new ArrayList<>()))
.peek(skillCategoryInfo -> skillCategoryInfo.setDev(dev)).toList();
Expand All @@ -77,7 +78,7 @@ public DevSingleResponseDTO registDev(DevRegistRequestDTO devRegistRequestDTO,
userRepository.save(user);

// Response 정리되면 Refactoring
return new DevSingleResponseDTO(devRepository.save(dev));
return new DevSingleResponseDTO(savedDev);
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public Map<String, Object> getAccessTokenAndRefreshTokenByCode(String code) {
MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
body.add("grant_type", "authorization_code");
body.add("code", code);
body.add("scope", "basic_profile friends_list presence");
body.add("scope", "basic_profile");
body.add("deployment_id", deploymentId);

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(body, headers);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.mtvs.devlinkbackend.util.converter;

import com.mtvs.devlinkbackend.member.entity.AcceptStatus;
import com.mtvs.devlinkbackend.member.command.model.entity.AcceptStatus;
import jakarta.persistence.AttributeConverter;
import jakarta.persistence.Converter;

Expand Down
Loading