package org.nl.common.utils;

import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.dto.CurrentUser;

import java.util.List;

/**
 * @author: lyd
 * @description: 获取当前用户的信息 - 前提下在登录之后将数据存储到session
 * @Date:
 */
@Slf4j
public class SecurityUtils {

    /**
     * 获取系统用户 - CurrentUser
     *
     * @return 系统用户
     */
    public static CurrentUser getCurrentUser() {
        try {
            JSONObject json = (JSONObject) StpUtil.getExtra("loginInfo");
            if (ObjectUtil.isNotEmpty(json)) {
                return json.toBean(CurrentUser.class);
            }
        } catch (Exception e) {
            return new CurrentUser();
        }
        return null;
    }

    /**
     * 获取系统用户名称
     *
     * @return 系统用户名称
     */
    public static String getCurrentUsername() {
        return getCurrentUser().getUsername();
    }

    /**
     * 获取系统用户名称
     *
     * @return 系统用户名称
     */
    public static String getCurrentNickName() {
        return getCurrentUser().getPresonName();
    }

    /**
     * 获取系统用户Id
     *
     * @return 系统用户Id
     */
    public static String getCurrentUserId() {
        return getCurrentUser().getId();
    }

    /**
     * 获取系统用户Id
     *
     * @return 系统用户Id
     */
    public static Long getDeptId() {
//        return getCurrentUser().getUser().getDept().getId();
        return 1L;
    }

    /**
     * 获取当前用户权限
     *
     * @return 权限列表
     */
    public static List<String> getCurrentUserPermissions() {
        JSONObject json = (JSONObject) StpUtil.getExtra("loginInfo");
        JSONArray permissions = json.getJSONArray("permissions");
        if (permissions.size() > 0) {
            return permissions.toList(String.class);
        }
        return null;
    }
}
