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 = mutableListOf() @OneToMany(mappedBy = "member", cascade = [CascadeType.ALL], orphanRemoval = true) var tags: MutableList = mutableListOf() @OneToMany(mappedBy = "creator") var follower: MutableList = mutableListOf() @OneToMany(mappedBy = "member", cascade = [CascadeType.ALL]) val signOutReasons: MutableList = 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 adid: 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 }