Skip to content

Commit bb6068c

Browse files
committed
Merge branch 'teacher' into feature/311-master-teacher-merge
2 parents ab95ed1 + 2b8515e commit bb6068c

File tree

13 files changed

+167
-31
lines changed

13 files changed

+167
-31
lines changed

sms-core/src/main/kotlin/team/msg/sms/domain/teacher/service/CommandHomeroomTeacherService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ import team.msg.sms.domain.teacher.model.Teacher
55
import team.msg.sms.domain.user.model.User
66

77
interface CommandHomeroomTeacherService {
8-
fun saveHomeroomTeacher(homeroomTeacher: HomeroomTeacher, teacher: Teacher, user: User)
8+
fun saveHomeroomTeacher(homeroomTeacher: HomeroomTeacher, teacher: Teacher, user: User): HomeroomTeacher
99
}

sms-core/src/main/kotlin/team/msg/sms/domain/teacher/service/CommandTeacherService.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@ import team.msg.sms.domain.teacher.model.Teacher
44
import team.msg.sms.domain.user.model.User
55

66
interface CommandTeacherService {
7-
fun saveTeacher(user: User): Teacher
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
811
}
Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,16 @@
11
package team.msg.sms.domain.teacher.service.impl
22

33
import team.msg.sms.common.annotation.Service
4-
import team.msg.sms.domain.auth.model.Role
54
import team.msg.sms.domain.teacher.model.HomeroomTeacher
65
import team.msg.sms.domain.teacher.model.Teacher
76
import team.msg.sms.domain.teacher.service.CommandHomeroomTeacherService
87
import team.msg.sms.domain.teacher.spi.HomeroomTeacherPort
98
import team.msg.sms.domain.user.model.User
10-
import team.msg.sms.domain.user.spi.UserPort
119

1210
@Service
1311
class CommandHomeroomTeacherServiceImpl(
14-
private val homeroomTeacherPort: HomeroomTeacherPort,
15-
private val userPort: UserPort
12+
private val homeroomTeacherPort: HomeroomTeacherPort
1613
) : CommandHomeroomTeacherService {
17-
override fun saveHomeroomTeacher(homeroomTeacher: HomeroomTeacher, teacher: Teacher, user: User) {
14+
override fun saveHomeroomTeacher(homeroomTeacher: HomeroomTeacher, teacher: Teacher, user: User) =
1815
homeroomTeacherPort.saveHomeroomTeacher(homeroomTeacher, teacher, user)
19-
20-
user.roles.add(Role.ROLE_HOMEROOM)
21-
userPort.saveUser(user)
22-
}
2316
}

sms-core/src/main/kotlin/team/msg/sms/domain/teacher/service/impl/CommandTeacherServiceImpl.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,20 @@ import team.msg.sms.domain.teacher.model.Teacher
55
import team.msg.sms.domain.teacher.service.CommandTeacherService
66
import team.msg.sms.domain.teacher.spi.TeacherPort
77
import team.msg.sms.domain.user.model.User
8-
import java.util.*
98

