package com.njcn.rdms.module.system.controller.admin.user.vo.preference;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;

import java.util.LinkedHashMap;
import java.util.Map;

@Schema(description = "管理后台 - 当前用户主题配置 Response VO")
public class UserPreferenceThemeRespVO {

    /**
     * 返回给前端的主题配置覆盖项。
     *
     * 后端只返回用户自己保存过的覆盖项；
     * 若当前用户尚未保存，则由 Service 保证返回空对象 {}。
     */
    @Schema(description = "主题配置覆盖项")
    private final Map<String, Object> themeSettings = new LinkedHashMap<>();

    @JsonIgnore
    public Map<String, Object> getThemeSettings() {
        return themeSettings;
    }

    @JsonAnyGetter
    public Map<String, Object> any() {
        return themeSettings;
    }

    @JsonAnySetter
    public void put(String key, Object value) {
        // 保持响应体扁平化，避免序列化成 { "themeSettings": { ... } } 的额外嵌套。
        themeSettings.put(key, value);
    }

    public static UserPreferenceThemeRespVO of(Map<String, Object> themeSettings) {
        UserPreferenceThemeRespVO respVO = new UserPreferenceThemeRespVO();
        if (themeSettings != null) {
            // 仅复制覆盖项本身，不在后端补默认主题配置，默认值仍由前端维护。
            respVO.getThemeSettings().putAll(themeSettings);
        }
        return respVO;
    }

}
