Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

develop내용을 master로 머지 #245

Merged
merged 23 commits into from
Aug 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6e292ce
add :: query dsl configuration
esperar Jul 25, 2023
26f9ea3
create :: search user custom repository
esperar Jul 25, 2023
1eed774
refactor :: search user service querydsl 적용
esperar Jul 25, 2023
2bb5ecc
chore :: 줄바꿈 헤헤
esperar Jul 25, 2023
1422f81
Merge pull request #236 from Team-Ampersand/229-feature/get-self-stud…
esperar Jul 26, 2023
6c385de
add :: self study member search query
esperar Jul 26, 2023
840ef73
refactor :: self study member 검색 querydsl 적용
esperar Jul 26, 2023
ce74f1c
add :: codeowner에 esperar를 추가
esperar Jul 26, 2023
ab8a3fc
Merge pull request #238 from Team-Ampersand/237-feat/get-self-study-q…
esperar Jul 27, 2023
bb3491b
chore :: massage count entity setting()
esperar Jul 27, 2023
49e676e
chore :: secuirty는 global에 있어야할 것 같습니다
esperar Jul 27, 2023
e8c0b7e
Merge pull request #240 from Team-Ampersand/239-chore/massagecountcon…
esperar Jul 28, 2023
3cfcb02
update :: board image dto 적용1
esperar Jul 29, 2023
2670075
chore :: s3 ses thirdparty에 넣겠습니다
esperar Jul 29, 2023
2c92991
update :: board alarm service, dto
esperar Jul 29, 2023
be9cf0b
update :: get board service 수정
esperar Jul 29, 2023
e1cac4b
chore :: board dto of 함수
esperar Jul 29, 2023
d906d3b
update :: board alarm service 테스트코드 수정
esperar Jul 29, 2023
da66db6
Merge pull request #242 from Team-Ampersand/241-refactor/board-image-dto
esperar Jul 30, 2023
965c9cf
회원탈퇴할때 이메일, 비밀번호 입력 안받게 수정
dolong2 Aug 2, 2023
58f67ff
테스트 코드 수정
dolong2 Aug 2, 2023
c08d5a2
delete 메서드로 변경
dolong2 Aug 2, 2023
8c234a1
Merge pull request #244 from Team-Ampersand/refac/withdrwal-non-input…
dolong2 Aug 2, 2023
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
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* @louis7308 @Huuuunee @dolong2 @uuuuuuuk @cutehanchankyo
* @louis7308 @Huuuunee @dolong2 @uuuuuuuk @cutehanchankyo @esperar
3 changes: 1 addition & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ dependencies {
implementation(Dependencies.SPRING_CLOUD)
implementation(Dependencies.QUERY_DSL)
implementation(Dependencies.QUERY_DSL_APT)
kapt(Dependencies.QUERY_DSL_APT)
}

tasks.withType<KotlinCompile> {
Expand Down Expand Up @@ -79,6 +80,4 @@ buildscript {
}
}



apply(plugin = "io.kotest")
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
package com.dotori.v2.domain.board.presentation.data.dto

import com.dotori.v2.domain.board.domain.entity.BoardImage
import com.dotori.v2.domain.board.domain.entity.Board
import com.dotori.v2.domain.member.enums.Role
import java.time.LocalDate

