/**
* Copyright (c) 1989-2020 INVENTEC BESTA Co., Ltd.
* All Rights Reserved.
*/
package com.taiwanlife.teamwalk.common.entity.redeem ;
import java.time.LocalDateTime ;
import jakarta.persistence.*;
import com.fasterxml.jackson.annotation.JsonBackReference;
import org.springframework.data.jpa.domain.support.AuditingEntityListener ;
import org.springframework.format.annotation.DateTimeFormat ;
import com.fasterxml.jackson.annotation.JsonFormat ;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties ;
import com.fasterxml.jackson.annotation.JsonInclude ;
import com.taiwanlife.teamwalk.common.entity.AbstractPrimaryKeyEntity ;
import com.taiwanlife.teamwalk.common.entity.member.MbrMember ;
import lombok.AllArgsConstructor ;
import lombok.Builder ;
import lombok.Data ;
import lombok.EqualsAndHashCode ;
import lombok.NoArgsConstructor ;
import lombok.ToString ;
/**
* @author Seimo.Zhan
* @version 1
*
* @date 2020/09/21
*/
@Entity
@EntityListeners ( AuditingEntityListener.class )
@JsonIgnoreProperties ( ignoreUnknown = true, value = { "hibernateLazyInitializer", "handler", "fieldHandler" } )
@JsonInclude ( JsonInclude.Include.NON_EMPTY )
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode ( callSuper = true )
@ToString ( callSuper = true )
@Builder
public class ReBadgeMember extends AbstractPrimaryKeyEntity
{
@Enumerated( EnumType.STRING )
@Column ( columnDefinition = "char(1)" )
private ReBadgeMember.IsRead isRead ;
@DateTimeFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
@JsonFormat ( pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8" )
private LocalDateTime getBadgeAt ;
@ManyToOne ( targetEntity = MbrMember.class, cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = true, fetch = FetchType.LAZY )
@JoinColumn ( name = "member_id", referencedColumnName = "id", foreignKey = @ForeignKey ( name = "none", value = ConstraintMode.NO_CONSTRAINT ) )
//@JsonIgnoreProperties ( ignoreUnknown = true, value = { "reBadgeMembers" } )
@JsonBackReference
private MbrMember mbrMember ;
@ManyToOne ( targetEntity = ReBadge.class, cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = true, fetch = FetchType.LAZY )
@JoinColumn ( name = "badge_id", referencedColumnName = "id", foreignKey = @ForeignKey ( name = "none", value = ConstraintMode.NO_CONSTRAINT ) )
//@JsonIgnoreProperties ( ignoreUnknown = true, value = { "reBadgeMembers" } )
@JsonBackReference
private ReBadge reBadge ;
/**
* @author Seimo.Zhan
* @version 1
*
* @date 2020/09/21
*/
public enum IsRead
{
N ( 'N', "未讀" ),
Y ( 'Y', "已讀" ) ;
private final char name ;
private final String value ;
/**
* Constructor
* @param name
* @param value
*/
private IsRead ( char name, String value )
{
this.name = name ;
this.value = value ;
}
/**
* @return char
*/
public char getName ()
{
return name ;
}
/**
* @return String
*/
public String getValue ()
{
return value ;
}
}
}
LyoqCgogKiBDb3B5cmlnaHQgKGMpIDE5ODktMjAyMCBJTlZFTlRFQyBCRVNUQSBDby4sIEx0ZC4KCiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgogKi8KCnBhY2thZ2UgY29tLnRhaXdhbmxpZmUudGVhbXdhbGsuY29tbW9uLmVudGl0eS5yZWRlZW0gOwoKCgppbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWUgOwoKCgppbXBvcnQgamFrYXJ0YS5wZXJzaXN0ZW5jZS4qOwoKCgppbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbkJhY2tSZWZlcmVuY2U7CgppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5kYXRhLmpwYS5kb21haW4uc3VwcG9ydC5BdWRpdGluZ0VudGl0eUxpc3RlbmVyIDsKCmltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmZvcm1hdC5hbm5vdGF0aW9uLkRhdGVUaW1lRm9ybWF0IDsKCgoKaW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25Gb3JtYXQgOwoKaW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25JZ25vcmVQcm9wZXJ0aWVzIDsKCmltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uYW5ub3RhdGlvbi5Kc29uSW5jbHVkZSA7CgppbXBvcnQgY29tLnRhaXdhbmxpZmUudGVhbXdhbGsuY29tbW9uLmVudGl0eS5BYnN0cmFjdFByaW1hcnlLZXlFbnRpdHkgOwoKaW1wb3J0IGNvbS50YWl3YW5saWZlLnRlYW13YWxrLmNvbW1vbi5lbnRpdHkubWVtYmVyLk1ick1lbWJlciA7CgoKCmltcG9ydCBsb21ib2suQWxsQXJnc0NvbnN0cnVjdG9yIDsKCmltcG9ydCBsb21ib2suQnVpbGRlciA7CgppbXBvcnQgbG9tYm9rLkRhdGEgOwoKaW1wb3J0IGxvbWJvay5FcXVhbHNBbmRIYXNoQ29kZSA7CgppbXBvcnQgbG9tYm9rLk5vQXJnc0NvbnN0cnVjdG9yIDsKCmltcG9ydCBsb21ib2suVG9TdHJpbmcgOwoKCgoKCi8qKgoKICogQGF1dGhvciBTZWltby5aaGFuCgogKiBAdmVyc2lvbiAxCgogKiAKCiAqIEBkYXRlIDIwMjAvMDkvMjEKCiAqLwoKQEVudGl0eQoKQEVudGl0eUxpc3RlbmVycyAoIEF1ZGl0aW5nRW50aXR5TGlzdGVuZXIuY2xhc3MgKQoKQEpzb25JZ25vcmVQcm9wZXJ0aWVzICggaWdub3JlVW5rbm93biA9IHRydWUsIHZhbHVlID0geyAiaGliZXJuYXRlTGF6eUluaXRpYWxpemVyIiwgImhhbmRsZXIiLCAiZmllbGRIYW5kbGVyIiB9ICkKCkBKc29uSW5jbHVkZSAoIEpzb25JbmNsdWRlLkluY2x1ZGUuTk9OX0VNUFRZICkKCkBEYXRhCgpATm9BcmdzQ29uc3RydWN0b3IKCkBBbGxBcmdzQ29uc3RydWN0b3IKCkBFcXVhbHNBbmRIYXNoQ29kZSAoIGNhbGxTdXBlciA9IHRydWUgKQoKQFRvU3RyaW5nICggY2FsbFN1cGVyID0gdHJ1ZSApCgpAQnVpbGRlcgoKcHVibGljIGNsYXNzIFJlQmFkZ2VNZW1iZXIgZXh0ZW5kcyBBYnN0cmFjdFByaW1hcnlLZXlFbnRpdHkKCnsKCglARW51bWVyYXRlZCggRW51bVR5cGUuU1RSSU5HICkKCglAQ29sdW1uICggY29sdW1uRGVmaW5pdGlvbiA9ICJjaGFyKDEpIiApCgoJcHJpdmF0ZSBSZUJhZGdlTWVtYmVyLklzUmVhZCBpc1JlYWQgOwoKCQoKCUBEYXRlVGltZUZvcm1hdCAoIHBhdHRlcm4gPSAieXl5eS1NTS1kZCBISDptbTpzcyIgKQoKCUBKc29uRm9ybWF0ICggcGF0dGVybiA9ICJ5eXl5L01NL2RkIEhIOm1tOnNzIiwgdGltZXpvbmUgPSAiR01UKzgiICkKCglwcml2YXRlIExvY2FsRGF0ZVRpbWUgZ2V0QmFkZ2VBdCA7CgoJCgoJQE1hbnlUb09uZSAoIHRhcmdldEVudGl0eSA9IE1ick1lbWJlci5jbGFzcywgY2FzY2FkZSA9IHsgQ2FzY2FkZVR5cGUuUkVGUkVTSCwgQ2FzY2FkZVR5cGUuTUVSR0UgfSwgb3B0aW9uYWwgPSB0cnVlLCBmZXRjaCA9IEZldGNoVHlwZS5MQVpZICkKCglASm9pbkNvbHVtbiAoIG5hbWUgPSAibWVtYmVyX2lkIiwgcmVmZXJlbmNlZENvbHVtbk5hbWUgPSAiaWQiLCBmb3JlaWduS2V5ID0gQEZvcmVpZ25LZXkgKCBuYW1lID0gIm5vbmUiLCB2YWx1ZSA9IENvbnN0cmFpbnRNb2RlLk5PX0NPTlNUUkFJTlQgKSApCgoJLy9ASnNvbklnbm9yZVByb3BlcnRpZXMgKCBpZ25vcmVVbmtub3duID0gdHJ1ZSwgdmFsdWUgPSB7ICJyZUJhZGdlTWVtYmVycyIgfSApCgoJQEpzb25CYWNrUmVmZXJlbmNlCgoJcHJpdmF0ZSBNYnJNZW1iZXIgbWJyTWVtYmVyIDsKCgkKCglATWFueVRvT25lICggdGFyZ2V0RW50aXR5ID0gUmVCYWRnZS5jbGFzcywgY2FzY2FkZSA9IHsgQ2FzY2FkZVR5cGUuUkVGUkVTSCwgQ2FzY2FkZVR5cGUuTUVSR0UgfSwgb3B0aW9uYWwgPSB0cnVlLCBmZXRjaCA9IEZldGNoVHlwZS5MQVpZICkKCglASm9pbkNvbHVtbiAoIG5hbWUgPSAiYmFkZ2VfaWQiLCByZWZlcmVuY2VkQ29sdW1uTmFtZSA9ICJpZCIsIGZvcmVpZ25LZXkgPSBARm9yZWlnbktleSAoIG5hbWUgPSAibm9uZSIsIHZhbHVlID0gQ29uc3RyYWludE1vZGUuTk9fQ09OU1RSQUlOVCApICkKCgkvL0BKc29uSWdub3JlUHJvcGVydGllcyAoIGlnbm9yZVVua25vd24gPSB0cnVlLCB2YWx1ZSA9IHsgInJlQmFkZ2VNZW1iZXJzIiB9ICkKCglASnNvbkJhY2tSZWZlcmVuY2UKCglwcml2YXRlIFJlQmFkZ2UgcmVCYWRnZSA7CgoKCgkvKioKCgkgKiBAYXV0aG9yIFNlaW1vLlpoYW4KCgkgKiBAdmVyc2lvbiAxCgoJICoKCgkgKiBAZGF0ZSAyMDIwLzA5LzIxCgoJICovCgoJcHVibGljIGVudW0gSXNSZWFkCgoJewoKCgoJCU4gKCAnTicsICLmnKroroAiICksCgoJCVkgKCAnWScsICLlt7LoroAiICkgOwoKCgoJCXByaXZhdGUgZmluYWwgY2hhciBuYW1lIDsKCgkJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdmFsdWUgOwoKCgoJCS8qKgoKCQkgKiBDb25zdHJ1Y3RvcgoKCQkgKiBAcGFyYW0gbmFtZQoKCQkgKiBAcGFyYW0gdmFsdWUKCgkJICovCgoJCXByaXZhdGUgSXNSZWFkICggY2hhciBuYW1lLCBTdHJpbmcgdmFsdWUgKQoKCQl7CgoJCQl0aGlzLm5hbWUgPSBuYW1lIDsKCgkJCXRoaXMudmFsdWUgPSB2YWx1ZSA7CgoJCX0KCgoKCQkvKioKCgkJICogQHJldHVybiBjaGFyCgoJCSAqLwoKCQlwdWJsaWMgY2hhciBnZXROYW1lICgpCgoJCXsKCgkJCXJldHVybiBuYW1lIDsKCgkJfQoKCgoJCS8qKgoKCQkgKiBAcmV0dXJuIFN0cmluZwoKCQkgKi8KCgkJcHVibGljIFN0cmluZyBnZXRWYWx1ZSAoKQoKCQl7CgoJCQlyZXR1cm4gdmFsdWUgOwoKCQl9CgoKCgl9Cgp9Cg==