Skip to content

Commit

Permalink
chore: (#490) createSchool api
Browse files Browse the repository at this point in the history
테스트용 api. url 권한은 설정하지 않았습니다.
ㅇ


.
  • Loading branch information
rlaisqls committed May 10, 2023
1 parent 1db24a4 commit faf7bbc
Show file tree
Hide file tree
Showing 8 changed files with 109 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package team.aliens.dms.domain.school.dto

import java.time.LocalDate
import java.util.UUID
import team.aliens.dms.common.util.StringUtil
import team.aliens.dms.domain.school.model.AvailableFeature
import team.aliens.dms.domain.school.model.School

class CreateSchoolRequest(
val schoolName: String,
val schoolAddress: String,
val mealService: Boolean,
val noticeService: Boolean,
val pointService: Boolean,
val studyRoomService: Boolean,
val remainService: Boolean
) {
fun toSchool() =
School(
name = schoolName,
code = StringUtil.randomNumber(School.SCHOOL_CODE_SIZE),
question = "우리 학교 이름은?",
answer = schoolName,
address = schoolAddress,
contractStartedAt = LocalDate.now()
)

fun toAvailableFeature(schoolId: UUID) =
AvailableFeature(
schoolId = schoolId,
mealService = mealService,
noticeService = noticeService,
pointService = pointService,
studyRoomService = studyRoomService,
remainService = remainService
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ data class School(

val contractStartedAt: LocalDate,

val contractEndedAt: LocalDate?
val contractEndedAt: LocalDate? = null

) {
companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package team.aliens.dms.domain.school.service

import team.aliens.dms.domain.school.model.AvailableFeature
import team.aliens.dms.domain.school.model.School

interface CommandSchoolService {

fun saveSchool(school: School): School

fun saveAvailableFeature(availableFeature: AvailableFeature): AvailableFeature
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package team.aliens.dms.domain.school.service

import team.aliens.dms.common.annotation.Service
import team.aliens.dms.domain.school.model.AvailableFeature
import team.aliens.dms.domain.school.model.School
import team.aliens.dms.domain.school.spi.CommandSchoolPort

Expand All @@ -11,4 +12,7 @@ class CommandSchoolServiceImpl(

override fun saveSchool(school: School) =
commandSchoolPort.saveSchool(school)

override fun saveAvailableFeature(availableFeature: AvailableFeature) =
commandSchoolPort.saveAvailableFeature(availableFeature)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package team.aliens.dms.domain.school.spi

import team.aliens.dms.domain.school.model.AvailableFeature
import team.aliens.dms.domain.school.model.School

interface CommandSchoolPort {

fun saveSchool(school: School): School

fun saveAvailableFeature(availableFeature: AvailableFeature): AvailableFeature
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package team.aliens.dms.domain.school.usecase

import team.aliens.dms.common.annotation.UseCase
import team.aliens.dms.common.service.security.SecurityService
import team.aliens.dms.domain.school.dto.CreateSchoolRequest
import team.aliens.dms.domain.school.service.SchoolService

@UseCase
class CreateSchoolUseCase(
private val schoolService: SchoolService,
private val securityService: SecurityService
) {

fun execute(request: CreateSchoolRequest) {
val school = schoolService.saveSchool(
request.toSchool()
)
schoolService.saveAvailableFeature(request.toAvailableFeature(school.id))
securityService.createSchoolSecretBySchoolId(school.id)
}
}
Original file line number Diff line number Diff line change
@@ -1,34 +1,38 @@
package team.aliens.dms.domain.school

import java.util.UUID
import javax.validation.Valid
import javax.validation.constraints.NotBlank
import javax.validation.constraints.NotNull
import javax.validation.constraints.Size
import org.springframework.http.HttpStatus
import org.springframework.validation.annotation.Validated
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PatchMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.ResponseStatus
import org.springframework.web.bind.annotation.RestController
import team.aliens.dms.domain.school.dto.CreateSchoolRequest
import team.aliens.dms.domain.school.dto.QueryAvailableFeaturesResponse
import team.aliens.dms.domain.school.dto.SchoolsResponse
import team.aliens.dms.domain.school.dto.UpdateQuestionRequest
import team.aliens.dms.domain.school.dto.request.CreateSchoolWebRequest
import team.aliens.dms.domain.school.dto.request.UpdateQuestionWebRequest
import team.aliens.dms.domain.school.dto.response.ReissueSchoolCodeResponse
import team.aliens.dms.domain.school.dto.response.SchoolIdResponse
import team.aliens.dms.domain.school.dto.response.SchoolQuestionResponse
import team.aliens.dms.domain.school.usecase.CheckSchoolAnswerUseCase
import team.aliens.dms.domain.school.usecase.CheckSchoolCodeUseCase
import team.aliens.dms.domain.school.usecase.CreateSchoolUseCase
import team.aliens.dms.domain.school.usecase.QueryAvailableFeaturesUseCase
import team.aliens.dms.domain.school.usecase.QuerySchoolQuestionUseCase
import team.aliens.dms.domain.school.usecase.QuerySchoolsUseCase
import team.aliens.dms.domain.school.usecase.ReissueSchoolCodeUseCase
import team.aliens.dms.domain.school.usecase.UpdateQuestionUseCase
import java.util.UUID
import javax.validation.Valid
import javax.validation.constraints.NotBlank
import javax.validation.constraints.NotNull
import javax.validation.constraints.Size

@Validated
@RequestMapping("/schools")
Expand All @@ -40,7 +44,8 @@ class SchoolWebAdapter(
private val checkSchoolCodeUseCase: CheckSchoolCodeUseCase,
private val updateQuestionUseCase: UpdateQuestionUseCase,
private val reissueSchoolCodeUseCase: ReissueSchoolCodeUseCase,
private val queryAvailableFeaturesUseCase: QueryAvailableFeaturesUseCase
private val queryAvailableFeaturesUseCase: QueryAvailableFeaturesUseCase,
private val createSchoolUseCase: CreateSchoolUseCase
) {

@GetMapping
Expand Down Expand Up @@ -97,4 +102,22 @@ class SchoolWebAdapter(

updateQuestionUseCase.execute(request)
}

@ResponseStatus(HttpStatus.NO_CONTENT)
@PostMapping
fun createSchool(@RequestBody @Valid request: CreateSchoolWebRequest) {
createSchoolUseCase.execute(
request.run {
CreateSchoolRequest(
schoolName = schoolName,
schoolAddress = schoolAddress,
mealService = mealService,
noticeService = noticeService,
pointService = pointService,
studyRoomService = studyRoomService,
remainService = remainService
)
}
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package team.aliens.dms.domain.school.dto.request

class CreateSchoolWebRequest(
val schoolName: String,
val schoolAddress: String,
val mealService: Boolean,
val noticeService: Boolean,
val pointService: Boolean,
val studyRoomService: Boolean,
val remainService: Boolean
)

0 comments on commit faf7bbc

Please sign in to comment.