Skip to content

Commit 6f43686

Browse files
committed
adminBan
1 parent eb8b34f commit 6f43686

File tree

6 files changed

+56
-5
lines changed

6 files changed

+56
-5
lines changed

prisma/migrations/migration_lock.toml

Lines changed: 0 additions & 3 deletions
This file was deleted.

prisma/schema.prisma

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ model User {
1616
is_initial_setup_required Boolean @default(true)
1717
social_type String @db.VarChar(50)
1818
status Boolean
19+
userstatus userStatus @default(active)
1920
inactive_date DateTime?
2021
created_at DateTime @default(now())
2122
updated_at DateTime @updatedAt
@@ -504,4 +505,10 @@ enum NotificationType {
504505
enum Payment_provider {
505506
kakaopay
506507
tosspay
508+
}
509+
510+
enum userStatus {
511+
active
512+
banned
513+
deleted
507514
}

src/members/controllers/member.controller.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,4 +689,28 @@ export class MemberController {
689689
next(error);
690690
}
691691
}
692+
693+
694+
public async adminBanUser(
695+
req: Request,
696+
res: Response,
697+
next: NextFunction
698+
): Promise<void> {
699+
try {
700+
const memberId = parseInt(req.params.memberId, 10);
701+
702+
if (isNaN(memberId)) {
703+
throw new AppError("유효하지 않은 멤버 ID입니다.", 400, "BadRequest");
704+
}
705+
706+
await this.memberService.adminBanUser(memberId);
707+
708+
res.status(200).json({
709+
message: "회원 정지 처리 완료",
710+
statusCode: 200,
711+
});
712+
} catch (error) {
713+
next(error);
714+
}
715+
}
692716
}

src/members/repositories/member.repository.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { UpdateHistoryDto } from "../dtos/update-history.dto";
44
import prisma from "../../config/prisma";
55
import { CreateSnsDto } from "../dtos/create-sns.dto";
66
import { UpdateSnsDto } from "../dtos/update-sns.dto";
7-
import { User } from "@prisma/client";
7+
import { User, userStatus } from "@prisma/client";
88
import { UpdateMemberDto } from "../dtos/update-member.dto";
99

1010
@Service()
@@ -448,6 +448,13 @@ export class MemberRepository {
448448
nextCursor,
449449
};
450450
}
451+
452+
async BanUser(memberId: number) {
453+
return prisma.user.update({
454+
where: { user_id: memberId },
455+
data: { userstatus: userStatus.banned },
456+
});
457+
}
451458
}
452459

453460
export const getMemberPromptsRepo = async (

src/members/routes/admin-member.route.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,12 @@ router.delete(
1313
memberController.adminDeleteHistory.bind(memberController)
1414
);
1515

16-
export default router;
16+
17+
router.patch(
18+
"/admin/:memberId/ban",
19+
authenticateJwt,
20+
isAdmin,
21+
memberController.adminBanUser.bind(memberController)
22+
);
23+
24+
export default router;

src/members/services/member.service.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,4 +432,12 @@ export class MemberService {
432432

433433
return await this.memberRepository.findAllMembers(page, limit);
434434
}
435+
436+
async adminBanUser(memberId: number) {
437+
const member = await this.memberRepository.findUserById(memberId);
438+
if (!member) {
439+
throw new AppError("해당 회원을 찾을 수 없습니다.", 404, "NotFound");
440+
}
441+
return this.memberRepository.BanUser(memberId);
442+
}
435443
}

0 commit comments

Comments
 (0)