LoginContextHolder.java 1.55 KB
package com.infoloop.tianting.context;

import com.infoloop.tianting.enums.LoginSourceEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

public class LoginContextHolder {

    private static final ThreadLocal<LoginInfo> CONTEXT_HOLDER = new ThreadLocal<>();

    public static void setLoginInfo(LoginInfo userContext) {
        CONTEXT_HOLDER.set(userContext);
    }

    public static void setRequestEnterpriseId(int enterpriseId) {
        CONTEXT_HOLDER.set(LoginInfo.builder().enterpriseId(enterpriseId).build());
    }

    public static LoginInfo getLoginInfo() {
        return CONTEXT_HOLDER.get();
    }

    public static boolean hasLogin() {
        return CONTEXT_HOLDER.get() != null;
    }

    public static Integer getId() {
        return CONTEXT_HOLDER.get().getId();
    }

    public static String getName() {
        return CONTEXT_HOLDER.get().getName();
    }

    public static Integer getEnterpriseId() {
        return CONTEXT_HOLDER.get().getEnterpriseId();
    }

    public static String  getOpenId() {
        return CONTEXT_HOLDER.get().getOpenId();
    }

    public static void clear() {
        CONTEXT_HOLDER.remove();
    }


    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public static class LoginInfo {

        private Integer id;

        private Integer enterpriseId;

        private Integer clientId;

        private String name;

        @Builder.Default
        private String openId = "";

        private LoginSourceEnum loginSource;

    }

}