package com.jeelowcode.service.system.controller.vo.user.sync;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;

@Data
@Accessors(chain = true)
public class MasterRespResult {

    // 默认成功消息
    private static final String DEFAULT_SUCCESS_MESSAGE = "消费系统消费这批数据成功！";
    // 默认失败消息
    private static final String DEFAULT_FAIL_MESSAGE = "消费系统消费这批数据失败！";

    /**
     * 是否成功
     */
    private Boolean success;
    /**
     * 消息
     */
    private String message;
    /**
     * 映射列表
     */
    private List<MasterUserResultVO> mdMappings;

    /**
     * 构建成功响应结果
     *
     * @param mdMappings 映射列表
     * @return 响应结果
     */
    public static MasterRespResult buildSuccess(List<MasterUserResultVO> mdMappings) {
        return buildSuccess(DEFAULT_SUCCESS_MESSAGE, mdMappings);
    }

    /**
     * 构建成功响应结果
     *
     * @param message    消息
     * @param mdMappings 映射列表
     * @return 响应结果
     */
    public static MasterRespResult buildSuccess(String message, List<MasterUserResultVO> mdMappings) {
        return buildMasterResult(true, message, mdMappings);
    }

    /**
     * 构建失败响应结果
     *
     * @param mdMappings 映射列表
     * @return 响应结果
     */
    public static MasterRespResult buildFail(List<MasterUserResultVO> mdMappings) {
        return buildFail(DEFAULT_FAIL_MESSAGE, mdMappings);
    }

    /**
     * 构建失败响应结果
     *
     * @param message    消息
     * @param mdMappings 映射列表
     * @return 响应结果
     */
    public static MasterRespResult buildFail(String message, List<MasterUserResultVO> mdMappings) {
        return buildMasterResult(false, message, mdMappings);
    }

    /**
     * 构建结果
     *
     * @param success    是否成功
     * @param message    消息
     * @param mdMappings 映射列表
     * @return 结果
     */
    public static MasterRespResult buildMasterResult(Boolean success, String message, List<MasterUserResultVO> mdMappings) {
        return new MasterRespResult()
                .setSuccess(success)
                .setMessage(message)
                .setMdMappings(mdMappings);
    }

}
