You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

178 lines
6.0 KiB

package com.dsideal.Base;
import cn.hutool.core.io.FileUtil;
import com.dsideal.Base.Base.Controller.BaseController;
import com.dsideal.Base.Classes.Controller.ClassController;
import com.dsideal.Base.Dm.Controller.DmController;
import com.dsideal.Base.Global.Controller.GlobalController;
import com.dsideal.Base.Handler.XssHandler;
import com.dsideal.Base.Index.Controller.IndexController;
import com.dsideal.Base.Interceptor.*;
import com.dsideal.Base.LoginPerson.Controller.LoginPersonController;
import com.dsideal.Base.LoginPerson.Controller.LoginPersonInternalController;
import com.dsideal.Base.Menu.Controller.MenuController;
import com.dsideal.Base.MetaData.Controller.MetaDataController;
import com.dsideal.Base.Organization.Controller.OrganizationController;
import com.dsideal.Base.Student.Controller.StudentController;
import com.dsideal.Base.StudentYd.Controller.StudentYdController;
import com.dsideal.Base.Teacher.Controller.TeacherController;
import com.dsideal.Base.TeacherYd.Controller.TeacherYdController;
import com.dsideal.Base.Util.LogBackLogFactory;
import com.dsideal.Base.Util.PkUtil;
import com.dsideal.Config.PropKit;
import com.jfinal.config.*;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.redis.RedisPlugin;
import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.template.Engine;
import lombok.SneakyThrows;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.util.Objects;
public class BaseApplication extends JFinalConfig {
private static final Logger logger = LoggerFactory.getLogger(BaseApplication.class);
public static void main(String[] args) {
UndertowServer.create(BaseApplication.class, "undertow.properties").start();
}
/**
* 配置常量
*/
@Override
public void configConstant(Constants me) {
me.setLogFactory(new LogBackLogFactory());
}
/**
* 配置路由
*/
@Override
public void configRoute(Routes me) {
//默认页面
me.add("/", IndexController.class);
//登录表
me.add("/loginPerson", LoginPersonController.class);
//发布内部登录接口
me.add("/loginPerson/internal", LoginPersonInternalController.class);
//全局变量
me.add("/global", GlobalController.class);
//数据字典
me.add("/dm", DmController.class);
//基础数据
me.add("/base", BaseController.class);
//组织机构
me.add("/organization", OrganizationController.class);
//班级
me.add("/class", ClassController.class);
//教师
me.add("/teacher", TeacherController.class);
//教师异动
me.add("/teacherYd", TeacherYdController.class);
//学生
me.add("/student", StudentController.class);
//学生异动
me.add("/studentYd", StudentYdController.class);
//菜单管理
me.add("/menu", MenuController.class);
//元数据采集
me.add("/metadata", MetaDataController.class);
}
@Override
public void configEngine(Engine engine) {
}
/**
* 配置插件
*/
@Override
public void configPlugin(Plugins me) {
DruidPlugin druid = new DruidPlugin(PropKit.get("mysql.jdbcUrl"),
PropKit.get("mysql.user"), PropKit.get("mysql.password"), PropKit.get("mysql.driverClassName"));
me.add(druid);
ActiveRecordPlugin arp = new ActiveRecordPlugin(druid);
arp.setDialect(new MysqlDialect());
String basePath = Objects.requireNonNull(BaseApplication.class.getClassLoader().getResource(".")).getPath();
File sqlDir = new File(basePath + "/Sql");
for (File sqlFile : Objects.requireNonNull(sqlDir.listFiles())) {
if (sqlFile.getName().indexOf(".sql") > 0) {
arp.addSqlTemplate("/Sql/" + sqlFile.getName());
}
}
me.add(arp);
//加载Redis插件
RedisPlugin redis = new RedisPlugin("Redis", PropKit.get("redis.ip"),
PropKit.getInt("redis.port"), 10000);
me.add(redis);
}
/**
* 配置全局拦截器
*/
@Override
public void configInterceptor(Interceptors me) {
//注册参数数字检查器
me.add(new IsNumbericInterceptor());
//注册非空拦截器
me.add(new EmptyInterceptor());
//注册Layui的分页检查器
me.add(new LayUiPageInfoInterceptor());
//注册Ids检查是不是数字的检查器
me.add(new CheckIdsInterceptor());
//注册一个GUID号的检查器
me.add(new IsGuidInterceptor());
//检查是不是系统管理员
me.add(new IsSysAdminInterceptor());
//注册一个检查身份证号的拦截
me.add(new VerifyIDCardInterceptor());
//检查手机号是否正确和是否存在
me.add(new VerifyTelephoneInterceptor());
//检查邮箱是否正确和是否存在
me.add(new VerifyEmailInterceptor());
//注册一个检查输入文本长度的拦截器
me.add(new LengthInterceptor());
}
/**
* 配置处理器
*/
@Override
public void configHandler(Handlers me) {
//加入统一的XSS处理器
me.add(new XssHandler("/((\\%3C)|<)((\\%2F)|\\/)*[a-z0-9\\%]+((\\%3E)|>)/ix"));
}
/**
* 在JFinal启动完成后马上执行
*/
@SneakyThrows
@Override
public void onStart() {
//打印 启动Logo
System.out.println(FileUtil.readUtf8String("logo.txt"));
//初始化人员主键序列
PkUtil.InitPersonNumPk();
//初始化组织机构主键序列
PkUtil.InitOrgNumPk();
}
}