Skip to content

Commit 2651c3e

Browse files
committed
feat: admin
1 parent fedcb49 commit 2651c3e

File tree

11 files changed

+23
-207
lines changed

11 files changed

+23
-207
lines changed

src/main/kotlin/com/open3r/openmusic/domain/admin/album/controller/AdminAlbumController.kt

Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,49 +4,20 @@ import com.open3r.openmusic.domain.admin.album.service.AdminAlbumService
44
import com.open3r.openmusic.global.common.dto.response.BaseResponse
55
import io.swagger.v3.oas.annotations.Operation
66
import io.swagger.v3.oas.annotations.tags.Tag
7-
import org.springframework.data.domain.Pageable
8-
import org.springframework.data.web.PageableDefault
97
import org.springframework.security.access.prepost.PreAuthorize
10-
import org.springframework.web.bind.annotation.*
8+
import org.springframework.web.bind.annotation.DeleteMapping
9+
import org.springframework.web.bind.annotation.PathVariable
10+
import org.springframework.web.bind.annotation.RequestMapping
11+
import org.springframework.web.bind.annotation.RestController
1112

1213
@Tag(name = "어드민: 앨범", description = "Admin: Album")
1314
@RestController
1415
@RequestMapping("/admin/albums")
1516
class AdminAlbumController(
1617
private val adminAlbumService: AdminAlbumService
1718
) {
18-
@Operation(summary = "대기 중인 앨범 목록 조회", description = "대기 중인 앨범 목록을 조회합니다.")
19-
@GetMapping("/pending")
19+
@Operation(summary = "앨범 삭제", description = "앨범을 삭제합니다.")
2020
@PreAuthorize("hasRole('ADMIN')")
21-
fun getPendingAlbums(@PageableDefault pageable: Pageable) =
22-
BaseResponse(adminAlbumService.getPendingAlbums(pageable), 200).toEntity()
23-
24-
@Operation(summary = "승인된 앨범 목록 조회", description = "승인된 앨범 목록을 조회합니다.")
25-
@GetMapping("/approved")
26-
@PreAuthorize("hasRole('ADMIN')")
27-
fun getApprovedAlbums(@PageableDefault pageable: Pageable) =
28-
BaseResponse(adminAlbumService.getApprovedAlbums(pageable), 200).toEntity()
29-
30-
@Operation(summary = "거부된 앨범 목록 조회", description = "거부된 앨범 목록을 조회합니다.")
31-
@GetMapping("/rejected")
32-
@PreAuthorize("hasRole('ADMIN')")
33-
fun getRejectedAlbums(@PageableDefault pageable: Pageable) =
34-
BaseResponse(adminAlbumService.getRejectedAlbums(pageable), 200).toEntity()
35-
36-
@Operation(summary = "삭제된 앨범 목록 조회", description = "삭제된 앨범 목록을 조회합니다.")
37-
@GetMapping("/deleted")
38-
@PreAuthorize("hasRole('ADMIN')")
39-
fun getDeletedAlbums(@PageableDefault pageable: Pageable) =
40-
BaseResponse(adminAlbumService.getDeletedAlbums(pageable), 200).toEntity()
41-
42-
@Operation(summary = "앨범 승인", description = "앨범을 승인합니다.")
43-
@PostMapping("/approve")
44-
@PreAuthorize("hasRole('ADMIN')")
45-
fun approveAlbum(@RequestParam albumId: Long) =
46-
BaseResponse(adminAlbumService.approveAlbum(albumId), 200).toEntity()
47-
48-
@Operation(summary = "앨범 거부", description = "앨범을 거부합니다.")
49-
@PostMapping("/reject")
50-
@PreAuthorize("hasRole('ADMIN')")
51-
fun rejectAlbum(@RequestParam albumId: Long) = BaseResponse(adminAlbumService.rejectAlbum(albumId), 200).toEntity()
21+
@DeleteMapping("/{albumId}")
22+
fun deleteAlbum(@PathVariable albumId: Long) = BaseResponse(adminAlbumService.deleteAlbum(albumId), 204).toEntity()
5223
}

