package com.red.circle.other.app.inner.convertor;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.red.circle.other.domain.rocket.RocketConfig;
import com.red.circle.other.inner.model.dto.rocket.RocketConfigDTO;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/**
 * 火箭内部接口转换器
 *
 * @author system
 * @date 2025-01-15
 */
@Component
public class RocketInnerConvertor {

    /**
     * Domain转DTO
     * 将JSONObject转换为JSON字符串
     */
    public RocketConfigDTO toDTO(RocketConfig config) {
        if (config == null) {
            return null;
        }

        RocketConfigDTO dto = new RocketConfigDTO();
        dto.setId(Long.parseLong(config.getId()));
        dto.setLevel(config.getLevel());
        dto.setMaxEnergy(config.getMaxEnergy());
        
        // 将JSONObject转换为JSON字符串
        if (config.getRewardConfig() != null && !config.getRewardConfig().isEmpty()) {
            dto.setRewardConfig(config.getRewardConfig());
        } else {
            dto.setRewardConfig(null);
        }
        
        dto.setContributorRewardRate(config.getContributorRewardRate());
        
        // 将JSONObject转换为JSON字符串
        if (config.getNormalRewardConfig() != null && !config.getNormalRewardConfig().isEmpty()) {
            dto.setNormalRewardConfig(config.getNormalRewardConfig());
        } else {
            dto.setNormalRewardConfig(null);
        }
        
        dto.setStatus(config.getStatus());
        dto.setCreatedAt(config.getCreatedAt());
        dto.setUpdatedAt(config.getUpdatedAt());
        
        return dto;
    }

    /**
     * DTO转Domain
     * 将JSON字符串转换为JSONObject
     */
    public RocketConfig toDomain(RocketConfigDTO dto) {
        if (dto == null) {
            return null;
        }

        RocketConfig config = new RocketConfig();
        config.setId(dto.getId().toString());
        config.setLevel(dto.getLevel());
        config.setMaxEnergy(dto.getMaxEnergy());
        
      config.setRewardConfig(dto.getRewardConfig());
        
        config.setContributorRewardRate(dto.getContributorRewardRate());
        
      config.setNormalRewardConfig(dto.getNormalRewardConfig());
        
        config.setStatus(dto.getStatus());
        config.setCreatedAt(dto.getCreatedAt());
        config.setUpdatedAt(dto.getUpdatedAt());
        
        return config;
    }
}
