Skip to content

Commit

Permalink
Refactor | CAKK-92 | 어드민 서버 코드 리팩토링
Browse files Browse the repository at this point in the history
* Chore | CAKK-92 | Security 관련 의존성 추가

* Feature | CAKK-92 | 인증 어드민 관련 기능 구현

* Refactor | CAKK-92 | 어드민 서버 코드 리팩토링
  • Loading branch information
lcomment authored Oct 4, 2024
1 parent 5ed3b0a commit acbad42
Show file tree
Hide file tree
Showing 38 changed files with 471 additions and 665 deletions.
2 changes: 2 additions & 0 deletions cakk-admin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ dependencies {

implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")

implementation("org.springframework:spring-tx")

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.cakk.admin.annotation

@Target(AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
annotation class AdminUser
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import kotlin.reflect.KClass
@Constraint(validatedBy = [OperationValidator::class])
annotation class OperationDay(

val message: String = "영업 일자 형식이 잘못됐습니다.",
val groups: Array<KClass<*>> = [],
val payload: Array<KClass<out Payload>> = []
val message: String = "영업 일자 형식이 잘못됐습니다.",
val groups: Array<KClass<*>> = [],
val payload: Array<KClass<out Payload>> = []
)
Original file line number Diff line number Diff line change
@@ -1,38 +1,44 @@
package com.cakk.admin.controller

import com.cakk.admin.dto.request.PromotionRequest
import com.cakk.admin.dto.response.CakeShopOwnerCandidateResponse
import com.cakk.admin.dto.response.CakeShopOwnerCandidatesResponse
import com.cakk.admin.service.BusinessInformationService
import com.cakk.common.response.ApiResponse
import jakarta.validation.Valid

import org.springframework.web.bind.annotation.*

import com.cakk.admin.dto.request.PromotionRequest
import com.cakk.admin.mapper.supplyPromotionParamBy
import com.cakk.common.response.ApiResponse
import com.cakk.core.dto.response.shop.CakeShopOwnerCandidateResponse
import com.cakk.core.dto.response.shop.CakeShopOwnerCandidatesResponse
import com.cakk.core.service.shop.ShopService

@RestController
@RequestMapping("/business-information")
class BusinessInformationController(
private val businessInformationService: BusinessInformationService
private val shopService: ShopService
) {

@GetMapping("/candidates")
fun getBusinessOwnerCandidates(): ApiResponse<CakeShopOwnerCandidatesResponse> {
val response = businessInformationService.getBusinessOwnerCandidates()
return ApiResponse.success(response)
}

@GetMapping("/candidates/{userId}")
fun getCandidateSpecificationInformation(
@PathVariable userId: Long
): ApiResponse<CakeShopOwnerCandidateResponse> {
val response = businessInformationService.getCandidateInformation(userId)
return ApiResponse.success(response)
}

@PutMapping("/promote")
fun promoteUser(
@RequestBody @Valid promotionRequest: PromotionRequest
): ApiResponse<Unit> {
businessInformationService.promoteUserToBusinessOwner(promotionRequest)
return ApiResponse.success()
}
@GetMapping("/candidates")
fun getBusinessOwnerCandidates(): ApiResponse<CakeShopOwnerCandidatesResponse> {
val response = shopService.getBusinessOwnerCandidates()
return ApiResponse.success(response)
}

@GetMapping("/candidates/{userId}")
fun getCandidateSpecificationInformation(
@PathVariable userId: Long
): ApiResponse<CakeShopOwnerCandidateResponse> {
val response = shopService.getCandidateInformation(userId)

return ApiResponse.success(response)
}

@PutMapping("/promote")
fun promoteUser(
@RequestBody @Valid promotionRequest: PromotionRequest
): ApiResponse<Unit> {
val param = supplyPromotionParamBy(promotionRequest)
shopService.promoteUserToBusinessOwner(param)

return ApiResponse.success()
}
}
Original file line number Diff line number Diff line change
@@ -1,44 +1,57 @@
package com.cakk.admin.controller

import jakarta.validation.Valid

import org.springframework.web.bind.annotation.*

import com.cakk.admin.annotation.AdminUser
import com.cakk.admin.dto.request.CakeCreateByAdminRequest
import com.cakk.admin.dto.request.CakeUpdateByAdminRequest
import com.cakk.admin.service.CakeService
import com.cakk.admin.mapper.supplyCakeCreateParamBy
import com.cakk.admin.mapper.supplyCakeUpdateParamBy
import com.cakk.common.response.ApiResponse
import jakarta.validation.Valid
import org.springframework.web.bind.annotation.*
import com.cakk.core.service.cake.CakeService
import com.cakk.domain.mysql.entity.user.User

@RestController
@RequestMapping("/shops/{cakeShopId}/cakes")
class CakeController(
private val cakeService: CakeService
private val cakeService: CakeService
) {

@PostMapping
fun create(
@PathVariable cakeShopId: Long,
@RequestBody @Valid dto: CakeCreateByAdminRequest
): ApiResponse<Unit> {
cakeService.createCake(dto.toParam(cakeShopId))
return ApiResponse.success()
}

@PutMapping("/{cakeId}")
fun update(
@PathVariable cakeShopId: Long,
@PathVariable cakeId: Long,
@RequestBody @Valid dto: CakeUpdateByAdminRequest
): ApiResponse<Unit> {
cakeService.updateCake(dto.toParam(cakeShopId))
return ApiResponse.success()
}

@DeleteMapping("/{cakeId}")
fun delete(
@PathVariable cakeShopId: Long,
@PathVariable cakeId: Long
): ApiResponse<Unit> {
cakeService.deleteCake(cakeId)

return ApiResponse.success()
}
@PostMapping
fun create(
@PathVariable cakeShopId: Long,
@RequestBody @Valid dto: CakeCreateByAdminRequest,
@AdminUser admin: User
): ApiResponse<Unit> {
val param = supplyCakeCreateParamBy(dto, admin, cakeShopId)
cakeService.createCake(param)

return ApiResponse.success()
}

@PutMapping("/{cakeId}")
fun update(
@PathVariable cakeShopId: Long,
@PathVariable cakeId: Long,
@RequestBody @Valid dto: CakeUpdateByAdminRequest,
@AdminUser admin: User
): ApiResponse<Unit> {
val param = supplyCakeUpdateParamBy(dto, admin, cakeShopId)
cakeService.updateCake(param)

return ApiResponse.success()
}

@DeleteMapping("/{cakeId}")
fun delete(
@PathVariable cakeShopId: Long,
@PathVariable cakeId: Long,
@AdminUser admin: User
): ApiResponse<Unit> {
cakeService.deleteCake(admin, cakeId)

return ApiResponse.success()
}
}
102 changes: 58 additions & 44 deletions cakk-admin/src/main/kotlin/com/cakk/admin/controller/ShopController.kt
Original file line number Diff line number Diff line change
@@ -1,64 +1,78 @@
package com.cakk.admin.controller

import com.cakk.admin.dto.request.*
import com.cakk.admin.dto.response.CakeShopCreateResponse
import com.cakk.admin.service.ShopService
import com.cakk.common.response.ApiResponse
import jakarta.validation.Valid

import org.springframework.web.bind.annotation.*

import com.cakk.admin.annotation.AdminUser
import com.cakk.admin.dto.request.*
import com.cakk.admin.mapper.*
import com.cakk.common.response.ApiResponse
import com.cakk.core.dto.response.shop.CakeShopCreateResponse
import com.cakk.core.service.shop.ShopService
import com.cakk.domain.mysql.entity.user.User

@RestController
@RequestMapping("/shops")
class ShopController(
private val shopService: ShopService
private val shopService: ShopService
) {

@PostMapping
fun createByAdmin(
@RequestBody @Valid request: CakeShopCreateByAdminRequest
): ApiResponse<CakeShopCreateResponse> {
val response = shopService.createCakeShopByCertification(request.toParam())
@PostMapping
fun createByAdmin(
@RequestBody @Valid request: CakeShopCreateByAdminRequest
): ApiResponse<CakeShopCreateResponse> {
val param = supplyCreateShopParamBy(request)
val response = shopService.createCakeShopByCertification(param)

return ApiResponse.success(response)
}
return ApiResponse.success(response)
}

@PutMapping("/{cakeShopId}")
fun updateBasicInformation(
@PathVariable cakeShopId: Long,
@RequestBody @Valid request: CakeShopUpdateByAdminRequest
): ApiResponse<Unit> {
shopService.updateBasicInformation(request.toParam(cakeShopId))
@PutMapping("/{cakeShopId}")
fun updateBasicInformation(
@PathVariable cakeShopId: Long,
@RequestBody @Valid request: CakeShopUpdateByAdminRequest,
@AdminUser admin: User
): ApiResponse<Unit> {
val param = supplyCakeShopUpdateParamBy(request, admin, cakeShopId)
shopService.updateBasicInformation(param)

return ApiResponse.success()
}
return ApiResponse.success()
}

@PutMapping("/{cakeShopId}/links")
fun updateLinks(
@PathVariable cakeShopId: Long,
@RequestBody request: @Valid LinkUpdateByAdminRequest
): ApiResponse<Unit> {
shopService.updateShopLinks(request.toParam(cakeShopId))
@PutMapping("/{cakeShopId}/links")
fun updateLinks(
@PathVariable cakeShopId: Long,
@RequestBody @Valid request: LinkUpdateByAdminRequest,
@AdminUser admin: User
): ApiResponse<Unit> {
val param = supplyUpdateLinkParamBy(request, admin, cakeShopId)
shopService.updateShopLinks(param)

return ApiResponse.success()
}
return ApiResponse.success()
}

@PutMapping("/{cakeShopId}/operation-days")
fun updateOperationDays(
@PathVariable cakeShopId: Long,
@RequestBody @Valid request: ShopOperationUpdateByAdminRequest
): ApiResponse<Unit> {
shopService.updateShopOperationDays(request.toParam(cakeShopId))
@PutMapping("/{cakeShopId}/operation-days")
fun updateOperationDays(
@PathVariable cakeShopId: Long,
@RequestBody @Valid request: ShopOperationUpdateByAdminRequest,
@AdminUser admin: User
): ApiResponse<Unit> {
val param = supplyUpdateShopOperationParamBy(request, admin, cakeShopId)
shopService.updateShopOperationDays(param)

return ApiResponse.success()
}
return ApiResponse.success()
}

@PutMapping("/{cakeShopId}/address")
fun updateAddress(
@PathVariable cakeShopId: Long,
@RequestBody @Valid request: AddressUpdateByAdminRequest
): ApiResponse<Unit> {
shopService.updateShopAddress(request.toParam(cakeShopId))
@PutMapping("/{cakeShopId}/address")
fun updateAddress(
@PathVariable cakeShopId: Long,
@RequestBody @Valid request: AddressUpdateByAdminRequest,
@AdminUser admin: User
): ApiResponse<Unit> {
val param = supplyUpdateShopAddressParamBy(request, admin, cakeShopId)
shopService.updateShopAddress(param)

return ApiResponse.success()
}
return ApiResponse.success()
}
}

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit acbad42

Please sign in to comment.