src/main/kotlin/com/open3r/openmusic/domain/admin/album/repository/AdminAlbumQueryRepository.kt

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

src/main/kotlin/com/open3r/openmusic/domain/admin/album/repository/impl/AdminAlbumQueryRepositoryImpl.kt

Lines changed: 0 additions & 77 deletions
This file was deleted.
Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,5 @@
11
package com.open3r.openmusic.domain.admin.album.service
22

3-
import com.open3r.openmusic.domain.album.dto.response.AlbumResponse
4-
import org.springframework.data.domain.Page
5-
import org.springframework.data.domain.Pageable
6-
73
interface AdminAlbumService {
8-
fun getPendingAlbums(pageable: Pageable): Page<AlbumResponse>
9-
fun getApprovedAlbums(pageable: Pageable): Page<AlbumResponse>
10-
fun getRejectedAlbums(pageable: Pageable): Page<AlbumResponse>
11-
fun getDeletedAlbums(pageable: Pageable): Page<AlbumResponse>
12-
13-
fun approveAlbum(albumId: Long)
14-
fun rejectAlbum(albumId: Long)
15-
164
fun deleteAlbum(albumId: Long)
175
}

src/main/kotlin/com/open3r/openmusic/domain/admin/album/service/impl/AdminAlbumServiceImpl.kt

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
package com.open3r.openmusic.domain.admin.album.service.impl
22

