package tech.easyflow.common.captcha.tainai;

import cloud.tianai.captcha.application.ImageCaptchaApplication;
import cloud.tianai.captcha.spring.plugins.secondary.SecondaryVerificationApplication;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import tech.easyflow.common.domain.Result;

/**
 * 验证码二次校验服务。
 */
@Service
public class CaptchaVerificationService {

    /**
     * 验证码失败业务码。
     */
    public static final int CAPTCHA_ERROR_CODE = 99;

    /**
     * 验证码失败提示。
     */
    public static final String CAPTCHA_ERROR_MESSAGE = "验证失败，请重试！";

    @Resource
    private ImageCaptchaApplication application;

    /**
     * 校验验证码二次验证令牌。
     *
     * @param validToken 二次验证令牌
     * @return 是否校验通过
     */
    public boolean verify(String validToken) {
        if (!StringUtils.hasText(validToken)) {
            return false;
        }
        return ((SecondaryVerificationApplication) application).secondaryVerification(validToken);
    }

    /**
     * 构造验证码失败响应。
     *
     * @param <T> 响应数据类型
     * @return 统一失败响应
     */
    public <T> Result<T> failureResult() {
        Result<T> result = new Result<>();
        result.setErrorCode(CAPTCHA_ERROR_CODE);
        result.setMessage(CAPTCHA_ERROR_MESSAGE);
        return result;
    }
}
