Skip to content

Commit c3b5c5b

Browse files
authored
Merge pull request #312 from GSM-MSG/feature/311-master-teacher-merge
master에 develop 변경사항 반영
2 parents fa12e92 + bb6068c commit c3b5c5b

File tree

48 files changed

+687
-31
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+687
-31
lines changed

sms-core/src/main/kotlin/team/msg/sms/domain/auth/model/Role.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,9 @@ package team.msg.sms.domain.auth.model
22

33
enum class Role(description: String) {
44
ROLE_STUDENT("학생"),
5-
ROLE_TEACHER("선생님")
5+
ROLE_TEACHER("선생님"),
6+
ROLE_PRINCIPAL("교장선생님"),
7+
ROLE_DEPUTY_PRINCIPAL("교감선생님"),
8+
ROLE_DIRECTOR("부장선생님"),
9+
ROLE_HOMEROOM("담임선생님")
610
}

sms-core/src/main/kotlin/team/msg/sms/domain/auth/usecase/SignInUseCase.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import team.msg.sms.domain.auth.model.RefreshToken
1313
import team.msg.sms.domain.auth.model.Role
1414
import team.msg.sms.domain.auth.spi.JwtPort
1515
import team.msg.sms.domain.auth.spi.RefreshTokenPort
16-
import team.msg.sms.domain.student.service.StudentService
1716
import team.msg.sms.domain.user.exception.InternalServerErrorException
1817
import team.msg.sms.domain.user.model.User
1918
import team.msg.sms.domain.user.service.UserService
@@ -23,8 +22,7 @@ class SignInUseCase(
2322
private val gAuthPort: GAuthPort,
2423
private val jwtPort: JwtPort,
2524
private val refreshTokenPort: RefreshTokenPort,
26-
private val userService: UserService,
27-
private val studentService: StudentService
25+
private val userService: UserService
2826
) {
2927

3028
fun execute(request: SignInRequestData): SignInResponseData =
@@ -49,15 +47,15 @@ class SignInUseCase(
4947

5048
refreshTokenPort.saveRefreshToken(RefreshToken(refreshToken, user.id))
5149

52-
val isStudent = studentService.checkNewStudent(user, role.name)
50+
val isExist = userService.checkNewUser(user)
5351

5452
SignInResponseData(
5553
accessToken = accessToken,
5654
accessTokenExp = accessTokenExp,
5755
refreshToken = refreshToken,
5856
refreshTokenExp = refreshTokenExp,
5957
role = role,
60-
isExist = isStudent
58+
isExist = isExist
6159
)
6260
}.getOrElse { error ->
6361
when (error) {
@@ -75,6 +73,6 @@ class SignInUseCase(
7573
}
7674

7775
private fun getStuNumValid(role: Role, gAuthUserInfo: GAuthUserInfo) =
78-
if (role.name != "ROLE_TEACHER") "${gAuthUserInfo.grade}${gAuthUserInfo.classNum}${gAuthUserInfo.getNumber()}" else ""
76+
if (role.name == "ROLE_STUDENT") "${gAuthUserInfo.grade}${gAuthUserInfo.classNum}${gAuthUserInfo.getNumber()}" else ""
7977

8078
private fun GAuthUserInfo.getNumber() = String.format("%02d", this.num)

sms-core/src/main/kotlin/team/msg/sms/domain/auth/usecase/VerifyAccessUseCase.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@ package team.msg.sms.domain.auth.usecase
22

33
import team.msg.sms.common.annotation.UseCase
44
import team.msg.sms.domain.auth.dto.res.VerifyAccessResponseData
5-
import team.msg.sms.domain.student.service.StudentService
65
import team.msg.sms.domain.user.service.UserService
76

87
@UseCase
98
class VerifyAccessUseCase(
10-
private val userService: UserService,
11-
private val studentService: StudentService
9+
private val userService: UserService
1210
) {
11+
/**
12+
* Role에 대한 반환 타입이 list가 아닌 단일 string이라 슬래시로 구분해두었습니다.
13+
* 추후 response를 변경하게 되면 바꿔도 괜찮을 거 같아요!
14+
*/
1315
fun execute(): VerifyAccessResponseData =
1416
userService.getCurrentUser()
1517
.let {
1618
VerifyAccessResponseData(
17-
studentService.checkNewStudent(it, it.roles[0].name),
18-
it.roles[0].name
19+
userService.checkNewUser(it),
20+
it.roles.joinToString("/")
1921
)
2022
}
2123
}

sms-core/src/main/kotlin/team/msg/sms/domain/student/service/CheckStudentService.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import team.msg.sms.domain.user.model.User
66
interface CheckStudentService {
77
fun checkStudentExistsByUser(user: User)
88
fun studentExistsByUser(user: User): Boolean
9-
fun checkNewStudent(user: User, role: String): Boolean
10-
9+
fun checkNewStudent(user: User): Boolean
1110
fun checkStudentDataMismatch(student: Student, modifyStudentData: Student): Boolean
1211
}

sms-core/src/main/kotlin/team/msg/sms/domain/student/service/impl/CheckStudentServiceImpl.kt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import team.msg.sms.domain.student.exception.StudentAlreadyException
55
import team.msg.sms.domain.student.model.Student
66
import team.msg.sms.domain.student.service.CheckStudentService
77
import team.msg.sms.domain.student.spi.StudentPort
8-
import team.msg.sms.domain.user.exception.RoleNotExistsException
98
import team.msg.sms.domain.user.model.User
109

1110
@Service
@@ -19,13 +18,8 @@ class CheckStudentServiceImpl (
1918
override fun studentExistsByUser(user: User): Boolean =
2019
studentPort.existsStudentByUser(user)
2120

22-
override fun checkNewStudent(user: User, role: String): Boolean {
23-
return when (role) {
24-
"ROLE_STUDENT" -> studentPort.existsStudentByUser(user)
25-
"ROLE_TEACHER" -> true
26-
else -> throw RoleNotExistsException
27-
}
28-
}
21+
override fun checkNewStudent(user: User): Boolean =
22+
studentPort.existsStudentByUser(user)
2923

3024
override fun checkStudentDataMismatch(student: Student, modifyStudentData: Student): Boolean {
3125
return if(student.contactEmail != modifyStudentData.contactEmail) true
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package team.msg.sms.domain.teacher.dto.req
2+
3+
data class SignUpHomeroomTeacherRequestData(
4+
val grade: Int,
5+
val classNum: Int
6+
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package team.msg.sms.domain.teacher.exception
2+
3+
import team.msg.sms.common.error.SmsException
4+
import team.msg.sms.domain.teacher.exception.error.TeacherErrorCode
5+
6+
object HomeroomTeacherAlreadyException : SmsException(
7+
TeacherErrorCode.HOMEROOM_TEACHER_ALREADY
8+
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package team.msg.sms.domain.teacher.exception
2+
3+
import team.msg.sms.common.error.SmsException
4+
import team.msg.sms.domain.teacher.exception.error.TeacherErrorCode
5+
6+
object TeacherAlreadyException: SmsException(
7+
TeacherErrorCode.TEACHER_ALREADY
8+
)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package team.msg.sms.domain.teacher.exception.error
2+
3+
import team.msg.sms.common.error.ErrorProperty
4+
import team.msg.sms.common.error.ErrorStatus
5+
6+
enum class TeacherErrorCode(
7+
private val status: Int,
8+
private val message: String
9+
) : ErrorProperty {
10+
11+
TEACHER_ALREADY(ErrorStatus.CONFLICT, "선생님 정보가 존재하는 유저입니다."),
12+
HOMEROOM_TEACHER_ALREADY(ErrorStatus.CONFLICT, "동일 정보의 담임선생님이 존재합니다."),
13+
;
14+
15+
override fun status(): Int = status
16+
override fun message(): String = message
17+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package team.msg.sms.domain.teacher.model
2+
3+
import team.msg.sms.common.annotation.Aggregate
4+
import java.util.*
5+
6+
@Aggregate
7+
data class HomeroomTeacher (
8+
val id: Long = 0,
9+
val grade: Int,
10+
val classNum: Int,
11+
val teacherId: UUID,
12+
)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package team.msg.sms.domain.teacher.model
2+
3+
import team.msg.sms.common.annotation.Aggregate
4+
import java.util.UUID
5+
6+
@Aggregate
7+
data class Teacher (
8+
val id: UUID,
9+
val userId: UUID,
10+
)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package team.msg.sms.domain.teacher.service
2+
3+
interface CheckHomeroomTeacherService {
4+
fun checkHomeroomTeacherExistsByGradeAndClassNum(grade: Int, classNum: Int)
5+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package team.msg.sms.domain.teacher.service
2+
3+
import team.msg.sms.domain.user.model.User
4+
5+
interface CheckTeacherService{
6+
fun checkTeacherExistsByUser(user: User)
7+
fun checkNewTeacher(user: User): Boolean
8+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package team.msg.sms.domain.teacher.service
2+
3+
import team.msg.sms.domain.teacher.model.HomeroomTeacher
4+
import team.msg.sms.domain.teacher.model.Teacher
5+
import team.msg.sms.domain.user.model.User
6+
7+
interface CommandHomeroomTeacherService {
8+
fun saveHomeroomTeacher(homeroomTeacher: HomeroomTeacher, teacher: Teacher, user: User): HomeroomTeacher
9+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package team.msg.sms.domain.teacher.service
2+
3+
import team.msg.sms.domain.teacher.model.Teacher
4+
import team.msg.sms.domain.user.model.User
5+
6+
interface CommandTeacherService {
7+
fun saveTeacher(teacher: Teacher, user: User): Teacher
8+
fun saveDirectorTeacher(teacher: Teacher, user: User): Teacher
9+
fun saveDeputyPrincipalTeacher(teacher: Teacher, user: User): Teacher
10+
fun savePrincipalTeacher(teacher: Teacher, user: User): Teacher
11+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package team.msg.sms.domain.teacher.service
2+
3+
import team.msg.sms.common.annotation.Service
4+
5+
@Service
6+
class HomeroomTeacherService (
7+
checkHomeroomTeacherService: CheckHomeroomTeacherService,
8+
commandHomeroomTeacherService: CommandHomeroomTeacherService
9+
) : CheckHomeroomTeacherService by checkHomeroomTeacherService,
10+
CommandHomeroomTeacherService by commandHomeroomTeacherService
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package team.msg.sms.domain.teacher.service
2+
3+
import team.msg.sms.common.annotation.Service
4+
5+
@Service
6+
class TeacherService (
7+
checkTeacherService: CheckTeacherService,
8+
commandTeacherService: CommandTeacherService
9+
) : CheckTeacherService by checkTeacherService,
10+
CommandTeacherService by commandTeacherService
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package team.msg.sms.domain.teacher.service.impl
2+
3+
import team.msg.sms.common.annotation.Service
4+
import team.msg.sms.domain.teacher.exception.HomeroomTeacherAlreadyException
5+
import team.msg.sms.domain.teacher.service.CheckHomeroomTeacherService
6+
import team.msg.sms.domain.teacher.spi.HomeroomTeacherPort
7+
8+
@Service
9+
class CheckHomeroomTeacherServiceImpl(
10+
private val homeroomTeacherPort: HomeroomTeacherPort
11+
) : CheckHomeroomTeacherService {
12+
override fun checkHomeroomTeacherExistsByGradeAndClassNum(grade: Int, classNum: Int) {
13+
if (homeroomTeacherPort.existsHomeroomTeacherByGradeAndClassNum(grade, classNum))
14+
throw HomeroomTeacherAlreadyException
15+
}
16+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package team.msg.sms.domain.teacher.service.impl
2+
3+
import team.msg.sms.common.annotation.Service
4+
import team.msg.sms.domain.teacher.exception.TeacherAlreadyException
5+
import team.msg.sms.domain.teacher.service.CheckTeacherService
6+
import team.msg.sms.domain.teacher.spi.TeacherPort
7+
import team.msg.sms.domain.user.model.User
8+
9+
@Service
10+
class CheckTeacherServiceImpl(
11+
private val teacherPort: TeacherPort
12+
) : CheckTeacherService {
13+
override fun checkTeacherExistsByUser(user: User) {
14+
if (teacherPort.existsTeacherByUser(user))
15+
throw TeacherAlreadyException
16+
}
17+
18+
override fun checkNewTeacher(user: User) =
19+
teacherPort.existsTeacherByUser(user)
20+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package team.msg.sms.domain.teacher.service.impl
2+
3+
import team.msg.sms.common.annotation.Service
4+
import team.msg.sms.domain.teacher.model.HomeroomTeacher
5+
import team.msg.sms.domain.teacher.model.Teacher
6+
import team.msg.sms.domain.teacher.service.CommandHomeroomTeacherService
7+
import team.msg.sms.domain.teacher.spi.HomeroomTeacherPort
8+
import team.msg.sms.domain.user.model.User
9+
10+
@Service
11+
class CommandHomeroomTeacherServiceImpl(
12+
private val homeroomTeacherPort: HomeroomTeacherPort
13+
) : CommandHomeroomTeacherService {
14+
override fun saveHomeroomTeacher(homeroomTeacher: HomeroomTeacher, teacher: Teacher, user: User) =
15+
homeroomTeacherPort.saveHomeroomTeacher(homeroomTeacher, teacher, user)
16+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package team.msg.sms.domain.teacher.service.impl
2+
3+
import team.msg.sms.common.annotation.Service
4+
import team.msg.sms.domain.teacher.model.Teacher
5+
import team.msg.sms.domain.teacher.service.CommandTeacherService
6+
import team.msg.sms.domain.teacher.spi.TeacherPort
7+
import team.msg.sms.domain.user.model.User
8+
9+
@Service
10+
class CommandTeacherServiceImpl(
11+
private val teacherPort: TeacherPort
12+
) : CommandTeacherService {
13+
override fun saveTeacher(teacher: Teacher, user: User) =
14+
teacherPort.saveTeacher(teacher, user)
15+
16+
override fun saveDirectorTeacher(teacher: Teacher, user: User) =
17+
saveTeacher(teacher, user)
18+
19+
override fun saveDeputyPrincipalTeacher(teacher: Teacher, user: User) =
20+
saveTeacher(teacher, user)
21+
22+
override fun savePrincipalTeacher(teacher: Teacher, user: User) =
23+
saveTeacher(teacher, user)
24+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package team.msg.sms.domain.teacher.spi
2+
3+
import team.msg.sms.domain.teacher.model.HomeroomTeacher
4+
import team.msg.sms.domain.teacher.model.Teacher
5+
import team.msg.sms.domain.user.model.User
6+
7+
interface CommandHomeroomTeacherPort {
8+
fun saveHomeroomTeacher(homeroomTeacher: HomeroomTeacher, teacher: Teacher, user: User): HomeroomTeacher
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package team.msg.sms.domain.teacher.spi
2+
3+
import team.msg.sms.domain.teacher.model.Teacher
4+
import team.msg.sms.domain.user.model.User
5+
6+
interface CommandTeacherPort {
7+
fun saveTeacher(teacher: Teacher, user: User): Teacher
8+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package team.msg.sms.domain.teacher.spi
2+
3+
interface HomeroomTeacherPort :
4+
QueryHomeroomTeacherPort,
5+
CommandHomeroomTeacherPort
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package team.msg.sms.domain.teacher.spi
2+
3+
interface QueryHomeroomTeacherPort {
4+
fun existsHomeroomTeacherByGradeAndClassNum(grade: Int, classNum: Int): Boolean
5+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package team.msg.sms.domain.teacher.spi
2+
3+
import team.msg.sms.domain.user.model.User
4+
import java.util.*
5+
6+
interface QueryTeacherPort {
7+
fun existsTeacherById(uuid: UUID): Boolean
8+
fun existsTeacherByUser(user: User): Boolean
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package team.msg.sms.domain.teacher.spi
2+
3+
interface TeacherPort :
4+
QueryTeacherPort,
5+
CommandTeacherPort

0 commit comments

Comments
 (0)