3-
import com.open3r.openmusic.domain.admin.album.repository.AdminAlbumQueryRepository
43
import com.open3r.openmusic.domain.admin.album.service.AdminAlbumService
54
import com.open3r.openmusic.domain.album.domain.enums.AlbumStatus
6-
import com.open3r.openmusic.domain.album.dto.response.AlbumResponse
75
import com.open3r.openmusic.domain.album.repository.AlbumRepository
86
import com.open3r.openmusic.global.error.CustomException
97
import com.open3r.openmusic.global.error.ErrorCode
10-
import org.springframework.data.domain.Page
11-
import org.springframework.data.domain.Pageable
128
import org.springframework.data.repository.findByIdOrNull
139
import org.springframework.stereotype.Service
1410
import org.springframework.transaction.annotation.Transactional
@@ -17,52 +13,7 @@ import org.springframework.transaction.annotation.Transactional
1713
@Transactional
1814
class AdminAlbumServiceImpl(
1915
private val albumRepository: AlbumRepository,
20-
private val adminAlbumQueryRepository: AdminAlbumQueryRepository
2116
) : AdminAlbumService {
22-
override fun getPendingAlbums(pageable: Pageable): Page<AlbumResponse> {
23-
return adminAlbumQueryRepository.getPendingAlbums(pageable).map { AlbumResponse.of(it) }
24-
}
25-
26-
override fun getApprovedAlbums(pageable: Pageable): Page<AlbumResponse> {
27-
return adminAlbumQueryRepository.getApprovedAlbums(pageable).map { AlbumResponse.of(it) }
28-
}
29-
30-
override fun getRejectedAlbums(pageable: Pageable): Page<AlbumResponse> {
31-
return adminAlbumQueryRepository.getRejectedAlbums(pageable).map { AlbumResponse.of(it) }
32-
}
33-
34-
override fun getDeletedAlbums(pageable: Pageable): Page<AlbumResponse> {
35-
return adminAlbumQueryRepository.getDeletedAlbums(pageable).map { AlbumResponse.of(it) }
36-
}
37-
38-
override fun approveAlbum(albumId: Long) {
39-
val album = albumRepository.findByIdOrNull(albumId) ?: throw CustomException(ErrorCode.ALBUM_NOT_FOUND)
40-
41-
if (album.status != AlbumStatus.PENDING) {
42-
throw CustomException(ErrorCode.ALBUM_STATUS_INVALID)
43-
}
44-
45-
album.status = AlbumStatus.APPROVED
46-
47-
album.songs.forEach { it.song.status = AlbumStatus.APPROVED }
48-
49-
albumRepository.save(album)
50-
}
51-
52-
override fun rejectAlbum(albumId: Long) {
53-
val album = albumRepository.findByIdOrNull(albumId) ?: throw CustomException(ErrorCode.ALBUM_NOT_FOUND)
54-
55-
if (album.status != AlbumStatus.PENDING) {
56-
throw CustomException(ErrorCode.ALBUM_STATUS_INVALID)
57-
}
58-
59-
album.status = AlbumStatus.REJECTED
60-
61-
album.songs.forEach { it.song.status = AlbumStatus.REJECTED }
62-
63-
albumRepository.save(album)
64-
}
65-
6617
override fun deleteAlbum(albumId: Long) {
6718
val album = albumRepository.findByIdOrNull(albumId) ?: throw CustomException(ErrorCode.ALBUM_NOT_FOUND)
6819

src/main/kotlin/com/open3r/openmusic/domain/admin/song/service/impl/AdminSongServiceImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.open3r.openmusic.domain.song.repository.SongRepository
66
import com.open3r.openmusic.global.error.CustomException
77
import com.open3r.openmusic.global.error.ErrorCode
88
import com.open3r.openmusic.global.security.UserSecurity
9+
import org.springframework.data.repository.findByIdOrNull
910
import org.springframework.stereotype.Service
1011
import org.springframework.transaction.annotation.Transactional
1112

@@ -19,7 +20,7 @@ class AdminSongServiceImpl(
1920

2021
@Transactional
2122
override fun deleteSong(songId: Long) {
22-
val song = songRepository.findById(songId).orElseThrow { throw CustomException(ErrorCode.SONG_NOT_FOUND) }
23+
val song = songRepository.findByIdOrNull(songId) ?: throw CustomException(ErrorCode.SONG_NOT_FOUND)
2324

2425
songRepository.delete(song)
2526
}

src/main/kotlin/com/open3r/openmusic/domain/album/domain/entity/AlbumEntity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class AlbumEntity(
2424
var coverUrl: String,
2525

2626
@Column(name = "status", nullable = true)
27-
var status: AlbumStatus,
27+
var status: AlbumStatus = AlbumStatus.ACTIVE,
2828

2929
@Enumerated(EnumType.STRING)
3030
@Column(name = "scope", nullable = true)
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.open3r.openmusic.domain.album.domain.enums
22

33
enum class AlbumStatus {
4-
PENDING,
5-
APPROVED,
6-
REJECTED,
4+
ACTIVE,
75
DELETED
86
}

src/main/kotlin/com/open3r/openmusic/domain/album/service/impl/AlbumServiceImpl.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.open3r.openmusic.domain.album.service.impl
33
import com.open3r.openmusic.domain.album.domain.entity.AlbumEntity
44
import com.open3r.openmusic.domain.album.domain.entity.AlbumLikeEntity
55
import com.open3r.openmusic.domain.album.domain.entity.AlbumSongEntity
6-
import com.open3r.openmusic.domain.album.domain.enums.AlbumStatus
76
import com.open3r.openmusic.domain.album.dto.request.AlbumCreateRequest
87
import com.open3r.openmusic.domain.album.dto.request.AlbumUpdateRequest
98
import com.open3r.openmusic.domain.album.dto.response.AlbumResponse
@@ -57,7 +56,6 @@ class AlbumServiceImpl(
5756
artist = user,
5857
genre = request.genre,
5958
scope = request.scope,
60-
status = AlbumStatus.PENDING
6159
)
6260
)
6361

src/main/kotlin/com/open3r/openmusic/domain/song/domain/entity/SongEntity.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import com.open3r.openmusic.domain.album.domain.enums.AlbumStatus
66
import com.open3r.openmusic.domain.song.domain.enums.SongGenre
77
import com.open3r.openmusic.domain.user.domain.entity.UserEntity
88
import com.open3r.openmusic.global.common.domain.entity.BaseEntity
9-
import com.open3r.openmusic.global.error.CustomException
10-
import com.open3r.openmusic.global.error.ErrorCode
119
import jakarta.persistence.*
1210

1311
@Entity

0 commit comments

Comments
 (0)