/**
* Copyright © 2015-2020 JeePlus All rights reserved.
*/
package com.jeeplus.modules.sys.entity;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.NotNull;
import com.jeeplus.common.utils.SpringContextHolder;
import com.jeeplus.common.utils.StringUtils;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.common.collect.Lists;
import com.jeeplus.common.config.Global;
import com.jeeplus.common.utils.Collections3;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.common.utils.excel.fieldtype.RoleListType;
import com.jeeplus.core.persistence.DataEntity;
/**
* 用户Entity
* @author jeeplus
* @version 2016-12-05
*/
public class User extends DataEntity {
private static final long serialVersionUID = 1L;
private Office company; // 归属公司
private Office office; // 归属部门
private String loginName;// 登录名
private String password;// 密码
private String no; // 工号
private String name; // 姓名
private String email; // 邮箱
private String phone; // 电话
private String mobile; // 手机
private String loginIp; // 最后登陆IP
private Date loginDate; // 最后登陆日期
private String loginFlag; // 是否允许登陆
private String photo; // 头像
private String qrCode; //二维码
private String oldLoginName;// 原登录名
private String newPassword; // 新密码
private String sign;//签名
private String oldLoginIp; // 上次登陆IP
private Date oldLoginDate; // 上次登陆日期
private Role role; // 根据角色查询用户条件
private List roleList = Lists.newArrayList(); // 拥有角色列表
public User() {
super();
this.loginFlag = Global.YES;
}
public User(String id){
super(id);
}
public User(String id, String loginName){
super(id);
this.loginName = loginName;
}
public User(Role role){
super();
this.role = role;
}
public String getPhoto() {
if("".equals(photo)){
return SpringContextHolder.getStatic()+"/common/images/flat-avatar.png";
}
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public String getLoginFlag() {
return loginFlag;
}
public void setLoginFlag(String loginFlag) {
this.loginFlag = loginFlag;
}
public String getId() {
return id;
}
@NotNull(message="归属公司不能为空")
@ExcelField(title="归属公司", align=2, sort=20)
public Office getCompany() {
return company;
}
public void setCompany(Office company) {
this.company = company;
}
@NotNull(message="归属部门不能为空")
@ExcelField(title="归属部门", align=2, sort=25)
public Office getOffice() {
return office;
}
public void setOffice(Office office) {
this.office = office;
}
@Length(min=1, max=100, message="登录名长度必须介于 1 和 100 之间")
@ExcelField(title="登录名", align=2, sort=30)
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
@JsonIgnore
@Length(min=1, max=100, message="密码长度必须介于 1 和 100 之间")
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Length(min=1, max=100, message="姓名长度必须介于 1 和 100 之间")
@ExcelField(title="姓名", align=2, sort=40)
public String getName() {
return name;
}
@Length(min=1, max=100, message="工号长度必须介于 1 和 100 之间")
@ExcelField(title="工号", align=2, sort=45)
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public void setName(String name) {
this.name = name;
}
@Email(message="邮箱格式不正确")
@Length(min=0, max=200, message="邮箱长度必须介于 1 和 200 之间")
@ExcelField(title="邮箱", align=1, sort=50)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Length(min=0, max=200, message="电话长度必须介于 1 和 200 之间")
@ExcelField(title="电话", align=2, sort=60)
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Length(min=0, max=200, message="手机长度必须介于 1 和 200 之间")
@ExcelField(title="手机", align=2, sort=70)
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
@ExcelField(title="备注", align=1, sort=900)
public String getRemarks() {
return remarks;
}
@ExcelField(title="创建时间", type=0, align=1, sort=90)
public Date getCreateDate() {
return createDate;
}
@ExcelField(title="最后登录IP", type=0, align=1, sort=100)
public String getLoginIp() {
return loginIp;
}
public void setLoginIp(String loginIp) {
this.loginIp = loginIp;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ExcelField(title="最后登录日期", type=0, align=1, sort=110)
public Date getLoginDate() {
return loginDate;
}
public void setLoginDate(Date loginDate) {
this.loginDate = loginDate;
}
public String getOldLoginName() {
return oldLoginName;
}
public void setOldLoginName(String oldLoginName) {
this.oldLoginName = oldLoginName;
}
public String getNewPassword() {
return newPassword;
}
public void setNewPassword(String newPassword) {
this.newPassword = newPassword;
}
public String getOldLoginIp() {
if (oldLoginIp == null){
return loginIp;
}
return oldLoginIp;
}
public void setOldLoginIp(String oldLoginIp) {
this.oldLoginIp = oldLoginIp;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date getOldLoginDate() {
if (oldLoginDate == null){
return loginDate;
}
return oldLoginDate;
}
public void setOldLoginDate(Date oldLoginDate) {
this.oldLoginDate = oldLoginDate;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
@JsonIgnore
@ExcelField(title="拥有角色", align=1, sort=800, fieldType=RoleListType.class)
public List getRoleList() {
return roleList;
}
public void setRoleList(List roleList) {
this.roleList = roleList;
}
@JsonIgnore
public List getRoleIdList() {
List roleIdList = Lists.newArrayList();
for (Role role : roleList) {
roleIdList.add(role.getId());
}
return roleIdList;
}
public void setRoleIdList(List roleIdList) {
roleList = Lists.newArrayList();
for (String roleId : roleIdList) {
Role role = new Role();
role.setId(roleId);
roleList.add(role);
}
}
/**
* 用户拥有的角色名称字符串, 多个角色名称用','分隔.
*/
public String getRoleNames() {
return Collections3.extractToString(roleList, "name", ",");
}
public boolean isAdmin(){
return isAdmin(this.id);
}
public static boolean isAdmin(String id){
return id != null && "1".equals(id);
}
@Override
public String toString() {
return id;
}
public void setQrCode(String qrCode) {
this.qrCode = qrCode;
}
public String getQrCode() {
return qrCode;
}
/**
* @param sign the sign to set
*/
public void setSign(String sign) {
this.sign = sign;
}
/**
* @return the sign
*/
public String getSign() {
return sign;
}
}