/**
* 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.CascadeType ;
import jakarta.persistence.Column ;
import jakarta.persistence.ConstraintMode ;
import jakarta.persistence.Entity ;
import jakarta.persistence.EntityListeners ;
import jakarta.persistence.EnumType ;
import jakarta.persistence.Enumerated ;
import jakarta.persistence.FetchType ;
import jakarta.persistence.ForeignKey ;
import jakarta.persistence.JoinColumn ;
import jakarta.persistence.ManyToOne ;
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/18
*/
@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 ReProductExchange extends AbstractPrimaryKeyEntity
{
@DateTimeFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
@JsonFormat ( pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8" )
private LocalDateTime exchangeTime ;
private Integer exchangeAmt ;
@Enumerated ( EnumType.STRING )
@Column ( columnDefinition = "char(1)" )
private Status status ;
@DateTimeFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
@JsonFormat ( pattern = "yyyy/MM/dd HH:mm:ss", timezone = "GMT+8" )
private LocalDateTime usedTime ;
@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 = { "reProductExchanges" } )
//@JsonBackReference
private MbrMember mbrMember ;
@ManyToOne ( targetEntity = ReProduct.class, cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = true, fetch = FetchType.LAZY )
@JoinColumn ( name = "product_id", referencedColumnName = "id", foreignKey = @ForeignKey ( name = "none", value = ConstraintMode.NO_CONSTRAINT ) )
@JsonIgnoreProperties ( ignoreUnknown = true, value = { "reProductExchanges" } )
//@JsonBackReference
private ReProduct reProduct ;
@ManyToOne ( targetEntity = ReProductCoupon.class, cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = true, fetch = FetchType.LAZY )
@JoinColumn ( name = "coupon_id", referencedColumnName = "id", foreignKey = @ForeignKey ( name = "none", value = ConstraintMode.NO_CONSTRAINT ) )
@JsonIgnoreProperties ( ignoreUnknown = true, value = { "reProductExchanges" } )
//@JsonBackReference
private ReProductCoupon reProductCoupon ;
@ManyToOne ( targetEntity = ReProductCompany.class, cascade = { CascadeType.REFRESH, CascadeType.MERGE }, optional = true, fetch = FetchType.LAZY )
@JoinColumn ( name = "product_company_id", referencedColumnName = "id", foreignKey = @ForeignKey ( name = "none", value = ConstraintMode.NO_CONSTRAINT ) )
@JsonIgnoreProperties ( ignoreUnknown = true, value = { "reProductExchanges" } )
//@JsonBackReference
private ReProductCompany reProductCompany ;
/**
* @author Seimo.Zhan
* @version 1
*
* @date 2020/09/18
*/
public enum Status
{
N ( 'N', "未使用" ),
U ( 'U', "已使用" ),
E ( 'E', "已過期" ) ;
private final char name ;
private final String value ;
/**
* Constructor
* @param name
* @param value
*/
private Status ( char name, String value )
{
this.name = name ;
this.value = value ;
}
/**
* @return char
*/
public char getName ()
{
return name ;
}
/**
* @return String
*/
public String getValue ()
{
return value ;
}
}
}
LyoqCgogKiBDb3B5cmlnaHQgKGMpIDE5ODktMjAyMCBJTlZFTlRFQyBCRVNUQSBDby4sIEx0ZC4KCiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgogKi8KCnBhY2thZ2UgY29tLnRhaXdhbmxpZmUudGVhbXdhbGsuY29tbW9uLmVudGl0eS5yZWRlZW0gOwoKCgppbXBvcnQgamF2YS50aW1lLkxvY2FsRGF0ZVRpbWUgOwoKCgppbXBvcnQgamFrYXJ0YS5wZXJzaXN0ZW5jZS5DYXNjYWRlVHlwZSA7CgppbXBvcnQgamFrYXJ0YS5wZXJzaXN0ZW5jZS5Db2x1bW4gOwoKaW1wb3J0IGpha2FydGEucGVyc2lzdGVuY2UuQ29uc3RyYWludE1vZGUgOwoKaW1wb3J0IGpha2FydGEucGVyc2lzdGVuY2UuRW50aXR5IDsKCmltcG9ydCBqYWthcnRhLnBlcnNpc3RlbmNlLkVudGl0eUxpc3RlbmVycyA7CgppbXBvcnQgamFrYXJ0YS5wZXJzaXN0ZW5jZS5FbnVtVHlwZSA7CgppbXBvcnQgamFrYXJ0YS5wZXJzaXN0ZW5jZS5FbnVtZXJhdGVkIDsKCmltcG9ydCBqYWthcnRhLnBlcnNpc3RlbmNlLkZldGNoVHlwZSA7CgppbXBvcnQgamFrYXJ0YS5wZXJzaXN0ZW5jZS5Gb3JlaWduS2V5IDsKCmltcG9ydCBqYWthcnRhLnBlcnNpc3RlbmNlLkpvaW5Db2x1bW4gOwoKaW1wb3J0IGpha2FydGEucGVyc2lzdGVuY2UuTWFueVRvT25lIDsKCgoKaW1wb3J0IGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5hbm5vdGF0aW9uLkpzb25CYWNrUmVmZXJlbmNlOwoKaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuZGF0YS5qcGEuZG9tYWluLnN1cHBvcnQuQXVkaXRpbmdFbnRpdHlMaXN0ZW5lciA7CgppbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5mb3JtYXQuYW5ub3RhdGlvbi5EYXRlVGltZUZvcm1hdCA7CgoKCmltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uYW5ub3RhdGlvbi5Kc29uRm9ybWF0IDsKCmltcG9ydCBjb20uZmFzdGVyeG1sLmphY2tzb24uYW5ub3RhdGlvbi5Kc29uSWdub3JlUHJvcGVydGllcyA7CgppbXBvcnQgY29tLmZhc3RlcnhtbC5qYWNrc29uLmFubm90YXRpb24uSnNvbkluY2x1ZGUgOwoKaW1wb3J0IGNvbS50YWl3YW5saWZlLnRlYW13YWxrLmNvbW1vbi5lbnRpdHkuQWJzdHJhY3RQcmltYXJ5S2V5RW50aXR5IDsKCmltcG9ydCBjb20udGFpd2FubGlmZS50ZWFtd2Fsay5jb21tb24uZW50aXR5Lm1lbWJlci5NYnJNZW1iZXIgOwoKCgppbXBvcnQgbG9tYm9rLkFsbEFyZ3NDb25zdHJ1Y3RvciA7CgppbXBvcnQgbG9tYm9rLkJ1aWxkZXIgOwoKaW1wb3J0IGxvbWJvay5EYXRhIDsKCmltcG9ydCBsb21ib2suRXF1YWxzQW5kSGFzaENvZGUgOwoKaW1wb3J0IGxvbWJvay5Ob0FyZ3NDb25zdHJ1Y3RvciA7CgppbXBvcnQgbG9tYm9rLlRvU3RyaW5nIDsKCgoKCgovKioKCiAqIEBhdXRob3IgU2VpbW8uWmhhbgoKICogQHZlcnNpb24gMQoKICogCgogKiBAZGF0ZSAyMDIwLzA5LzE4CgogKi8KCkBFbnRpdHkKCkBFbnRpdHlMaXN0ZW5lcnMgKCBBdWRpdGluZ0VudGl0eUxpc3RlbmVyLmNsYXNzICkKCkBKc29uSWdub3JlUHJvcGVydGllcyAoIGlnbm9yZVVua25vd24gPSB0cnVlLCB2YWx1ZSA9IHsgImhpYmVybmF0ZUxhenlJbml0aWFsaXplciIsICJoYW5kbGVyIiwgImZpZWxkSGFuZGxlciIgfSApCgpASnNvbkluY2x1ZGUgKCBKc29uSW5jbHVkZS5JbmNsdWRlLk5PTl9FTVBUWSApCgpARGF0YQoKQE5vQXJnc0NvbnN0cnVjdG9yCgpAQWxsQXJnc0NvbnN0cnVjdG9yCgpARXF1YWxzQW5kSGFzaENvZGUgKCBjYWxsU3VwZXIgPSB0cnVlICkKCkBUb1N0cmluZyAoIGNhbGxTdXBlciA9IHRydWUgKQoKQEJ1aWxkZXIKCnB1YmxpYyBjbGFzcyBSZVByb2R1Y3RFeGNoYW5nZSBleHRlbmRzIEFic3RyYWN0UHJpbWFyeUtleUVudGl0eQoKewoKCQoKCUBEYXRlVGltZUZvcm1hdCAoIHBhdHRlcm4gPSAieXl5eS1NTS1kZCBISDptbTpzcyIgKQoKCUBKc29uRm9ybWF0ICggcGF0dGVybiA9ICJ5eXl5L01NL2RkIEhIOm1tOnNzIiwgdGltZXpvbmUgPSAiR01UKzgiICkKCglwcml2YXRlIExvY2FsRGF0ZVRpbWUgZXhjaGFuZ2VUaW1lIDsKCgkKCglwcml2YXRlIEludGVnZXIgZXhjaGFuZ2VBbXQgOwoKCQoKCUBFbnVtZXJhdGVkICggRW51bVR5cGUuU1RSSU5HICkKCglAQ29sdW1uICggY29sdW1uRGVmaW5pdGlvbiA9ICJjaGFyKDEpIiApCgoJcHJpdmF0ZSBTdGF0dXMgc3RhdHVzIDsKCgkKCglARGF0ZVRpbWVGb3JtYXQgKCBwYXR0ZXJuID0gInl5eXktTU0tZGQgSEg6bW06c3MiICkKCglASnNvbkZvcm1hdCAoIHBhdHRlcm4gPSAieXl5eS9NTS9kZCBISDptbTpzcyIsIHRpbWV6b25lID0gIkdNVCs4IiApCgoJcHJpdmF0ZSBMb2NhbERhdGVUaW1lIHVzZWRUaW1lIDsKCgkKCglATWFueVRvT25lICggdGFyZ2V0RW50aXR5ID0gTWJyTWVtYmVyLmNsYXNzLCBjYXNjYWRlID0geyBDYXNjYWRlVHlwZS5SRUZSRVNILCBDYXNjYWRlVHlwZS5NRVJHRSB9LCBvcHRpb25hbCA9IHRydWUsIGZldGNoID0gRmV0Y2hUeXBlLkxBWlkgKQoKCUBKb2luQ29sdW1uICggbmFtZSA9ICJtZW1iZXJfaWQiLCByZWZlcmVuY2VkQ29sdW1uTmFtZSA9ICJpZCIsIGZvcmVpZ25LZXkgPSBARm9yZWlnbktleSAoIG5hbWUgPSAibm9uZSIsIHZhbHVlID0gQ29uc3RyYWludE1vZGUuTk9fQ09OU1RSQUlOVCApICkKCglASnNvbklnbm9yZVByb3BlcnRpZXMgKCBpZ25vcmVVbmtub3duID0gdHJ1ZSwgdmFsdWUgPSB7ICJyZVByb2R1Y3RFeGNoYW5nZXMiIH0gKQoKCS8vQEpzb25CYWNrUmVmZXJlbmNlCgoJcHJpdmF0ZSBNYnJNZW1iZXIgbWJyTWVtYmVyIDsKCgkKCglATWFueVRvT25lICggdGFyZ2V0RW50aXR5ID0gUmVQcm9kdWN0LmNsYXNzLCBjYXNjYWRlID0geyBDYXNjYWRlVHlwZS5SRUZSRVNILCBDYXNjYWRlVHlwZS5NRVJHRSB9LCBvcHRpb25hbCA9IHRydWUsIGZldGNoID0gRmV0Y2hUeXBlLkxBWlkgKQoKCUBKb2luQ29sdW1uICggbmFtZSA9ICJwcm9kdWN0X2lkIiwgcmVmZXJlbmNlZENvbHVtbk5hbWUgPSAiaWQiLCBmb3JlaWduS2V5ID0gQEZvcmVpZ25LZXkgKCBuYW1lID0gIm5vbmUiLCB2YWx1ZSA9IENvbnN0cmFpbnRNb2RlLk5PX0NPTlNUUkFJTlQgKSApCgoJQEpzb25JZ25vcmVQcm9wZXJ0aWVzICggaWdub3JlVW5rbm93biA9IHRydWUsIHZhbHVlID0geyAicmVQcm9kdWN0RXhjaGFuZ2VzIiB9ICkKCgkvL0BKc29uQmFja1JlZmVyZW5jZQoKCXByaXZhdGUgUmVQcm9kdWN0IHJlUHJvZHVjdCA7CgoJCgoJQE1hbnlUb09uZSAoIHRhcmdldEVudGl0eSA9IFJlUHJvZHVjdENvdXBvbi5jbGFzcywgY2FzY2FkZSA9IHsgQ2FzY2FkZVR5cGUuUkVGUkVTSCwgQ2FzY2FkZVR5cGUuTUVSR0UgfSwgb3B0aW9uYWwgPSB0cnVlLCBmZXRjaCA9IEZldGNoVHlwZS5MQVpZICkKCglASm9pbkNvbHVtbiAoIG5hbWUgPSAiY291cG9uX2lkIiwgcmVmZXJlbmNlZENvbHVtbk5hbWUgPSAiaWQiLCBmb3JlaWduS2V5ID0gQEZvcmVpZ25LZXkgKCBuYW1lID0gIm5vbmUiLCB2YWx1ZSA9IENvbnN0cmFpbnRNb2RlLk5PX0NPTlNUUkFJTlQgKSApCgoJQEpzb25JZ25vcmVQcm9wZXJ0aWVzICggaWdub3JlVW5rbm93biA9IHRydWUsIHZhbHVlID0geyAicmVQcm9kdWN0RXhjaGFuZ2VzIiB9ICkKCgkvL0BKc29uQmFja1JlZmVyZW5jZQoKCXByaXZhdGUgUmVQcm9kdWN0Q291cG9uIHJlUHJvZHVjdENvdXBvbiA7CgoKCglATWFueVRvT25lICggdGFyZ2V0RW50aXR5ID0gUmVQcm9kdWN0Q29tcGFueS5jbGFzcywgY2FzY2FkZSA9IHsgQ2FzY2FkZVR5cGUuUkVGUkVTSCwgQ2FzY2FkZVR5cGUuTUVSR0UgfSwgb3B0aW9uYWwgPSB0cnVlLCBmZXRjaCA9IEZldGNoVHlwZS5MQVpZICkKCglASm9pbkNvbHVtbiAoIG5hbWUgPSAicHJvZHVjdF9jb21wYW55X2lkIiwgcmVmZXJlbmNlZENvbHVtbk5hbWUgPSAiaWQiLCBmb3JlaWduS2V5ID0gQEZvcmVpZ25LZXkgKCBuYW1lID0gIm5vbmUiLCB2YWx1ZSA9IENvbnN0cmFpbnRNb2RlLk5PX0NPTlNUUkFJTlQgKSApCgoJQEpzb25JZ25vcmVQcm9wZXJ0aWVzICggaWdub3JlVW5rbm93biA9IHRydWUsIHZhbHVlID0geyAicmVQcm9kdWN0RXhjaGFuZ2VzIiB9ICkKCgkvL0BKc29uQmFja1JlZmVyZW5jZQoKCXByaXZhdGUgUmVQcm9kdWN0Q29tcGFueSByZVByb2R1Y3RDb21wYW55IDsKCgkKCgkvKioKCgkgKiBAYXV0aG9yIFNlaW1vLlpoYW4KCgkgKiBAdmVyc2lvbiAxCgoJICogCgoJICogQGRhdGUgMjAyMC8wOS8xOAoKCSAqLwoKCXB1YmxpYyBlbnVtIFN0YXR1cwoKCXsKCgkJCgoJCU4gKCAnTicsICLmnKrkvb/nlKgiICksCgoJCVUgKCAnVScsICLlt7Lkvb/nlKgiICksCgoJCUUgKCAnRScsICLlt7LpgY7mnJ8iICkgOwoKCQkKCgkJcHJpdmF0ZSBmaW5hbCBjaGFyIG5hbWUgOwoKCQlwcml2YXRlIGZpbmFsIFN0cmluZyB2YWx1ZSA7CgoJCQoKCQkvKioKCgkJICogQ29uc3RydWN0b3IKCgkJICogQHBhcmFtIG5hbWUKCgkJICogQHBhcmFtIHZhbHVlCgoJCSAqLwoKCQlwcml2YXRlIFN0YXR1cyAoIGNoYXIgbmFtZSwgU3RyaW5nIHZhbHVlICkKCgkJewoKCQkJdGhpcy5uYW1lID0gbmFtZSA7CgoJCQl0aGlzLnZhbHVlID0gdmFsdWUgOwoKCQl9CgoJCQoKCQkvKioKCgkJICogQHJldHVybiBjaGFyCgoJCSAqLwoKCQlwdWJsaWMgY2hhciBnZXROYW1lICgpCgoJCXsKCgkJCXJldHVybiBuYW1lIDsKCgkJfQoKCQkKCgkJLyoqCgoJCSAqIEByZXR1cm4gU3RyaW5nCgoJCSAqLwoKCQlwdWJsaWMgU3RyaW5nIGdldFZhbHVlICgpCgoJCXsKCgkJCXJldHVybiB2YWx1ZSA7CgoJCX0KCgkJCgoJfQoKCQoKfQo=