package com.jspxcms.core.domain; import java.sql.Timestamp; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.MapsId; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import org.hibernate.validator.constraints.Length; /** * UserDetail * * @author liufang * */ @Entity @Table(name = "cms_user_detail") public class UserDetail implements java.io.Serializable { private static final long serialVersionUID = 1L; /** * 登录错误间隔时间 */ public static final int LOGIN_ERROR_MILLIS = 30 * 60 * 1000; /** * 是否需要验证码 * * 错误次数超过3次,且在半小时内。 * * @return */ @Transient public boolean isCaptchaRequired() { if (getLoginErrorCount() > 3 && System.currentTimeMillis() - getLoginErrorDate().getTime() < LOGIN_ERROR_MILLIS) { return true; } else { return false; } } @Transient public void applyDefaultValue() { if (getCreationDate() == null) { setCreationDate(new Timestamp(System.currentTimeMillis())); } if (getCreationIp() == null) { setCreationIp("127.0.0.1"); } if (getLoginErrorCount() == null) { setLoginErrorCount(0); } if (getLogins() == null) { setLogins(0); } } private Integer id; private User user; private Date validationDate; private String validationValue; private String realName; private Date loginErrorDate; private Integer loginErrorCount; private Date prevLoginDate; private String prevLoginIp; private Date lastLoginDate; private String lastLoginIp; private Date creationDate; private String creationIp; private Integer logins; private String avatar; private String bio; private String comeFrom; private String qq; private String msn; private String weixin; @Id public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } @MapsId @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "f_user_id") public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "f_validation_date", length = 19) public Date getValidationDate() { return validationDate; } public void setValidationDate(Date validationDate) { this.validationDate = validationDate; } @Length(max = 255) @Column(name = "f_validation_value", length = 255) public String getValidationValue() { return validationValue; } public void setValidationValue(String validationValue) { this.validationValue = validationValue; } @Length(max = 100) @Column(name = "f_real_name", length = 100) public String getRealName() { return this.realName; } public void setRealName(String realName) { this.realName = realName; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "f_login_error_date", length = 19) public Date getLoginErrorDate() { return loginErrorDate; } public void setLoginErrorDate(Date loginErrorDate) { this.loginErrorDate = loginErrorDate; } @Column(name = "f_login_error_count", nullable = false) public Integer getLoginErrorCount() { return loginErrorCount; } public void setLoginErrorCount(Integer loginErrorCount) { this.loginErrorCount = loginErrorCount; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "f_prev_login_date", length = 19) public Date getPrevLoginDate() { return this.prevLoginDate; } public void setPrevLoginDate(Date prevLoginDate) { this.prevLoginDate = prevLoginDate; } @Length(max = 100) @Column(name = "f_prev_login_ip", length = 100) public String getPrevLoginIp() { return this.prevLoginIp; } public void setPrevLoginIp(String prevLoginIp) { this.prevLoginIp = prevLoginIp; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "f_last_login_date", length = 19) public Date getLastLoginDate() { return this.lastLoginDate; } public void setLastLoginDate(Date lastLoginDate) { this.lastLoginDate = lastLoginDate; } @Length(max = 100) @Column(name = "f_last_login_ip", length = 100) public String getLastLoginIp() { return this.lastLoginIp; } public void setLastLoginIp(String lastLoginIp) { this.lastLoginIp = lastLoginIp; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "f_creation_date", nullable = false, length = 19) public Date getCreationDate() { return this.creationDate; } public void setCreationDate(Date creationDate) { this.creationDate = creationDate; } @Length(max = 100) @Column(name = "f_creation_ip", length = 100) public String getCreationIp() { return this.creationIp; } public void setCreationIp(String creationIp) { this.creationIp = creationIp; } @Column(name = "f_logins", nullable = false) public Integer getLogins() { return this.logins; } public void setLogins(Integer logins) { this.logins = logins; } @Length(max = 255) @Column(name = "f_avatar") public String getAvatar() { return this.avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } @Column(name = "f_bio") public String getBio() { return this.bio; } public void setBio(String bio) { this.bio = bio; } @Length(max = 100) @Column(name = "f_come_from", length = 100) public String getComeFrom() { return this.comeFrom; } public void setComeFrom(String comeFrom) { this.comeFrom = comeFrom; } @Length(max = 100) @Column(name = "f_qq", length = 100) public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } @Length(max = 100) @Column(name = "f_msn", length = 100) public String getMsn() { return msn; } public void setMsn(String msn) { this.msn = msn; } @Length(max = 100) @Column(name = "f_weixin", length = 100) public String getWeixin() { return weixin; } public void setWeixin(String weixin) { this.weixin = weixin; } }