109
@Service
1110
class CommandTeacherServiceImpl(
1211
private val teacherPort: TeacherPort
1312
) : CommandTeacherService {
14-
override fun saveTeacher(user: User): Teacher {
15-
val teacher = Teacher(
16-
id = UUID.randomUUID(),
17-
userId = user.id,
18-
)
13+
override fun saveTeacher(teacher: Teacher, user: User) =
14+
teacherPort.saveTeacher(teacher, user)
1915

20-
return teacherPort.saveTeacher(teacher, user)
21-
}
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)
2224
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package team.msg.sms.domain.teacher.usecase
2+
3+
import org.springframework.transaction.annotation.Transactional
4+
import team.msg.sms.common.annotation.UseCase
5+
import team.msg.sms.domain.auth.model.Role
6+
import team.msg.sms.domain.teacher.model.Teacher
7+
import team.msg.sms.domain.teacher.service.TeacherService
8+
import team.msg.sms.domain.user.service.UserService
9+
import java.util.*
10+
11+
@UseCase
12+
class SignUpDeputyPrincipalTeacherUseCase(
13+
private val userService: UserService,
14+
private val teacherService: TeacherService
15+
){
16+
17+
@Transactional(rollbackFor = [Exception::class])
18+
fun execute(){
19+
val user = userService.getCurrentUser()
20+
21+
teacherService.checkTeacherExistsByUser(user)
22+
23+
val teacher = Teacher(
24+
id = UUID.randomUUID(),
25+
userId = user.id,
26+
)
27+
28+
teacherService.saveDeputyPrincipalTeacher(teacher, user)
29+
30+
userService.saveRoles(user, mutableListOf(Role.ROLE_DEPUTY_PRINCIPAL))
31+
}
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package team.msg.sms.domain.teacher.usecase
2+
3+
import org.springframework.transaction.annotation.Transactional
4+
import team.msg.sms.common.annotation.UseCase
5+
import team.msg.sms.domain.auth.model.Role
6+
import team.msg.sms.domain.teacher.model.Teacher
7+
import team.msg.sms.domain.teacher.service.TeacherService
8+
import team.msg.sms.domain.user.service.UserService
9+
import java.util.*
10+
11+
@UseCase
12+
class SignUpDirectorTeacherUseCase(
13+
private val userService: UserService,
14+
private val teacherService: TeacherService
15+
) {
16+
17+
@Transactional(rollbackFor = [Exception::class])
18+
fun execute(){
19+
val user = userService.getCurrentUser()
20+
21+
teacherService.checkTeacherExistsByUser(user)
22+
23+
val teacher = Teacher(
24+
id = UUID.randomUUID(),
25+
userId = user.id,
26+
)
27+
28+
teacherService.saveDirectorTeacher(teacher, user)
29+
30+
userService.saveRoles(user, mutableListOf(Role.ROLE_DIRECTOR))
31+
}
32+
}

sms-core/src/main/kotlin/team/msg/sms/domain/teacher/usecase/SignUpHomeroomTeacherUseCase.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ package team.msg.sms.domain.teacher.usecase
22

33
import org.springframework.transaction.annotation.Transactional
44
import team.msg.sms.common.annotation.UseCase
5+
import team.msg.sms.domain.auth.model.Role
56
import team.msg.sms.domain.teacher.dto.req.SignUpHomeroomTeacherRequestData
67
import team.msg.sms.domain.teacher.model.HomeroomTeacher
7-
import team.msg.sms.domain.teacher.service.CommandHomeroomTeacherService
8+
import team.msg.sms.domain.teacher.model.Teacher
89
import team.msg.sms.domain.teacher.service.HomeroomTeacherService
910
import team.msg.sms.domain.teacher.service.TeacherService
1011
import team.msg.sms.domain.user.service.UserService
12+
import java.util.*
1113

1214
@UseCase
1315
class SignUpHomeroomTeacherUseCase(
@@ -19,21 +21,27 @@ class SignUpHomeroomTeacherUseCase(
1921
@Transactional(rollbackFor = [Exception::class])
2022
fun execute(signUpHomeroomTeacherRequestData: SignUpHomeroomTeacherRequestData) {
2123
val user = userService.getCurrentUser()
22-
23-
teacherService.checkTeacherExistsByUser(user)
24-
25-
val teacher = teacherService.saveTeacher(user)
2624
val grade = signUpHomeroomTeacherRequestData.grade
2725
val classNum = signUpHomeroomTeacherRequestData.classNum
2826

27+
teacherService.checkTeacherExistsByUser(user)
2928
homeroomTeacherService.checkHomeroomTeacherExistsByGradeAndClassNum(grade, classNum)
3029

30+
val teacher = Teacher(
31+
id = UUID.randomUUID(),
32+
userId = user.id,
33+
)
34+
35+
val savedTeacher = teacherService.saveTeacher(teacher, user)
36+
3137
val homeroomTeacher = HomeroomTeacher(
3238
grade = grade,
3339
classNum = classNum,
34-
teacherId = teacher.id
40+
teacherId = savedTeacher.id
3541
)
3642

37-
homeroomTeacherService.saveHomeroomTeacher(homeroomTeacher, teacher, user)
43+
homeroomTeacherService.saveHomeroomTeacher(homeroomTeacher, savedTeacher, user)
44+
45+
userService.saveRoles(user, mutableListOf(Role.ROLE_HOMEROOM))
3846
}
3947
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package team.msg.sms.domain.teacher.usecase
2+
3+
import org.springframework.transaction.annotation.Transactional
4+
import team.msg.sms.common.annotation.UseCase
5+
import team.msg.sms.domain.auth.model.Role
6+
import team.msg.sms.domain.teacher.model.Teacher
7+
import team.msg.sms.domain.teacher.service.TeacherService
8+
import team.msg.sms.domain.user.service.UserService
9+
import java.util.*
10+
11+
@UseCase
12+
class SignUpPrincipalTeacherUseCase(
13+
private val userService: UserService,
14+
private val teacherService: TeacherService
15+
){
16+
17+
@Transactional(rollbackFor = [Exception::class])
18+
fun execute(){
19+
val user = userService.getCurrentUser()
20+
21+
teacherService.checkTeacherExistsByUser(user)
22+
23+
val teacher = Teacher(
24+
id = UUID.randomUUID(),
25+
userId = user.id,
26+
)
27+
28+
teacherService.savePrincipalTeacher(teacher, user)
29+
30+
userService.saveRoles(user, mutableListOf(Role.ROLE_PRINCIPAL))
31+
}
32+
}

sms-core/src/main/kotlin/team/msg/sms/domain/teacher/usecase/SignUpTeacherUseCase.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package team.msg.sms.domain.teacher.usecase
22

33
import org.springframework.transaction.annotation.Transactional
44
import team.msg.sms.common.annotation.UseCase
5+
import team.msg.sms.domain.teacher.model.Teacher
56
import team.msg.sms.domain.teacher.service.TeacherService
67
import team.msg.sms.domain.user.service.UserService
8+
import java.util.*
79

810
@UseCase
911
class SignUpTeacherUseCase(
@@ -16,6 +18,11 @@ class SignUpTeacherUseCase(
1618

1719
teacherService.checkTeacherExistsByUser(user)
1820

19-
teacherService.saveTeacher(user)
21+
val teacher = Teacher(
22+
id = UUID.randomUUID(),
23+
userId = user.id,
24+
)
25+
26+
teacherService.saveTeacher(teacher, user)
2027
}
2128
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package team.msg.sms.domain.user.service
22

3+
import team.msg.sms.domain.auth.model.Role
34
import team.msg.sms.domain.user.model.User
45
import java.util.UUID
56

67
interface CommandUserService {
78
fun createUserWhenNotExistUser(existUser: Boolean, user: User): User
9+
fun saveRoles(user: User, role: List<Role>): User
810
fun deleteByUuid(userId: UUID)
911
}

sms-core/src/main/kotlin/team/msg/sms/domain/user/service/impl/CommandUserServiceImpl.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package team.msg.sms.domain.user.service.impl
22

33
import team.msg.sms.common.annotation.Service
4+
import team.msg.sms.domain.auth.model.Role
45
import team.msg.sms.domain.user.exception.UserNotFoundException
56
import team.msg.sms.domain.user.model.User
67
import team.msg.sms.domain.user.service.CommandUserService
7-
import team.msg.sms.domain.user.spi.CommandUserPort
8-
import team.msg.sms.domain.user.spi.QueryUserPort
98
import team.msg.sms.domain.user.spi.UserPort
109
import java.util.*
1110

@@ -21,6 +20,11 @@ class CommandUserServiceImpl(
2120
}
2221
}
2322

23+
override fun saveRoles(user: User, role: List<Role>): User {
24+
user.roles.addAll(role)
25+
return userPort.saveUser(user)
26+
}
27+
2428
override fun deleteByUuid(userId: UUID) =
2529
userPort.deleteByUuid(userId)
2630
}

sms-infrastructure/src/main/kotlin/team/msg/sms/global/security/SecurityConfig.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ class SecurityConfig(
6464
.antMatchers(HttpMethod.GET, "/student/anonymous/{uuid}").permitAll()
6565

6666
.antMatchers(HttpMethod.POST, "/teacher/common").hasAuthority(TEACHER)
67+
.antMatchers(HttpMethod.POST, "/teacher/director").hasAuthority(TEACHER)
68+
.antMatchers(HttpMethod.POST, "/teacher/homeroom").hasAuthority(TEACHER)
69+
.antMatchers(HttpMethod.POST, "/teacher/principal").hasAuthority(TEACHER)
70+
.antMatchers(HttpMethod.POST, "/teacher/deputy-principal").hasAuthority(TEACHER)
6771

6872
.antMatchers(HttpMethod.POST, "/file").authenticated()
6973
.antMatchers(HttpMethod.POST, "/file/image").authenticated()

sms-presentation/src/main/kotlin/team/msg/sms/domain/teacher/TeacherWebAdapter.kt

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,38 @@ import org.springframework.web.bind.annotation.RequestBody
77
import org.springframework.web.bind.annotation.RequestMapping
88
import org.springframework.web.bind.annotation.RestController
99
import team.msg.sms.domain.teacher.dto.req.SignUpHomeroomTeacherWebRequest
10-
import team.msg.sms.domain.teacher.usecase.SignUpHomeroomTeacherUseCase
11-
import team.msg.sms.domain.teacher.usecase.SignUpTeacherUseCase
10+
import team.msg.sms.domain.teacher.usecase.*
1211
import javax.validation.Valid
1312

1413
@RestController
1514
@RequestMapping("/teacher")
1615
class TeacherWebAdapter(
1716
private val signUpTeacherUseCase: SignUpTeacherUseCase,
17+
private val signUpDirectorTeacherUseCase: SignUpDirectorTeacherUseCase,
18+
private val signUpDeputyPrincipalTeacherUseCase: SignUpDeputyPrincipalTeacherUseCase,
19+
private val signUpPrincipalTeacherUseCase: SignUpPrincipalTeacherUseCase,
1820
private val signUpHomeroomTeacherUseCase: SignUpHomeroomTeacherUseCase
1921
) {
2022
@PostMapping("/common")
2123
fun signUpTeacher(): ResponseEntity<Unit> =
2224
signUpTeacherUseCase.execute()
2325
.let { ResponseEntity.status(HttpStatus.CREATED).build() }
2426

27+
@PostMapping("/director")
28+
fun signUpDirectorTeacher(): ResponseEntity<Unit> =
29+
signUpDirectorTeacherUseCase.execute()
30+
.let { ResponseEntity.status(HttpStatus.CREATED).build() }
31+
32+
@PostMapping("/deputy-principal")
33+
fun signUpDeputyPrincipalTeacher(): ResponseEntity<Unit> =
34+
signUpDeputyPrincipalTeacherUseCase.execute()
35+
.let { ResponseEntity.status(HttpStatus.CREATED).build() }
36+
37+
@PostMapping("/principal")
38+
fun signUpPrincipalTeacher(): ResponseEntity<Unit> =
39+
signUpPrincipalTeacherUseCase.execute()
40+
.let { ResponseEntity.status(HttpStatus.CREATED).build() }
41+
2542
@PostMapping("/homeroom")
2643
fun signUpHomeroomTeacher(@RequestBody @Valid signUpHomeroomTeacherWebRequest: SignUpHomeroomTeacherWebRequest): ResponseEntity<Unit> =
2744
signUpHomeroomTeacherUseCase.execute(signUpHomeroomTeacherWebRequest.toData())

0 commit comments

Comments
 (0)