Skip to content
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
12 changes: 8 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@ dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

// QueryDSL
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
kapt 'com.querydsl:querydsl-apt:5.0.0:jakarta'
kapt "jakarta.annotation:jakarta.annotation-api"
kapt "jakarta.persistence:jakarta.persistence-api"

implementation("io.github.openfeign.querydsl:querydsl-jpa:7.1")

kapt("io.github.openfeign.querydsl:querydsl-apt:7.1:jpa")
kapt("jakarta.persistence:jakarta.persistence-api")
kapt("jakarta.annotation:jakarta.annotation-api")

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
Expand Down Expand Up @@ -91,6 +93,8 @@ dependencies {
testImplementation 'org.mockito:mockito-inline:4.1.0'
testImplementation 'org.mockito.kotlin:mockito-kotlin:4.1.0'
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'

testRuntimeOnly("com.h2database:h2")
}

kotlin {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.b.beep.domain.absence.service

import com.b.beep.domain.absence.entity.AbsenceEntity
import com.b.beep.domain.absence.error.AbsenceError
import com.b.beep.domain.absence.controller.dto.request.CreateAbsenceRequest
import com.b.beep.domain.absence.controller.dto.request.UpdateAbsenceRequest
import com.b.beep.domain.absence.entity.AbsenceEntity
import com.b.beep.domain.absence.error.AbsenceError
import com.b.beep.domain.absence.repository.AbsenceRepository
import com.b.beep.domain.user.repository.StudentInfoRepository
import com.b.beep.global.exception.CustomException
import com.b.beep.domain.user.domain.UserError
import com.b.beep.domain.user.entity.UserEntity
import com.b.beep.domain.user.repository.StudentInfoRepository
import com.b.beep.global.exception.CustomException
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.b.beep.domain.approval.entity

import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.user.entity.UserEntity
import com.b.beep.global.common.entity.BaseEntity
import com.b.beep.domain.attendance.domain.enums.Room
import jakarta.persistence.*
import java.time.LocalDate

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.b.beep.domain.approval.service

import com.b.beep.global.security.ContextHolder
import com.b.beep.domain.approval.controller.dto.request.ApproveRequest
import com.b.beep.domain.approval.repository.ApprovalRepository
import com.b.beep.global.exception.CustomException
import com.b.beep.domain.approval.entity.ApprovalEntity
import com.b.beep.domain.approval.error.ApprovalError
import com.b.beep.domain.approval.repository.ApprovalRepository
import com.b.beep.domain.attendance.domain.PeriodResolver
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.global.exception.CustomException
import com.b.beep.global.security.ContextHolder
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.LocalDate
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.b.beep.domain.attendance.entity

import com.b.beep.domain.user.entity.UserEntity
import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.user.entity.UserEntity
import jakarta.persistence.*
import java.time.LocalDate

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package com.b.beep.domain.auth.controller
import com.b.beep.domain.auth.controller.docs.AuthDocs
import com.b.beep.domain.auth.controller.dto.request.RefreshTokenRequest
import com.b.beep.domain.auth.service.AuthService
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import com.b.beep.global.common.dto.response.BaseResponse
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package com.b.beep.domain.auth.controller
import com.b.beep.domain.auth.controller.docs.DAuthDocs
import com.b.beep.domain.auth.controller.dto.request.LoginRequest
import com.b.beep.domain.auth.service.AuthService
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import com.b.beep.global.common.dto.response.BaseResponse
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.b.beep.domain.auth.controller.docs

import com.b.beep.domain.auth.controller.dto.request.RefreshTokenRequest
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import com.b.beep.global.common.dto.response.BaseResponse
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.http.ResponseEntity
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.b.beep.domain.auth.controller.docs

import com.b.beep.domain.auth.controller.dto.request.LoginRequest
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import com.b.beep.global.common.dto.response.BaseResponse
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.http.ResponseEntity
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/com/b/beep/domain/auth/service/AuthService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ package com.b.beep.domain.auth.service

import com.b.beep.domain.auth.controller.dto.request.LoginRequest
import com.b.beep.domain.auth.repository.RefreshTokenRepository
import com.b.beep.domain.user.service.StudentInfoService
import com.b.beep.domain.user.domain.UserRole
import com.b.beep.domain.user.service.StudentInfoService
import com.b.beep.global.exception.CustomException
import com.b.beep.global.security.jwt.JwtExtractor
import com.b.beep.global.security.jwt.JwtProvider
import com.b.beep.global.security.jwt.dto.response.TokenResponse
import com.b.beep.global.security.jwt.error.JwtError
import com.b.beep.global.exception.CustomException
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional

Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/com/b/beep/domain/memo/service/MemoService.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.b.beep.domain.memo.service

import com.b.beep.domain.memo.entity.MemoEntity
import com.b.beep.domain.memo.repository.MemoRepository
import com.b.beep.domain.memo.controller.dto.request.CreateMemoRequest
import com.b.beep.domain.memo.controller.dto.request.UpdateMemoRequest
import com.b.beep.domain.memo.domain.error.MemoError
import com.b.beep.domain.memo.entity.MemoEntity
import com.b.beep.domain.memo.repository.MemoRepository
import com.b.beep.global.exception.CustomException
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Transactional
import java.time.LocalDate
import java.time.LocalDateTime

@Component
class AttendanceScheduler(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.b.beep.domain.shift.controller

import com.b.beep.domain.shift.controller.docs.ShiftManagementDocs
import com.b.beep.domain.shift.controller.dto.response.ShiftResponse
import com.b.beep.domain.shift.service.ShiftManagementService
import com.b.beep.domain.shift.domain.enums.ShiftStatus
import com.b.beep.domain.shift.service.ShiftManagementService
import com.b.beep.domain.user.service.UserService
import org.springframework.web.bind.annotation.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.b.beep.domain.shift.controller.dto.response

import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.shift.entity.ShiftEntity
import com.b.beep.domain.shift.domain.enums.ShiftStatus
import com.b.beep.domain.shift.entity.ShiftEntity
import com.b.beep.domain.user.controller.dto.response.UserResponse
import com.b.beep.domain.user.entity.StudentInfoEntity
import java.time.LocalDate
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/com/b/beep/domain/shift/entity/ShiftEntity.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.b.beep.domain.shift.entity

import com.b.beep.domain.user.entity.UserEntity
import com.b.beep.global.common.entity.BaseEntity
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.shift.domain.enums.ShiftStatus
import com.b.beep.domain.user.entity.UserEntity
import com.b.beep.global.common.entity.BaseEntity
import jakarta.persistence.*
import java.time.LocalDate

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.attendance.domain.error.AttendanceError
import com.b.beep.domain.attendance.repository.AttendanceRepository
import com.b.beep.domain.shift.entity.ShiftEntity
import com.b.beep.domain.shift.repository.ShiftRepository
import com.b.beep.domain.shift.domain.enums.ShiftStatus
import com.b.beep.domain.shift.domain.error.ShiftError
import com.b.beep.domain.shift.entity.ShiftEntity
import com.b.beep.domain.shift.repository.ShiftRepository
import com.b.beep.domain.user.entity.UserEntity
import com.b.beep.global.exception.CustomException
import org.springframework.data.repository.findByIdOrNull
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.b.beep.domain.student.controller

import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.student.controller.docs.GetNotAttendedStudentDocs
import com.b.beep.domain.student.controller.dto.response.StudentResponse
import com.b.beep.domain.student.service.GetNotAttendedStudentService
import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.b.beep.domain.student.controller

import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.student.controller.docs.GetStudentDocs
import com.b.beep.domain.student.controller.dto.response.StudentResponse
import com.b.beep.domain.student.service.GetStudentService
import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.b.beep.domain.student.controller.docs

import com.b.beep.domain.student.controller.dto.response.StudentResponse
import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.student.controller.dto.response.StudentResponse
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.b.beep.domain.student.controller.docs

import com.b.beep.domain.student.controller.dto.response.StudentResponse
import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.attendance.domain.enums.Room
import com.b.beep.domain.student.controller.dto.response.StudentResponse
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.b.beep.domain.student.controller.dto

import com.b.beep.domain.attendance.entity.AttendanceEntity
import com.b.beep.domain.user.entity.FixedRoomEntity
import com.b.beep.domain.user.entity.StudentInfoEntity
import com.b.beep.domain.user.entity.UserEntity
import com.querydsl.core.annotations.QueryProjection

data class StudentQueryDto @QueryProjection constructor(
val user: UserEntity,
val studentInfo: StudentInfoEntity,
val fixedRooms: List<FixedRoomEntity?>?,
val attendances: List<AttendanceEntity>?
)
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package com.b.beep.domain.student.controller.dto.response

import com.b.beep.domain.user.controller.dto.response.FixedRoomResponse
import com.b.beep.domain.attendance.domain.enums.AttendanceType
import com.b.beep.domain.user.entity.UserEntity
import com.b.beep.domain.user.entity.StudentInfoEntity
import com.b.beep.domain.user.entity.FixedRoomEntity
import com.b.beep.domain.attendance.entity.AttendanceEntity
import com.b.beep.domain.student.controller.dto.StudentQueryDto
import com.b.beep.domain.user.controller.dto.response.FixedRoomResponse

data class StudentResponse(
val username: String,
Expand All @@ -15,18 +12,48 @@ data class StudentResponse(
) {
companion object {
fun of(
user: UserEntity,
studentInfo: StudentInfoEntity,
fixedRooms: List<FixedRoomEntity>?,
attendances: List<AttendanceEntity>
studentQueryDto: StudentQueryDto
): StudentResponse {
return StudentResponse(
username = user.username,
studentId = String.format("%d%d%02d", studentInfo.grade, studentInfo.cls, studentInfo.num),
fixedRooms = fixedRooms?.map { FixedRoomResponse.of(it) },
statuses = attendances.map { StatusResponse(it.period, it.type) }
username = studentQueryDto.user.username,
studentId = String.format("%d%d%02d", studentQueryDto.studentInfo.grade, studentQueryDto.studentInfo.cls, studentQueryDto.studentInfo.num),
fixedRooms = studentQueryDto.fixedRooms.orEmpty().mapNotNull { room ->
room?.let { FixedRoomResponse.of(it) }
},
statuses = studentQueryDto.attendances.orEmpty().map { attendance ->
attendance.let { StatusResponse(it.period, it.type) }
}
)
}

private fun ofFixedRoomNull(
studentQueryDto: StudentQueryDto
): StudentResponse {
return StudentResponse(
username = studentQueryDto.user.username,
studentId = String.format("%d%d%02d", studentQueryDto.studentInfo.grade, studentQueryDto.studentInfo.cls, studentQueryDto.studentInfo.num),
fixedRooms = null,
statuses = studentQueryDto.attendances.orEmpty().map { attendance ->
attendance.let { StatusResponse(it.period, it.type) }
}
)
}

fun ofStudentQueryDtoList(
studentQueryDtos: List<StudentQueryDto>
): List<StudentResponse> {
return studentQueryDtos.map { dto ->
of(dto)
}
}

fun ofStudentQueryDtoListFixedRoomsNull(
studentQueryDtos: List<StudentQueryDto>
): List<StudentResponse> {
return studentQueryDtos.map { dto ->
ofFixedRoomNull(dto)
}
}
}
}

Expand Down
Loading