package org.ruoyi.common.wechat.web.common; import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.wall.WallFilter; import com.jfinal.config.*; import com.jfinal.json.FastJsonFactory; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.server.undertow.UndertowServer; import com.jfinal.template.Engine; import com.jfinal.template.source.ClassPathSourceFactory; import org.ruoyi.common.wechat.itchat4j.core.CoreManage; import org.ruoyi.common.wechat.web.constant.UploadConstant; import org.ruoyi.common.wechat.web.interceptor.ExceptionInterceptor; import org.ruoyi.common.wechat.web.model._MappingKit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; /** * JFinal项目的核心配置 * 详情查看官方文档 * https://www.jfinal.com/doc * * @author WesleyOne */ public class MyConfig extends JFinalConfig { public final Logger LOG = LoggerFactory.getLogger(this.getClass()); public static void main(String[] args) { UndertowServer.start(MyConfig.class, 8180, true); } /** * 配置常量 */ @Override public void configConstant(Constants me) { PropKit.use("appConfig.properties"); me.setDevMode(PropKit.getBoolean("devMode", false)); //上传的文件的最大50M me.setMaxPostSize(10 * 1024 * 1024); me.setEncoding("UTF-8"); me.setJsonFactory(new FastJsonFactory()); me.setError404View("/WEB-INF/templates/404.html"); } /** * 配置路由 */ @Override public void configRoute(Routes me) { me.add(new MyRoute()); me.add(new OutRoute()); } @Override public void configEngine(Engine me) { me.setDevMode(PropKit.use("appConfig.properties").getBoolean("devMode", false)); me.addSharedFunction("/WEB-INF/templates/bs4temp/layout.html"); me.addSharedObject("imgDomain" , UploadConstant.IMG_URL); me.addSharedObject("filedomain" , UploadConstant.FILE_URL); } /** * 配置插件 */ @Override public void configPlugin(Plugins me) { // 配置 druid 数据库连接池插件 DruidPlugin druidPlugin = createDruidPlugin(); druidPlugin.addFilter(new StatFilter()); WallFilter wall = new WallFilter(); wall.setDbType("mysql"); druidPlugin.addFilter(wall); druidPlugin.setInitialSize(1); me.add(druidPlugin); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin); _MappingKit.mapping(arp); arp.setDialect(new MysqlDialect()); arp.setShowSql(PropKit.use("appConfig.properties").getBoolean("devMode", false)); arp.getEngine().setSourceFactory(new ClassPathSourceFactory()); me.add(arp); } public static DruidPlugin createDruidPlugin() { return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim()); } /** * 配置全局拦截器 */ @Override public void configInterceptor(Interceptors me) { me.add(new ExceptionInterceptor()); } /** * 配置处理器 */ @Override public void configHandler(Handlers me) { } @Override public void afterJFinalStart() { System.setProperty("jsse.enableSNIExtension", "false"); // 检查文件夹(/热登录/下载根目录)是否存在 checkFileExist(); // 热登陆操作 CoreManage.reload(); } @Override public void beforeJFinalStop() { CoreManage.persistence(); } /** * 检查文件夹(/热登录/下载根目录)是否存在 */ private void checkFileExist() { String hotReloadDir = PropKit.get("hotReloadDir"); String downloadPath = PropKit.get("download_path"); String logPath = PropKit.get("log_path"); File hotReloadFile = new File(hotReloadDir); if (!hotReloadFile.exists()){ if (!hotReloadFile.mkdirs()) { LOG.error("热加载文件夹创建失败[{}]",hotReloadDir); } } File downloadFile = new File(downloadPath); if (!downloadFile.exists()){ if (!downloadFile.mkdirs()) { LOG.error("下载文件夹创建失败[{}]",downloadPath); } } File logFile = new File(logPath); if (!logFile.exists()){ if (!logFile.mkdirs()) { LOG.error("日志文件夹创建失败[{}]",logPath); } } } }