package com.mortals.xhx.base.system.user.model;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.user.model.vo.UserVo;

import java.util.Date;

/**
 * 用户信息业务实体对象
 *
 * @author zxfei
 * @date 2022-07-05
 */

public class UserEntity extends UserVo implements IUser {
    private static final long serialVersionUID = 1L;

    /**
     * 登录名
     */
    private String loginName;
    /**
     * 登录密码，使用md5双次加密
     */
    private String loginPwd;
    /**
     * 登录限制地址，多个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.工作人员)
     */
    private Integer userType;
    /**
     * 所属站点id,多个逗号分隔
     */
    private String siteIds;
    /**
     * 所属区域code,多个逗号分隔
     */
    private String areaCodes;
    /**
     * 用户状态(0.停用，1.正常，2.冻结，3.销户，4.离职)
     */
    private Integer status;
    /**
     * 创建用户名称
     */
    private String createUserName;
    /**
     * 最后一次登录时间
     */
    private Date lastLoginTime;
    /**
     * 最后一次登录地址
     */
    private String lastLoginAddress;



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

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

    @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 String
     */
    public String getMobile(){
        return mobile;
    }
    /**
     * 设置 用户手机号
     * @param mobile
     */
    public void setMobile(String mobile){
        this.mobile = mobile;
    }
    /**
     * 获取 用户联系电话
     * @return String
     */
    public String getPhone(){
        return phone;
    }
    /**
     * 设置 用户联系电话
     * @param phone
     */
    public void setPhone(String phone){
        this.phone = phone;
    }
    /**
     * 获取 用户邮箱
     * @return String
     */
    public String getEmail(){
        return email;
    }
    /**
     * 设置 用户邮箱
     * @param email
     */
    public void setEmail(String email){
        this.email = email;
    }
    /**
     * 获取 QQ号码
     * @return String
     */
    public String getQq(){
        return qq;
    }
    /**
     * 设置 QQ号码
     * @param qq
     */
    public void setQq(String qq){
        this.qq = qq;
    }
    /**
     * 获取 用户类型(0.系统用户,1.普通用户,2.工作人员)
     * @return Integer
     */
    public Integer getUserType(){
        return userType;
    }
    /**
     * 设置 用户类型(0.系统用户,1.普通用户,2.工作人员)
     * @param userType
     */
    public void setUserType(Integer userType){
        this.userType = userType;
    }

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

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

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

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

    /**
     * 获取 所属站点id,多个逗号分隔
     * @return String
     */
    public String getSiteIds(){
        return siteIds;
    }

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

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

    /**
     * 设置 所属站点id,多个逗号分隔
     * @param siteIds
     */
    public void setSiteIds(String siteIds){
        this.siteIds = siteIds;
    }
    /**
     * 获取 所属区域code,多个逗号分隔
     * @return String
     */
    public String getAreaCodes(){
        return areaCodes;
    }
    /**
     * 设置 所属区域code,多个逗号分隔
     * @param areaCodes
     */
    public void setAreaCodes(String areaCodes){
        this.areaCodes = areaCodes;
    }
    /**
     * 获取 用户状态(0.停用，1.正常，2.冻结，3.销户，4.离职)
     * @return Integer
     */
    public Integer getStatus(){
        return status;
    }
    /**
     * 设置 用户状态(0.停用，1.正常，2.冻结，3.销户，4.离职)
     * @param status
     */
    public void setStatus(Integer status){
        this.status = status;
    }
    /**
     * 获取 创建用户名称
     * @return String
     */
    public String getCreateUserName(){
        return createUserName;
    }
    /**
     * 设置 创建用户名称
     * @param createUserName
     */
    public void setCreateUserName(String createUserName){
        this.createUserName = createUserName;
    }
    /**
     * 获取 最后一次登录时间
     * @return Date
     */
    public Date getLastLoginTime(){
        return lastLoginTime;
    }
    /**
     * 设置 最后一次登录时间
     * @param lastLoginTime
     */
    public void setLastLoginTime(Date lastLoginTime){
        this.lastLoginTime = lastLoginTime;
    }
    /**
     * 获取 最后一次登录地址
     * @return String
     */
    public String getLastLoginAddress(){
        return lastLoginAddress;
    }
    /**
     * 设置 最后一次登录地址
     * @param lastLoginAddress
     */
    public void setLastLoginAddress(String lastLoginAddress){
        this.lastLoginAddress = lastLoginAddress;
    }




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

    public String toString(){
        StringBuilder sb = new StringBuilder("");
        sb.append(",loginName:").append(getLoginName());
        sb.append(",loginPwd:").append(getLoginPwd());
        sb.append(",loginLimitAddress:").append(getLoginLimitAddress());
        sb.append(",realName:").append(getRealName());
        sb.append(",mobile:").append(getMobile());
        sb.append(",phone:").append(getPhone());
        sb.append(",email:").append(getEmail());
        sb.append(",qq:").append(getQq());
        sb.append(",userType:").append(getUserType());
        sb.append(",siteIds:").append(getSiteIds());
        sb.append(",areaCodes:").append(getAreaCodes());
        sb.append(",status:").append(getStatus());
        sb.append(",createUserName:").append(getCreateUserName());
        sb.append(",lastLoginTime:").append(getLastLoginTime());
        sb.append(",lastLoginAddress:").append(getLastLoginAddress());
        return sb.toString();
    }

    public void initAttrValue(){

        this.loginName = "";

        this.loginPwd = "";

        this.loginLimitAddress = "";

        this.realName = "";

        this.mobile = "";

        this.phone = "";

        this.email = "";

        this.qq = "";

        this.userType = null;

        this.siteIds = "";

        this.areaCodes = "";

        this.status = 1;

        this.createUserName = "";

        this.lastLoginTime = null;

        this.lastLoginAddress = "";
    }
}