Skip to content

Commit

Permalink
⭐️ :: mission 업로드 기능
Browse files Browse the repository at this point in the history
  • Loading branch information
gurdl0525 committed Nov 15, 2023
1 parent 9691ba4 commit 63fd2de
Show file tree
Hide file tree
Showing 20 changed files with 229 additions and 117 deletions.
4 changes: 0 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ java {
sourceCompatibility = JavaVersion.VERSION_17
}

sourceSets["main"].withConvention(org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet::class) {
kotlin.srcDir("$buildDir/generated/source/kapt/main")
}

configurations {
compileOnly {
extendsFrom(configurations.annotationProcessor.get())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
package com.example.onui.domain.auth.presentation

import com.example.onui.domain.mission.presentation.dto.request.CreateMissionRequest
import com.example.onui.domain.mission.presentation.dto.response.MissionResponse
import com.example.onui.domain.mission.service.MissionService
import com.example.onui.domain.user.service.UserService
import org.springframework.http.HttpStatus
import org.springframework.validation.annotation.Validated
import org.springframework.web.bind.annotation.*
import javax.validation.Valid

@RestController
@RequestMapping("/admin")
@Validated
class AdminController(
private val userService: UserService
private val userService: UserService,
private val missionService: MissionService
) {

@PostMapping("/theme")
Expand All @@ -18,4 +25,11 @@ class AdminController(
) {
userService.postTheme(id)
}

@PostMapping("/mission")
@ResponseStatus(HttpStatus.CREATED)
fun createMission(
@RequestBody @Valid
req: CreateMissionRequest
): MissionResponse = missionService.createMission(req)
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
package com.example.onui.domain.mission.entity

import org.hibernate.annotations.OnDelete
import org.hibernate.annotations.OnDeleteAction
import java.util.*
import javax.persistence.Column
import javax.persistence.DiscriminatorValue
import javax.persistence.Entity
import javax.persistence.*

@Entity
@DiscriminatorValue("assigned")
@OnDelete(action = OnDeleteAction.CASCADE)
@Entity(name = "assign_mission")
class AssignMission(
name: String,
goal: String,
mission: Mission,
coast: Int,
message: String,
id: UUID? = null
): Mission(name, goal, message, id) {
) {
@Id
@Column(name = "mission_id")
var id: UUID? = id
protected set

@OneToOne(fetch = FetchType.LAZY)
@MapsId
@JoinColumn(name = "mission_id", columnDefinition = "BINARY(16)")
var mission: Mission = mission
protected set

@Column(name = "coast", nullable = false)
var coast: Int = coast
Expand Down

This file was deleted.

32 changes: 25 additions & 7 deletions src/main/kotlin/com/example/onui/domain/mission/entity/Mission.kt
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
package com.example.onui.domain.mission.entity

import java.util.UUID
import com.example.onui.domain.mission.presentation.dto.response.MissionResponse
import java.util.*
import javax.persistence.*

@Entity(name = "mission")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "mission_type")
abstract class Mission (
class Mission(
name: String,
goal: String,
message: String,
missionType: MissionType,
id: UUID? = null
) {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(columnDefinition = "BINARY(16)")
var id = id
var id: UUID? = id
protected set

@Column(name = "name", nullable = false)
@Column(name = "name", nullable = false, unique = true)
var name: String = name
protected set

Expand All @@ -28,4 +29,21 @@ abstract class Mission (
@Column(name = "message", nullable = false)
var message: String = message
protected set

@Column(name = "mission_type", nullable = false)
@Enumerated(EnumType.STRING)
var missionType: MissionType = missionType
protected set

@OneToOne(mappedBy = "mission", cascade = [CascadeType.REMOVE])
var assignMission: AssignMission? = null

fun toResponse(coast: Int?) = MissionResponse(
this.id!!,
this.name,
this.goal,
this.message,
this.missionType,
coast
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.onui.domain.mission.entity

enum class MissionType {

ESSENTIAL,
RANDOM,
ASSIGN
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.example.onui.domain.mission.exception

import com.example.onui.global.config.error.data.ErrorCode
import com.example.onui.global.config.error.exception.BusinessException

object AlreadyCreatedMissionException : BusinessException(ErrorCode.ALREADY_CREATED_MISSION)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.example.onui.domain.mission.exception

import com.example.onui.global.config.error.data.ErrorCode
import com.example.onui.global.config.error.exception.BusinessException

object TypeCoastMissMatchedMissionException : BusinessException(ErrorCode.TYPE_COAST_MISS_MATCHED)
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
package com.example.onui.domain.mission.controller
package com.example.onui.domain.mission.presentation

import com.example.onui.domain.mission.service.MissionService
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.validation.annotation.Validated
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@Validated
@RestController
@RequestMapping("/mission")
class MissionController(
private val missionService: MissionService
) {

@GetMapping("/test")
fun test() = missionService.test()

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.onui.domain.mission.presentation.dto.request

import com.example.onui.domain.mission.entity.MissionType
import javax.validation.constraints.Max
import javax.validation.constraints.Min
import javax.validation.constraints.NotBlank
import javax.validation.constraints.NotNull

data class CreateMissionRequest(

@field:NotBlank(message = "null일 수 없습니다.")
val name: String?,

@field:NotBlank(message = "null일 수 없습니다.")
val goal: String?,

@field:NotBlank(message = "null일 수 없습니다.")
val message: String?,

@field:NotNull(message = "null일 수 없습니다.")
val missionType: MissionType?,

@field:Min(-10, message = "-10 보다 커야합니다,")
@field:Max(10, message = "10 보다 작야합니다,")
val coast: Int?
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.example.onui.domain.mission.presentation.dto.response

import com.example.onui.domain.mission.entity.MissionType
import java.util.*

data class MissionResponse(

val id: UUID,

val name: String,

val goal: String,

val message: String,

val missionType: MissionType,

val coast: Int?
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.example.onui.domain.mission.repository

import com.example.onui.domain.mission.entity.AssignMission
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
import java.util.*

@Repository
interface AssignMissionRepository : JpaRepository<AssignMission, UUID?> {

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import com.example.onui.domain.mission.entity.Mission
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
import java.util.UUID
import java.util.*

@Repository
interface MissionRepository<T: Mission>: JpaRepository<T, UUID?> {
interface MissionRepository : JpaRepository<Mission, UUID?> {

fun existsByName(name: String): Boolean
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.example.onui.domain.mission.service

import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional

@Service
@Transactional(readOnly = true)
class MissionScheduling(
) {

// @Transactional
// @Scheduled(cron = "0 30 6 * * ?", zone = "Asia/Seoul")
// fun assigningMission() {
//
// val randomMissions = randomMissionRepository.findAll()
//
// val generalMissions = generalMissionRepository.findAll()
//
// userRepository.findAll()
// .parallelStream()
// .forEach {
// val date = LocalDate.now()
//
// val diaries =
// diaryRepository.findAllByUserAndYearAndMonthOrderByCreatedAtAsc(it, date.year, date.monthValue)
//
// val assignMission: Mission = if (diaries.isNullOrEmpty()) {
//
// qDiaryRepository.findThreeDayAgoByUser(it)?.let { diary ->
//
// qMissionRepository.findAssignByCoast(diary.mood.coast).random()
//
// } ?: randomMissions.random()
//
// } else randomMissions.random()
//
// var randomMission = randomMissions.random()
//
// while (randomMission == assignMission) {
// randomMission = randomMissions.random()
// }
//
// assignedRepository.saveAll(
// listOf(
// Assigned(it, generalMissions.random()),
// Assigned(it, assignMission),
// Assigned(it, randomMission)
// )
// )
// }
// }
//
// @Transactional
// @Scheduled(cron = "0 0 0 * * ?", zone = "Asia/Seoul")
// fun disAssigning() {
// assignedRepository.deleteAll()
// }

}
Loading

0 comments on commit 63fd2de

Please sign in to comment.