package com.huimv.employment.service.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 登记小程序码配置，绑定 {@code fe.registration.qr.*}。
 */
@ConfigurationProperties(prefix = "fe.registration.qr")
public class RegistrationQrProperties {

    /**
     * getwxacodeunlimit.page（不要以 / 开头，不要带 query）。
     * 对应 POST /wxa/getwxacodeunlimit 的 page。
     */
    private String page = "pages/worker/job-offer";

    /** release / trial / develop */
    private String envVersion = "release";

    /**
     * 是否校验 page 存在；对应 check_path。
     * 正式发布 pages/worker/job-offer 后可设 true；未发布时 true 会导致微信 41030/85079。
     */
    private boolean checkPath = false;

    /**
     * 微信生成失败时是否落 Mock PNG，避免确认方案整单回滚。
     * 生产建议 false，联调可 true。
     */
    private boolean fallbackMockOnError = true;

    private int width = 430;

    /** 草稿未配置 qr_valid_days 时的默认有效天数 */
    private int defaultValidDays = 7;

    /** 小程序码 PNG 本地存储目录 */
    private String storagePath = "./data/registration-qr";

    /**
     * 对外访问前缀，写入 {@code qr_code_url}。
     * 为空则使用相对路径 {@code /api/v1/public/registration-qr/{token}.png}。
     */
    private String publicUrlPrefix = "";

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public String getEnvVersion() {
        return envVersion;
    }

    public void setEnvVersion(String envVersion) {
        this.envVersion = envVersion;
    }

    public boolean isCheckPath() {
        return checkPath;
    }

    public void setCheckPath(boolean checkPath) {
        this.checkPath = checkPath;
    }

    public boolean isFallbackMockOnError() {
        return fallbackMockOnError;
    }

    public void setFallbackMockOnError(boolean fallbackMockOnError) {
        this.fallbackMockOnError = fallbackMockOnError;
    }

    public int getWidth() {
        return width;
    }

    public void setWidth(int width) {
        this.width = width;
    }

    public int getDefaultValidDays() {
        return defaultValidDays;
    }

    public void setDefaultValidDays(int defaultValidDays) {
        this.defaultValidDays = defaultValidDays;
    }

    public String getStoragePath() {
        return storagePath;
    }

    public void setStoragePath(String storagePath) {
        this.storagePath = storagePath;
    }

    public String getPublicUrlPrefix() {
        return publicUrlPrefix;
    }

    public void setPublicUrlPrefix(String publicUrlPrefix) {
        this.publicUrlPrefix = publicUrlPrefix;
    }
}
