Skip to content

Commit

Permalink
Refactor | CAKK-92 | 어드민 서버 코드 리팩토링
Browse files Browse the repository at this point in the history
  • Loading branch information
lcomment committed Oct 3, 2024
1 parent 729c75f commit 70a3f06
Show file tree
Hide file tree
Showing 34 changed files with 364 additions and 665 deletions.
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.

Original file line number Diff line number Diff line change
@@ -1,27 +1,16 @@
package com.cakk.admin.dto.request

import com.cakk.admin.mapper.supplyPointBy
import com.cakk.domain.mysql.dto.param.shop.UpdateShopAddressParam
import jakarta.validation.constraints.Max
import jakarta.validation.constraints.Min
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.NotNull
import jakarta.validation.constraints.Size

data class AddressUpdateByAdminRequest(
@field:NotBlank @field:Size(max = 50)
val shopAddress: String?,
@field:NotNull @field:Min(-90) @field:Max(90)
val latitude: Double?,
@field:NotNull @field:Min(-180) @field:Max(180)
val longitude: Double?
) {

fun toParam(cakeShopId: Long): UpdateShopAddressParam {
return UpdateShopAddressParam.builder()
.cakeShopId(cakeShopId)
.shopAddress(shopAddress)
.location(supplyPointBy(latitude, longitude))
.build()
}
}
@field:NotBlank @field:Size(max = 50)
val shopAddress: String?,
@field:NotNull @field:Min(-90) @field:Max(90)
val latitude: Double?,
@field:NotNull @field:Min(-180) @field:Max(180)
val longitude: Double?
)
Loading

0 comments on commit 70a3f06

Please sign in to comment.