package cn.com.capcloud.core.run;

import cn.com.capcloud.api.action.service.ApiDao;
import cn.com.capcloud.core.cache.KHCRedisCache;
import cn.com.capcloud.core.cache.BaseConfigStaticCache;
import cn.com.capcloud.core.quartz.task.DataSourceJobRunner;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.Ordered;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.io.File;
import java.util.UUID;

@Component
public class StartRun implements ApplicationRunner, Ordered {
	private static final org.slf4j.Logger logger = LoggerFactory.getLogger(StartRun.class);
	@Resource
	private KHCRedisCache khcRedisCache;

	@Resource
	private JdbcTemplate jdbcTemplate;

	// 使用 @Value 注解从配置文件中获取值
	@Value("${rzth.isRunTask}")
	private String isRunTask;
	@Value("${rzth.ccui.version:}")
	private String ccuiVersion;
	@Value("${rzth.khcKey:afc5af7e676e11efa551000c299fec45}")
	private String khcKey;
	@Value("${rzth.uploadFilePath}")
	private String uploadFilePath;
	@Value("${rzth.captchaFilePath}")
	private String captchaFilePath;


	@Override
	public int getOrder() {
		return 1;
	}

	@Override
	public void run(ApplicationArguments args) throws Exception {
		BaseConfigStaticCache.init(khcRedisCache);
		if(isRunTask.equals("Y")){
			DataSourceJobRunner.init(jdbcTemplate);
		}


		if(ccuiVersion.equals("")){
			logger.info("未知的CCUI版本");
		}else{
			logger.info("当前CCUI版本：v" + ccuiVersion);
		}
		if(khcKey.equals("afc5af7e676e11efa551000c299fec45")){
			logger.warn("警告：当前使用的 khcKey 为默认值，存在安全隐患！");
			logger.warn("建议：为了确保系统的安全性，生成新的 khcKey 替代旧的默认值，从而降低潜在的泄露风险。");

			// 生成新的 khcKey
			String newKhcKey = UUID.randomUUID().toString().replaceAll("-","");
			logger.info("生成新的 khcKey: " + newKhcKey);
		}
		//验证个重要的目录文件存储和图形验证码存储路径是否存在
		File file = new File(uploadFilePath);
		if (!file.exists()) {
			logger.warn("警告：本地文件存储路径不存在（uploadFilePath），会影响附件上传和excel导出等功能！");
		}
		file = new File(captchaFilePath);
		if (!file.exists()) {
			logger.warn("警告：图形验证码存储路径不存在（captchaFilePath），会影响登录以及其他涉及到图形验证的相关功能！");
		}
	}

}
