|
|
package com.dsideal.base;
|
|
|
|
|
|
import com.dsideal.base.Base.Controller.BaseController;
|
|
|
import com.dsideal.base.Classes.Controller.ClassController;
|
|
|
import com.dsideal.base.DataAuthority.Controller.DataAuthorityController;
|
|
|
import com.dsideal.base.DataEase.Controller.DataEaseController;
|
|
|
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.Menu.Controller.MenuController;
|
|
|
import com.dsideal.base.Organization.Controller.OrganizationController;
|
|
|
import com.dsideal.base.Plugin.YamlProp;
|
|
|
import com.dsideal.base.Res.Controller.ResourceController;
|
|
|
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.Tools.Controller.excelConvertController;
|
|
|
import com.dsideal.base.Util.FileUtil;
|
|
|
import com.dsideal.base.Util.LogBackLogFactory;
|
|
|
import com.dsideal.base.Util.PkUtil;
|
|
|
import com.jfinal.config.*;
|
|
|
import com.jfinal.kit.PathKit;
|
|
|
import com.jfinal.kit.Prop;
|
|
|
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
|
|
|
import com.jfinal.plugin.activerecord.OrderedFieldContainerFactory;
|
|
|
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 java.io.File;
|
|
|
|
|
|
public class BaseApplication extends JFinalConfig {
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
String configFile = "undertow.properties";
|
|
|
UndertowServer.create(BaseApplication.class, configFile).start();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 配置常量
|
|
|
*/
|
|
|
public static Prop PropKit;
|
|
|
|
|
|
@Override
|
|
|
public void configConstant(Constants me) {
|
|
|
//使用LogBack
|
|
|
me.setLogFactory(new LogBackLogFactory());
|
|
|
//加载配置文件
|
|
|
String configFile = "application.yaml";
|
|
|
PropKit = new YamlProp(configFile);
|
|
|
|
|
|
// 设置静态根目录为上传根目录
|
|
|
me.setBaseUploadPath(PropKit.get("uploadTempPath"));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 配置路由
|
|
|
*/
|
|
|
@Override
|
|
|
public void configRoute(Routes me) {
|
|
|
//默认页面
|
|
|
me.add("/", IndexController.class);
|
|
|
//登录表
|
|
|
me.add("/loginPerson", LoginPersonController.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("/dataAuthority", DataAuthorityController.class);
|
|
|
//excel格式变更
|
|
|
me.add("/excelConvert", excelConvertController.class);
|
|
|
//DataEase
|
|
|
me.add("/dataease", DataEaseController.class);
|
|
|
//资源管理
|
|
|
me.add("/res", ResourceController.class);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void configEngine(Engine engine) {
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 配置插件
|
|
|
*/
|
|
|
@Override
|
|
|
public void configPlugin(Plugins me) {
|
|
|
DruidPlugin plugin = new DruidPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"),
|
|
|
PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName"));
|
|
|
me.add(plugin);
|
|
|
DruidPlugin dataEasePlugin = new DruidPlugin(PropKit.get("mysql.jdbcUrl").replace("ds_db", "dataease"), PropKit.get("mysql.user"),
|
|
|
PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName"));
|
|
|
me.add(dataEasePlugin);
|
|
|
// 配置ActiveRecord插件
|
|
|
ActiveRecordPlugin arp = new ActiveRecordPlugin(plugin);
|
|
|
arp.setDialect(new MysqlDialect());
|
|
|
//保证数据列返回与SQL语句中的顺序是一致的
|
|
|
arp.setContainerFactory(new OrderedFieldContainerFactory());
|
|
|
|
|
|
|
|
|
ActiveRecordPlugin dataEaseArp = new ActiveRecordPlugin("dataease", dataEasePlugin);
|
|
|
dataEaseArp.setDialect(new MysqlDialect());
|
|
|
//保证数据列返回与SQL语句中的顺序是一致的
|
|
|
dataEaseArp.setContainerFactory(new OrderedFieldContainerFactory());
|
|
|
|
|
|
//遍历sql目录下所有的sql文件
|
|
|
File sqlDir;
|
|
|
String basePath = PropKit.get("rootPath");
|
|
|
// 创建File对象
|
|
|
File directory = new File(basePath);
|
|
|
if (!directory.exists()) {
|
|
|
basePath = PathKit.getRootClassPath();
|
|
|
}
|
|
|
sqlDir = new File(basePath + "/Sql");
|
|
|
File[] sqlFiles = sqlDir.listFiles();
|
|
|
for (File sqlFile : sqlFiles != null ? sqlFiles : new File[0]) {
|
|
|
//只加载.sql文件
|
|
|
if (sqlFile.getName().indexOf(".sql") > 0) {
|
|
|
arp.addSqlTemplate("/Sql/" + sqlFile.getName());
|
|
|
dataEaseArp.addSqlTemplate("/Sql/" + sqlFile.getName());
|
|
|
}
|
|
|
}
|
|
|
//加载
|
|
|
me.add(arp);
|
|
|
me.add(dataEaseArp);
|
|
|
// 用于缓存模块的redis服务
|
|
|
RedisPlugin redis = new RedisPlugin("Redis", PropKit.get("redis.ip"), PropKit.getInt("redis.port"), 10 * 1000, PropKit.get("redis.password"));
|
|
|
//启动redis组件
|
|
|
me.add(redis);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 配置全局拦截器
|
|
|
*/
|
|
|
@Override
|
|
|
public void configInterceptor(Interceptors me) {
|
|
|
//检查是不是登录了
|
|
|
me.add(new IsLoginInterceptor());
|
|
|
|
|
|
//注册参数数字检查器
|
|
|
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 AuthorityInterceptor());
|
|
|
|
|
|
//检查是不是系统管理员
|
|
|
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处理器
|
|
|
//添加xss 过滤(正则表达式:"/((\\%3C)|<)((\\%2F)|\\/)*[a-z0-9\\%]+((\\%3E)|>)/ix")
|
|
|
me.add(new XssHandler("/((\\%3C)|<)((\\%2F)|\\/)*[a-z0-9\\%]+((\\%3E)|>)/ix"));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 在jfinal启动完成后马上执行
|
|
|
*/
|
|
|
@Override
|
|
|
public void onStart() {
|
|
|
//打印 启动Logo
|
|
|
String path = BaseApplication.class.getClassLoader().getResource("logo.txt").getPath();
|
|
|
File file = new File(path);
|
|
|
System.out.println(FileUtil.txt2String(file));
|
|
|
|
|
|
//初始化人员主键序列
|
|
|
PkUtil.InitPersonNumPk();
|
|
|
|
|
|
//初始化组织机构主键序列
|
|
|
PkUtil.InitOrgNumPk();
|
|
|
}
|
|
|
}
|