data class BoardDto(
val id: Long,
val title: String,
val roles: List<Role>,
val boardImages: List<BoardImage>,
val boardImages: List<BoardImageDto>,
val createdDate: LocalDate
)
) {
companion object {
fun of(board: Board): BoardDto = BoardDto(
id = board.id,
title = board.title,
roles = board.member.roles,
boardImages = board.boardImage.map { BoardImageDto.of(it) },
createdDate = board.createdDate.toLocalDate()
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.dotori.v2.domain.board.presentation.data.dto

import com.dotori.v2.domain.board.domain.entity.BoardImage

data class BoardImageDto(
val id: Long,
val url: String
) {
companion object {
fun of(boardImage: BoardImage): BoardImageDto =
BoardImageDto(
id = boardImage.id,
url = boardImage.url
)
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.dotori.v2.domain.board.presentation.data.res

import com.dotori.v2.domain.board.domain.entity.Board
import com.dotori.v2.domain.member.enums.Role
import java.time.LocalDateTime

Expand All @@ -9,4 +10,14 @@ data class BoardResDto(
val content: String,
val role: Role,
val createdDate: LocalDateTime
)
) {
companion object {
fun of(board: Board) = BoardResDto(
id = board.id,
title = board.title,
content = board.content,
role = board.member.roles[0],
createdDate = board.createdDate
)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.dotori.v2.domain.board.presentation.data.res

import com.dotori.v2.domain.board.domain.entity.BoardImage
import com.dotori.v2.domain.board.domain.entity.Board
import com.dotori.v2.domain.board.presentation.data.dto.BoardImageDto
import com.dotori.v2.domain.member.enums.Role
import java.time.LocalDateTime

Expand All @@ -9,7 +10,19 @@ data class DetailBoardResDto(
val title: String,
val content: String,
val role: Role,
val boardImage: List<BoardImage>,
val boardImage: List<BoardImageDto>,
val createdDate: LocalDateTime,
val modifiedDate: LocalDateTime?
)
) {
companion object {
fun of(board: Board): DetailBoardResDto = DetailBoardResDto(
id = board.id,
title = board.title,
content = board.content,
role = board.member.roles[0],
boardImage = board.boardImage.map { BoardImageDto.of(it) },
createdDate = board.createdDate,
modifiedDate = board.modifiedDate
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.dotori.v2.domain.board.domain.entity.BoardImage
import com.dotori.v2.domain.board.presentation.data.dto.CreateBoardDto
import com.dotori.v2.domain.board.presentation.data.req.CreateBoardReqDto
import com.dotori.v2.domain.board.service.CreateBoardService
import com.dotori.v2.domain.board.service.S3Service
import com.dotori.v2.global.thirdparty.aws.s3.S3Service
import com.dotori.v2.domain.board.util.BoardSaveUtil
import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.global.util.UserUtil
Expand All @@ -22,6 +22,7 @@ class CreateBoardServiceImpl(
private val boardSaveUtil: BoardSaveUtil
) : CreateBoardService {


@Value("\${cloud.aws.s3.url}")
private val S3_ADDRESS: String? = null

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.dotori.v2.domain.board.domain.repository.BoardImageRepository
import com.dotori.v2.domain.board.domain.repository.BoardRepository
import com.dotori.v2.domain.board.exception.BoardNotExistsException
import com.dotori.v2.domain.board.service.DeleteBoardService
import com.dotori.v2.domain.board.service.S3Service
import com.dotori.v2.global.thirdparty.aws.s3.S3Service
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
Expand Up @@ -7,7 +7,7 @@ import com.dotori.v2.domain.board.domain.repository.BoardRepository
import com.dotori.v2.domain.board.exception.BoardNotExistsException
import com.dotori.v2.domain.board.presentation.data.req.DeleteMultipleBoardReqDto
import com.dotori.v2.domain.board.service.DeleteMultipleBoardService
import com.dotori.v2.domain.board.service.S3Service
import com.dotori.v2.global.thirdparty.aws.s3.S3Service
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.dotori.v2.domain.board.domain.entity.BoardImage
import com.dotori.v2.domain.board.domain.repository.BoardImageRepository
import com.dotori.v2.domain.board.domain.repository.BoardRepository
import com.dotori.v2.domain.board.exception.BoardNotExistsException
import com.dotori.v2.domain.board.presentation.data.dto.BoardImageDto
import com.dotori.v2.domain.board.presentation.data.res.DetailBoardResDto
import com.dotori.v2.domain.board.service.GetBoardDetailService
import org.springframework.data.repository.findByIdOrNull
Expand All @@ -14,24 +15,13 @@ import org.springframework.transaction.annotation.Transactional
@Service
@Transactional(readOnly = true, rollbackFor = [Exception::class])
class GetBoardDetailServiceImpl(
private val boardRepository: BoardRepository,
private val boardImageRepository: BoardImageRepository,
private val boardRepository: BoardRepository
) : GetBoardDetailService {
override fun execute(boardId: Long): DetailBoardResDto {
val boardInfo: Board = boardRepository.findByIdOrNull(boardId)
val board = boardRepository.findByIdOrNull(boardId)
?: throw BoardNotExistsException()

return toResponse(boardInfo)
return DetailBoardResDto.of(board)
}

private fun toResponse(board: Board): DetailBoardResDto =
DetailBoardResDto(
id = board.id,
title = board.title,
content = board.content,
role = board.member.roles[0],
boardImage = board.boardImage,
createdDate = board.createdDate,
modifiedDate = board.modifiedDate
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,10 @@ import org.springframework.transaction.annotation.Transactional
class GetBoardsServiceImpl(
private val boardRepository: BoardRepository,
) : GetBoardsService {

override fun execute(): ListBoardResDto = ListBoardResDto(
boardList = boardRepository.findAllByOrderByCreatedDateDesc()
.map { it.toDto() }
.map { BoardResDto.of(it) }
)

private fun Board.toDto(): BoardResDto =
BoardResDto(
id = this.id,
title = this.title,
content = this.content,
role = this.member.roles[0],
createdDate = this.createdDate
)

}
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package com.dotori.v2.domain.main_page.presentation.dto.res

import com.dotori.v2.domain.board.domain.entity.Board
import com.dotori.v2.domain.board.presentation.data.dto.BoardDto
import com.dotori.v2.domain.board.presentation.data.res.BoardResDto
import com.dotori.v2.domain.member.enums.Role
import java.time.LocalDate

data class BoardAlarmResDto(
val content: List<BoardDto>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,22 @@ package com.dotori.v2.domain.main_page.service.impl
import com.dotori.v2.domain.board.domain.entity.Board
import com.dotori.v2.domain.board.domain.repository.BoardRepository
import com.dotori.v2.domain.board.presentation.data.dto.BoardDto
import com.dotori.v2.domain.board.presentation.data.res.BoardResDto
import com.dotori.v2.domain.board.presentation.data.dto.BoardImageDto
import com.dotori.v2.domain.main_page.presentation.dto.res.BoardAlarmResDto
import com.dotori.v2.domain.main_page.service.BoardAlarmService
import org.springframework.data.domain.Sort
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.LocalDateTime

@Service
@Transactional(rollbackFor = [Exception::class], readOnly = true)
class BoardAlarmServiceImpl(
private val boardRepository: BoardRepository
) : BoardAlarmService {

override fun execute(): BoardAlarmResDto =
BoardAlarmResDto(
content = boardRepository.findAllByOrderByCreatedDateDesc()
.map { toDto(it) }
.map { BoardDto.of(it) }
)

fun toDto(board: Board): BoardDto =
BoardDto(
id = board.id,
title = board.title,
roles = board.member.roles,
boardImages = board.boardImage,
createdDate = board.createdDate.toLocalDate()
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class MassageCountConfig(
) {
private val log = LoggerFactory.getLogger(this::class.simpleName)
@PostConstruct
fun selfStudyCountEntitySetting() {
fun massageCountEntitySetting() {
massageCountRepository.deleteAll()
massageCountRepository.save(
MassageCount(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.dotori.v2.domain.member.domain.repository

import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.self_study.presentation.dto.req.SelfStudySearchReqDto
import com.dotori.v2.domain.stu_info.presentation.data.req.SearchRequestDto

interface CustomMemberRepository {
fun search(searchRequestDto: SearchRequestDto): List<Member>
fun searchSelfStudyMember(selfStudySearchReqDto: SelfStudySearchReqDto): List<Member>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.dotori.v2.domain.member.domain.repository

import com.dotori.v2.domain.member.domain.entity.Member
import com.dotori.v2.domain.member.domain.entity.QMember.member
import com.dotori.v2.domain.member.enums.Gender
import com.dotori.v2.domain.member.enums.Role
import com.dotori.v2.domain.member.enums.SelfStudyStatus
import com.dotori.v2.domain.self_study.presentation.dto.req.SelfStudySearchReqDto
import com.dotori.v2.domain.stu_info.presentation.data.req.SearchRequestDto
import com.querydsl.core.types.dsl.BooleanExpression
import com.querydsl.jpa.impl.JPAQueryFactory
import org.springframework.stereotype.Repository
import org.springframework.util.StringUtils.hasText

@Repository
class CustomMemberRepositoryImpl(
private val queryFactory: JPAQueryFactory
) : CustomMemberRepository {

override fun search(searchRequestDto: SearchRequestDto): List<Member> {
return queryFactory.selectFrom(member)
.where(
nameEq(searchRequestDto.name),
gradeEq(searchRequestDto.grade),
classNumEq(searchRequestDto.classNum),
genderEq(searchRequestDto.gender),
roleEq(searchRequestDto.role),
selfStudyStatusEq(searchRequestDto.selfStudyStatus)
)
.orderBy(member.stuNum.asc())
.fetch()
}

override fun searchSelfStudyMember(selfStudySearchReqDto: SelfStudySearchReqDto): List<Member> {
return queryFactory.selectFrom(member)
.where(
nameEq(selfStudySearchReqDto.name),
gradeEq(selfStudySearchReqDto.grade),
classNumEq(selfStudySearchReqDto.classNum),
genderEq(selfStudySearchReqDto.gender)
)
.orderBy(member.stuNum.asc())
.fetch()
}

private fun nameEq(name: String?): BooleanExpression? =
if(hasText(name)) member.memberName.eq(name) else null

private fun gradeEq(grade: String?): BooleanExpression? =
if(hasText(grade)) member.stuNum.startsWith(grade) else null

private fun classNumEq(classNum: String?): BooleanExpression? =
if(hasText(classNum)) member.stuNum.substring(1,2).eq(classNum) else null

private fun genderEq(gender: String?): BooleanExpression? =
if(hasText(gender)) member.gender.eq(Gender.valueOf(gender!!)) else null

private fun roleEq(role: String?): BooleanExpression? =
if(hasText(role)) member.roles.any().eq(Role.valueOf(role!!)) else null

private fun selfStudyStatusEq(selfStudyStatus: SelfStudyStatus?): BooleanExpression? =
if(selfStudyStatus != null) member.selfStudyStatus.eq(selfStudyStatus) else null

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.dotori.v2.domain.member.enums.MassageStatus
import com.dotori.v2.domain.member.enums.SelfStudyStatus
import org.springframework.data.jpa.repository.JpaRepository

interface MemberRepository : JpaRepository<Member, Long> {
interface MemberRepository : JpaRepository<Member, Long>, CustomMemberRepository {
fun findByEmail(email: String?): Member?
fun existsByEmail(email: String): Boolean
fun findByStuNum(stuNum: String): Member?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class MemberController(
logoutService.execute()
.run { ResponseEntity.ok().build() }

@PostMapping("/withdrawal")
fun withdrawal(@Valid @RequestBody withdrawalReqDto: WithdrawalReqDto): ResponseEntity<Void> =
withdrawalService.execute(withdrawalReqDto)
@DeleteMapping("/withdrawal")
fun withdrawal(): ResponseEntity<Void> =
withdrawalService.execute()
.run { ResponseEntity.ok().build() }

@PatchMapping("/password")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.dotori.v2.domain.member.service

import com.dotori.v2.domain.member.presentation.data.req.WithdrawalReqDto

interface WithdrawalService {
fun execute(withdrawalReqDto: WithdrawalReqDto)
fun execute()
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import com.dotori.v2.domain.member.exception.MemberNotFoundException
import com.dotori.v2.domain.member.exception.TokenTypeNotValidException
import com.dotori.v2.domain.member.presentation.data.res.RefreshResDto
import com.dotori.v2.domain.member.service.RefreshService
import com.dotori.v2.global.config.security.jwt.TokenProvider
import com.dotori.v2.global.security.jwt.TokenProvider
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 @@ -6,7 +6,7 @@ import com.dotori.v2.domain.member.exception.PasswordMismatchException
import com.dotori.v2.domain.member.presentation.data.req.SignInReqDto
import com.dotori.v2.domain.member.presentation.data.res.SignInResDto
import com.dotori.v2.domain.member.service.SignInService
import com.dotori.v2.global.config.security.jwt.TokenProvider
import com.dotori.v2.global.security.jwt.TokenProvider
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand Down
Loading
Loading