package com.unis.framework.security.core.util;

import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.unis.framework.common.util.business.PermissionUtils;
import com.unis.framework.security.core.LoginUser;
import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * @author qingsong.han
 * @description: 获取行政区划编码
 * @create 2025-02-06 10:59
 */
@Slf4j
public class AreaUtils {

    public static String getAreaCode(Integer areaLevel, String areaCode, String parentCode) {
        // 国家交易中心或超级管理员
        if (ObjectUtils.isNotEmpty(areaLevel) && StringUtils.isNotBlank(areaCode)) {
            return PermissionUtils.jointAreaCode(areaLevel, areaCode, parentCode);
        } else {
            // 先判断登录人角色
            LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
            if (ObjectUtils.isNotEmpty(loginUser)) {
                log.info("loginUser: {}", loginUser);
                // 超级管理员->area_code:null,area_level:null;国家交易中心:area_code:0,area_level:0
                Map<String, String> info = loginUser.getInfo();
                if (ObjectUtils.isNotEmpty(info)) {
                    String areaCodeLogin = info.get("areaCode");
                    String areaLevelLogin = info.get("areaLevel");
                    // 除超级管理员以外的用户
                    if (StringUtils.isNotBlank(areaCodeLogin) && StringUtils.isNotBlank(areaLevelLogin)) {
                        return PermissionUtils.jointAreaCode(Integer.parseInt(areaLevelLogin), areaCodeLogin, parentCode);
                    }
                }
            }
        }
        return areaCode;
    }
}
