All Downloads are FREE. Search and download functionalities are using the official Maven repository.

club.zhcs.lina.auth.service.AuthUser Maven / Gradle / Ivy

package club.zhcs.lina.auth.service;

import java.util.List;

import org.nutz.json.JsonField;
import org.nutz.json.JsonIgnore;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;

import club.zhcs.lina.utils.enums.Codebook;
import club.zhcs.lina.utils.enums.ICodeBook;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
import lombok.AllArgsConstructor;
import lombok.Builder.Default;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.SuperBuilder;

/**
 * 
 * @author Kerbores([email protected])
 *
 */
@Data
@SuperBuilder
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class AuthUser {

    @Schema(description = "用户名", requiredMode = RequiredMode.REQUIRED)
    String userName;

    @Schema(description = "姓名", requiredMode = RequiredMode.REQUIRED)
    String fullName;

    @Schema(description = "邮箱", requiredMode = RequiredMode.AUTO)
    String email;

    @Schema(description = "电话", requiredMode = RequiredMode.AUTO)
    String mobile;

    @Schema(description = "用户头像", requiredMode = RequiredMode.AUTO)
    private String avatar;

    @Schema(description = "性别", requiredMode = RequiredMode.AUTO)
    @Default
    private Sex sex = Sex.FEMALE;

    @Schema(description = "密码", requiredMode = RequiredMode.REQUIRED)
    @JsonIgnore
    String password;

    @Schema(description = "jwt Token", requiredMode = RequiredMode.REQUIRED)
    String token;

    @Schema(description = "jwt refreshToken", requiredMode = RequiredMode.REQUIRED)
    String refreshToken;

    @Schema(description = "角色列表", requiredMode = RequiredMode.REQUIRED)
    @Default
    List roles = Lang.list();

    @Schema(description = "权限列表", requiredMode = RequiredMode.REQUIRED)
    @Default
    List permissions = Lang.list();

    @Default
    @Schema(description = "扩展信息", requiredMode = RequiredMode.NOT_REQUIRED)
    NutMap extInfo = NutMap.NEW();

    @Getter
    @AllArgsConstructor
    public enum Sex implements ICodeBook {
        /**
         *
         */
        MALE("MALE", "男"),
        /**
         * 
         */
        FEMALE("FEMALE", "女");

        String code;
        String description;

    }

    @JsonField
    public Codebook getSexInfo() {
        return getSex().build();
    }

    public void setSexInfo(Codebook sexInfo) {
        setSex(Sex.valueOf(sexInfo.getName()));
    }

    /**
     * 添加扩展信息
     * 
     * @param key
     *            key
     * @param value
     *            value
     * @return 用户信息
     */
    public AuthUser addExt(String key, Object value) {
        getExtInfo().setv(key, value);
        return this;
    }

    /**
     * @return
     */
    public static AuthUser anonymous() {
        return builder().build();
    }

    public boolean isAnonymous() {
        return Strings.isBlank(userName);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy