package com.nbport.zgwl.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.util.ArrayList;
import java.util.List;

@Data
@TableName(value = "sys_user")
@EqualsAndHashCode(callSuper = true)
public class SysUserEntity extends BaseEntity<SysUserEntity> {

    @Serial
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.INPUT)
    private Long id;

    @TableField("username")
    private String username;

    @TableField("mobile_phone")
    private String mobilePhone;

    @TableField("email")
    private String email;

    /**
     * 本地模拟正式环境字段：是否管理员。
     * 约定：1-管理员，0-普通用户
     */
    @TableField(exist = false)
    private Long adminFlag;

    /**
     * 本地模拟正式环境字段：部门名称。
     */
    @TableField(exist = false)
    private String deptName;

    /**
     * 本地模拟正式环境字段：数据权限。
     *
     * 可取：
     * ALL / COMPANY / DEPARTMENT / SELF
     */
    @TableField(exist = false)
    private String dataPermission;

    /**
     * 当前用户手机号/账号之外的本地模拟角色编码。
     *
     * 保留这个字段仅用于本地调试扩展，正式环境可忽略。
     */
    @TableField(exist = false)
    private List<String> roleCodes = new ArrayList<>();

    /**
     * 当前登录人的所属组织
     *
     * 这里不映射数据库字段，只用于业务代码里取组织信息。
     */
    @TableField(exist = false)
    private SysOrgEntity sysOrgEntity;
}
