package com.mortals.xhx.base.system.user.model;

import java.util.Date;
import java.util.Objects;

import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.IUser;

/**
*
* Description:User
* date: 2021-9-26 16:11:48
*/
public class UserEntity extends UserEntityExt implements IUser {
    private static final long serialVersionUID = 1632643908537L;


    /**
    * 登录名
    */
    private String loginName;

    /**
    * 登录密码，使用md5双次加密
    */
    private String loginPwd;

    /**
    * 最近一次使用密码，使用md5双次加密
    */
    private String loginPwd1;

    /**
    * 最近二次使用密码，使用md5双次加密
    */
    private String loginPwd2;

    /**
    * 最近三次使用密码，使用md5双次加密
    */
    private String loginPwd3;

    /**
    * 登录限制地址，多个IP地址用逗号分隔，可以使用IP段匹配，如：172.17.*非空：则只能该值内的IP可以登录
    */
    private String loginLimitAddress;

    /**
    * 用户名
    */
    private String realName;

    /**
    * 用户手机号
    */
    private String mobile;

    /**
    * 用户联系电话
    */
    private String phone;

    /**
    * 用户邮箱
    */
    private String email;

    /**
    * QQ号码
    */
    private String qq;

    /**
    * 用户类型，0：系统用户 1:普通用户 2:工作人员，默认2
    */
    private Integer userType;

    /**
    * 站点id
    */
    private Long siteId;

    /**
    * 用户状态，0：停用，1：正常，2：冻结，3：销户，4：离职，默认1
    */
    private Integer status;

    /**
    * 客户ID
    */
    private Long customerId;

    /**
    * 创建时间
    */
    private Date createTime;

    /**
    * 创建用户
    */
    private Long createUserId;

    /**
    * 创建用户名称
    */
    private String createUserName;

    /**
    * 最后一次登录时间
    */
    private Date lastLoginTime;

    /**
    * 最后一次登录地址
    */
    private String lastLoginAddress;

    /**
    * 最后修改密码时间
    */
    private Date lastModPwdTime;

    /**
    * 最后修改密码地址
    */
    private String lastModPwdAddr;

