package com.roma.romaapi.utils;

import java.util.HashMap;
import java.util.Map;
// 相应工具类
public class CustomResponse {

    // 特殊的三个系统错误字段:
    // sysErrorCode 错误码
    // sysErrorMessage 错误消息
    // sysErrorData 错误数据
    public static <T> Map success(T data) {
        Map<String, Object> result = new HashMap<>();
        result.put("code", "200");
        result.put("message", "success");
        result.put("data", data);

        return result;
    }

    public static <T> Map error(T data, String code, String message) {
        Map<String, Object> result = new HashMap<>();
        result.put("code", code);
        result.put("message", message);
        result.put("data", data);

        return result;
    }

    // 格式化响应
    public static Map formatResponse(Map data) {
        Map<String, Object> result = new HashMap<>();
        String code = "0";
        String message = "success";
        boolean isEmpty = data.containsKey("sysErrorCode");
        if(isEmpty) {
            // 如果要返回错误提示
            boolean isEmptyData = data.containsKey("sysErrorData"); // 错误数据
            Object errorCode = data.get("sysErrorCode"); // 错误码
            Object errorMessage = data.containsKey("sysErrorMessage") ? data.get("sysErrorMessage")
                    : new String("operation failed!"); // 错误提示信息
            result.put("status", errorCode.toString());
            result.put("msg", errorMessage.toString());
            result.put("data", !isEmptyData ? data.get("sysErrorData") : new HashMap<>());
        } else {
            // 返回正确信息
            result.put("status", code);
            result.put("msg", message);
            // 如果是page_json,则返回此字段数据
            if(data.containsKey("page_json")) {
                Object pageJson = data.get("page_json");
                result.put("data", pageJson);
            } else {
                result.put("data", data);
            }
        }

        return result;
    }
}
