package com.rj.config;

import com.rj.scheduler.LBAdminPullScheduler;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * hxrd 后台订单列表拉取（供 {@link LBAdminPullScheduler} 使用）。
 */
@Data
@ConfigurationProperties(prefix = "hxr.admin")
public class HxrAdminProperties {

    /**
     * 是否启用拉取任务；未启用时不发 HTTP 请求。
     */
    private boolean enabled = true;

    /**
     * 订单列表基础 URL（含分页等通用查询串）；各业务在代码中覆盖查询参数，或使用独立 URL 配置。
     */
    private String orderSelectUrl =
            "https://hxrdhoutai.hxrdsm.cn/app/admin/order/select?page=1&limit=90";

    /**
     * 未支付订单拉取 URL（含 {@code status=0} 等业务筛选），供 {@link LBAdminPullScheduler#pullOrdersForUnPay} 使用。
     */
    private String orderSelectUnPayUrl =
            "https://hxrdhoutai.hxrdsm.cn/app/admin/order/select?page=1&limit=90&status=0";

    /**
     * 已支付订单拉取 URL（含 {@code status=1}），供 {@link LBAdminPullScheduler#pullOrdersForUnPay} 使用。
     */
    private String orderSelectPaidUrl =
            "https://hxrdhoutai.hxrdsm.cn/app/admin/order/select?page=1&limit=90&status=1";

    /**
     * 定时将 hxrd 订单同步到 {@code lb_order_row} 时使用的租户 id；未配置时跳过订单状态同步。
     */
    private String syncTenantId = "TENANT_ID_CST_2026";

    /**
     * 请求头 Cookie 完整取值，例如 {@code PHPSID=xxxx}。非空时优先于 {@link #phpsid}。
     */
    private String cookie = "";

    /**
     * 仅 PHPSID 会话值（不含 {@code PHPSID=} 前缀）；在 {@link #cookie} 为空时使用。
     */
    private String phpsid = "";

    /**
     * 用户列表接口 URL（可含默认查询串）；实际请求会覆盖 {@code mobile} 等参数。
     */
    private String userSelectUrl =
            "https://hxrdhoutai.hxrdsm.cn/app/admin/user/select?page=1&limit=90";

    /**
     * 用户更新接口 URL。
     */
    private String userUpdateUrl = "https://hxrdhoutai.hxrdsm.cn/app/admin/user/update";

    /**
     * 组装 Cookie 请求头：优先 {@link #cookie}，否则 {@code PHPSID=}{@link #phpsid}。
     *
     * @return 非空 Cookie 值，或无法组装时的空串
     */
    public String resolveCookieHeader() {
        String c = firstNonBlank(cookie);
        if (c != null) {
            return c;
        }
        String id = firstNonBlank(phpsid);
        if (id != null) {
            return "PHPSID=" + id;
        }
        return "";
    }

    private static String firstNonBlank(String s) {
        if (s == null) {
            return null;
        }
        String t = s.trim();
        return t.isEmpty() ? null : t;
    }
}
