package cn.iocoder.byzs.framework.banner.core;

import cn.hutool.core.thread.ThreadUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.util.ClassUtils;

import java.util.concurrent.TimeUnit;

/**
 * 项目启动成功后，提供文档相关的地址
 *
 * @author 博雅智算源码
 */
@Slf4j
public class BannerApplicationRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) {
        ThreadUtil.execute(() -> {
            ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延迟 1 秒，保证输出到结尾
            log.info("\n----------------------------------------------------------\n\t" +
                            "项目启动成功！\n\t" +
                            "----------------------------------------------------------",
                    "https://doc.iocoder.cn/api-doc/",
                    "https://doc.iocoder.cn",
                    "https://t.zsxq.com/02Yf6M7Qn");

            // 数据报表
            if (isNotPresent("cn.iocoder.byzs.module.report.framework.security.config.SecurityConfiguration")) {
                System.out.println("[报表模块 byzs-module-report - 已禁用][请联系管理员开启：report 模块");
            }
            // 工作流
            if (isNotPresent("cn.iocoder.byzs.module.bpm.framework.flowable.config.BpmFlowableConfiguration")) {
                System.out.println("[工作流模块 byzs-module-bpm - 已禁用][请联系管理员开启：bpm 模块");
            }
            // 商城系统
            if (isNotPresent("cn.iocoder.byzs.module.trade.framework.web.config.TradeWebConfiguration")) {
                System.out.println("[商城系统 byzs-module-mall - 已禁用][请联系管理员开启：mall/build 模块");
            }
            // ERP 系统
            if (isNotPresent("cn.iocoder.byzs.module.erp.framework.web.config.ErpWebConfiguration")) {
                System.out.println("[ERP 系统 byzs-module-erp - 已禁用][请联系管理员开启：erp/build 模块");
            }
            // CRM 系统
            if (isNotPresent("cn.iocoder.byzs.module.crm.framework.web.config.CrmWebConfiguration")) {
                System.out.println("[CRM 系统 byzs-module-crm - 已禁用][请联系管理员开启：crm/build 模块");
            }
            // 微信公众号
            if (isNotPresent("cn.iocoder.byzs.module.mp.framework.mp.config.MpConfiguration")) {
                System.out.println("[微信公众号 byzs-module-mp - 已禁用][请联系管理员开启：mp/build 模块");
            }
            // 支付平台
            if (isNotPresent("cn.iocoder.byzs.module.pay.framework.pay.config.PayConfiguration")) {
                System.out.println("[支付系统 byzs-module-pay - 已禁用][请联系管理员开启：pay/build 模块");
            }
            // AI 大模型
            if (isNotPresent("cn.iocoder.byzs.module.ai.framework.web.config.AiWebConfiguration")) {
                System.out.println("[AI 大模型 byzs-module-ai - 已禁用][请联系管理员开启：ai/build 模块");
            }
            // IoT 物联网
            if (isNotPresent("cn.iocoder.byzs.module.iot.framework.web.config.IotWebConfiguration")) {
                System.out.println("[IoT 物联网 byzs-module-iot - 已禁用][请联系管理员开启：iot/build 模块");
            }
        });
    }

    private static boolean isNotPresent(String className) {
        return !ClassUtils.isPresent(className, ClassUtils.getDefaultClassLoader());
    }

}
