Skip to content

Commit

Permalink
feat: #13 멤버 목록 조회 시 정렬 기준 적용하는 기능 추가 (#54)
Browse files Browse the repository at this point in the history
* feat: 구분에 대한 정렬 우선순위 정의

* feat: 파트에 대한 정렬 우선순위 정의

* feat: 액티브 멤버, 비액티브 멤버 Comparable 구현 메서드 추가

* feat: JPA auditing 기능 추가

* feat: 멤버 도메인 및 엔티티에 auditing 적용

* feat: 졸업 멤버, 탈퇴 멤버 Comparable 구현 메서드 추가

* feat: 상태별 멤버 목록 조회 및 검색 시 정렬된 상태로 반환하는 기능 추가

* feat: 1멤버 n파트인 경우 파트를 정렬된 상태로 갖도록 SortedSet으로 변경

* feat: 멤버 도메인 엔티티에 멤버 상태 변경 시간을 기록하는 필드 추가

* fix: 졸업 멤버, 탈퇴 멤버 정렬 시 상태 변경 시간을 기준으로 정렬하도록 수정

* refactor: toString() 제거 및 compareTo()에서 this 명시

* style: 코드 재정렬
  • Loading branch information
kwonyj1022 authored Feb 4, 2025
1 parent 5494b63 commit 460dd40
Show file tree
Hide file tree
Showing 43 changed files with 221 additions and 181 deletions.
2 changes: 1 addition & 1 deletion src/main/kotlin/com/yourssu/scouter/ScouterApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ import org.springframework.boot.runApplication
class ScouterApplication

