package com.ruoyi.lsfx.client; import com.ruoyi.lsfx.domain.response.CreditParseResponse; import com.ruoyi.lsfx.exception.LsfxApiException; import com.ruoyi.lsfx.util.HttpUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.File; import java.util.HashMap; import java.util.Map; @Slf4j @Component public class CreditParseClient { @Resource private HttpUtil httpUtil; @Value("${credit-parse.api.url}") private String creditParseUrl; public CreditParseResponse parse(String model, String hType, File file) { long startTime = System.currentTimeMillis(); log.info("【征信解析】开始调用: fileName={}, model={}, hType={}", file.getName(), model, hType); try { Map params = new HashMap<>(); params.put("model", model); params.put("hType", hType); params.put("file", file); CreditParseResponse response = httpUtil.uploadFile(creditParseUrl, params, null, CreditParseResponse.class); long elapsed = System.currentTimeMillis() - startTime; log.info("【征信解析】调用完成: statusCode={}, cost={}ms", response != null ? response.getStatusCode() : null, elapsed); return response; } catch (Exception e) { log.error("【征信解析】调用失败: fileName={}, model={}, hType={}, error={}", file.getName(), model, hType, e.getMessage(), e); throw new LsfxApiException("征信解析调用失败: " + e.getMessage(), e); } } }