    public UserEntity(){

    }
    /**
    * 获取 登录名
    * @return loginName
    */
    public String getLoginName() {
        return this.loginName;
    }
    /**
    * 设置 登录名
    * @param loginName
    */
    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }
    /**
    * 获取 登录密码，使用md5双次加密
    * @return loginPwd
    */
    public String getLoginPwd() {
        return this.loginPwd;
    }
    /**
    * 设置 登录密码，使用md5双次加密
    * @param loginPwd
    */
    public void setLoginPwd(String loginPwd) {
        this.loginPwd = loginPwd;
    }
    /**
    * 获取 最近一次使用密码，使用md5双次加密
    * @return loginPwd1
    */
    public String getLoginPwd1() {
        return this.loginPwd1;
    }
    /**
    * 设置 最近一次使用密码，使用md5双次加密
    * @param loginPwd1
    */
    public void setLoginPwd1(String loginPwd1) {
        this.loginPwd1 = loginPwd1;
    }
    /**
    * 获取 最近二次使用密码，使用md5双次加密
    * @return loginPwd2
    */
    public String getLoginPwd2() {
        return this.loginPwd2;
    }
    /**
    * 设置 最近二次使用密码，使用md5双次加密
    * @param loginPwd2
    */
    public void setLoginPwd2(String loginPwd2) {
        this.loginPwd2 = loginPwd2;
    }
    /**
    * 获取 最近三次使用密码，使用md5双次加密
    * @return loginPwd3
    */
    public String getLoginPwd3() {
        return this.loginPwd3;
    }
    /**
    * 设置 最近三次使用密码，使用md5双次加密
    * @param loginPwd3
    */
    public void setLoginPwd3(String loginPwd3) {
        this.loginPwd3 = loginPwd3;
    }
    /**
    * 获取 登录限制地址，多个IP地址用逗号分隔，可以使用IP段匹配，如：172.17.*非空：则只能该值内的IP可以登录
    * @return loginLimitAddress
    */
    public String getLoginLimitAddress() {
        return this.loginLimitAddress;
    }
    /**
    * 设置 登录限制地址，多个IP地址用逗号分隔，可以使用IP段匹配，如：172.17.*非空：则只能该值内的IP可以登录
    * @param loginLimitAddress
    */
    public void setLoginLimitAddress(String loginLimitAddress) {
        this.loginLimitAddress = loginLimitAddress;
    }
    /**
    * 获取 用户名
    * @return realName
    */
    public String getRealName() {
        return this.realName;
    }

    @Override
    public boolean isAdmin() {
        return super.getId() == null ? false : super.getId().longValue() == SysConstains.ADMIN_ID;
    }

    @Override
    public boolean isSystemUser() {
        return userType != null && userType.intValue() == 0;
    }

    @Override
    public boolean isManager() {
        return false;
    }

    /**
    * 设置 用户名
    * @param realName
    */
    public void setRealName(String realName) {
        this.realName = realName;
    }
    /**
    * 获取 用户手机号
    * @return mobile
    */
    public String getMobile() {
        return this.mobile;
    }
    /**
    * 设置 用户手机号
    * @param mobile
    */
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    /**
    * 获取 用户联系电话
    * @return phone
    */
    public String getPhone() {
        return this.phone;
    }
    /**
    * 设置 用户联系电话
    * @param phone
    */
    public void setPhone(String phone) {
        this.phone = phone;
    }
    /**
    * 获取 用户邮箱
    * @return email
    */
    public String getEmail() {
        return this.email;
    }
    /**
    * 设置 用户邮箱
    * @param email
    */
    public void setEmail(String email) {
        this.email = email;
    }
    /**
    * 获取 QQ号码
    * @return qq
    */
    public String getQq() {
        return this.qq;
    }
    /**
    * 设置 QQ号码
    * @param qq
    */
    public void setQq(String qq) {
        this.qq = qq;
    }
    /**
    * 获取 用户类型，0：系统用户 1:普通用户 2:工作人员，默认2
    * @return userType
    */
    public Integer getUserType() {
        return this.userType;
    }


    @Override
    public String getMenuUrl() {
        return null;
    }

    /**
    * 设置 用户类型，0：系统用户 1:普通用户 2:工作人员，默认2
    * @param userType
    */
    public void setUserType(Integer userType) {
        this.userType = userType;
    }
    /**
    * 获取 站点id
    * @return siteId
    */
    public Long getSiteId() {
        return this.siteId;
    }

    @Override
    public String getSiteIds() {
        return super.getSiteIds();
    }

    /**
    * 设置 站点id
    * @param siteId
    */
    public void setSiteId(Long siteId) {
        this.siteId = siteId;
    }
    /**
    * 获取 用户状态，0：停用，1：正常，2：冻结，3：销户，4：离职，默认1
    * @return status
    */
    public Integer getStatus() {
        return this.status;
    }
    /**
    * 设置 用户状态，0：停用，1：正常，2：冻结，3：销户，4：离职，默认1
    * @param status
    */
    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public Long getDeptId() {
        return null;
    }

    @Override
    public String getDeptName() {
        return null;
    }

    /**
    * 获取 客户ID
    * @return customerId
    */
    public Long getCustomerId() {
        return this.customerId;
    }



    @Override
    public Long getCustomerJoinId() {
        return null;
    }

    @Override
    public String getCustomerNum() {
        return null;
    }

    /**
    * 设置 客户ID
    * @param customerId
    */
    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }
    /**
    * 获取 创建时间
    * @return createTime
    */
    public Date getCreateTime() {
        return this.createTime;
    }
    /**
    * 设置 创建时间
    * @param createTime
    */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    /**
    * 获取 创建用户
    * @return createUserId
    */
    public Long getCreateUserId() {
        return this.createUserId;
    }
    /**
    * 设置 创建用户
    * @param createUserId
    */
    public void setCreateUserId(Long createUserId) {
        this.createUserId = createUserId;
    }
    /**
    * 获取 创建用户名称
    * @return createUserName
    */
    public String getCreateUserName() {
        return this.createUserName;
    }
    /**
    * 设置 创建用户名称
    * @param createUserName
    */
    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }
    /**
    * 获取 最后一次登录时间
    * @return lastLoginTime
    */
    public Date getLastLoginTime() {
        return this.lastLoginTime;
    }
    /**
    * 设置 最后一次登录时间
    * @param lastLoginTime
    */
    public void setLastLoginTime(Date lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }
    /**
    * 获取 最后一次登录地址
    * @return lastLoginAddress
    */
    public String getLastLoginAddress() {
        return this.lastLoginAddress;
    }
    /**
    * 设置 最后一次登录地址
    * @param lastLoginAddress
    */
    public void setLastLoginAddress(String lastLoginAddress) {
        this.lastLoginAddress = lastLoginAddress;
    }
    /**
    * 获取 最后修改密码时间
    * @return lastModPwdTime
    */
    public Date getLastModPwdTime() {
        return this.lastModPwdTime;
    }
    /**
    * 设置 最后修改密码时间
    * @param lastModPwdTime
    */
    public void setLastModPwdTime(Date lastModPwdTime) {
        this.lastModPwdTime = lastModPwdTime;
    }
    /**
    * 获取 最后修改密码地址
    * @return lastModPwdAddr
    */
    public String getLastModPwdAddr() {
        return this.lastModPwdAddr;
    }
    /**
    * 设置 最后修改密码地址
    * @param lastModPwdAddr
    */
    public void setLastModPwdAddr(String lastModPwdAddr) {
        this.lastModPwdAddr = lastModPwdAddr;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), loginName, loginPwd, loginPwd1, loginPwd2, loginPwd3, loginLimitAddress, realName, mobile, phone, email, qq, userType, status, customerId, createTime, createUserId, createUserName, lastLoginTime, lastLoginAddress, lastModPwdTime, lastModPwdAddr);

    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null)
            return false;
        if (obj instanceof UserEntity) {
            UserEntity tmp = (UserEntity) obj;
            if (this.getId().longValue() == tmp.getId().longValue()) {
                return true;
            }
        }
        return false;
    }

    public String toString(){
        StringBuilder sb = new StringBuilder("");
        sb
        .append(",id:").append(getId())
                .append(",loginName:").append(getLoginName())
                .append(",loginPwd:").append(getLoginPwd())
                .append(",loginPwd1:").append(getLoginPwd1())
                .append(",loginPwd2:").append(getLoginPwd2())
                .append(",loginPwd3:").append(getLoginPwd3())
                .append(",loginLimitAddress:").append(getLoginLimitAddress())
                .append(",realName:").append(getRealName())
                .append(",mobile:").append(getMobile())
                .append(",phone:").append(getPhone())
                .append(",email:").append(getEmail())
                .append(",qq:").append(getQq())
                .append(",userType:").append(getUserType())
                .append(",siteId:").append(getSiteId())
                .append(",status:").append(getStatus())
                .append(",customerId:").append(getCustomerId())
                .append(",createTime:").append(getCreateTime())
                .append(",createUserId:").append(getCreateUserId())
                .append(",createUserName:").append(getCreateUserName())
                .append(",lastLoginTime:").append(getLastLoginTime())
                .append(",lastLoginAddress:").append(getLastLoginAddress())
                .append(",lastModPwdTime:").append(getLastModPwdTime())
                .append(",lastModPwdAddr:").append(getLastModPwdAddr())
        ;
        return sb.toString();
    }

    public void initAttrValue(){
         this.loginName = null;
         this.loginPwd = null;
         this.loginPwd1 = null;
         this.loginPwd2 = null;
         this.loginPwd3 = null;
         this.loginLimitAddress = null;
         this.realName = null;
         this.mobile = null;
         this.phone = null;
         this.email = null;
         this.qq = null;
         this.userType = null;
         this.siteId = null;
         this.status = 1;
         this.customerId = null;
         this.createTime = null;
         this.createUserId = null;
         this.createUserName = null;
         this.lastLoginTime = null;
         this.lastLoginAddress = null;
         this.lastModPwdTime = null;
         this.lastModPwdAddr = null;
    }
}