fun main(args: Array<String>) {
runApplication<ScouterApplication>(*args)
runApplication<ScouterApplication>(*args)
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.yourssu.scouter.ats.application.domain.applicant

import com.fasterxml.jackson.annotation.JsonFormat
import com.yourssu.scouter.ats.business.support.utils.ApplicantStateConverter
import com.yourssu.scouter.ats.business.domain.applicant.CreateApplicantCommand
import com.yourssu.scouter.ats.business.support.utils.ApplicantStateConverter
import jakarta.validation.constraints.Email
import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.NotNull
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.yourssu.scouter.ats.application.domain.applicant

import com.fasterxml.jackson.annotation.JsonFormat
import com.yourssu.scouter.ats.business.support.utils.ApplicantStateConverter
import com.yourssu.scouter.ats.business.domain.applicant.UpdateApplicantCommand
import com.yourssu.scouter.ats.business.support.utils.ApplicantStateConverter
import jakarta.validation.constraints.Pattern
import java.time.LocalDate

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,4 @@ class Applicant(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "Applicant(id=$id, name='$name', email='$email', phoneNumber='$phoneNumber', age='$age', department=$department, studentId='$studentId', part=$part, state=$state, applicationDate=$applicationDateTime, applicationSemester=$applicationSemester, academicSemester='$academicSemester')"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,4 @@ class ApplicantEntity(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "ApplicantEntity(id=$id, name='$name', email='$email', phoneNumber='$phoneNumber', age='$age', department=$department, studentId='$studentId', part=$part, state=$state, applicationDate=$applicationDateTime, applicationSemester=$applicationSemester)"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class DepartmentController(
private val departmentService: DepartmentService,
) {

@GetMapping ("/departments")
@GetMapping("/departments")
fun readAll(): ResponseEntity<List<ReadDepartmentsResponse>> {
val result: ReadDepartmentsResult = departmentService.readAll()
val response: List<ReadDepartmentsResponse> = result.departmentDtos.map { ReadDepartmentsResponse.from(it) }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.yourssu.scouter.common.application.domain.semester

import com.yourssu.scouter.common.business.support.utils.SemesterConverter
import com.yourssu.scouter.common.business.domain.semester.SemesterDto
import com.yourssu.scouter.common.business.support.utils.SemesterConverter

data class ReadSemesterResponse(
val semesterId: Long,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.yourssu.scouter.common.implement.domain.basetime

import java.time.LocalDateTime

open class BaseCreateTime(
val createdTime: LocalDateTime? = null
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.yourssu.scouter.common.implement.domain.basetime

import java.time.LocalDateTime

open class BaseTime(
createdTime: LocalDateTime? = null,
val updatedTime: LocalDateTime? = null
) : BaseCreateTime(createdTime)
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,4 @@ class Department(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "Department(id=$id, collegeId=$collegeId, name='$name')"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@ package com.yourssu.scouter.common.implement.domain.division
class Division(
val id: Long? = null,
val name: String,
) {
val sortPriority: Int,
) : Comparable<Division> {

override fun compareTo(other: Division): Int {
return this.sortPriority.compareTo(other.sortPriority)
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
Expand All @@ -17,8 +22,4 @@ class Division(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "Division(id=$id, name='$name')"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@ class Part(
val id: Long? = null,
val division: Division,
val name: String,
) {
val sortPriority: Int,
) : Comparable<Part> {

override fun compareTo(other: Part): Int {
val divisionCompare = this.division.compareTo(other.division)
if (divisionCompare != 0) {
return divisionCompare
}

return this.sortPriority.compareTo(other.sortPriority)
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
Expand All @@ -20,8 +30,4 @@ class Part(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "Part(id=$id, division=$division, name='$name')"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,15 @@ class Semester(
val id: Long? = null,
val year: Year,
val term: Term,
) {
constructor(year: Int, term: Int) : this(null, Year.of(year), Term.from(term))
) : Comparable<Semester> {
constructor(
year: Int,
term: Int
) : this(
id = null,
year = Year.of(year),
term = Term.from(term)
)

companion object {
fun of(date: LocalDate): Semester = Semester(
Expand Down Expand Up @@ -39,6 +46,15 @@ class Semester(
return Semester(year = year, term = Term.FALL)
}

override fun compareTo(other: Semester): Int {
val yearCompare = this.year.compareTo(other.year)
if (yearCompare != 0) {
return yearCompare
}

return this.term.intValue.compareTo(other.term.intValue)
}

override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
Expand All @@ -51,8 +67,4 @@ class Semester(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "Semester(id=$id, year=$year, semester=$term)"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ enum class Term(val intValue: Int, val targetMonthRange: IntRange) {

companion object {
fun of(date: LocalDate): Term {
return entries.first {date.monthValue in it.targetMonthRange }
return entries.first { date.monthValue in it.targetMonthRange }
}

fun of(term: Int): Term {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@ class User(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "User(id=$id, userInfo=$userInfo, tokenInfo=$tokenInfo)"
}
}

class UserInfo(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,35 +29,35 @@ class DivisionsAndPartsInitializer(
private fun alreadyInitialized() = divisionRepository.count() != 0L

private fun initialize_운영() {
val division = divisionRepository.save(Division(name = "운영"))
val division = divisionRepository.save(Division(name = "운영", sortPriority = 1))

val parts = mutableListOf<Part>()
parts.add(Part(division = division, name = "Head lead"))
parts.add(Part(division = division, name = "finance"))
parts.add(Part(division = division, name = "HR"))
parts.add(Part(division = division, name = "Contents Marketing"))
parts.add(Part(division = division, name = "legal"))
parts.add(Part(division = division, name = "PM"))
parts.add(Part(division = division, name = "Head lead", sortPriority = 1))
parts.add(Part(division = division, name = "finance", sortPriority = 2))
parts.add(Part(division = division, name = "HR", sortPriority = 3))
parts.add(Part(division = division, name = "Contents Marketing", sortPriority = 34))
parts.add(Part(division = division, name = "legal", sortPriority = 5))
parts.add(Part(division = division, name = "PM", sortPriority = 6))

partRepository.saveAll(parts)
}

private fun initialize_개발() {
val division = divisionRepository.save(Division(name = "개발"))
val division = divisionRepository.save(Division(name = "개발", sortPriority = 2))
val parts = mutableListOf<Part>()
parts.add(Part(division = division, name = "Backend"))
parts.add(Part(division = division, name = "Android"))
parts.add(Part(division = division, name = "iOS"))
parts.add(Part(division = division, name = "Web-frontend"))
parts.add(Part(division = division, name = "Backend", sortPriority = 1))
parts.add(Part(division = division, name = "Android", sortPriority = 2))
parts.add(Part(division = division, name = "iOS", sortPriority = 3))
parts.add(Part(division = division, name = "Web-frontend", sortPriority = 4))

partRepository.saveAll(parts)
}

private fun initialize_디자인() {
val division = divisionRepository.save(Division(name = "디자인"))
val division = divisionRepository.save(Division(name = "디자인", sortPriority = 3))

val parts = mutableListOf<Part>()
parts.add(Part(division = division, name = "Product Design"))
parts.add(Part(division = division, name = "Product Design", sortPriority = 1))

partRepository.saveAll(parts)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.yourssu.scouter.common.storage.domain.basetime

import jakarta.persistence.Column
import jakarta.persistence.EntityListeners
import jakarta.persistence.MappedSuperclass
import java.time.LocalDateTime
import org.springframework.data.annotation.CreatedDate
import org.springframework.data.jpa.domain.support.AuditingEntityListener

@EntityListeners(AuditingEntityListener::class)
@MappedSuperclass
class BaseCreateTimeEntity {

@CreatedDate
@Column(updatable = false, nullable = false)
var createdTime: LocalDateTime? = null
protected set
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.yourssu.scouter.common.storage.domain.basetime

import jakarta.persistence.Column
import jakarta.persistence.EntityListeners
import jakarta.persistence.MappedSuperclass
import java.time.LocalDateTime
import org.springframework.data.annotation.LastModifiedDate
import org.springframework.data.jpa.domain.support.AuditingEntityListener

@EntityListeners(AuditingEntityListener::class)
@MappedSuperclass
class BaseTimeEntity : BaseCreateTimeEntity() {

@LastModifiedDate
@Column(nullable = false)
var updatedTime: LocalDateTime? = null
protected set
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,4 @@ class CollegeEntity(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "CollegeEntity(id=$id, name='$name')"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ class DepartmentEntity(
val name: String,
) {

companion object {
fun from(department: Department) = DepartmentEntity(
id = department.id,
collegeId = department.collegeId,
name = department.name,
)
}

fun toDomain() = Department(
id = id,
collegeId = collegeId,
Expand All @@ -41,16 +49,4 @@ class DepartmentEntity(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "DepartmentEntity(id=$id, collegeId=$collegeId, name='$name')"
}

companion object {
fun from(department: Department) = DepartmentEntity(
id = department.id,
collegeId = department.collegeId,
name = department.name,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,23 @@ class DivisionEntity(

@Column(nullable = false, unique = true)
val name: String,

@Column(nullable = false)
val sortPriority: Int,
) {

companion object {
fun from(division: Division): DivisionEntity = DivisionEntity(
id = division.id,
name = division.name,
sortPriority = division.sortPriority,
)
}

fun toDomain() = Division(
id = id,
name = name,
sortPriority = sortPriority,
)

override fun equals(other: Any?): Boolean {
Expand All @@ -44,8 +49,4 @@ class DivisionEntity(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "DivisionEntity(id=$id, name='$name')"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,25 @@ class PartEntity(

@Column(nullable = false, unique = true)
val name: String,

@Column(nullable = false)
val sortPriority: Int,
) {

companion object {
fun from(part: Part) = PartEntity(
id = part.id,
division = DivisionEntity.from(part.division),
name = part.name,
sortPriority = part.sortPriority,
)
}

fun toDomain() = Part(
id = id,
division = division.toDomain(),
name = name,
sortPriority = sortPriority,
)

override fun equals(other: Any?): Boolean {
Expand All @@ -55,8 +60,4 @@ class PartEntity(
override fun hashCode(): Int {
return id?.hashCode() ?: 0
}

override fun toString(): String {
return "PartEntity(id=$id, division=$division, name='$name')"
}
}
Loading

0 comments on commit 460dd40

Please sign in to comment.