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 = "管理后台 - 当前用户主题配置保存 Request VO")
public class UserPreferenceThemeSaveReqVO {

    /**
     * 前端传入的主题配置覆盖项。
     *
     * 这里故意不声明固定字段，原因是主题配置项是可扩展的；
     * 同时不接收 userId 等归属字段，配置归属只以后端登录态识别。
     */
    @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) {
        // 将请求体中的任意 JSON 字段收集为主题覆盖项，保持接口形态仍然是“直接 JSON 对象”。
        themeSettings.put(key, value);
    }

}
