sodalive-backend-spring-boot/src/main/kotlin/kr/co/vividnext/sodalive/member/Member.kt

118 lines
3.2 KiB
Kotlin

package kr.co.vividnext.sodalive.member
import kr.co.vividnext.sodalive.common.BaseEntity
import kr.co.vividnext.sodalive.member.auth.Auth
import kr.co.vividnext.sodalive.member.following.CreatorFollowing
import kr.co.vividnext.sodalive.member.notification.MemberNotification
import kr.co.vividnext.sodalive.member.stipulation.StipulationAgree
import kr.co.vividnext.sodalive.member.tag.MemberCreatorTag
import javax.persistence.CascadeType
import javax.persistence.Column
import javax.persistence.Entity
import javax.persistence.EnumType
import javax.persistence.Enumerated
import javax.persistence.FetchType
import javax.persistence.OneToMany
import javax.persistence.OneToOne
@Entity
data class Member(
val email: String,
var password: String,
var nickname: String,
var profileImage: String? = null,
@Enumerated(value = EnumType.STRING)
var gender: Gender = Gender.NONE,
@Enumerated(value = EnumType.STRING)
var role: MemberRole = MemberRole.USER,
var isVisibleDonationRank: Boolean = true,
var isActive: Boolean = true,
var container: String = "web"
) : BaseEntity() {
@OneToMany(mappedBy = "member", cascade = [CascadeType.ALL])
val stipulationAgrees: MutableList<StipulationAgree> = mutableListOf()
@OneToMany(mappedBy = "member", cascade = [CascadeType.ALL], orphanRemoval = true)
var tags: MutableList<MemberCreatorTag> = mutableListOf()
@OneToMany(mappedBy = "creator")
var follower: MutableList<CreatorFollowing> = mutableListOf()
@OneToMany(mappedBy = "member", cascade = [CascadeType.ALL])
val signOutReasons: MutableList<SignOut> = mutableListOf()
@OneToOne(mappedBy = "member", fetch = FetchType.LAZY)
var notification: MemberNotification? = null
@OneToOne(mappedBy = "member", fetch = FetchType.LAZY)
var auth: Auth? = null
// 소개
@Column(columnDefinition = "TEXT")
var introduce = ""
// SNS
var instagramUrl = ""
var youtubeUrl = ""
var websiteUrl = ""
var blogUrl = ""
var pushToken: String? = null
// 화폐
var pgChargeCan: Int = 0
var pgRewardCan: Int = 0
var googleChargeCan: Int = 0
var googleRewardCan: Int = 0
var appleChargeCan: Int = 0
var appleRewardCan: Int = 0
fun getChargeCan(container: String): Int {
return when (container) {
"ios" -> appleChargeCan + pgChargeCan
"aos" -> googleChargeCan + pgChargeCan
else -> pgChargeCan
}
}
fun getRewardCan(container: String): Int {
return when (container) {
"ios" -> appleRewardCan + pgRewardCan
"aos" -> googleRewardCan + pgRewardCan
else -> pgRewardCan
}
}
fun charge(chargeCan: Int, rewardCan: Int, container: String) {
when (container) {
"ios" -> {
appleChargeCan += chargeCan
appleRewardCan += rewardCan
}
"aos" -> {
googleChargeCan += chargeCan
googleRewardCan += rewardCan
}
else -> {
pgChargeCan += chargeCan
pgRewardCan += rewardCan
}
}
}
}
enum class Gender {
MALE, FEMALE, NONE
}
enum class MemberRole {
ADMIN, BOT, USER, CREATOR, AGENT
}