diff --git a/src/controllers/task.controller.js b/src/controllers/task.controller.js index 671c487..e1d2ffc 100644 --- a/src/controllers/task.controller.js +++ b/src/controllers/task.controller.js @@ -190,12 +190,12 @@ class TaskController { async updateTeamMember(req, res, next) { try { const taskId = req.body.taskId || req.params.taskId; - const memberId = req.body.memberId || req.params.memberId; + const userId = req.body.userId || req.params.userId; const { role } = req.body; const result = await taskService.modifyMemberRole( parseInt(taskId), - parseInt(memberId), + parseInt(userId), role ); diff --git a/src/repositories/task.repository.js b/src/repositories/task.repository.js index 68948d3..ed1b82e 100644 --- a/src/repositories/task.repository.js +++ b/src/repositories/task.repository.js @@ -178,21 +178,21 @@ class TaskRepository { } // 멤버 존재 여부 확인 - async findMemberInTask(taskId, memberId) { + async findMemberInTask(taskId, userId) { return await prisma.member.findFirst({ where: { - id: memberId, - taskId: taskId + taskId: parseInt(taskId), + userId: parseInt(userId) } }); } // 나머지 멤버 역할 리셋 - async resetOtherMembersRole(taskId, memberId, tx) { + async resetOtherMembersRole(taskId, userId, tx) { return await tx.member.updateMany({ where: { - taskId: taskId, - id: { not: memberId }, + taskId: parseInt(taskId), + userId: { not: parseInt(userId) }, }, data: { role: false, @@ -203,7 +203,7 @@ class TaskRepository { // 대상 멤버 역할 업데이트 async updateMemberRole(memberId, isAdmin, tx) { return await tx.member.update({ - where: { id: memberId }, + where: { id: memberId }, // userId는 중복될 수 있으므로(다른 과제 등) id(PK) 사용 data: { role: isAdmin }, }); } diff --git a/src/routes/task.route.js b/src/routes/task.route.js index ac87a9f..050d3c5 100644 --- a/src/routes/task.route.js +++ b/src/routes/task.route.js @@ -30,8 +30,8 @@ router.get("/:taskId", authenticate, taskController.getTaskDetail); // GET /api/v1/task?sort=우선순위 -- 과제 목록 조회 router.get("/", authenticate, taskController.getTasks); -// PATCH /api/v1/task/:taskId/member/:memberId -- 팀원 정보 수정 -router.patch("/:taskId/member/:memberId", authenticate, taskController.updateTeamMember); +// PATCH /api/v1/task/:taskId/member/:userId -- 팀원 정보 수정 +router.patch("/:taskId/member/:userId", authenticate, taskController.updateTeamMember); // POST /api/v1/task/:taskId/subTask -- 단일 세부 과제 추가 router.post("/:taskId/subTask", authenticate, taskController.addSubTask) diff --git a/src/services/task.service.js b/src/services/task.service.js index a6374b0..21b9c16 100644 --- a/src/services/task.service.js +++ b/src/services/task.service.js @@ -745,19 +745,20 @@ class TaskService { } // 팀원 정보 수정 - async modifyMemberRole(taskId, memberId, role) { - const member = await taskRepository.findMemberInTask(taskId, memberId); - if (!member) throw new NotFoundError("멤버를 찾을 수 없음"); + async modifyMemberRole(taskId, userId, role) { + const member = await taskRepository.findMemberInTask(taskId, userId); + + if (!member) throw new NotFoundError("해당 과제에서 해당 유저를 찾을 수 없음"); - const isAdmin = role === 1; + const isAdmin = role === 1; - return await prisma.$transaction(async (tx) => { - if (isAdmin) { - await taskRepository.resetOtherMembersRole(taskId, memberId, tx); - } + return await prisma.$transaction(async (tx) => { + if (isAdmin) { + await taskRepository.resetOtherMembersRole(taskId, userId, tx); + } - return await taskRepository.updateMemberRole(memberId, isAdmin, tx); - }); + return await taskRepository.updateMemberRole(member.id, isAdmin, tx); + }); } // 단일 세부 과제 생성 서비스 diff --git a/src/swagger/swagger.yml b/src/swagger/swagger.yml index e161884..6707b6e 100644 --- a/src/swagger/swagger.yml +++ b/src/swagger/swagger.yml @@ -1729,7 +1729,7 @@ paths: description: 서버 내부 오류 # 팀원 정보(역할) 수정 - /api/v1/task/{taskId}/member/{memberId}: + /api/v1/task/{taskId}/member/{userId}: patch: tags: - Task @@ -1744,7 +1744,7 @@ paths: schema: type: integer - in: path - name: memberId + name: userId required: true schema: type: integer @@ -1754,12 +1754,12 @@ paths: application/json: schema: type: object - required: [taskId, memberId, role] + required: [taskId, userId, role] properties: taskId: type: integer example: 1 - memberId: + userId: type: integer example: 5 role: