package com.norteksoft.acs.entity.organization; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.persistence.OrderBy; import javax.persistence.Table; import javax.persistence.Transient; import com.norteksoft.acs.base.enumeration.MailboxDeploy; import com.norteksoft.acs.base.enumeration.SecretGrade; import com.norteksoft.acs.base.utils.log.Logger; import com.norteksoft.acs.entity.IdEntity; import com.norteksoft.acs.entity.authorization.RoleUser; import com.norteksoft.product.util.Md5; import flex.messaging.util.StringUtils; /** * 用户表 */ @Entity @Table(name = "ACS_USER") public class User extends IdEntity { private static final long serialVersionUID = 1L; private Date loginStart; private Integer failedCounts = 0; // 登录失败次数统计,用户失败几次锁定 private String name; private String loginName; private String email; private Integer weight = 1; //权重 private Boolean updated = false; // ldap 密码是否更新过 private String honorificName; //尊称 private Float mailSize; private Boolean sex; private Long mainDepartmentId;//正职部门 private String password; private SecretGrade secretGrade = SecretGrade.COMMON; private String cardNumber; // 集成打印系统,记录打印卡的卡号 //是否启用账户 private Boolean enabled = true; //账户到期标志,true为到期,false为没到期 private Boolean accountExpired= false; //账户锁定标志,true为到期,false为没到期 private Boolean accountLocked= false; //账户解锁的时间 private Date accountUnlockedTime; private Set<DepartmentUser> departmentUsers = new HashSet<DepartmentUser>(0); private Set<RoleUser> roleUsers = new HashSet<RoleUser>(0); private List<UserInfo> userInfos; private Set<WorkgroupUser> workgroupUsers = new HashSet<WorkgroupUser>(0); private Long companyId; private String roleCodes; private MailboxDeploy mailboxDeploy;//邮箱配置 @Column(name = "FK_COMPANY_ID") public Long getCompanyId() { return companyId; } public void setCompanyId(Long companyId) { this.companyId = companyId; } @OneToMany(mappedBy = "user") public Set<RoleUser> getRoleUsers() { return roleUsers; } public void setRoleUsers(Set<RoleUser> roleUsers) { this.roleUsers = roleUsers; } @Transient public UserInfo getUserInfo() { if(userInfos != null && !userInfos.isEmpty()){ return userInfos.get(0); } return null; } @OneToMany(mappedBy = "user") public List<UserInfo> getUserInfos() { return userInfos; } public void setUserInfos(List<UserInfo> userInfos) { this.userInfos = userInfos; } public String getPassword() { if(password!=null && password.length()!=32){ password = Md5.toMessageDigest(password); } return password; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Logger(key="user.loginName") public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Boolean getSex() { return sex; } public void setSex(Boolean sex) { this.sex = sex; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return new StringBuilder("User [") .append("loginName=").append(loginName) .append(", companyId=").append(companyId) .append(", accountNonExpired=").append(accountExpired) .append(", accountNonLocked=").append(accountLocked) .append(", failedCounts=").append(failedCounts) .toString(); } public Boolean getAccountExpired() { return accountExpired; } public void setAccountExpired(Boolean accountExpired) { this.accountExpired = accountExpired; } public Boolean getAccountLocked() { return accountLocked; } public void setAccountLocked(Boolean accountLocked) { this.accountLocked = accountLocked; } /** * 设置用户与(部门-用户)中间表关系(一对多) */ @OneToMany(mappedBy = "user") @OrderBy("id") public Set<DepartmentUser> getDepartmentUsers() { return departmentUsers; } public void setDepartmentUsers(Set<DepartmentUser> departmentUsers) { this.departmentUsers = departmentUsers; } /** * 设置用户与(工作组-用户)中间表关系(一对多) */ @OneToMany(mappedBy = "user") @OrderBy("id") public Set<WorkgroupUser> getWorkgroupUsers() { return workgroupUsers; } public void setWorkgroupUsers(Set<WorkgroupUser> workgroupUsers) { this.workgroupUsers = workgroupUsers; } public Integer getFailedCounts() { return failedCounts; } public Boolean getEnabled() { return enabled; } public void setEnabled(Boolean enabled) { this.enabled = enabled; } public void setFailedCounts(Integer failedCounts) { this.failedCounts = failedCounts; } public Date getLoginStart() { return loginStart; } public void setLoginStart(Date loginStart) { this.loginStart = loginStart; } public Integer getWeight() { return weight; } public void setWeight(Integer weight) { this.weight = weight; } public Boolean getUpdated() { return updated; } public void setUpdated(Boolean updated) { this.updated = updated; } public String getHonorificName() { return honorificName; } public void setHonorificName(String honorificName) { this.honorificName = honorificName; } public Float getMailSize() { return mailSize; } public void setMailSize(Float mailSize) { this.mailSize = mailSize; } public Date getAccountUnlockedTime() { return accountUnlockedTime; } public void setAccountUnlockedTime(Date accountUnlockedTime) { this.accountUnlockedTime = accountUnlockedTime; } public Long getMainDepartmentId() { return mainDepartmentId; } public void setMainDepartmentId(Long mainDepartmentId) { this.mainDepartmentId = mainDepartmentId; } public SecretGrade getSecretGrade() { return secretGrade; } public void setSecretGrade(SecretGrade secretGrade) { this.secretGrade = secretGrade; } public String getCardNumber() { return cardNumber; } public void setCardNumber(String cardNumber) { this.cardNumber = cardNumber; } @Transient public String getRoleCodes() { return roleCodes; } public void setRoleCodes(String roleCodes) { this.roleCodes = roleCodes; } public boolean equals(User user) { if(StringUtils.isEmpty(this.loginName))return false; return this.loginName.equals(user.getLoginName()); } public MailboxDeploy getMailboxDeploy() { return mailboxDeploy; } public void setMailboxDeploy(MailboxDeploy mailboxDeploy) { this.mailboxDeploy = mailboxDeploy; } }