Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor | CAKK-92 | 어드민 서버 코드 리팩토링 #220

Merged
merged 3 commits into from
Oct 4, 2024
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
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
Loading