diff --git a/README.md b/README.md index 698b80f7..af3999df 100644 --- a/README.md +++ b/README.md @@ -82,19 +82,38 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性, ### 在线演示 1. 地址: -2. 账号:system -3. 密码:admin ### 本地运行 -1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、`MySQL 5.7 or 8.0`([支持更多数据库](https://jeesite.com/docs/technology/#_8、已支持数据库)) -2. 执行命令:`git clone https://gitee.com/thinkgem/jeesite4.git` 下载源码(master分支) +1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、使用 `MySQL 5.7 or 8.0` 数据库、[其它数据库](https://jeesite.com/docs/technology/#_8、已支持数据库) +2. 下载源码: 并解压 3. 打开文件:`/web/src/main/resources/config/application.yml` 配置JDBC连接 4. 执行脚本:`/web/bin/init-data.bat` 初始化数据库 5. 执行脚本:`/web/bin/run-tomcat.bat` 启动服务即可 6. 浏览器访问: 账号 system 密码 admin 7. 部署常见问题: +### 快速运行 + +1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、无需准备数据库(使用内嵌 H2 DB) +2. 下载源码: 并解压 +3. 执行脚本:`/web-fast/bin/run-tomcat.bat` 启动服务即可(自动初始化库) +4. 浏览器访问: 账号 system 密码 admin +5. 部署常见问题: + +### 容器运行 + +- 拉取 Docker 镜像: +``` +docker pull thinkgem/jeesite-web +``` +- 启动脚本: +``` +docker run -d -p 8980:8980 --name jeesite-web -v /data:/data \ +thinkgem/jeesite-web && docker logs -f jeesite-web +``` +- 浏览器访问: 账号 system 密码 admin + ### 开发环境 1. 部署运行文档: diff --git a/root/pom.xml b/root/pom.xml index 8f04c655..05d4f7b8 100644 --- a/root/pom.xml +++ b/root/pom.xml @@ -19,6 +19,7 @@ ../modules/cms ../web ../web-api + ../web-fast diff --git a/web-fast/README.md b/web-fast/README.md new file mode 100644 index 00000000..8f9ce36e --- /dev/null +++ b/web-fast/README.md @@ -0,0 +1,23 @@ +## 介绍 + +jeesite-web-fast 是 JeeSite 快速体验项目,默认采用 H2 数据库, + +无需手动初始化数据库,启动项目时,自动完成数据库初始化。 + +可非常快速的本地运行编译 JeeSite 平台。 + +## 使用方法 + +1. 环境准备:`JDK 1.8 or 11、17`、`Maven 3.6+`、无需准备数据库(使用内嵌 H2 DB) +2. 下载源码: 并解压 +3. 执行脚本:`/web-fast/bin/run-tomcat.bat` 启动服务即可(自动初始化库) +4. 浏览器访问: 账号 system 密码 admin +5. 部署常见问题: + +## 文档 + +部署文档:http://jeesite.com/docs/install-deploy/ + +常见问题:http://jeesite.com/docs/faq/ + +更多文档:http://jeesite.com/docs diff --git a/web-fast/bin/docker-build.bat b/web-fast/bin/docker-build.bat new file mode 100644 index 00000000..ac6340db --- /dev/null +++ b/web-fast/bin/docker-build.bat @@ -0,0 +1,28 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [Ϣ] WeḅDocker +echo. + +%~d0 +cd %~dp0 + +cd .. +call mvn clean package docker:remove docker:build -Dmaven.test.skip=true -U + +echo. +echo. +echo οĽű Docker У +echo. +echo "docker run -d -p 8980:8980 --name jeesite-web --restart unless-stopped -v /data:/data thinkgem/jeesite-web && docker logs -f jeesite-web" +echo. +echo ɺ󣬷Ŀhttp://127.0.0.1:8980/js/a/login ûsystem 룺admin +echo. + +cd bin +pause \ No newline at end of file diff --git a/web-fast/bin/docker-build.sh b/web-fast/bin/docker-build.sh new file mode 100644 index 00000000..d80c002b --- /dev/null +++ b/web-fast/bin/docker-build.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# * +# */ +echo "" +echo "[信息] 打包Web工程,编译Docker镜像。" +echo "" + +cd .. +mvn clean package docker:remove docker:build -Dmaven.test.skip=true -U + +echo "" +echo "" +echo "参考下面的脚本,拷贝到 Docker 服务器上运行:" +echo "" +echo "docker run -d -p 8980:8980 --name jeesite-web --restart unless-stopped -v /data:/data thinkgem/jeesite-web && docker logs -f jeesite-web" +echo "" +echo "启动完成后,访问项目:http://127.0.0.1:8980/js/a/login 用户名:system 密码:admin" +echo "" + +cd bin \ No newline at end of file diff --git a/web-fast/bin/docker/Dockerfile b/web-fast/bin/docker/Dockerfile new file mode 100644 index 00000000..c4f3e8c3 --- /dev/null +++ b/web-fast/bin/docker/Dockerfile @@ -0,0 +1,16 @@ +FROM frolvlad/alpine-java:jdk8-slim +LABEL maintainer="ThinkGem@163.com" +ENV TZ "Asia/Shanghai" +ENV LANG C.UTF-8 +VOLUME /tmp +VOLUME /data + +WORKDIR /app +ADD ./maven/web.jar ./app.jar + +#ENV JAVA_OPTS "-Xms256m -Xmx1024m" +ENV JAVA_OPTS "$JAVA_OPTS -Dspring.profiles.active=prod" + +ENTRYPOINT java -jar $JAVA_OPTS app.jar + +EXPOSE 8980 diff --git a/web-fast/bin/init-data.bat b/web-fast/bin/init-data.bat new file mode 100644 index 00000000..800502e0 --- /dev/null +++ b/web-fast/bin/init-data.bat @@ -0,0 +1,34 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [Ϣ] ʼݿ⡣ +echo. +echo [Ϣ] Ҫ״ΰװ JeeSite װ Module ݱʼģѰװԶԡ +echo. +echo [Ϣ] v4.2 汾Ժ󣬹ٷʼݿDZȽϰȫģٷвκɾݱݵĽű +echo. +echo [Ϣ] v4.2 Ժİ汾޷ųǷΪȫȱݿٲ +echo. +pause + +%~d0 +cd %~dp0 + +cd .. + +call mvn clean compile -Dmaven.test.skip=true -U +echo. +echo [Ϣ] ɣ濪ʼʼݿ⡣ +echo. +pause + +set "MAVEN_OPTS=%MAVEN_OPTS% -Xms512m -Xmx1024m" +call mvn test -Dmaven.test.skip=false -Dtest=com.jeesite.test.InitData + +cd bin +pause \ No newline at end of file diff --git a/web-fast/bin/init-data.sh b/web-fast/bin/init-data.sh new file mode 100644 index 00000000..896eb579 --- /dev/null +++ b/web-fast/bin/init-data.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# * +# */ +echo "" +echo "[信息] 初始化数据库。" +echo "" +echo "[信息] 本操作主要用于首次安装 JeeSite 或后安装 Module 的数据表初始化,若模块已安装会自动忽略。" +echo "" +echo "[信息] 在 v4.2 版本以后,官方初始化数据库是比较安全的,官方代码中不会包含任何删除数据表及数据的脚本。" +echo "" +echo "[信息] 如果你是升级到 v4.2 以后的版本,无法排除你是否升级完整,为安全起见,建议先备份数据库后再操作。" +echo "" +read -s -n1 -p "请按任意键继续 ... " + +cd .. + +mvn clean compile -Dmaven.test.skip=true -U +echo "" +echo "[信息] 依赖下载完成,下面开始初始化数据库。" +echo "" +read -s -n1 -p "请按任意键继续 ... " + +MAVEN_OPTS="$MAVEN_OPTS -Xms512m -Xmx1024m" +mvn test -Dmaven.test.skip=false -Dtest=com.jeesite.test.InitData + +cd bin \ No newline at end of file diff --git a/web-fast/bin/package.bat b/web-fast/bin/package.bat new file mode 100644 index 00000000..71ddadcf --- /dev/null +++ b/web-fast/bin/package.bat @@ -0,0 +1,19 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [Ϣ] Weḅwar/jarļ +echo. + +%~d0 +cd %~dp0 + +cd .. +call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U + +cd bin +pause \ No newline at end of file diff --git a/web-fast/bin/package.sh b/web-fast/bin/package.sh new file mode 100644 index 00000000..4a61e99b --- /dev/null +++ b/web-fast/bin/package.sh @@ -0,0 +1,16 @@ +#!/bin/sh +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# * +# */ +echo "" +echo "[信息] 打包Web工程,生成war/jar包文件。" +echo "" + +cd .. +mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U + +cd bin \ No newline at end of file diff --git a/web-fast/bin/run-tomcat.bat b/web-fast/bin/run-tomcat.bat new file mode 100644 index 00000000..1d090eea --- /dev/null +++ b/web-fast/bin/run-tomcat.bat @@ -0,0 +1,20 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [Ϣ] ʹ Spring Boot Tomcat Web ̡ +echo. + +%~d0 +cd %~dp0 + +cd .. +title %cd% +set "MAVEN_OPTS=%MAVEN_OPTS% -Xms512m -Xmx1024m" +call mvn clean spring-boot:run -Dmaven.test.skip=true + +pause \ No newline at end of file diff --git a/web-fast/bin/run-tomcat.sh b/web-fast/bin/run-tomcat.sh new file mode 100644 index 00000000..982b7958 --- /dev/null +++ b/web-fast/bin/run-tomcat.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# * +# */ +echo "" +echo "[信息] 使用 Spring Boot Tomcat 运行 Web 工程。" +echo "" + +cd .. +MAVEN_OPTS="$MAVEN_OPTS -Xms512m -Xmx1024m" +mvn clean spring-boot:run -Dmaven.test.skip=true \ No newline at end of file diff --git a/web-fast/bin/run-web.bat b/web-fast/bin/run-web.bat new file mode 100644 index 00000000..599c7ce0 --- /dev/null +++ b/web-fast/bin/run-web.bat @@ -0,0 +1,24 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [Ϣ] WeḅWeb̡ +echo. + +%~d0 +cd %~dp0 + +rem Weḅʼ +cd .. +call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U +rem Weḅ + +rem +cd target +call java -jar web.jar + +pause \ No newline at end of file diff --git a/web-fast/bin/run-web.sh b/web-fast/bin/run-web.sh new file mode 100644 index 00000000..2a8318bd --- /dev/null +++ b/web-fast/bin/run-web.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# * +# */ +echo "" +echo "[信息] 打包Web工程,并运行Web工程。" +echo "" + +# 打包Web工程(开始) +cd .. +mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U +# 打包Web工程(结束) + +# 启动服务 +cd target +java -jar web.jar diff --git a/web-fast/db/h2/test.sql b/web-fast/db/h2/test.sql new file mode 100644 index 00000000..d522c6da --- /dev/null +++ b/web-fast/db/h2/test.sql @@ -0,0 +1,75 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar(64) NOT NULL, + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date datetime, + test_datetime datetime, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date datetime NOT NULL, + update_by varchar(64) NOT NULL, + update_date datetime NOT NULL, + remarks varchar(500), + PRIMARY KEY (id) +); + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar(64) NOT NULL, + test_sort int, + test_data_id varchar(64), + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date datetime, + test_datetime datetime, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + PRIMARY KEY (id) +); + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar(64) NOT NULL, + parent_code varchar(64) NOT NULL, + parent_codes varchar(767) NOT NULL, + tree_sort decimal(10) NOT NULL, + tree_sorts varchar(767) NOT NULL, + tree_leaf char(1) NOT NULL, + tree_level decimal(4) NOT NULL, + tree_names varchar(767) NOT NULL, + tree_name varchar(200) NOT NULL, + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date datetime NOT NULL, + update_by varchar(64) NOT NULL, + update_date datetime NOT NULL, + remarks varchar(500), + PRIMARY KEY (tree_code) +); + + + diff --git a/web-fast/db/mssql/test.sql b/web-fast/db/mssql/test.sql new file mode 100644 index 00000000..4ae8a769 --- /dev/null +++ b/web-fast/db/mssql/test.sql @@ -0,0 +1,75 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE [test_data] +( + [id] varchar(64) NOT NULL, + [test_input] varchar(200), + [test_textarea] nvarchar(200), + [test_select] varchar(10), + [test_select_multiple] varchar(200), + [test_radio] varchar(10), + [test_checkbox] varchar(200), + [test_date] datetime, + [test_datetime] datetime, + [test_user_code] varchar(64), + [test_office_code] varchar(64), + [test_area_code] varchar(64), + [test_area_name] nvarchar(100), + [status] char(1) DEFAULT '0' NOT NULL, + [create_by] varchar(64) NOT NULL, + [create_date] datetime NOT NULL, + [update_by] varchar(64) NOT NULL, + [update_date] datetime NOT NULL, + [remarks] nvarchar(500), + PRIMARY KEY ([id]) +); + + +-- 测试数据子表 +CREATE TABLE [test_data_child] +( + [id] varchar(64) NOT NULL, + [test_sort] int, + [test_data_id] varchar(64), + [test_input] varchar(200), + [test_textarea] nvarchar(200), + [test_select] varchar(10), + [test_select_multiple] varchar(200), + [test_radio] varchar(10), + [test_checkbox] varchar(200), + [test_date] datetime, + [test_datetime] datetime, + [test_user_code] varchar(64), + [test_office_code] varchar(64), + [test_area_code] varchar(64), + [test_area_name] nvarchar(100), + PRIMARY KEY ([id]) +); + + +-- 测试树表 +CREATE TABLE [test_tree] +( + [tree_code] varchar(64) NOT NULL, + [parent_code] varchar(64) NOT NULL, + [parent_codes] varchar(767) NOT NULL, + [tree_sort] decimal(10) NOT NULL, + [tree_sorts] varchar(767) NOT NULL, + [tree_leaf] char(1) NOT NULL, + [tree_level] decimal(4) NOT NULL, + [tree_names] varchar(767) NOT NULL, + [tree_name] nvarchar(200) NOT NULL, + [status] char(1) DEFAULT '0' NOT NULL, + [create_by] varchar(64) NOT NULL, + [create_date] datetime NOT NULL, + [update_by] varchar(64) NOT NULL, + [update_date] datetime NOT NULL, + [remarks] nvarchar(500), + PRIMARY KEY ([tree_code]) +); + + + diff --git a/web-fast/db/mysql/create_user.sql b/web-fast/db/mysql/create_user.sql new file mode 100644 index 00000000..279d7944 --- /dev/null +++ b/web-fast/db/mysql/create_user.sql @@ -0,0 +1,13 @@ + +-- 打开 my.ini 给 [mysqld] 增加如下配置: +-- sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION + +set global read_only=0; + +create user 'jeesite'@'%' identified by 'jeesite'; + +create database jeesite DEFAULT CHARSET 'utf8' COLLATE 'utf8_general_ci'; + +grant all privileges on jeesite.* to 'jeesite'@'%' identified by 'jeesite'; + +flush privileges; diff --git a/web-fast/db/mysql/test.sql b/web-fast/db/mysql/test.sql new file mode 100644 index 00000000..06c78075 --- /dev/null +++ b/web-fast/db/mysql/test.sql @@ -0,0 +1,76 @@ +SET SESSION FOREIGN_KEY_CHECKS=0; + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar(64) NOT NULL COMMENT '编号', + test_input varchar(200) COMMENT '单行文本', + test_textarea varchar(200) COMMENT '多行文本', + test_select varchar(10) COMMENT '下拉框', + test_select_multiple varchar(200) COMMENT '下拉多选', + test_radio varchar(10) COMMENT '单选框', + test_checkbox varchar(200) COMMENT '复选框', + test_date datetime COMMENT '日期选择', + test_datetime datetime COMMENT '日期时间', + test_user_code varchar(64) COMMENT '用户选择', + test_office_code varchar(64) COMMENT '机构选择', + test_area_code varchar(64) COMMENT '区域选择', + test_area_name varchar(100) COMMENT '区域名称', + status char(1) DEFAULT '0' NOT NULL COMMENT '状态(0正常 1删除 2停用)', + create_by varchar(64) NOT NULL COMMENT '创建者', + create_date datetime NOT NULL COMMENT '创建时间', + update_by varchar(64) NOT NULL COMMENT '更新者', + update_date datetime NOT NULL COMMENT '更新时间', + remarks varchar(500) COMMENT '备注信息', + PRIMARY KEY (id) +) COMMENT = '测试数据'; + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar(64) NOT NULL COMMENT '编号', + test_sort int COMMENT '排序号', + test_data_id varchar(64) COMMENT '父表主键', + test_input varchar(200) COMMENT '单行文本', + test_textarea varchar(200) COMMENT '多行文本', + test_select varchar(10) COMMENT '下拉框', + test_select_multiple varchar(200) COMMENT '下拉多选', + test_radio varchar(10) COMMENT '单选框', + test_checkbox varchar(200) COMMENT '复选框', + test_date datetime COMMENT '日期选择', + test_datetime datetime COMMENT '日期时间', + test_user_code varchar(64) COMMENT '用户选择', + test_office_code varchar(64) COMMENT '机构选择', + test_area_code varchar(64) COMMENT '区域选择', + test_area_name varchar(100) COMMENT '区域名称', + PRIMARY KEY (id) +) COMMENT = '测试数据子表'; + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar(64) NOT NULL COMMENT '节点编码', + parent_code varchar(64) NOT NULL COMMENT '父级编号', + parent_codes varchar(767) NOT NULL COMMENT '所有父级编号', + tree_sort decimal(10) NOT NULL COMMENT '排序号(升序)', + tree_sorts varchar(767) NOT NULL COMMENT '所有排序号', + tree_leaf char(1) NOT NULL COMMENT '是否最末级', + tree_level decimal(4) NOT NULL COMMENT '层次级别', + tree_names varchar(767) NOT NULL COMMENT '全节点名', + tree_name varchar(200) NOT NULL COMMENT '节点名称', + status char(1) DEFAULT '0' NOT NULL COMMENT '状态(0正常 1删除 2停用)', + create_by varchar(64) NOT NULL COMMENT '创建者', + create_date datetime NOT NULL COMMENT '创建时间', + update_by varchar(64) NOT NULL COMMENT '更新者', + update_date datetime NOT NULL COMMENT '更新时间', + remarks varchar(500) COMMENT '备注信息', + PRIMARY KEY (tree_code) +) COMMENT = '测试树表'; + + + diff --git a/web-fast/db/oracle/create_user.sql b/web-fast/db/oracle/create_user.sql new file mode 100644 index 00000000..7ccd2411 --- /dev/null +++ b/web-fast/db/oracle/create_user.sql @@ -0,0 +1,15 @@ + +create user jeesite + identified by jeesite + quota unlimited on users; + +grant connect,resource,create session,select any table, + create any view,create any table,create any index, + drop any table,drop any view,drop any index + to jeesite; + +-- 提示 oracle.jdbc.xa.OracleXAResource.recover 错误需要授权: +grant select on sys.dba_pending_transactions to jeesite; +grant select on sys.pending_trans$ to jeesite; +grant select on sys.dba_2pc_pending to jeesite; +grant execute on sys.dbms_system to jeesite; diff --git a/web-fast/db/oracle/test.sql b/web-fast/db/oracle/test.sql new file mode 100644 index 00000000..4308d8d3 --- /dev/null +++ b/web-fast/db/oracle/test.sql @@ -0,0 +1,132 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar2(64) NOT NULL, + test_input varchar2(200), + test_textarea nvarchar2(200), + test_select varchar2(10), + test_select_multiple varchar2(200), + test_radio varchar2(10), + test_checkbox varchar2(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar2(64), + test_office_code varchar2(64), + test_area_code varchar2(64), + test_area_name nvarchar2(100), + status char(1) DEFAULT '0' NOT NULL, + create_by varchar2(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar2(64) NOT NULL, + update_date timestamp NOT NULL, + remarks nvarchar2(500), + PRIMARY KEY (id) +); + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar2(64) NOT NULL, + test_sort number(10,0), + test_data_id varchar2(64), + test_input varchar2(200), + test_textarea nvarchar2(200), + test_select varchar2(10), + test_select_multiple varchar2(200), + test_radio varchar2(10), + test_checkbox varchar2(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar2(64), + test_office_code varchar2(64), + test_area_code varchar2(64), + test_area_name nvarchar2(100), + PRIMARY KEY (id) +); + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar2(64) NOT NULL, + parent_code varchar2(64) NOT NULL, + parent_codes varchar2(767) NOT NULL, + tree_sort number(10) NOT NULL, + tree_sorts varchar2(767) NOT NULL, + tree_leaf char(1) NOT NULL, + tree_level number(4) NOT NULL, + tree_names varchar2(767) NOT NULL, + tree_name nvarchar2(200) NOT NULL, + status char(1) DEFAULT '0' NOT NULL, + create_by varchar2(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar2(64) NOT NULL, + update_date timestamp NOT NULL, + remarks nvarchar2(500), + PRIMARY KEY (tree_code) +); + + + +/* Comments */ + +COMMENT ON TABLE test_data IS '测试数据'; +COMMENT ON COLUMN test_data.id IS '编号'; +COMMENT ON COLUMN test_data.test_input IS '单行文本'; +COMMENT ON COLUMN test_data.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data.test_select IS '下拉框'; +COMMENT ON COLUMN test_data.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data.test_radio IS '单选框'; +COMMENT ON COLUMN test_data.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data.test_date IS '日期选择'; +COMMENT ON COLUMN test_data.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data.test_area_name IS '区域名称'; +COMMENT ON COLUMN test_data.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_data.create_by IS '创建者'; +COMMENT ON COLUMN test_data.create_date IS '创建时间'; +COMMENT ON COLUMN test_data.update_by IS '更新者'; +COMMENT ON COLUMN test_data.update_date IS '更新时间'; +COMMENT ON COLUMN test_data.remarks IS '备注信息'; +COMMENT ON TABLE test_data_child IS '测试数据子表'; +COMMENT ON COLUMN test_data_child.id IS '编号'; +COMMENT ON COLUMN test_data_child.test_sort IS '排序号'; +COMMENT ON COLUMN test_data_child.test_data_id IS '父表主键'; +COMMENT ON COLUMN test_data_child.test_input IS '单行文本'; +COMMENT ON COLUMN test_data_child.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data_child.test_select IS '下拉框'; +COMMENT ON COLUMN test_data_child.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data_child.test_radio IS '单选框'; +COMMENT ON COLUMN test_data_child.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data_child.test_date IS '日期选择'; +COMMENT ON COLUMN test_data_child.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data_child.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data_child.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data_child.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data_child.test_area_name IS '区域名称'; +COMMENT ON TABLE test_tree IS '测试树表'; +COMMENT ON COLUMN test_tree.tree_code IS '节点编码'; +COMMENT ON COLUMN test_tree.parent_code IS '父级编号'; +COMMENT ON COLUMN test_tree.parent_codes IS '所有父级编号'; +COMMENT ON COLUMN test_tree.tree_sort IS '排序号(升序)'; +COMMENT ON COLUMN test_tree.tree_sorts IS '所有排序号'; +COMMENT ON COLUMN test_tree.tree_leaf IS '是否最末级'; +COMMENT ON COLUMN test_tree.tree_level IS '层次级别'; +COMMENT ON COLUMN test_tree.tree_names IS '全节点名'; +COMMENT ON COLUMN test_tree.tree_name IS '节点名称'; +COMMENT ON COLUMN test_tree.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_tree.create_by IS '创建者'; +COMMENT ON COLUMN test_tree.create_date IS '创建时间'; +COMMENT ON COLUMN test_tree.update_by IS '更新者'; +COMMENT ON COLUMN test_tree.update_date IS '更新时间'; +COMMENT ON COLUMN test_tree.remarks IS '备注信息'; + + + diff --git a/web-fast/db/postgresql/test.sql b/web-fast/db/postgresql/test.sql new file mode 100644 index 00000000..54758d68 --- /dev/null +++ b/web-fast/db/postgresql/test.sql @@ -0,0 +1,132 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar(64) NOT NULL, + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar(64) NOT NULL, + update_date timestamp NOT NULL, + remarks varchar(500), + PRIMARY KEY (id) +) WITHOUT OIDS; + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar(64) NOT NULL, + test_sort int, + test_data_id varchar(64), + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + PRIMARY KEY (id) +) WITHOUT OIDS; + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar(64) NOT NULL, + parent_code varchar(64) NOT NULL, + parent_codes varchar(767) NOT NULL, + tree_sort decimal(10) NOT NULL, + tree_sorts varchar(767) NOT NULL, + tree_leaf char(1) NOT NULL, + tree_level decimal(4) NOT NULL, + tree_names varchar(767) NOT NULL, + tree_name varchar(200) NOT NULL, + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar(64) NOT NULL, + update_date timestamp NOT NULL, + remarks varchar(500), + PRIMARY KEY (tree_code) +) WITHOUT OIDS; + + + +/* Comments */ + +COMMENT ON TABLE test_data IS '测试数据'; +COMMENT ON COLUMN test_data.id IS '编号'; +COMMENT ON COLUMN test_data.test_input IS '单行文本'; +COMMENT ON COLUMN test_data.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data.test_select IS '下拉框'; +COMMENT ON COLUMN test_data.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data.test_radio IS '单选框'; +COMMENT ON COLUMN test_data.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data.test_date IS '日期选择'; +COMMENT ON COLUMN test_data.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data.test_area_name IS '区域名称'; +COMMENT ON COLUMN test_data.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_data.create_by IS '创建者'; +COMMENT ON COLUMN test_data.create_date IS '创建时间'; +COMMENT ON COLUMN test_data.update_by IS '更新者'; +COMMENT ON COLUMN test_data.update_date IS '更新时间'; +COMMENT ON COLUMN test_data.remarks IS '备注信息'; +COMMENT ON TABLE test_data_child IS '测试数据子表'; +COMMENT ON COLUMN test_data_child.id IS '编号'; +COMMENT ON COLUMN test_data_child.test_sort IS '排序号'; +COMMENT ON COLUMN test_data_child.test_data_id IS '父表主键'; +COMMENT ON COLUMN test_data_child.test_input IS '单行文本'; +COMMENT ON COLUMN test_data_child.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data_child.test_select IS '下拉框'; +COMMENT ON COLUMN test_data_child.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data_child.test_radio IS '单选框'; +COMMENT ON COLUMN test_data_child.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data_child.test_date IS '日期选择'; +COMMENT ON COLUMN test_data_child.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data_child.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data_child.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data_child.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data_child.test_area_name IS '区域名称'; +COMMENT ON TABLE test_tree IS '测试树表'; +COMMENT ON COLUMN test_tree.tree_code IS '节点编码'; +COMMENT ON COLUMN test_tree.parent_code IS '父级编号'; +COMMENT ON COLUMN test_tree.parent_codes IS '所有父级编号'; +COMMENT ON COLUMN test_tree.tree_sort IS '排序号(升序)'; +COMMENT ON COLUMN test_tree.tree_sorts IS '所有排序号'; +COMMENT ON COLUMN test_tree.tree_leaf IS '是否最末级'; +COMMENT ON COLUMN test_tree.tree_level IS '层次级别'; +COMMENT ON COLUMN test_tree.tree_names IS '全节点名'; +COMMENT ON COLUMN test_tree.tree_name IS '节点名称'; +COMMENT ON COLUMN test_tree.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_tree.create_by IS '创建者'; +COMMENT ON COLUMN test_tree.create_date IS '创建时间'; +COMMENT ON COLUMN test_tree.update_by IS '更新者'; +COMMENT ON COLUMN test_tree.update_date IS '更新时间'; +COMMENT ON COLUMN test_tree.remarks IS '备注信息'; + + + diff --git a/web-fast/db/test.erm b/web-fast/db/test.erm new file mode 100644 index 00000000..04d70d57 --- /dev/null +++ b/web-fast/db/test.erm @@ -0,0 +1,3590 @@ + + + + true + 100 + A4 210 x 297 mm + 30 + 30 + 30 + 30 + + 0 + 1.0 + 0 + 0 + + 128 + 128 + 192 + + + 255 + 255 + 255 + + Segoe UI + 9 + + StandardSQL + false + + + 0 + true + 2 + 1 + 1 + false + true + false + false + + + db\test.sql + UTF-8 + CR+LF + false + 7be191506f9daa8070b3ac14921dffd44063d2bb + null + + true + false + true + false + true + false + false + false + false + false + false + false + false + false + false + true + false + true + false + false + + + + + null + db\test.xls + + + en + + true + true + true + + + + true + true + true + + + db\test.png + + true + true + + + + + + + false + + + + + 0 + + + + false + false + + + + + false + + + + + + -1 + -1 + Microsoft YaHei UI + 9 + 50 + 50 + + 255 + 255 + 255 + + + + false + 2016-12-25 17:25:00 + + Project Name + + + + Model Name + + + + Version + + + + Company + + + + Author + + + + + + + + + 7be191506f9daa8070b3ac14921dffd44063d2bb + Default + + + + + + 136ca02f1b3a96a8f2e242d5dd64d48f566143ef + 64 + null + false + null + false + false + false + + false + 租户代码 + 租户代码 + corp_code + varchar(n) + + + f116706ac00cd3a3ee88b2a88debf7ebc3eeb12d + 100 + null + false + null + false + false + false + + false + 租户名称 + 租户名称 + corp_name + nvarchar(n) + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + 64 + null + false + null + false + false + false + + false + + 创建者 + create_by + varchar(n) + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + null + null + false + null + false + false + false + + false + + 创建时间 + create_date + datetime + + + f01926071736b56b898949cc0720149c71504324 + null + null + false + null + false + false + false + + false + + 扩展 Date 1 + extend_d1 + datetime + + + 942700093ab61c3be0bdf6b23bcba210bcc30281 + null + null + false + null + false + false + false + + false + + 扩展 Date 2 + extend_d2 + datetime + + + f221902bf89fe94dece8ccf309f59cc2c479d63f + null + null + false + null + false + false + false + + false + + 扩展 Date 3 + extend_d3 + datetime + + + c8d21e24bc69aac295703b0bae56269035b729f0 + null + null + false + null + false + false + false + + false + + 扩展 Date 4 + extend_d4 + datetime + + + 4c0cc4ae32f8774cc319f516784430204aef0bdb + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 1 + extend_f1 + decimal(p,s) + + + 2e958c528620621985af4394590198feed57cdf9 + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 2 + extend_f2 + decimal(p,s) + + + 7c25ad75662553c7d4a58fa66eb50ca7c0ffee59 + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 3 + extend_f3 + decimal(p,s) + + + 1f81990c9694963f032c302d1834b972a6f2eb74 + 19 + 4 + false + null + false + false + false + + false + + 扩展 Float 4 + extend_f4 + decimal(p,s) + + + a1d747cd40768ac9f85176518ee48cb513bae110 + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 1 + extend_i1 + decimal(p) + + + a9f0e14d6691c397990abe4ef1ff21674dccf401 + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 2 + extend_i2 + decimal(p) + + + 2ce06c5cf87d93bb1e3f47268dbc679be4b6dd8d + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 3 + extend_i3 + decimal(p) + + + 53d8c730fcec69d341f44089817ae06eb4844278 + 19 + null + false + null + false + false + false + + false + + 扩展 Integer 4 + extend_i4 + decimal(p) + + + 80cd53da9d5a1b19676537e590e20fa2793e902c + 1000 + null + false + null + false + false + false + + false + + 扩展 JSON + extend_json + varchar(n) + + + ad6f9eff50476669df62b7601cbc3a2e0c905d36 + 500 + null + false + null + false + false + false + + false + + 扩展 String 1 + extend_s1 + nvarchar(n) + + + 3a24133d2be4831e99d1319983e5393bcf964ff9 + 500 + null + false + null + false + false + false + + false + + 扩展 String 2 + extend_s2 + nvarchar(n) + + + 40e1afbbad28d28e371dd1ab77fb56640b1cb66b + 500 + null + false + null + false + false + false + + false + + 扩展 String 3 + extend_s3 + nvarchar(n) + + + a2d6b5a494fc1a3d29360d922296521c6640856b + 500 + null + false + null + false + false + false + + false + + 扩展 String 4 + extend_s4 + nvarchar(n) + + + 29f701cc6a308fbfc5b12b80fee621ceeb231dcc + 500 + null + false + null + false + false + false + + false + + 扩展 String 5 + extend_s5 + nvarchar(n) + + + c9a37a7b6a5451930ca63e36814767f742cd1393 + 500 + null + false + null + false + false + false + + false + + 扩展 String 6 + extend_s6 + nvarchar(n) + + + 8c26203d310a4e602cf0c0fc8a7b2c818219c1dc + 500 + null + false + null + false + false + false + + false + + 扩展 String 7 + extend_s7 + nvarchar(n) + + + 54448f19b0f5d1630bf29f9f99787802c36ebddb + 500 + null + false + null + false + false + false + + false + + 扩展 String 8 + extend_s8 + nvarchar(n) + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 64 + null + false + null + false + false + false + + false + + 编号 + id + varchar(n) + + + b18ce64a2a72d00b26515583d8bbfea282f30ea8 + 64 + null + false + null + false + false + false + + false + + 父级编号 + parent_code + varchar(n) + + + 5887f9db78a9ebc7b23b9a163c6f68100257c0e5 + 767 + null + false + null + false + false + false + + false + + 所有父级编号 + parent_codes + varchar(n) + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + 500 + null + false + null + false + false + false + + false + + 备注信息 + remarks + nvarchar(n) + + + ba0fb53af3ccc8b0e5d73baa58ec27fbb7973097 + 1 + null + false + null + false + false + false + + false + + 状态(0正常 1删除 2停用 3冻结 4审核 5驳回 9草稿) + status + character(n) + + + 17718c2364a2368c2072da279c927d7ad3bfcf08 + 1 + null + false + null + false + false + false + + false + + 状态(0正常 1删除 2停用) + status + character(n) + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + 64 + null + false + null + false + false + false + + false + + 区域选择 + test_area_code + varchar(n) + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + 100 + null + false + null + false + false + false + + false + + 区域名称 + test_area_name + nvarchar(n) + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 200 + null + false + null + false + false + false + + false + + 复选框 + test_checkbox + varchar(n) + + + d829e707316a49d39e5a11da5f5d36030a856b86 + 64 + null + false + null + false + false + false + + false + + 父表主键 + test_data_id + varchar(n) + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + null + null + false + null + false + false + false + + false + + 日期选择 + test_date + datetime + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + null + null + false + null + false + false + false + + false + + 日期时间 + test_datetime + datetime + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 200 + null + false + null + false + false + false + + false + + 单行文本 + test_input + varchar(n) + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 64 + null + false + null + false + false + false + + false + + 机构选择 + test_office_code + varchar(n) + + + 791691b791efedc2d14867a152b4de58f4567326 + 10 + null + false + null + false + false + false + + false + + 单选框 + test_radio + varchar(n) + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 10 + null + false + null + false + false + false + + false + + 下拉框 + test_select + varchar(n) + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + 200 + null + false + null + false + false + false + + false + + 下拉多选 + test_select_multiple + varchar(n) + + + ae103dc1fb50094552e56afd72015481271913db + null + null + false + null + false + false + false + + false + + 排序号 + test_sort + integer + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 200 + null + false + null + false + false + false + + false + + 多行文本 + test_textarea + nvarchar(n) + + + 2eda719a62fb7e1d3face62555046d938abddda9 + 64 + null + false + null + false + false + false + + false + + 用户选择 + test_user_code + varchar(n) + + + 70e9482ae432d16e734a730100e366ddab33564c + 64 + null + false + null + false + false + false + + false + + 节点编码 + tree_code + varchar(n) + + + 40b63ab3e485fd55370d6d04b063c4397483ebc1 + 1 + null + false + null + false + false + false + + false + + 是否最末级 + tree_leaf + character(n) + + + 3b9c3307b7140f27edeb47ffe307a662b2856627 + 4 + null + false + null + false + false + false + + false + + 层次级别 + tree_level + decimal(p) + + + 5356a60d0801c47941dd2fb4565cf785bb58e2d3 + 200 + null + false + null + false + false + false + + false + + 节点名称 + tree_name + nvarchar(n) + + + bf5e60dee567b3ed0f12e8f3ffa1f74e43012b3a + 767 + null + false + null + false + false + false + + false + + 全节点名 + tree_names + varchar(n) + + + 16c9c333062ea3614d2e044803b872676c8a5377 + 10 + null + false + null + false + false + false + + false + + 排序号(升序) + tree_sort + decimal(p) + + + a886757c87fb1e04c5f84b6a802e129baaec2ca6 + 767 + null + false + null + false + false + false + + false + + 所有排序号 + tree_sorts + varchar(n) + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + 64 + null + false + null + false + false + false + + false + + 更新者 + update_by + varchar(n) + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + null + null + false + null + false + false + false + + false + + 更新时间 + update_date + datetime + + + + + + + e553474c37270813e70025e433a4cf8a64653e13 + 438 + 387 + Segoe UI + 9 + 864 + 36 + + 128 + 128 + 192 + + + + test_tree + 测试树表 + + + + + + + 70e9482ae432d16e734a730100e366ddab33564c + 7e417ee9d0dd69c767a5853922621946ed4fb2d8 + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + a535b6c506004a7fdf4d48984c9ff2cfa59c157a + + 5356a60d0801c47941dd2fb4565cf785bb58e2d3 + 39f501890586173d229e83610cfbfaa6e3a85374 + + + + + nvarchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + + + + + + + + +
+ + 5435ef11ea53f170fe3491b199c113e47932e175 + 401 + 320 + Segoe UI + 9 + 36 + 36 + + 128 + 128 + 192 + + + + test_data + 测试数据 + + + + + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + d82778c36626013cd39fd790da6f55a9762f0c76 + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 3e14b40dc07c134329a40752973acfad2ffdc48b + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 8050d948828b16267482e9e3716219321f206b81 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 3664605e054c39531ca8e91aa4463c955a993357 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + f7b189ecdc92c78bfaae9c736318ab6a5aedd396 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 791691b791efedc2d14867a152b4de58f4567326 + 6e4837ab55b592669ccc7ebfc8b1ed96a00607b3 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 9fb81bdc12ed017f62e9dd4529025e536eff7f08 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + 9d9478798ed2766a81b0e5a8a022eb89d9c5cc34 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + c131dc5cb7ce6f1aa5e8d5f86f2002c8ae1bb8f6 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2eda719a62fb7e1d3face62555046d938abddda9 + cfe3c330968a9a824c2cf933b227887d3e9615ac + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 23041cb30875514136904ea11043c7ea1924f048 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + b6d5dc8745c0fa484ed6f14e90a42282ca1b285d + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + d244401ff7302bb5b75092016531952d093b238b + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + + + + + + + + +
+ + 5a836e654b7b7d19f102e87336fefa079d98a2e6 + 438 + 346 + Segoe UI + 9 + 468 + 36 + + 128 + 128 + 192 + + + + test_data_child + 测试数据子表 + + + + + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 34477707bcf8a7810e12e9565aff085f6fb1e0ad + + + + + varchar(n) + + + false + false + true + true + false + + + + + + + + + + + false + false + false + + + 0 + + + + ae103dc1fb50094552e56afd72015481271913db + ec8a047dffe3cf2e4d95ba3e26c3bac0382d95c9 + + + + + integer + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + d829e707316a49d39e5a11da5f5d36030a856b86 + b095c44611ed08156277676d9a3a0ce52b9b05ef + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + ac02f2d1fff63fa66db583735eb1c8e9b466872f + 78715aa66a10a9b190ad69b8ed792e9a2f4946e3 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2fed92437d28f1427e913aba1251fe0807c7b209 + 693f8af2fe6cf45255b6f2bc7e9077f3630c3dd8 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 6697b12cf2f6d7135570c2a581212ee067c13206 + 04216c384533b70b8e86b571fa2beef7157bab5a + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 68b9381c1fb6668186fef70f52fc0c14b1bd6f1c + 0b6f63094be90aa8674460cce26be10327827ceb + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 791691b791efedc2d14867a152b4de58f4567326 + 363e8cfcf4a6b228e656decadacba29280906555 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + cdc46f802299958a2b3140200410caf5cbeb8a27 + 7875aa5fee3d6f9587180fb8fce9343a56cdc34e + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a27ebfd109532e2f551b101a0c78b3f50a3d58dd + 61c49a2f7807c55c8f85110c30889d5b403e4b04 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 95ec23c1b2704817cca94d169aed5e11deb0adbb + b91171b99f3628aadb0e6986fbfa30cc547b280e + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2eda719a62fb7e1d3face62555046d938abddda9 + 9f33d190101e56f93f5ece0fd7c5cdda3e704b4c + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + e2270df5e0974bf471fdfe36e29bc9a8aa1774cb + 16121b5aa08fc170883408ec2d0487281a132d9d + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 23b25e48c87be0e4f3952f7a8330594e9d511a4e + 1afc7f146271f5c90ea811aa24c08ce25d12552e + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8bc627205b6e55931d09079fcd07bfacbbd38f41 + 343f0db997b913f299b0496c4306d3617ad708de + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + + + + + +
+
+ + + 845c82ebd869d5620b1ef2c2b6f438b11a045082 + BaseEntity + + + 869fc70cf3a4e92e8056b40814df8e03f9f9efde + 02ecedc0de5850cba25bc91919ed39d414b74111 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + ba0fb53af3ccc8b0e5d73baa58ec27fbb7973097 + 2fe6a36385238c1b21c76deae00a7afa00ff5538 + + + + + character(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + ea920cba2fe0eaee64a2310ece7cda4b198b37ec + BaseEntityCorp + + + 136ca02f1b3a96a8f2e242d5dd64d48f566143ef + b8ea4b73d6d32a222e5abfd453287575ae518480 + + + + + varchar(n) + + 0 + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f116706ac00cd3a3ee88b2a88debf7ebc3eeb12d + b94f5fe344185c40739cf93d1090686001bb11e0 + + + + + nvarchar(n) + + JeeSite + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 35ae805d1da92afdb99b2fe8c536d1649356fccd + DataEntity + + + 17718c2364a2368c2072da279c927d7ad3bfcf08 + f0036584bd8711715579d21994a0105935605a7e + + + + + character(n) + + 0 + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + c391a15752a8eb58bc558a39d1b431f7ee125e0e + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + e2e82ba86e15fd67397355e711255b1625078ae1 + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + fd0546fc2d4e01c35dcbc23913add68a99fabd73 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + f8ea4fc4a778a0b94398a661a1ed8608f0e8d28d + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + 69e01b6d4f42df40a09540ef4ba10ed8e006abaa + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 85024a2953cf3e3c9c1cce49b2351853ab0d125b + DataEntityNoStatus + + + 1a3b3f8bccfce8894d117d6bdb0a6b104bfb80ef + e5355faba5ec3c9128507dd4c48ea9230631cf83 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + dba1aec0c72d79ea73ed4ebde07696cf4df174b7 + 6bed374c39d181003a4f92d76d79a4119176ba0c + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2c6b290f30c6f9e100f6c77eab0cba7bb3386768 + f9db19bb567760bbdd554d75bbfdc891c89f9da9 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f0bdbc4002f4a1b7fb7c5026bc21a7689c549728 + ee78b079f7d319bf8119fd01439cd97424ff49fa + + + + + datetime + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8f7d3761c17a1b8632d186a3c67cb08dca18c498 + f7b88ecec0ef386bb384c228842a7587432112fb + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + 118dab95fc1f792cd468b9f66af2d4fabd98c39b + ExtendEntity + + + ad6f9eff50476669df62b7601cbc3a2e0c905d36 + 6ccadddab6ce48441ca7abd798cda6f3debf4a0c + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 3a24133d2be4831e99d1319983e5393bcf964ff9 + 93ab0ba3b47b01934614dbd3e572358c9f99e6ea + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 40e1afbbad28d28e371dd1ab77fb56640b1cb66b + a78c7961910a5e697027d1a3530b1afaa8ea8c94 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a2d6b5a494fc1a3d29360d922296521c6640856b + 40085364ec7a58653e96f8659aadd258d7556bc7 + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 29f701cc6a308fbfc5b12b80fee621ceeb231dcc + 9787d7fe93ee31c5b4979fd620ff6e4b2777eccf + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + c9a37a7b6a5451930ca63e36814767f742cd1393 + 95c55b81b7e9e1a9bb01aa3d88fb90c648641c4e + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 8c26203d310a4e602cf0c0fc8a7b2c818219c1dc + 16f44dfc7964796f109293bc49afd58dcb4eec1f + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 54448f19b0f5d1630bf29f9f99787802c36ebddb + 39b1dffa083f74afc30df621845cf7f0ed71394f + + + + + nvarchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a1d747cd40768ac9f85176518ee48cb513bae110 + 7584cc6360ae7edc99e1f619042eba5865b2c4c7 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a9f0e14d6691c397990abe4ef1ff21674dccf401 + f0b5383e05c6b3f6e5f65b33b33009826c83d014 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2ce06c5cf87d93bb1e3f47268dbc679be4b6dd8d + 260d5f31009fff18000d1e64f4f877926e621306 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 53d8c730fcec69d341f44089817ae06eb4844278 + a83144f40e7ae64e46a4b4ed651379774a953b17 + + + + + decimal(p) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 4c0cc4ae32f8774cc319f516784430204aef0bdb + 2a5203a275171a250870cf6cb224a910aa9354ec + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 2e958c528620621985af4394590198feed57cdf9 + 3ef5bd65a7dcd74b9a9d8a292ec395f66b7de32b + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 7c25ad75662553c7d4a58fa66eb50ca7c0ffee59 + 01d0849bdda56a8d8f24befdadc3fc9b007ae92b + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 1f81990c9694963f032c302d1834b972a6f2eb74 + 1c8ed63d72f40f0fe2f05815675771bdf3f824f8 + + + + + decimal(p,s) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f01926071736b56b898949cc0720149c71504324 + 2b49e875138bfb329aaa352629650b7881435123 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 942700093ab61c3be0bdf6b23bcba210bcc30281 + 5c6ec16226d85b0411b7077cb9a6e0c7aa8d74d1 + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + f221902bf89fe94dece8ccf309f59cc2c479d63f + d92b8f7fa7a2be49c7f00c447a603b136e84261d + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + c8d21e24bc69aac295703b0bae56269035b729f0 + 095a76f07a3cd2bdc6cc442757c11012e1974f4a + + + + + datetime + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 80cd53da9d5a1b19676537e590e20fa2793e902c + 42c5d8f490f69b93e77698efa030ca23988ae696 + + + + + varchar(n) + + + false + false + false + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + a535b6c506004a7fdf4d48984c9ff2cfa59c157a + TreeEntity + + + b18ce64a2a72d00b26515583d8bbfea282f30ea8 + 394369b90c0a5b6efeed3cf823c642605d7a1653 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 5887f9db78a9ebc7b23b9a163c6f68100257c0e5 + e8d877396943acfec73023dba2c1c6e3d7802d62 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 16c9c333062ea3614d2e044803b872676c8a5377 + 23f973124aedd0244533f4e7b3b103c548b966be + + + + + decimal(p) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + a886757c87fb1e04c5f84b6a802e129baaec2ca6 + 984d5eac2b3221118a61655e4a5a49c78e0f0151 + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 40b63ab3e485fd55370d6d04b063c4397483ebc1 + b2f246a3f0ade317eaa9915e2fd539abae5a5ec8 + + + + + character(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + 3b9c3307b7140f27edeb47ffe307a662b2856627 + f5a9968479420f08da2e98d21136b3ed4b6e396f + + + + + decimal(p) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + bf5e60dee567b3ed0f12e8f3ffa1f74e43012b3a + 618194ebfc8c6c42efcef3a4af0b8054f6af209b + + + + + varchar(n) + + + false + false + true + false + false + + + + + + + + + + + false + false + false + + + 0 + + + + + + + + + + + + + +
diff --git a/web-fast/pom.xml b/web-fast/pom.xml new file mode 100644 index 00000000..29fa10eb --- /dev/null +++ b/web-fast/pom.xml @@ -0,0 +1,187 @@ + + + 4.0.0 + + + com.jeesite + jeesite-parent + 5.0.2-SNAPSHOT + ../parent/pom.xml + + + jeesite-web-fast + jar + + Web 服务,也可为分离端提供接口服务 + + JeeSite Web Fast + http://jeesite.com + 2013-Now + + + + web + com.jeesite.modules.FastApplication + + + false + false + + + http://192.168.56.102:2375 + thinkgem/jeesite-web:latest + 8980:8980 + + + + + + + + com.h2database + h2 + runtime + + + + + com.jeesite + jeesite-module-core + ${project.parent.version} + + + + + com.jeesite + jeesite-module-swagger + ${project.parent.version} + + + + + com.jeesite + jeesite-module-cms + ${project.parent.version} + + + + + com.jeesite + jeesite-module-app + ${project.parent.version} + + + + + + + + + + + + ${finalName} + ${project.basedir}/src/main/webapp/WEB-INF/classes/ + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + + + + org.apache.maven.plugins + maven-war-plugin + + + ${project.build.directory}/${project.artifactId} + ${finalName} + + false + + + + + + + org.apache.maven.plugins + maven-eclipse-plugin + + ${eclipse-plugin-download-sources} + ${eclipse-plugin-download-javadocs} + ${finalName} + 2.0 + 6.0 + + + + + + + + + thinkgem + WangZhen + thinkgem at 163.com + Project lead + +8 + + + + + JeeSite + http://jeesite.com + + + + + aliyun-repos + https://maven.aliyun.com/repository/public + true + false + + + jeesite-repos + http://maven.jeesite.net/repository/maven-public + + + + + aliyun-repos + https://maven.aliyun.com/repository/public + true + false + + + jeesite-repos + http://maven.jeesite.net/repository/maven-public + + + + diff --git a/web-fast/src/main/java/com/jeesite/modules/FastApplication.java b/web-fast/src/main/java/com/jeesite/modules/FastApplication.java new file mode 100644 index 00000000..1957f9dc --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/FastApplication.java @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules; + +import com.jeesite.common.config.Global; +import com.jeesite.common.web.BaseController; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.net.UnknownHostException; + +/** + * Application + * @author ThinkGem + * @version 2018-10-13 + */ +@SpringBootApplication +public class FastApplication extends SpringBootServletInitializer { + + private static Logger logger = LoggerFactory.getLogger(FastApplication.class); + + public static void setJeeSiteInitDataProperty() { + // 删除这个设置,启动系统时,将不会进行检测初始化数据库 + System.setProperty("jeesite.initdata", "true"); + } + + public static void main(String[] args) throws UnknownHostException { + FastApplication.setJeeSiteInitDataProperty(); + SpringApplication.run(FastApplication.class, args); + logger.info( + "\r\n\r\n==============================================================\r\n" + + "\r\n 启动完成,访问地址:http://127.0.0.1:" + + Global.getProperty("server.port") + "/" + + Global.getProperty("server.servlet.context-path") + + "\r\n\r\n 默认用户名: system 密码: admin" + + "\r\n\r\n==============================================================\r\n"); + } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { + this.setRegisterErrorPageFilter(false); // 错误页面有容器来处理,而不是SpringBoot + FastApplication.setJeeSiteInitDataProperty(); + return builder.sources(FastApplication.class); + } + + @Controller + public class JeeSiteController extends BaseController { + + @RequestMapping(value = "/js/**") + public String login() { + return REDIRECT + adminPath + "/login"; + } + + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/dao/TestDataChildDao.java b/web-fast/src/main/java/com/jeesite/modules/test/dao/TestDataChildDao.java new file mode 100644 index 00000000..7b96dda7 --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/dao/TestDataChildDao.java @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.dao; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.test.entity.TestDataChild; + +/** + * 测试数据DAO接口 + * @author ThinkGem + * @version 2018-04-22 + */ +@MyBatisDao//(dataSourceName="ds2") +public interface TestDataChildDao extends CrudDao { + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/dao/TestDataDao.java b/web-fast/src/main/java/com/jeesite/modules/test/dao/TestDataDao.java new file mode 100644 index 00000000..93ba7f35 --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/dao/TestDataDao.java @@ -0,0 +1,27 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.dao; + +import java.util.List; +import java.util.Map; + +import com.jeesite.common.dao.CrudDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.test.entity.TestData; + +/** + * 测试数据DAO接口 + * @author ThinkGem + * @version 2018-04-22 + */ +@MyBatisDao +public interface TestDataDao extends CrudDao { + + /** + * 演示Map参数和返回值,支持分页 + */ + public List> findListForMap(Map params); + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/dao/TestTreeDao.java b/web-fast/src/main/java/com/jeesite/modules/test/dao/TestTreeDao.java new file mode 100644 index 00000000..7648d4cd --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/dao/TestTreeDao.java @@ -0,0 +1,19 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.dao; + +import com.jeesite.common.dao.TreeDao; +import com.jeesite.common.mybatis.annotation.MyBatisDao; +import com.jeesite.modules.test.entity.TestTree; + +/** + * 测试树表DAO接口 + * @author ThinkGem + * @version 2018-04-22 + */ +@MyBatisDao +public interface TestTreeDao extends TreeDao { + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/db/InitTestData.java b/web-fast/src/main/java/com/jeesite/modules/test/db/InitTestData.java new file mode 100644 index 00000000..376844b7 --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/db/InitTestData.java @@ -0,0 +1,182 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.db; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +import com.jeesite.common.config.Global; +import com.jeesite.common.lang.StringUtils; +import com.jeesite.common.tests.BaseInitDataTests; +import com.jeesite.modules.gen.entity.GenTable; +import com.jeesite.modules.gen.entity.GenTableColumn; +import com.jeesite.modules.gen.service.GenTableService; +import com.jeesite.modules.gen.utils.GenUtils; + +/** + * 初始化核心表数据 + * @author ThinkGem + * @version 2020-5-26 + */ +@Component +@ConditionalOnProperty(name="jeesite.initdata", havingValue="true", matchIfMissing=false) +public class InitTestData extends BaseInitDataTests { + + @Override + public boolean initData() throws Exception { + if (GenUtils.isTableExists("test_data")) { + return true; // 如果表已存在,则无需初始化 + } + runCreateScript("test.sql"); + initGenDemoData(); + return true; + } + + @Autowired + private GenTableService genTableService; + /** + * 代码生成测试数据 + */ + public void initGenDemoData() throws Exception{ + if (!checkTable(GenTable.class)) { + return; + } + if (!checkTable(GenTableColumn.class)) { + return; + } + initGenTestData(); + initGenTreeData(); + } + /** + * 代码生成测试数据 + */ + private void initGenTestData() throws Exception{ + GenTable genTable = new GenTable(); + genTable.setIsNewRecord(true); + genTable.setTableName("test_data"); + genTable = genTableService.getFromDb(genTable); + genTable.setIsNewRecord(true); + genTable.setClassName("TestData"); + genTable.setFunctionAuthor("ThinkGem"); + genTable.setTplCategory("crud"); + genTable.setPackageName("com.jeesite.modules"); + genTable.setModuleName("test"); + genTable.setSubModuleName(""); + genTable.setFunctionName("测试数据"); + genTable.setFunctionNameSimple("数据"); + genTable.getOptionMap().put("isHaveDisableEnable", Global.YES); + genTable.getOptionMap().put("isHaveDelete", Global.YES); + genTable.getOptionMap().put("isFileUpload", Global.YES); + genTable.getOptionMap().put("isImageUpload", Global.YES); + initGenTableColumn(genTable); + genTableService.save(genTable); + // 子表 + GenTable genTableChild = new GenTable(); + genTableChild.setIsNewRecord(true); + genTableChild.setTableName("test_data_child"); + genTableChild = genTableService.getFromDb(genTableChild); + genTableChild.setIsNewRecord(true); + genTableChild.setClassName("TestDataChild"); + genTableChild.setFunctionAuthor("ThinkGem"); + genTableChild.setTplCategory("crud"); + genTableChild.setPackageName("com.jeesite.modules"); + genTableChild.setModuleName("test"); + genTableChild.setSubModuleName(""); + genTableChild.setFunctionName("测试子表"); + genTableChild.setFunctionNameSimple("数据"); + genTableChild.setParentTableName("test_data"); + genTableChild.setParentTableFkName("test_data_id"); + initGenTableColumn(genTableChild); + genTableService.save(genTableChild); + } + + /** + * 代码生成测试数据(列初始化) + */ + private void initGenTableColumn(GenTable genTable){ + for(GenTableColumn column : genTable.getColumnList()){ + if ("test_input".equals(column.getColumnName()) + || "test_textarea".equals(column.getColumnName()) + || "test_select".equals(column.getColumnName()) + || "test_select_multiple".equals(column.getColumnName()) + || "test_checkbox".equals(column.getColumnName()) + || "test_radio".equals(column.getColumnName()) + || "test_date".equals(column.getColumnName()) + || "test_datetime".equals(column.getColumnName()) + ){ + column.setShowType(StringUtils.substringAfter( + column.getColumnName(), "test_")); + if ("test_input".equals(column.getColumnName()) + ){ + column.setQueryType("LIKE"); + } + else if ("test_textarea".equals(column.getColumnName()) + ){ + column.setQueryType("LIKE"); + column.getOptionMap().put("isNewLine", Global.YES); +// column.getOptionMap().put("gridRowCol", "12/2/10"); + } + else if ("test_select".equals(column.getColumnName()) + || "test_select_multiple".equals(column.getColumnName()) + || "test_radio".equals(column.getColumnName()) + || "test_checkbox".equals(column.getColumnName()) + ){ + column.getOptionMap().put("dictType", "sys_menu_type"); + column.getOptionMap().put("dictName", "sys_menu_type"); + } + else if ("test_date".equals(column.getColumnName()) + || "test_datetime".equals(column.getColumnName()) + ){ + column.setQueryType("BETWEEN"); + } + }else if ("test_user_code".equals(column.getColumnName())){ + column.setAttrType("com.jeesite.modules.sys.entity.User"); + column.setFullAttrName("testUser"); + column.setShowType("userselect"); + }else if ("test_office_code".equals(column.getColumnName())){ + column.setAttrType("com.jeesite.modules.sys.entity.Office"); + column.setFullAttrName("testOffice"); + column.setShowType("officeselect"); + }else if ("test_area_code".equals(column.getColumnName())){ + column.setFullAttrName("testAreaCode|testAreaName"); + column.setShowType("areaselect"); + }else if ("test_area_name".equals(column.getColumnName())){ + column.setIsEdit(Global.NO); + column.setIsQuery(Global.NO); + }else if ("test_data_id".equals(column.getColumnName())){ + column.setFullAttrName("testData"); + } + } + } + + /** + * 代码生成树表测试数据 + */ + private void initGenTreeData() throws Exception{ + GenTable genTable = new GenTable(); + genTable.setIsNewRecord(true); + genTable.setTableName("test_tree"); + genTable = genTableService.getFromDb(genTable); + genTable.setIsNewRecord(true); + genTable.setClassName("TestTree"); + genTable.setFunctionAuthor("ThinkGem"); + genTable.setTplCategory("treeGrid"); + genTable.setPackageName("com.jeesite.modules"); + genTable.setModuleName("test"); + genTable.setSubModuleName(""); + genTable.setFunctionName("测试树表"); + genTable.setFunctionNameSimple("数据"); + genTable.getOptionMap().put("isHaveDisableEnable", Global.YES); + genTable.getOptionMap().put("isHaveDelete", Global.YES); + genTable.getOptionMap().put("isFileUpload", Global.YES); + genTable.getOptionMap().put("isImageUpload", Global.YES); + genTable.getOptionMap().put("treeViewCode", "tree_code"); + genTable.getOptionMap().put("treeViewName", "tree_name"); + initGenTableColumn(genTable); + genTableService.save(genTable); + } + +} diff --git a/web-fast/src/main/java/com/jeesite/modules/test/entity/TestData.java b/web-fast/src/main/java/com/jeesite/modules/test/entity/TestData.java new file mode 100644 index 00000000..dbd07330 --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/entity/TestData.java @@ -0,0 +1,226 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.entity; + +import javax.validation.constraints.Size; +import java.util.Date; +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jeesite.modules.sys.entity.User; +import com.jeesite.modules.sys.entity.Office; +import java.util.List; +import com.jeesite.common.collect.ListUtils; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; + +/** + * 测试数据Entity + * @author ThinkGem + * @version 2018-04-22 + */ +@Table(name="test_data", alias="a", columns={ + @Column(name="id", attrName="id", label="编号", isPK=true), + @Column(name="test_input", attrName="testInput", label="单行文本", queryType=QueryType.LIKE), + @Column(name="test_textarea", attrName="testTextarea", label="多行文本", queryType=QueryType.LIKE), + @Column(name="test_select", attrName="testSelect", label="下拉框"), + @Column(name="test_select_multiple", attrName="testSelectMultiple", label="下拉多选"), + @Column(name="test_radio", attrName="testRadio", label="单选框"), + @Column(name="test_checkbox", attrName="testCheckbox", label="复选框"), + @Column(name="test_date", attrName="testDate", label="日期选择", isUpdateForce=true/*是否强制更新(当调用update并且该属性为空的时候,允许更新为空)*/), + @Column(name="test_datetime", attrName="testDatetime", label="日期时间", isUpdateForce=true), + @Column(name="test_user_code", attrName="testUser.userCode", label="用户选择"), + @Column(name="test_office_code", attrName="testOffice.officeCode", label="机构选择"), + @Column(name="test_area_code", attrName="testAreaCode", label="区域选择"), + @Column(name="test_area_name", attrName="testAreaName", label="区域名称"), + @Column(includeEntity=DataEntity.class), + }, joinTable={ + @JoinTable(type=Type.LEFT_JOIN, entity=User.class, attrName="testUser", alias="u10", + on="u10.user_code = a.test_user_code", columns={ + @Column(name="user_code", label="用户编码", isPK=true), + @Column(name="user_name", label="用户名称", isQuery=false), + }), + @JoinTable(type=Type.LEFT_JOIN, entity=Office.class, attrName="testOffice", alias="u11", + on="u11.office_code = a.test_office_code", columns={ + @Column(name="office_code", label="机构编码", isPK=true), + @Column(name="office_name", label="机构名称", isQuery=false), + }), + }, orderBy="a.update_date DESC" +) +public class TestData extends DataEntity { + + private static final long serialVersionUID = 1L; + private String testInput; // 单行文本 + private String testTextarea; // 多行文本 + private String testSelect; // 下拉框 + private String testSelectMultiple; // 下拉多选 + private String testRadio; // 单选框 + private String testCheckbox; // 复选框 + private Date testDate; // 日期选择 + private Date testDatetime; // 日期时间 + private User testUser; // 用户选择 + private Office testOffice; // 机构选择 + private String testAreaCode; // 区域选择 + private String testAreaName; // 区域名称 + private List testDataChildList = ListUtils.newArrayList(); // 子表列表 + + public TestData() { + this(null); + } + + public TestData(String id){ + super(id); + } + + @Size(min=0, max=200, message="单行文本长度不能超过 200 个字符") + public String getTestInput() { + return testInput; + } + + public void setTestInput(String testInput) { + this.testInput = testInput; + } + + @Size(min=0, max=200, message="多行文本长度不能超过 200 个字符") + public String getTestTextarea() { + return testTextarea; + } + + public void setTestTextarea(String testTextarea) { + this.testTextarea = testTextarea; + } + + @Size(min=0, max=10, message="下拉框长度不能超过 10 个字符") + public String getTestSelect() { + return testSelect; + } + + public void setTestSelect(String testSelect) { + this.testSelect = testSelect; + } + + @Size(min=0, max=200, message="下拉多选长度不能超过 200 个字符") + public String getTestSelectMultiple() { + return testSelectMultiple; + } + + public void setTestSelectMultiple(String testSelectMultiple) { + this.testSelectMultiple = testSelectMultiple; + } + + @Size(min=0, max=10, message="单选框长度不能超过 10 个字符") + public String getTestRadio() { + return testRadio; + } + + public void setTestRadio(String testRadio) { + this.testRadio = testRadio; + } + + @Size(min=0, max=200, message="复选框长度不能超过 200 个字符") + public String getTestCheckbox() { + return testCheckbox; + } + + public void setTestCheckbox(String testCheckbox) { + this.testCheckbox = testCheckbox; + } + + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getTestDate() { + return testDate; + } + + public void setTestDate(Date testDate) { + this.testDate = testDate; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + public Date getTestDatetime() { + return testDatetime; + } + + public void setTestDatetime(Date testDatetime) { + this.testDatetime = testDatetime; + } + + public User getTestUser() { + return testUser; + } + + public void setTestUser(User testUser) { + this.testUser = testUser; + } + + public Office getTestOffice() { + return testOffice; + } + + public void setTestOffice(Office testOffice) { + this.testOffice = testOffice; + } + + @Size(min=0, max=64, message="区域选择长度不能超过 64 个字符") + public String getTestAreaCode() { + return testAreaCode; + } + + public void setTestAreaCode(String testAreaCode) { + this.testAreaCode = testAreaCode; + } + + @Size(min=0, max=100, message="区域名称长度不能超过 100 个字符") + public String getTestAreaName() { + return testAreaName; + } + + public void setTestAreaName(String testAreaName) { + this.testAreaName = testAreaName; + } + + public Date getTestDate_gte() { + return sqlMap.getWhere().getValue("test_date", QueryType.GTE); + } + + public void setTestDate_gte(Date testDate) { + sqlMap.getWhere().and("test_date", QueryType.GTE, testDate); + } + + public Date getTestDate_lte() { + return sqlMap.getWhere().getValue("test_date", QueryType.LTE); + } + + public void setTestDate_lte(Date testDate) { + sqlMap.getWhere().and("test_date", QueryType.LTE, testDate); + } + + public Date getTestDatetime_gte() { + return sqlMap.getWhere().getValue("test_datetime", QueryType.GTE); + } + + public void setTestDatetime_gte(Date testDatetime) { + sqlMap.getWhere().and("test_datetime", QueryType.GTE, testDatetime); + } + + public Date getTestDatetime_lte() { + return sqlMap.getWhere().getValue("test_datetime", QueryType.LTE); + } + + public void setTestDatetime_lte(Date testDatetime) { + sqlMap.getWhere().and("test_datetime", QueryType.LTE, testDatetime); + } + + public List getTestDataChildList() { + return testDataChildList; + } + + public void setTestDataChildList(List testDataChildList) { + this.testDataChildList = testDataChildList; + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/entity/TestDataChild.java b/web-fast/src/main/java/com/jeesite/modules/test/entity/TestDataChild.java new file mode 100644 index 00000000..4a83a789 --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/entity/TestDataChild.java @@ -0,0 +1,236 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.entity; + +import javax.validation.constraints.Size; +import java.util.Date; +import com.jeesite.common.mybatis.annotation.JoinTable; +import com.jeesite.common.mybatis.annotation.JoinTable.Type; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jeesite.modules.sys.entity.User; +import com.jeesite.modules.sys.entity.Office; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; + +/** + * 测试数据Entity + * @author ThinkGem + * @version 2018-04-22 + */ +@Table(name="test_data_child", alias="a", columns={ + @Column(name="id", attrName="id", label="编号", isPK=true), + @Column(name="test_sort", attrName="testSort", label="排序号"), + @Column(name="test_data_id", attrName="testData.id", label="父表主键"), + @Column(name="test_input", attrName="testInput", label="单行文本", queryType=QueryType.LIKE), + @Column(name="test_textarea", attrName="testTextarea", label="多行文本", queryType=QueryType.LIKE), + @Column(name="test_select", attrName="testSelect", label="下拉框"), + @Column(name="test_select_multiple", attrName="testSelectMultiple", label="下拉多选"), + @Column(name="test_radio", attrName="testRadio", label="单选框"), + @Column(name="test_checkbox", attrName="testCheckbox", label="复选框"), + @Column(name="test_date", attrName="testDate", label="日期选择", isUpdateForce=true), + @Column(name="test_datetime", attrName="testDatetime", label="日期时间", isUpdateForce=true), + @Column(name="test_user_code", attrName="testUser.userCode", label="用户选择"), + @Column(name="test_office_code", attrName="testOffice.officeCode", label="机构选择"), + @Column(name="test_area_code", attrName="testAreaCode", label="区域选择"), + @Column(name="test_area_name", attrName="testAreaName", label="区域名称", isQuery=false), + }, joinTable={ + @JoinTable(type=Type.LEFT_JOIN, entity=User.class, attrName="testUser", alias="u12", + on="u12.user_code = a.test_user_code", columns={ + @Column(name="user_code", label="用户编码", isPK=true), + @Column(name="user_name", label="用户名称", isQuery=false), + }), + @JoinTable(type=Type.LEFT_JOIN, entity=Office.class, attrName="testOffice", alias="u13", + on="u13.office_code = a.test_office_code", columns={ + @Column(name="office_code", label="机构编码", isPK=true), + @Column(name="office_name", label="机构名称", isQuery=false), + }), + }, orderBy="a.id ASC" +) +public class TestDataChild extends DataEntity { + + private static final long serialVersionUID = 1L; + private Long testSort; // 排序号 + private TestData testData; // 父表主键 父类 + private String testInput; // 单行文本 + private String testTextarea; // 多行文本 + private String testSelect; // 下拉框 + private String testSelectMultiple; // 下拉多选 + private String testRadio; // 单选框 + private String testCheckbox; // 复选框 + private Date testDate; // 日期选择 + private Date testDatetime; // 日期时间 + private User testUser; // 用户选择 + private Office testOffice; // 机构选择 + private String testAreaCode; // 区域选择 + private String testAreaName; // 区域名称 + + public TestDataChild() { + this(null); + } + + + public TestDataChild(TestData testData){ + this.testData = testData; + } + + public Long getTestSort() { + return testSort; + } + + public void setTestSort(Long testSort) { + this.testSort = testSort; + } + + @Size(min=0, max=64, message="父表主键长度不能超过 64 个字符") + public TestData getTestData() { + return testData; + } + + public void setTestData(TestData testData) { + this.testData = testData; + } + + @Size(min=0, max=200, message="单行文本长度不能超过 200 个字符") + public String getTestInput() { + return testInput; + } + + public void setTestInput(String testInput) { + this.testInput = testInput; + } + + @Size(min=0, max=200, message="多行文本长度不能超过 200 个字符") + public String getTestTextarea() { + return testTextarea; + } + + public void setTestTextarea(String testTextarea) { + this.testTextarea = testTextarea; + } + + @Size(min=0, max=10, message="下拉框长度不能超过 10 个字符") + public String getTestSelect() { + return testSelect; + } + + public void setTestSelect(String testSelect) { + this.testSelect = testSelect; + } + + @Size(min=0, max=200, message="下拉多选长度不能超过 200 个字符") + public String getTestSelectMultiple() { + return testSelectMultiple; + } + + public void setTestSelectMultiple(String testSelectMultiple) { + this.testSelectMultiple = testSelectMultiple; + } + + @Size(min=0, max=10, message="单选框长度不能超过 10 个字符") + public String getTestRadio() { + return testRadio; + } + + public void setTestRadio(String testRadio) { + this.testRadio = testRadio; + } + + @Size(min=0, max=200, message="复选框长度不能超过 200 个字符") + public String getTestCheckbox() { + return testCheckbox; + } + + public void setTestCheckbox(String testCheckbox) { + this.testCheckbox = testCheckbox; + } + + @JsonFormat(pattern = "yyyy-MM-dd") + public Date getTestDate() { + return testDate; + } + + public void setTestDate(Date testDate) { + this.testDate = testDate; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + public Date getTestDatetime() { + return testDatetime; + } + + public void setTestDatetime(Date testDatetime) { + this.testDatetime = testDatetime; + } + + public User getTestUser() { + return testUser; + } + + public void setTestUser(User testUser) { + this.testUser = testUser; + } + + public Office getTestOffice() { + return testOffice; + } + + public void setTestOffice(Office testOffice) { + this.testOffice = testOffice; + } + + @Size(min=0, max=64, message="区域选择长度不能超过 64 个字符") + public String getTestAreaCode() { + return testAreaCode; + } + + public void setTestAreaCode(String testAreaCode) { + this.testAreaCode = testAreaCode; + } + + @Size(min=0, max=100, message="区域名称长度不能超过 100 个字符") + public String getTestAreaName() { + return testAreaName; + } + + public void setTestAreaName(String testAreaName) { + this.testAreaName = testAreaName; + } + + public Date getTestDate_gte() { + return sqlMap.getWhere().getValue("test_date", QueryType.GTE); + } + + public void setTestDate_gte(Date testDate) { + sqlMap.getWhere().and("test_date", QueryType.GTE, testDate); + } + + public Date getTestDate_lte() { + return sqlMap.getWhere().getValue("test_date", QueryType.LTE); + } + + public void setTestDate_lte(Date testDate) { + sqlMap.getWhere().and("test_date", QueryType.LTE, testDate); + } + + public Date getTestDatetime_gte() { + return sqlMap.getWhere().getValue("test_datetime", QueryType.GTE); + } + + public void setTestDatetime_gte(Date testDatetime) { + sqlMap.getWhere().and("test_datetime", QueryType.GTE, testDatetime); + } + + public Date getTestDatetime_lte() { + return sqlMap.getWhere().getValue("test_datetime", QueryType.LTE); + } + + public void setTestDatetime_lte(Date testDatetime) { + sqlMap.getWhere().and("test_datetime", QueryType.LTE, testDatetime); + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/entity/TestTree.java b/web-fast/src/main/java/com/jeesite/modules/test/entity/TestTree.java new file mode 100644 index 00000000..4486ba5f --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/entity/TestTree.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.entity; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +import com.jeesite.common.entity.DataEntity; +import com.jeesite.common.entity.TreeEntity; +import com.jeesite.common.mybatis.annotation.Column; +import com.jeesite.common.mybatis.annotation.Table; +import com.jeesite.common.mybatis.mapper.query.QueryType; + +/** + * 测试树表Entity + * @author ThinkGem + * @version 2018-04-22 + */ +@Table(name="test_tree", alias="a", columns={ + @Column(name="tree_code", attrName="treeCode", label="节点编码", isPK=true), + @Column(includeEntity=TreeEntity.class), + @Column(name="tree_name", attrName="treeName", label="节点名称", queryType=QueryType.LIKE, isTreeName=true), + @Column(includeEntity=DataEntity.class), + }, orderBy="a.tree_sorts, a.tree_code" +) +public class TestTree extends TreeEntity { + + private static final long serialVersionUID = 1L; + private String treeCode; // 节点编码 + private String treeName; // 节点名称 + + public TestTree() { + this(null); + } + + public TestTree(String id){ + super(id); + } + + @Override + public TestTree getParent() { + return parent; + } + + @Override + public void setParent(TestTree parent) { + this.parent = parent; + } + + public String getTreeCode() { + return treeCode; + } + + public void setTreeCode(String treeCode) { + this.treeCode = treeCode; + } + + @NotBlank(message="节点名称不能为空") + @Size(min=0, max=200, message="节点名称长度不能超过 200 个字符") + public String getTreeName() { + return treeName; + } + + public void setTreeName(String treeName) { + this.treeName = treeName; + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/service/TestDataService.java b/web-fast/src/main/java/com/jeesite/modules/test/service/TestDataService.java new file mode 100644 index 00000000..a1eda0ff --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/service/TestDataService.java @@ -0,0 +1,174 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.entity.Page; +import com.jeesite.common.idgen.IdGen; +import com.jeesite.common.lang.DateUtils; +import com.jeesite.common.service.CrudService; +import com.jeesite.modules.file.utils.FileUploadUtils; +import com.jeesite.modules.sys.service.UserService; +import com.jeesite.modules.test.dao.TestDataChildDao; +import com.jeesite.modules.test.dao.TestDataDao; +import com.jeesite.modules.test.entity.TestData; +import com.jeesite.modules.test.entity.TestDataChild; + +/** + * 测试数据Service + * @author ThinkGem + * @version 2018-04-22 + */ +@Service +@Transactional(readOnly=true) +public class TestDataService extends CrudService { + + @Autowired + private TestDataChildDao testDataChildDao; + + /** + * 获取单条数据 + * @param testData + * @return + */ + @Override + public TestData get(TestData testData) { + TestData entity = super.get(testData); + if (entity != null){ + TestDataChild testDataChild = new TestDataChild(entity); + testDataChild.setStatus(TestDataChild.STATUS_NORMAL); + entity.setTestDataChildList(testDataChildDao.findList(testDataChild)); + } + return entity; + } + + /** + * 查询分页数据 + * @param page 分页对象 + * @param testData + * @return + */ + @Override + public Page findPage(TestData testData) { + +// // 演示Map参数和返回值,支持分页 +// Page> pageMap = new Page<>(); +// Map params = MapUtils.newHashMap(); +// params.put("testInput", "123"); +// params.put("page", pageMap); +// pageMap.setList(dao.findListForMap(params)); +// System.out.println(pageMap.getList()); +// System.out.println(pageMap.getCount()); + + return super.findPage(testData); + } + + /** + * 查询子表分页数据 + * @param page 分页对象 + * @param testData + * @return + */ + public List findSubList(TestDataChild testData) { + return testDataChildDao.findList(testData); + } + + /** + * 保存数据(插入或更新) + * @param testData + */ + @Override + @Transactional(readOnly=false) + public void save(TestData testData) { + super.save(testData); + // 保存上传图片 + FileUploadUtils.saveFileUpload(testData, testData.getId(), "testData_image"); + // 保存上传附件 + FileUploadUtils.saveFileUpload(testData, testData.getId(), "testData_file"); + // 保存 TestData子表 + int index = 0; + for (TestDataChild testDataChild : testData.getTestDataChildList()){ + if (!TestDataChild.STATUS_DELETE.equals(testDataChild.getStatus())){ + testDataChild.setTestData(testData); + if (testDataChild.getIsNewRecord()){ + testDataChild.preInsert(); + testDataChildDao.insert(testDataChild); + }else{ + testDataChild.preUpdate(); + testDataChildDao.update(testDataChild); + } + }else{ + testDataChildDao.delete(testDataChild); + } + // 保存上传附件 + FileUploadUtils.saveFileUpload(testDataChild, testDataChild.getId(), + "testDataChildList["+index+"].testDataChild_file"); + index++; + } + } + + /** + * 更新状态 + * @param testData + */ + @Override + @Transactional(readOnly=false) + public void updateStatus(TestData testData) { + super.updateStatus(testData); + } + + /** + * 删除数据 + * @param testData + */ + @Override + @Transactional(readOnly=false) + public void delete(TestData testData) { + super.delete(testData); + TestDataChild testDataChild = new TestDataChild(); + testDataChild.setTestData(testData); + testDataChildDao.deleteByEntity(testDataChild); + } + + /** + * 任务调度测试:testDataService.executeTestTask(userService, 1, 2L, 3F, 4D, 'abc') + */ + public void executeTestTask(UserService userService, Integer i, Long l, Float f, Double d, String s){ + System.out.println(DateUtils.getTime() + " 任务执行了~~~ bean: " + userService + ", i: " + i + + ", l: " + l + ", f: " + f + ", d: " + d + ", s: " + s); + } + + /** + * 事务测试,若 Child 报错,则回滚 + */ + @Transactional(readOnly=false/*, propagation=Propagation.NOT_SUPPORTED*/) + public void transTest(TestData testData) { + testData.setTestInput("transTest"); + testData.setTestTextarea(IdGen.randomBase62(5)); + dao.insert(testData); + TestDataChild testDataChild = new TestDataChild(); + testDataChild.setTestData(testData); + // 设置一个超出数据库范围的值,抛出数据库异常 + StringBuilder sb = new StringBuilder(); + for (int i=0; i<500; i++){ + sb.append("transTest" + i); + } + testDataChild.setTestInput(sb.toString()); + testDataChildDao.insert(testDataChild); + } + + /** + * 事务验证,返回空,则事务回滚成功 + */ + public boolean transValid(TestData testData) { + return dao.get(testData) == null; + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/service/TestTreeService.java b/web-fast/src/main/java/com/jeesite/modules/test/service/TestTreeService.java new file mode 100644 index 00000000..9cc945f2 --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/service/TestTreeService.java @@ -0,0 +1,80 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.service; + +import java.util.List; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.jeesite.common.service.TreeService; +import com.jeesite.modules.file.utils.FileUploadUtils; +import com.jeesite.modules.test.dao.TestTreeDao; +import com.jeesite.modules.test.entity.TestTree; + +/** + * 测试树表Service + * @author ThinkGem + * @version 2018-04-22 + */ +@Service +@Transactional(readOnly=true) +public class TestTreeService extends TreeService { + + /** + * 获取单条数据 + * @param testTree + * @return + */ + @Override + public TestTree get(TestTree testTree) { + return super.get(testTree); + } + + /** + * 查询列表数据 + * @param testTree + * @return + */ + @Override + public List findList(TestTree testTree) { + return super.findList(testTree); + } + + /** + * 保存数据(插入或更新) + * @param testTree + */ + @Override + @Transactional(readOnly=false) + public void save(TestTree testTree) { + super.save(testTree); + // 保存上传图片 + FileUploadUtils.saveFileUpload(testTree, testTree.getId(), "testTree_image"); + // 保存上传附件 + FileUploadUtils.saveFileUpload(testTree, testTree.getId(), "testTree_file"); + } + + /** + * 更新状态 + * @param testTree + */ + @Override + @Transactional(readOnly=false) + public void updateStatus(TestTree testTree) { + super.updateStatus(testTree); + } + + /** + * 删除数据 + * @param testTree + */ + @Override + @Transactional(readOnly=false) + public void delete(TestTree testTree) { + super.delete(testTree); + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/web/DemoController.java b/web-fast/src/main/java/com/jeesite/modules/test/web/DemoController.java new file mode 100644 index 00000000..63be2d92 --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/web/DemoController.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.web; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.jeesite.common.lang.StringUtils; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.test.entity.TestData; +import com.jeesite.modules.test.service.TestDataService; + +/** + * 演示实例Controller + * @author ThinkGem + * @version 2018-03-24 + */ +@Controller +@RequestMapping(value = "${adminPath}/demo") +public class DemoController extends BaseController { + + @Autowired + private TestDataService testDataService; + + /** + * 获取数据 + */ + @ModelAttribute + public TestData get(String id, boolean isNewRecord) { + return testDataService.get(id, isNewRecord); + } + + /** + * DataGrid + */ + @RequiresPermissions("test:testData:view") + @RequestMapping(value = "dataGrid/{viewName}") + public String dataGrid(@PathVariable String viewName, TestData testData, Model model) { + return "modules/demo/demoDataGrid" + StringUtils.cap(viewName); + } + + /** + * Form + */ + @RequiresPermissions("test:testData:view") + @RequestMapping(value = "form/{viewName}") + public String form(@PathVariable String viewName, TestData testData, Model model) { + return "modules/demo/demoForm" + StringUtils.cap(viewName); + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/web/TestDataController.java b/web-fast/src/main/java/com/jeesite/modules/test/web/TestDataController.java new file mode 100644 index 00000000..3eb3fb8d --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/web/TestDataController.java @@ -0,0 +1,153 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.web; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.entity.Page; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.test.entity.TestData; +import com.jeesite.modules.test.entity.TestDataChild; +import com.jeesite.modules.test.service.TestDataService; + +/** + * 测试数据Controller + * @author ThinkGem + * @version 2018-04-22 + */ +@Controller +@RequestMapping(value = "${adminPath}/test/testData") +public class TestDataController extends BaseController { + + @Autowired + private TestDataService testDataService; + + /** + * 获取数据 + */ + @ModelAttribute + public TestData get(String id, boolean isNewRecord) { + return testDataService.get(id, isNewRecord); + } + + /** + * 查询列表 + */ + @RequiresPermissions("test:testData:view") + @RequestMapping(value = {"list", ""}) + public String list(TestData testData, Model model) { + model.addAttribute("testData", testData); + return "modules/test/testDataList"; + } + + /** + * 查询列表数据 + */ + @RequiresPermissions("test:testData:view") + @RequestMapping(value = "listData") + @ResponseBody + public Page listData(TestData testData, HttpServletRequest request, HttpServletResponse response) { + testData.setPage(new Page<>(request, response)); + Page page = testDataService.findPage(testData); + return page; + } + + /** + * 查询子表列表数据 + */ + @RequiresPermissions("test:testData:view") + @RequestMapping(value = "subListData") + @ResponseBody + public List subListData(TestDataChild testDataChild) { + return testDataService.findSubList(testDataChild); + } + + /** + * 查看编辑表单 + */ + @RequiresPermissions("test:testData:view") + @RequestMapping(value = "form") + public String form(TestData testData, Model model) { + model.addAttribute("testData", testData); + return "modules/test/testDataForm"; + } + + /** + * 保存数据 + */ + @RequiresPermissions("test:testData:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated TestData testData) { + testDataService.save(testData); + return renderResult(Global.TRUE, text("保存数据成功!")); + } + + /** + * 停用数据 + */ + @RequiresPermissions("test:testData:edit") + @RequestMapping(value = "disable") + @ResponseBody + public String disable(TestData testData) { + testData.setStatus(TestData.STATUS_DISABLE); + testDataService.updateStatus(testData); + return renderResult(Global.TRUE, text("停用数据成功")); + } + + /** + * 启用数据 + */ + @RequiresPermissions("test:testData:edit") + @RequestMapping(value = "enable") + @ResponseBody + public String enable(TestData testData) { + testData.setStatus(TestData.STATUS_NORMAL); + testDataService.updateStatus(testData); + return renderResult(Global.TRUE, text("启用数据成功")); + } + + /** + * 删除数据 + */ + @RequiresPermissions("test:testData:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(TestData testData) { + testDataService.delete(testData); + return renderResult(Global.TRUE, text("删除数据成功!")); + } + + /** + * 事务测试 + */ + @RequiresPermissions("test:testData:edit") + @RequestMapping(value = "transTest") + @ResponseBody + public String transTest(TestData testData) { + try{ + testDataService.transTest(testData); + }catch (Exception e) { + logger.debug("事务测试信息,报错回滚:" + e.getMessage()); + } + boolean bl = testDataService.transValid(testData); + return renderResult(Global.TRUE, "事务测试"+(bl?"成功,数据已":"失败,数据未")+"回滚!"); + } + +} \ No newline at end of file diff --git a/web-fast/src/main/java/com/jeesite/modules/test/web/TestTreeController.java b/web-fast/src/main/java/com/jeesite/modules/test/web/TestTreeController.java new file mode 100644 index 00000000..a93002eb --- /dev/null +++ b/web-fast/src/main/java/com/jeesite/modules/test/web/TestTreeController.java @@ -0,0 +1,224 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.modules.test.web; + +import java.util.List; +import java.util.Map; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.jeesite.common.config.Global; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.collect.MapUtils; +import com.jeesite.common.lang.StringUtils; +import com.jeesite.common.idgen.IdGen; +import com.jeesite.modules.sys.utils.UserUtils; +import com.jeesite.common.web.BaseController; +import com.jeesite.modules.test.entity.TestTree; +import com.jeesite.modules.test.service.TestTreeService; + +/** + * 测试树表Controller + * @author ThinkGem + * @version 2018-04-22 + */ +@Controller +@RequestMapping(value = "${adminPath}/test/testTree") +public class TestTreeController extends BaseController { + + @Autowired + private TestTreeService testTreeService; + + /** + * 获取数据 + */ + @ModelAttribute + public TestTree get(String treeCode, boolean isNewRecord) { + return testTreeService.get(treeCode, isNewRecord); + } + + /** + * 查询列表 + */ + @RequiresPermissions("test:testTree:view") + @RequestMapping(value = {"list", ""}) + public String list(TestTree testTree, Model model) { + model.addAttribute("testTree", testTree); + return "modules/test/testTreeList"; + } + + /** + * 查询列表数据 + */ + @RequiresPermissions("test:testTree:view") + @RequestMapping(value = "listData") + @ResponseBody + public List listData(TestTree testTree) { + if (StringUtils.isBlank(testTree.getParentCode())) { + testTree.setParentCode(TestTree.ROOT_CODE); + } + if (StringUtils.isNotBlank(testTree.getTreeName())){ + testTree.setParentCode(null); + } + if (StringUtils.isNotBlank(testTree.getRemarks())){ + testTree.setParentCode(null); + } + List list = testTreeService.findList(testTree); + return list; + } + + /** + * 查看编辑表单 + */ + @RequiresPermissions("test:testTree:view") + @RequestMapping(value = "form") + public String form(TestTree testTree, Model model) { + // 创建并初始化下一个节点信息 + testTree = createNextNode(testTree); + model.addAttribute("testTree", testTree); + return "modules/test/testTreeForm"; + } + + /** + * 创建并初始化下一个节点信息,如:排序号、默认值 + */ + @RequiresPermissions("test:testTree:edit") + @RequestMapping(value = "createNextNode") + @ResponseBody + public TestTree createNextNode(TestTree testTree) { + if (StringUtils.isNotBlank(testTree.getParentCode())){ + testTree.setParent(testTreeService.get(testTree.getParentCode())); + } + if (testTree.getIsNewRecord()) { + TestTree where = new TestTree(); + where.setParentCode(testTree.getParentCode()); + TestTree last = testTreeService.getLastByParentCode(where); + // 获取到下级最后一个节点 + if (last != null){ + testTree.setTreeSort(last.getTreeSort() + 30); + testTree.setTreeCode(IdGen.nextCode(last.getTreeCode())); + }else if (testTree.getParent() != null){ + testTree.setTreeCode(testTree.getParent().getTreeCode() + "001"); + } + } + // 以下设置表单默认数据 + if (testTree.getTreeSort() == null){ + testTree.setTreeSort(TestTree.DEFAULT_TREE_SORT); + } + return testTree; + } + + /** + * 保存数据 + */ + @RequiresPermissions("test:testTree:edit") + @PostMapping(value = "save") + @ResponseBody + public String save(@Validated TestTree testTree) { + testTreeService.save(testTree); + return renderResult(Global.TRUE, text("保存数据成功!")); + } + + /** + * 停用数据 + */ + @RequiresPermissions("test:testTree:edit") + @RequestMapping(value = "disable") + @ResponseBody + public String disable(TestTree testTree) { + TestTree where = new TestTree(); + where.setStatus(TestTree.STATUS_NORMAL); + where.setParentCodes("," + testTree.getId() + ","); + long count = testTreeService.findCount(where); + if (count > 0) { + return renderResult(Global.FALSE, text("该数据包含未停用的子数据!")); + } + testTree.setStatus(TestTree.STATUS_DISABLE); + testTreeService.updateStatus(testTree); + return renderResult(Global.TRUE, text("停用数据成功")); + } + + /** + * 启用数据 + */ + @RequiresPermissions("test:testTree:edit") + @RequestMapping(value = "enable") + @ResponseBody + public String enable(TestTree testTree) { + testTree.setStatus(TestTree.STATUS_NORMAL); + testTreeService.updateStatus(testTree); + return renderResult(Global.TRUE, text("启用数据成功")); + } + + /** + * 删除数据 + */ + @RequiresPermissions("test:testTree:edit") + @RequestMapping(value = "delete") + @ResponseBody + public String delete(TestTree testTree) { + testTreeService.delete(testTree); + return renderResult(Global.TRUE, text("删除数据成功!")); + } + + /** + * 获取树结构数据 + * @param excludeCode 排除的Code + * @param isShowCode 是否显示编码(true or 1:显示在左侧;2:显示在右侧;false or null:不显示) + * @return + */ + @RequiresPermissions("test:testTree:view") + @RequestMapping(value = "treeData") + @ResponseBody + public List> treeData(String excludeCode, String isShowCode) { + List> mapList = ListUtils.newArrayList(); + List list = testTreeService.findList(new TestTree()); + for (int i=0; i map = MapUtils.newHashMap(); + map.put("id", e.getId()); + map.put("pId", e.getParentCode()); + map.put("name", StringUtils.getTreeNodeName(isShowCode, e.getTreeCode(), e.getTreeName())); + mapList.add(map); + } + return mapList; + } + + /** + * 修复表结构相关数据 + */ + @RequiresPermissions("test:testTree:edit") + @RequestMapping(value = "fixTreeData") + @ResponseBody + public String fixTreeData(TestTree testTree){ + if (!UserUtils.getUser().isAdmin()){ + return renderResult(Global.FALSE, "操作失败,只有管理员才能进行修复!"); + } + testTreeService.fixTreeData(); + return renderResult(Global.TRUE, "数据修复成功"); + } + +} \ No newline at end of file diff --git a/web-fast/src/main/resources/config/application-prod.yml b/web-fast/src/main/resources/config/application-prod.yml new file mode 100644 index 00000000..2ecfb5de --- /dev/null +++ b/web-fast/src/main/resources/config/application-prod.yml @@ -0,0 +1,32 @@ + +# 使用环境配置,只需 JVM 参数里加:-Dspring.profiles.active=prod + +# 数据库连接 +jdbc: + + # Mysql 数据库配置 + type: h2 + driver: org.h2.Driver + url: jdbc:h2:/data/jeesite-db/jeesite501 + username: jeesite + password: jeesite + testSql: SELECT 1 + +# 日志配置 +logging: + config: classpath:config/logback-spring-prod.xml + +# MyBatis 相关 +mybatis: + + # Mapper文件刷新线程 + mapper: + refresh: + enabled: false + +# 文件相关 +file: + + # 文件上传根路径,设置路径中不允许包含“userfiles”,在指定目录中系统会自动创建userfiles目录,如果不设置默认为contextPath路径 + baseDir: /data + \ No newline at end of file diff --git a/web-fast/src/main/resources/config/application.yml b/web-fast/src/main/resources/config/application.yml new file mode 100644 index 00000000..d413afce --- /dev/null +++ b/web-fast/src/main/resources/config/application.yml @@ -0,0 +1,220 @@ + +#======================================# +#========== Project settings ==========# +#======================================# + +# 产品或项目名称、软件开发公司名称 +productName: JeeSite Demo +companyName: ThinkGem + +# 产品版本、版权年份 +productVersion: V5.0 +copyrightYear: 2022 + +# 是否演示模式 +demoMode: false + +# 专为分离端提供接口服务 +apiMode: false + +#======================================# +#========== Server settings ===========# +#======================================# + +server: + + port: 8980 + servlet: + context-path: ~ + register-default-servlet: false + tomcat: + uri-encoding: UTF-8 + # 表单请求数据的最大大小 + max-http-form-post-size: 20MB +# # 进程的最大连接数 +# max-connections: 8192 +# # 连接数满后的排队个数 +# accept-count: 100 +# # 线程数最大和最小个数 +# threads: +# max: 200 +# min-spare: 10 + + # 当 Nginx 为 https,tomcat 为 http 时,设置该选项为 true + schemeHttps: false + +#======================================# +#========== Database sttings ==========# +#======================================# + +# 数据库连接 +jdbc: + + # H2 数据库配置(请修改 /modules/core/pom.xml 文件,打开 H2 DB 依赖) + type: h2 + driver: org.h2.Driver + url: jdbc:h2:~/jeesite-db/jeesite501 + username: jeesite + password: jeesite + testSql: SELECT 1 + + # 连接信息加密 + encrypt: + + # 加密连接用户名 + username: false + # 加密连接密码 + password: false + + # 数据库连接池配置 + pool: + + # 初始化连接数 + init: 1 + # 最小空闲连接数 + minIdle: 3 + # 最大激活连接数 + maxActive: 20 + +#======================================# +#========== Spring settings ===========# +#======================================# + +spring: + + # 应用程序名称 + application: + name: jeesite-web-h2db + + # 环境名称(注意:不可设置为 test 它是单元测试专用的名称) + profiles: + active: default + + # 打印横幅 + main: + bannerMode: "off" + +# 日志配置 +logging: + config: classpath:config/logback-spring.xml + +#======================================# +#========== System settings ===========# +#======================================# + +# 用户相关 +user: + + # 多租户模式(SAAS模式)(专业版) + useCorpModel: false + +# 国际化管理(专业版) +lang: + enabled: true + +# 任务调度(标准版) +job: + enabled: true + +# 代码生成 +gen: + enabled: true + +# 系统监控 +state: + enabled: true + +#======================================# +#========= Framework settings =========# +#======================================# + +# Shiro 相关 +shiro: + + # 主页路径 + defaultPath: ${shiro.loginUrl} + + # 登录相关设置 + loginUrl: ${adminPath}/login + logoutUrl: ${shiro.loginUrl} + successUrl: ${adminPath}/index + + # 简单 SSO 登录相关配置 + sso: + # 如果启用/sso/{username}/{token}单点登录,请修改此安全key并与单点登录系统key一致。 + secretKey: ~ + # 是否加密单点登录安全Key + encryptKey: true + # token 时效性,如:1天:yyyyMMdd、1小时:yyyyMMddHH、1分钟:yyyyMMddHHmm + encryptKeyDateFormat: yyyyMMdd + + # 登录提交信息加密(如果不需要加密,设置为空即可) + loginSubmit: + # 加密用户名、密码、验证码,后再提交(key设置为3个,用逗号分隔)加密方式:DES(4.1.9及之前版本默认设置) + # v4.2.0+ 开始支持 Base64 加密方式,方便移动端及第三方系统处理认证,可直接设置 Key 为 Base64(4.2.0+默认设置) + #secretKey: thinkgem,jeesite,com + secretKey: Base64 + #secretKey: ~ + + # 记住我密钥设置,你可以通过 com.jeesite.test.RememberMeKeyGen 类快速生成一个秘钥。 + # 若不设置,则每次启动系统后自动生成一个新秘钥,这样会导致每次重启后,客户端记录的用户信息将失效。 + rememberMe: + secretKey: ~ + + # 是否允许跨域访问 CORS,如果允许,设置允许的域名。v4.2.3 开始支持多个域名和模糊匹配,例如:http://*.jeesite.com,http://*.jeesite.net + accessControlAllowOrigin: '*' + + # 允许跨域访问时 CORS,可以获取和返回的方法和请求头 + accessControlAllowMethods: GET, POST, OPTIONS + accessControlAllowHeaders: content-type, x-requested-with, x-ajax, x-token, x-remember + accessControlExposeHeaders: x-remember + +# Session 相关 +session: + # 会话唯一标识SessionId在Cookie中的名称。 + sessionIdCookieName: h2db.jeesite.session.id + sessionIdCookiePath: ${server.servlet.context-path} + +# MyBatis 相关 +mybatis: + + # Mapper文件刷新线程 + mapper: + refresh: + enabled: true + +# Web 相关 +web: + + # 核心模块的Web功能(仅作为微服务时设为false) + core: + enabled: true + + # 在线API文档工具 + swagger: + enabled: true + +# 错误页面500.html是否输出错误信息(正式环境,为提供安全性可设置为false) +error: + page: + printErrorInfo: true + +#======================================# +#======== FileUpload settings =========# +#======================================# + +# 文件上传 +file: + enabled: true + +#======================================# +#========== Message settings ==========# +#======================================# + +# 消息提醒中心(专业版) +msg: + enabled: true + +#======================================# +#========== Project settings ==========# +#======================================# diff --git a/web-fast/src/main/resources/config/beetl.properties b/web-fast/src/main/resources/config/beetl.properties new file mode 100644 index 00000000..5a9fef83 --- /dev/null +++ b/web-fast/src/main/resources/config/beetl.properties @@ -0,0 +1,21 @@ + +#设置与beetl-default.properties相同的属性将被覆盖默认设置 + +##导入项目中的调用静态方法类(项目中设置,自动合并IMPORT_PACKAGE设置) +#IMPORT_PACKAGE_PROJECT=\ +# com.jeesite.modules.project.utils.;\ + +## 内置的方法 +#FN.date = org.beetl.ext.fn.DateFunction + +##内置的功能包 +#FNP.strutil = org.beetl.ext.fn.StringUtil + +##内置的格式化函数 +#FT.dateFormat = org.beetl.ext.format.DateFormat + +##内置的默认格式化函数 +#FTC.java.util.Date = org.beetl.ext.format.DateFormat + +## 标签类 +#TAG.include= org.beetl.ext.tag.IncludeTag diff --git a/web-fast/src/main/resources/config/logback-spring-prod.xml b/web-fast/src/main/resources/config/logback-spring-prod.xml new file mode 100644 index 00000000..66c6425f --- /dev/null +++ b/web-fast/src/main/resources/config/logback-spring-prod.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + %d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx + + + + + + ${log.path}/debug.log + + ${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip + 50MB + 30 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx + + + + + + + ${log.path}/error.log + + ${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip + 50MB + 30 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx + + + ERROR + + + + + + + + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/config/logback-spring.xml b/web-fast/src/main/resources/config/logback-spring.xml new file mode 100644 index 00000000..81b9dfde --- /dev/null +++ b/web-fast/src/main/resources/config/logback-spring.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + %d{MM-dd HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx + + + + + + ${log.path}/debug.log + + ${log.path}/debug.%d{yyyy-MM-dd}.%i.log.zip + 50MB + 30 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx + + + + + + + ${log.path}/error.log + + ${log.path}/error.%d{yyyy-MM-dd}.%i.log.zip + 50MB + 30 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p ${PID:- } [%15.15t] [%-39logger{39}] [%X{TRACE_ID}] - %m%n%wEx + + + ERROR + + + + + + + + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/config/ueditor.json b/web-fast/src/main/resources/config/ueditor.json new file mode 100644 index 00000000..fda9c0cd --- /dev/null +++ b/web-fast/src/main/resources/config/ueditor.json @@ -0,0 +1,94 @@ +/* 前后端通信相关的配置,注释只允许使用多行方式,此文件修改及生效,不用重启服务 */ +{ + /* 上传图片配置项 */ + "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ + "imageFieldName": "upfile", /* 提交的图片表单名称 */ + "imageMaxSize": 2048000, /* 上传大小限制,单位B */ + "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ + "imageCompressEnable": true, /* 是否压缩图片,默认是true */ + "imageCompressBorder": 800, /* 图片压缩最大宽度限制 */ + "imageInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageUrlPrefix": "", /* 图片访问路径前缀 */ + "imagePathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ + /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ + /* {time} 会替换成时间戳 */ + /* {yyyy} 会替换成四位年份 */ + /* {yy} 会替换成两位年份 */ + /* {mm} 会替换成两位月份 */ + /* {dd} 会替换成两位日期 */ + /* {hh} 会替换成两位小时 */ + /* {ii} 会替换成两位分钟 */ + /* {ss} 会替换成两位秒 */ + /* 非法字符 \ : * ? " < > | */ + /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */ + + /* 涂鸦图片上传配置项 */ + "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ + "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ + "scrawlPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ + "scrawlUrlPrefix": "", /* 图片访问路径前缀 */ + "scrawlInsertAlign": "none", + + /* 截图工具上传 */ + "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ + "snapscreenPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ + "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ + + /* 抓取远程图片配置 */ + "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], + "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ + "catcherFieldName": "source", /* 提交的图片列表表单名称 */ + "catcherPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "catcherUrlPrefix": "", /* 图片访问路径前缀 */ + "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ + "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ + + /* 上传视频配置 */ + "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ + "videoFieldName": "upfile", /* 提交的视频表单名称 */ + "videoPathFormat": "/userfiles/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "videoUrlPrefix": "", /* 视频访问路径前缀 */ + "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ + "videoAllowFiles": [ + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4",".m4v", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */ + + /* 上传文件配置 */ + "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ + "fileFieldName": "upfile", /* 提交的文件表单名称 */ + "filePathFormat": "/userfiles/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "fileUrlPrefix": "", /* 文件访问路径前缀 */ + "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ + "fileAllowFiles": [ + ".png", ".jpg", ".jpeg", ".gif", ".bmp", + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", + ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", ".ipa", ".apk", + ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" + ], /* 上传文件格式显示 */ + + /* 列出指定目录下的图片 */ + "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ + "imageManagerListPath": "/userfiles/{userid}/images/", /* 指定要列出图片的目录 */ + "imageManagerListSize": 100, /* 每次列出文件数量 */ + "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */ + "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ + "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */ + + /* 列出指定目录下的文件 */ + "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ + "fileManagerListPath": "/userfiles/{userid}/files/", /* 指定要列出文件的目录 */ + "fileManagerListSize": 100, /* 每次列出文件数量 */ + "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */ + "fileManagerAllowFiles": [ + ".png", ".jpg", ".jpeg", ".gif", ".bmp", + ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", + ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", + ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", + ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" + ] /* 列出的文件类型 */ + +} \ No newline at end of file diff --git a/web-fast/src/main/resources/db/create/h2/test.sql b/web-fast/src/main/resources/db/create/h2/test.sql new file mode 100644 index 00000000..d522c6da --- /dev/null +++ b/web-fast/src/main/resources/db/create/h2/test.sql @@ -0,0 +1,75 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar(64) NOT NULL, + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date datetime, + test_datetime datetime, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date datetime NOT NULL, + update_by varchar(64) NOT NULL, + update_date datetime NOT NULL, + remarks varchar(500), + PRIMARY KEY (id) +); + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar(64) NOT NULL, + test_sort int, + test_data_id varchar(64), + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date datetime, + test_datetime datetime, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + PRIMARY KEY (id) +); + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar(64) NOT NULL, + parent_code varchar(64) NOT NULL, + parent_codes varchar(767) NOT NULL, + tree_sort decimal(10) NOT NULL, + tree_sorts varchar(767) NOT NULL, + tree_leaf char(1) NOT NULL, + tree_level decimal(4) NOT NULL, + tree_names varchar(767) NOT NULL, + tree_name varchar(200) NOT NULL, + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date datetime NOT NULL, + update_by varchar(64) NOT NULL, + update_date datetime NOT NULL, + remarks varchar(500), + PRIMARY KEY (tree_code) +); + + + diff --git a/web-fast/src/main/resources/db/create/mssql/test.sql b/web-fast/src/main/resources/db/create/mssql/test.sql new file mode 100644 index 00000000..4ae8a769 --- /dev/null +++ b/web-fast/src/main/resources/db/create/mssql/test.sql @@ -0,0 +1,75 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE [test_data] +( + [id] varchar(64) NOT NULL, + [test_input] varchar(200), + [test_textarea] nvarchar(200), + [test_select] varchar(10), + [test_select_multiple] varchar(200), + [test_radio] varchar(10), + [test_checkbox] varchar(200), + [test_date] datetime, + [test_datetime] datetime, + [test_user_code] varchar(64), + [test_office_code] varchar(64), + [test_area_code] varchar(64), + [test_area_name] nvarchar(100), + [status] char(1) DEFAULT '0' NOT NULL, + [create_by] varchar(64) NOT NULL, + [create_date] datetime NOT NULL, + [update_by] varchar(64) NOT NULL, + [update_date] datetime NOT NULL, + [remarks] nvarchar(500), + PRIMARY KEY ([id]) +); + + +-- 测试数据子表 +CREATE TABLE [test_data_child] +( + [id] varchar(64) NOT NULL, + [test_sort] int, + [test_data_id] varchar(64), + [test_input] varchar(200), + [test_textarea] nvarchar(200), + [test_select] varchar(10), + [test_select_multiple] varchar(200), + [test_radio] varchar(10), + [test_checkbox] varchar(200), + [test_date] datetime, + [test_datetime] datetime, + [test_user_code] varchar(64), + [test_office_code] varchar(64), + [test_area_code] varchar(64), + [test_area_name] nvarchar(100), + PRIMARY KEY ([id]) +); + + +-- 测试树表 +CREATE TABLE [test_tree] +( + [tree_code] varchar(64) NOT NULL, + [parent_code] varchar(64) NOT NULL, + [parent_codes] varchar(767) NOT NULL, + [tree_sort] decimal(10) NOT NULL, + [tree_sorts] varchar(767) NOT NULL, + [tree_leaf] char(1) NOT NULL, + [tree_level] decimal(4) NOT NULL, + [tree_names] varchar(767) NOT NULL, + [tree_name] nvarchar(200) NOT NULL, + [status] char(1) DEFAULT '0' NOT NULL, + [create_by] varchar(64) NOT NULL, + [create_date] datetime NOT NULL, + [update_by] varchar(64) NOT NULL, + [update_date] datetime NOT NULL, + [remarks] nvarchar(500), + PRIMARY KEY ([tree_code]) +); + + + diff --git a/web-fast/src/main/resources/db/create/mysql/test.sql b/web-fast/src/main/resources/db/create/mysql/test.sql new file mode 100644 index 00000000..06c78075 --- /dev/null +++ b/web-fast/src/main/resources/db/create/mysql/test.sql @@ -0,0 +1,76 @@ +SET SESSION FOREIGN_KEY_CHECKS=0; + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar(64) NOT NULL COMMENT '编号', + test_input varchar(200) COMMENT '单行文本', + test_textarea varchar(200) COMMENT '多行文本', + test_select varchar(10) COMMENT '下拉框', + test_select_multiple varchar(200) COMMENT '下拉多选', + test_radio varchar(10) COMMENT '单选框', + test_checkbox varchar(200) COMMENT '复选框', + test_date datetime COMMENT '日期选择', + test_datetime datetime COMMENT '日期时间', + test_user_code varchar(64) COMMENT '用户选择', + test_office_code varchar(64) COMMENT '机构选择', + test_area_code varchar(64) COMMENT '区域选择', + test_area_name varchar(100) COMMENT '区域名称', + status char(1) DEFAULT '0' NOT NULL COMMENT '状态(0正常 1删除 2停用)', + create_by varchar(64) NOT NULL COMMENT '创建者', + create_date datetime NOT NULL COMMENT '创建时间', + update_by varchar(64) NOT NULL COMMENT '更新者', + update_date datetime NOT NULL COMMENT '更新时间', + remarks varchar(500) COMMENT '备注信息', + PRIMARY KEY (id) +) COMMENT = '测试数据'; + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar(64) NOT NULL COMMENT '编号', + test_sort int COMMENT '排序号', + test_data_id varchar(64) COMMENT '父表主键', + test_input varchar(200) COMMENT '单行文本', + test_textarea varchar(200) COMMENT '多行文本', + test_select varchar(10) COMMENT '下拉框', + test_select_multiple varchar(200) COMMENT '下拉多选', + test_radio varchar(10) COMMENT '单选框', + test_checkbox varchar(200) COMMENT '复选框', + test_date datetime COMMENT '日期选择', + test_datetime datetime COMMENT '日期时间', + test_user_code varchar(64) COMMENT '用户选择', + test_office_code varchar(64) COMMENT '机构选择', + test_area_code varchar(64) COMMENT '区域选择', + test_area_name varchar(100) COMMENT '区域名称', + PRIMARY KEY (id) +) COMMENT = '测试数据子表'; + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar(64) NOT NULL COMMENT '节点编码', + parent_code varchar(64) NOT NULL COMMENT '父级编号', + parent_codes varchar(767) NOT NULL COMMENT '所有父级编号', + tree_sort decimal(10) NOT NULL COMMENT '排序号(升序)', + tree_sorts varchar(767) NOT NULL COMMENT '所有排序号', + tree_leaf char(1) NOT NULL COMMENT '是否最末级', + tree_level decimal(4) NOT NULL COMMENT '层次级别', + tree_names varchar(767) NOT NULL COMMENT '全节点名', + tree_name varchar(200) NOT NULL COMMENT '节点名称', + status char(1) DEFAULT '0' NOT NULL COMMENT '状态(0正常 1删除 2停用)', + create_by varchar(64) NOT NULL COMMENT '创建者', + create_date datetime NOT NULL COMMENT '创建时间', + update_by varchar(64) NOT NULL COMMENT '更新者', + update_date datetime NOT NULL COMMENT '更新时间', + remarks varchar(500) COMMENT '备注信息', + PRIMARY KEY (tree_code) +) COMMENT = '测试树表'; + + + diff --git a/web-fast/src/main/resources/db/create/oracle/test.sql b/web-fast/src/main/resources/db/create/oracle/test.sql new file mode 100644 index 00000000..4308d8d3 --- /dev/null +++ b/web-fast/src/main/resources/db/create/oracle/test.sql @@ -0,0 +1,132 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar2(64) NOT NULL, + test_input varchar2(200), + test_textarea nvarchar2(200), + test_select varchar2(10), + test_select_multiple varchar2(200), + test_radio varchar2(10), + test_checkbox varchar2(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar2(64), + test_office_code varchar2(64), + test_area_code varchar2(64), + test_area_name nvarchar2(100), + status char(1) DEFAULT '0' NOT NULL, + create_by varchar2(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar2(64) NOT NULL, + update_date timestamp NOT NULL, + remarks nvarchar2(500), + PRIMARY KEY (id) +); + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar2(64) NOT NULL, + test_sort number(10,0), + test_data_id varchar2(64), + test_input varchar2(200), + test_textarea nvarchar2(200), + test_select varchar2(10), + test_select_multiple varchar2(200), + test_radio varchar2(10), + test_checkbox varchar2(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar2(64), + test_office_code varchar2(64), + test_area_code varchar2(64), + test_area_name nvarchar2(100), + PRIMARY KEY (id) +); + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar2(64) NOT NULL, + parent_code varchar2(64) NOT NULL, + parent_codes varchar2(767) NOT NULL, + tree_sort number(10) NOT NULL, + tree_sorts varchar2(767) NOT NULL, + tree_leaf char(1) NOT NULL, + tree_level number(4) NOT NULL, + tree_names varchar2(767) NOT NULL, + tree_name nvarchar2(200) NOT NULL, + status char(1) DEFAULT '0' NOT NULL, + create_by varchar2(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar2(64) NOT NULL, + update_date timestamp NOT NULL, + remarks nvarchar2(500), + PRIMARY KEY (tree_code) +); + + + +/* Comments */ + +COMMENT ON TABLE test_data IS '测试数据'; +COMMENT ON COLUMN test_data.id IS '编号'; +COMMENT ON COLUMN test_data.test_input IS '单行文本'; +COMMENT ON COLUMN test_data.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data.test_select IS '下拉框'; +COMMENT ON COLUMN test_data.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data.test_radio IS '单选框'; +COMMENT ON COLUMN test_data.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data.test_date IS '日期选择'; +COMMENT ON COLUMN test_data.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data.test_area_name IS '区域名称'; +COMMENT ON COLUMN test_data.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_data.create_by IS '创建者'; +COMMENT ON COLUMN test_data.create_date IS '创建时间'; +COMMENT ON COLUMN test_data.update_by IS '更新者'; +COMMENT ON COLUMN test_data.update_date IS '更新时间'; +COMMENT ON COLUMN test_data.remarks IS '备注信息'; +COMMENT ON TABLE test_data_child IS '测试数据子表'; +COMMENT ON COLUMN test_data_child.id IS '编号'; +COMMENT ON COLUMN test_data_child.test_sort IS '排序号'; +COMMENT ON COLUMN test_data_child.test_data_id IS '父表主键'; +COMMENT ON COLUMN test_data_child.test_input IS '单行文本'; +COMMENT ON COLUMN test_data_child.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data_child.test_select IS '下拉框'; +COMMENT ON COLUMN test_data_child.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data_child.test_radio IS '单选框'; +COMMENT ON COLUMN test_data_child.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data_child.test_date IS '日期选择'; +COMMENT ON COLUMN test_data_child.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data_child.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data_child.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data_child.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data_child.test_area_name IS '区域名称'; +COMMENT ON TABLE test_tree IS '测试树表'; +COMMENT ON COLUMN test_tree.tree_code IS '节点编码'; +COMMENT ON COLUMN test_tree.parent_code IS '父级编号'; +COMMENT ON COLUMN test_tree.parent_codes IS '所有父级编号'; +COMMENT ON COLUMN test_tree.tree_sort IS '排序号(升序)'; +COMMENT ON COLUMN test_tree.tree_sorts IS '所有排序号'; +COMMENT ON COLUMN test_tree.tree_leaf IS '是否最末级'; +COMMENT ON COLUMN test_tree.tree_level IS '层次级别'; +COMMENT ON COLUMN test_tree.tree_names IS '全节点名'; +COMMENT ON COLUMN test_tree.tree_name IS '节点名称'; +COMMENT ON COLUMN test_tree.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_tree.create_by IS '创建者'; +COMMENT ON COLUMN test_tree.create_date IS '创建时间'; +COMMENT ON COLUMN test_tree.update_by IS '更新者'; +COMMENT ON COLUMN test_tree.update_date IS '更新时间'; +COMMENT ON COLUMN test_tree.remarks IS '备注信息'; + + + diff --git a/web-fast/src/main/resources/db/create/postgresql/test.sql b/web-fast/src/main/resources/db/create/postgresql/test.sql new file mode 100644 index 00000000..54758d68 --- /dev/null +++ b/web-fast/src/main/resources/db/create/postgresql/test.sql @@ -0,0 +1,132 @@ + + +/* Create Tables */ + +-- 测试数据 +CREATE TABLE test_data +( + id varchar(64) NOT NULL, + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar(64) NOT NULL, + update_date timestamp NOT NULL, + remarks varchar(500), + PRIMARY KEY (id) +) WITHOUT OIDS; + + +-- 测试数据子表 +CREATE TABLE test_data_child +( + id varchar(64) NOT NULL, + test_sort int, + test_data_id varchar(64), + test_input varchar(200), + test_textarea varchar(200), + test_select varchar(10), + test_select_multiple varchar(200), + test_radio varchar(10), + test_checkbox varchar(200), + test_date timestamp, + test_datetime timestamp, + test_user_code varchar(64), + test_office_code varchar(64), + test_area_code varchar(64), + test_area_name varchar(100), + PRIMARY KEY (id) +) WITHOUT OIDS; + + +-- 测试树表 +CREATE TABLE test_tree +( + tree_code varchar(64) NOT NULL, + parent_code varchar(64) NOT NULL, + parent_codes varchar(767) NOT NULL, + tree_sort decimal(10) NOT NULL, + tree_sorts varchar(767) NOT NULL, + tree_leaf char(1) NOT NULL, + tree_level decimal(4) NOT NULL, + tree_names varchar(767) NOT NULL, + tree_name varchar(200) NOT NULL, + status char(1) DEFAULT '0' NOT NULL, + create_by varchar(64) NOT NULL, + create_date timestamp NOT NULL, + update_by varchar(64) NOT NULL, + update_date timestamp NOT NULL, + remarks varchar(500), + PRIMARY KEY (tree_code) +) WITHOUT OIDS; + + + +/* Comments */ + +COMMENT ON TABLE test_data IS '测试数据'; +COMMENT ON COLUMN test_data.id IS '编号'; +COMMENT ON COLUMN test_data.test_input IS '单行文本'; +COMMENT ON COLUMN test_data.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data.test_select IS '下拉框'; +COMMENT ON COLUMN test_data.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data.test_radio IS '单选框'; +COMMENT ON COLUMN test_data.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data.test_date IS '日期选择'; +COMMENT ON COLUMN test_data.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data.test_area_name IS '区域名称'; +COMMENT ON COLUMN test_data.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_data.create_by IS '创建者'; +COMMENT ON COLUMN test_data.create_date IS '创建时间'; +COMMENT ON COLUMN test_data.update_by IS '更新者'; +COMMENT ON COLUMN test_data.update_date IS '更新时间'; +COMMENT ON COLUMN test_data.remarks IS '备注信息'; +COMMENT ON TABLE test_data_child IS '测试数据子表'; +COMMENT ON COLUMN test_data_child.id IS '编号'; +COMMENT ON COLUMN test_data_child.test_sort IS '排序号'; +COMMENT ON COLUMN test_data_child.test_data_id IS '父表主键'; +COMMENT ON COLUMN test_data_child.test_input IS '单行文本'; +COMMENT ON COLUMN test_data_child.test_textarea IS '多行文本'; +COMMENT ON COLUMN test_data_child.test_select IS '下拉框'; +COMMENT ON COLUMN test_data_child.test_select_multiple IS '下拉多选'; +COMMENT ON COLUMN test_data_child.test_radio IS '单选框'; +COMMENT ON COLUMN test_data_child.test_checkbox IS '复选框'; +COMMENT ON COLUMN test_data_child.test_date IS '日期选择'; +COMMENT ON COLUMN test_data_child.test_datetime IS '日期时间'; +COMMENT ON COLUMN test_data_child.test_user_code IS '用户选择'; +COMMENT ON COLUMN test_data_child.test_office_code IS '机构选择'; +COMMENT ON COLUMN test_data_child.test_area_code IS '区域选择'; +COMMENT ON COLUMN test_data_child.test_area_name IS '区域名称'; +COMMENT ON TABLE test_tree IS '测试树表'; +COMMENT ON COLUMN test_tree.tree_code IS '节点编码'; +COMMENT ON COLUMN test_tree.parent_code IS '父级编号'; +COMMENT ON COLUMN test_tree.parent_codes IS '所有父级编号'; +COMMENT ON COLUMN test_tree.tree_sort IS '排序号(升序)'; +COMMENT ON COLUMN test_tree.tree_sorts IS '所有排序号'; +COMMENT ON COLUMN test_tree.tree_leaf IS '是否最末级'; +COMMENT ON COLUMN test_tree.tree_level IS '层次级别'; +COMMENT ON COLUMN test_tree.tree_names IS '全节点名'; +COMMENT ON COLUMN test_tree.tree_name IS '节点名称'; +COMMENT ON COLUMN test_tree.status IS '状态(0正常 1删除 2停用)'; +COMMENT ON COLUMN test_tree.create_by IS '创建者'; +COMMENT ON COLUMN test_tree.create_date IS '创建时间'; +COMMENT ON COLUMN test_tree.update_by IS '更新者'; +COMMENT ON COLUMN test_tree.update_date IS '更新时间'; +COMMENT ON COLUMN test_tree.remarks IS '备注信息'; + + + diff --git a/web-fast/src/main/resources/mappings/modules/test/TestDataChildDao.xml b/web-fast/src/main/resources/mappings/modules/test/TestDataChildDao.xml new file mode 100644 index 00000000..badbe182 --- /dev/null +++ b/web-fast/src/main/resources/mappings/modules/test/TestDataChildDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/mappings/modules/test/TestDataDao.xml b/web-fast/src/main/resources/mappings/modules/test/TestDataDao.xml new file mode 100644 index 00000000..c21f5521 --- /dev/null +++ b/web-fast/src/main/resources/mappings/modules/test/TestDataDao.xml @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/mappings/modules/test/TestTreeDao.xml b/web-fast/src/main/resources/mappings/modules/test/TestTreeDao.xml new file mode 100644 index 00000000..7486b49e --- /dev/null +++ b/web-fast/src/main/resources/mappings/modules/test/TestTreeDao.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/static/common/common.css b/web-fast/src/main/resources/static/common/common.css new file mode 100644 index 00000000..f94b7e40 --- /dev/null +++ b/web-fast/src/main/resources/static/common/common.css @@ -0,0 +1,5 @@ +/*! + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + * 项目自定义的公共CSS,可覆盖jeesite.css里的样式 + */ diff --git a/web-fast/src/main/resources/static/common/common.js b/web-fast/src/main/resources/static/common/common.js new file mode 100644 index 00000000..14bccc01 --- /dev/null +++ b/web-fast/src/main/resources/static/common/common.js @@ -0,0 +1,5 @@ +/*! + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + * 项目自定义的公共JavaScript,可覆盖jeesite.js里的方法 + */ diff --git a/web-fast/src/main/resources/static/favicon.png b/web-fast/src/main/resources/static/favicon.png new file mode 100644 index 00000000..72734e51 Binary files /dev/null and b/web-fast/src/main/resources/static/favicon.png differ diff --git a/web-fast/src/main/resources/views/modules/demo/demoDataGridEditGrid.html b/web-fast/src/main/resources/views/modules/demo/demoDataGridEditGrid.html new file mode 100644 index 00000000..7e4bcb42 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoDataGridEditGrid.html @@ -0,0 +1,264 @@ +<% layout('/layouts/default.html', {title: '编辑表格多行编辑', libs: ['dataGrid','validate']}){ %> +
+
+
+
+ 编辑表格多行编辑 +
+ +
+
+ <#form:form id="searchForm" model="${testData}" action="${ctx}/test/testData/listData" method="post" class="form-inline hide" + data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}"> +
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control width-120"/> +
+
+
+ +
+ <#form:input path="testTextarea" maxlength="200" class="form-control width-120"/> +
+
+
+ +
+ <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:radio path="testRadio" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:checkbox path="testCheckbox" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:input path="testDate_gte" readonly="true" maxlength="20" class="form-control laydate width-date" + dataFormat="date" data-type="date" data-format="yyyy-MM-dd" data-done="testDate_lte.click()"/> +  -  + <#form:input path="testDate_lte" readonly="true" maxlength="20" class="form-control laydate width-date" + dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/> +
+
+
+ +
+ <#form:input path="testDatetime_gte" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm" data-done="testDatetime_lte.click()"/> +  -  + <#form:input path="testDatetime_lte" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/> +
+
+
+ +
+ <#form:treeselect id="testUser" title="用户选择" + path="testUser.userCode" labelPath="testUser.userName" + url="${ctx}/sys/office/treeData?isLoadUser=true" allowClear="true"/> +
+
+
+ +
+ <#form:treeselect id="testOffice" title="机构选择" + path="testOffice.officeCode" labelPath="testOffice.officeName" + url="${ctx}/sys/office/treeData" allowClear="true"/> +
+
+
+ +
+ <#form:treeselect id="testAreaCode" title="区域选择" + path="testAreaCode" labelPath="testAreaName" + url="${ctx}/sys/area/treeData" allowClear="true"/> +
+
+
+ +
+ <#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/> +
+
+
+ +
+ <#form:input path="remarks" maxlength="500" class="form-control width-120"/> +
+
+
+ + +
+ + <#form:form id="inputForm" model="${testData}" action="${ctx}/test/testData/save" method="post" class="form-horizontal table-form"> +
+
+ +
+
+
+<% } %> + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoDataGridGroupGrid.html b/web-fast/src/main/resources/views/modules/demo/demoDataGridGroupGrid.html new file mode 100644 index 00000000..3be4e152 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoDataGridGroupGrid.html @@ -0,0 +1,234 @@ +<% layout('/layouts/default.html', {title: '多表头分组小计合计', libs: ['dataGrid']}){ %> +
+
+
+
+ 多表头分组小计合计 +
+
+ 查询 + <% if(hasPermi('test:testData:edit')){ %> + 新增 + <% } %> + 统计表样例 +
+
+
+ <#form:form id="searchForm" model="${testData}" action="${ctx}/test/testData/listData" method="post" class="form-inline hide" + data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}"> +
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control width-120"/> +
+
+
+ +
+ <#form:input path="testTextarea" maxlength="200" class="form-control width-120"/> +
+
+
+ +
+ <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:radio path="testRadio" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:checkbox path="testCheckbox" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:input path="testDate_gte" readonly="true" maxlength="20" class="form-control laydate width-date" + dataFormat="date" data-type="date" data-format="yyyy-MM-dd" data-done="testDate_lte.click()"/> +  -  + <#form:input path="testDate_lte" readonly="true" maxlength="20" class="form-control laydate width-date" + dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/> +
+
+
+ +
+ <#form:input path="testDatetime_gte" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm" data-done="testDatetime_lte.click()"/> +  -  + <#form:input path="testDatetime_lte" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/> +
+
+
+ +
+ <#form:treeselect id="testUser" title="用户选择" + path="testUser.userCode" labelPath="testUser.userName" + url="${ctx}/sys/office/treeData?isLoadUser=true" allowClear="true"/> +
+
+
+ +
+ <#form:treeselect id="testOffice" title="机构选择" + path="testOffice.officeCode" labelPath="testOffice.officeName" + url="${ctx}/sys/office/treeData" allowClear="true"/> +
+
+
+ +
+ <#form:treeselect id="testAreaCode" title="区域选择" + path="testAreaCode" labelPath="testAreaName" + url="${ctx}/sys/area/treeData" allowClear="true"/> +
+
+
+ +
+ <#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/> +
+
+
+ +
+ <#form:input path="remarks" maxlength="500" class="form-control width-120"/> +
+
+
+ + +
+ +
+
+
+
+
+<% } %> + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoDataGridMultiGrid.html b/web-fast/src/main/resources/views/modules/demo/demoDataGridMultiGrid.html new file mode 100644 index 00000000..eab14998 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoDataGridMultiGrid.html @@ -0,0 +1,115 @@ +<% layout('/layouts/default.html', {title: '多表格联动示例', libs: ['layout', 'dataGrid']}){ %> +
+
+
+
+
+ ${text('岗位列表')}(多表格联动示例) +
+
+
+ <#form:form id="searchForm" model="${post!}" action="${ctx}/sys/post/listData" method="post" class="form-inline hide" + data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize!3}" + data-order-by="${parameter.orderBy!'post_code desc'}"> +
+ + +
+ +
+
+
+
+
+
+
+
+
+
+
+ ${text('用户列表')}(点击岗位查询对应用户) +
+
+
+ <#form:form id="searchForm2" model="${empUser!}" action="${ctx}/sys/empUser/listData" method="post" class="form-inline hide" + data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize!6}" + data-order-by="${parameter.orderBy}"> +
+ +
+ <#form:input name="employee.postCode" id="postCode" class="form-control"/> +
+
+ +
+
+
+
+
+
+ +<% } %> + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoDataGridStateGrid.html b/web-fast/src/main/resources/views/modules/demo/demoDataGridStateGrid.html new file mode 100644 index 00000000..55f434d0 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoDataGridStateGrid.html @@ -0,0 +1,149 @@ +<% layout('/layouts/default.html', {title: '统计表样例', libs: ['dataGrid']}){ %> + +
+
+
+
+ ${text('统计表样例')} +
+ +
+
+ <#form:form id="searchForm" class="form-inline hide" > +
+ +
+ <#form:input path="dateStart" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="date" /> +  --  + <#form:input path="dateEnd" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="date" /> +
+
+
+ +
+ <#form:treeselect id="areaId" title="区域选择" + path="areaId" canSelectParent="true" canSelectRoot="true" + url="${ctx}/sys/area/treeData?parentCode=0" allowClear="true"/> +
+
+
+ + +
+ +
+
+
+
+<% } %> + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoFormEditForm.html b/web-fast/src/main/resources/views/modules/demo/demoFormEditForm.html new file mode 100644 index 00000000..4f5dc135 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoFormEditForm.html @@ -0,0 +1,501 @@ +<% layout('/layouts/default.html', {title: '组件应用实例', libs: ['validate','fileupload','ueditor','dataGrid','inputmask']}){ %> +
+
+
+
+ 组件应用实例 +
+
+ +
+
+ <#form:form id="inputForm" model="${testData}" action="${ctx}/test/testData/save" method="post" class="form-horizontal"> +
+
基本信息
+ <#form:hidden path="id"/> +
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:textarea path="testTextarea" rows="4" maxlength="200" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control" /> +
+
+
+
+
+ +
+ <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control" /> +
+
+
+
+
+
+
+ +
+ <#form:radio path="testRadio" dictType="sys_menu_type" class="form-control" /> +
+
+
+
+
+ +
+ <#form:checkbox path="testCheckbox" dictType="sys_menu_type" class="form-control" /> +
+
+
+
+
+
+
+ +
+ <#form:input path="testDate" readonly="true" maxlength="20" class="form-control laydate " + dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/> +
+
+
+
+
+ +
+ <#form:input path="testDatetime" readonly="true" maxlength="20" class="form-control laydate " + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/> +
+
+
+
+
+
+
+ +
+
+ + <#form:input path="testInput_money" maxlength="200" class="form-control inputmask" + data-inputmask-alias="money" data-inputmask="'digits':'2'"/> + (千分位,右对齐,保留2位小数) +
+
+
+
+
+
+ +
+
+ + <#form:input path="testInput_regex" maxlength="200" class="form-control inputmask" + data-inputmask-regex="[a-zA-Z0-9._%-]+@[a-zA-Z0-9-]+\\.[a-zA-Z]{2,4}"/> + (正则表达式) +
+
+
+
+
+
+
+
+ +
+ <#form:treeselect id="testUser" title="用户选择" + path="testUser.userCode" labelPath="testUser.userName" + url="${ctx}/sys/office/treeData?isLoadUser=true" + class="" allowClear="true"/> +
+
+
+
+
+ +
+ <#form:treeselect id="testUser2" title="用户选择" + path="testUser.userCode" labelPath="testUser.userName" + url="${ctx}/sys/office/treeData?isLoadUser=true" + class="" allowClear="true" checkbox="true"/> +
+
+
+
+
+
+
+ +
+ <#form:listselect id="testUser3" title="用户选择" + url="${ctx}/sys/empUser/empUserSelect" allowClear="false" + checkbox="false" itemCode="userCode" itemName="userName"/> +
+
+
+
+
+ +
+ <#form:listselect id="testUser4" title="用户选择" + url="${ctx}/sys/empUser/empUserSelect" allowClear="false" + checkbox="true" itemCode="userCode" itemName="userName"/> +
+
+
+
+
+
+
+ +
+ <#form:treeselect id="testAreaCode" title="区域选择" + path="testAreaCode" labelPath="testAreaName" + url="${ctx}/sys/area/treeData?parentCode=0" + class="" allowClear="true" returnFullName="true"/> +
+
+
+
+
+ +
+ <#form:treeselect id="testOffice" title="机构选择" + path="testOffice.officeCode" labelPath="testOffice.officeName" + url="${ctx}/sys/office/treeData" + class="" allowClear="true"/> +
+
+
+
+
+
+
+ +
+
+ + +
+
+
+
+
+ +
+ <#form:input path="areaSelectValue" maxlength="200" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:ueditor path="remarks" maxlength="10000" height="200" class="" + simpleToolbars="true" readonly="false" outline="false"/> +
+
+
+
+
+
+
+ +
+ <#form:fileupload id="uploadImage" bizKey="${testData.id}" bizType="testData_image" + uploadType="image" class="" readonly="false" preview="true"/> +
+
+
+
+
+
+
+ +
+ <#form:fileupload id="uploadImage2" returnPath="true" + filePathInputId="uploadImage2Path" fileNameInputId="uploadImage2Name" + uploadType="image" readonly="false" preview="true" maxUploadNum="3" isMini="false"/> + <#form:input name="uploadImage2Path" value="/js/userfiles/fileupload/201812/1073024549485039616.png|/js/userfiles/fileupload/201812/1073043095867133952.png" class="form-control"/> + <#form:input name="uploadImage2Name" value="0 (1).png|0 (2).png" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:fileupload id="uploadFile" bizKey="${testData.id}" bizType="testData_file" + uploadType="all" class="" readonly="false" preview="true"/> +
+
+
+
+

测试数据子表

+
+
+ <% if (hasPermi('test:testData:edit')){ %> + 增行 + <% } %> +
+
+ + +
+
+<% } %> + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoFormLaydate.html b/web-fast/src/main/resources/views/modules/demo/demoFormLaydate.html new file mode 100644 index 00000000..03c86e5c --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoFormLaydate.html @@ -0,0 +1,66 @@ +<% layout('/layouts/default.html', {title: '文书内容', libs: ['validate','dataGrid','fileupload']}){ %> +
+
+ +
+
+<% } %> + + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoFormLayoutForm.html b/web-fast/src/main/resources/views/modules/demo/demoFormLayoutForm.html new file mode 100644 index 00000000..dfd0d301 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoFormLayoutForm.html @@ -0,0 +1,279 @@ +<% layout('/layouts/default.html', {title: '数据管理', libs: ['validate','fileupload','ueditor','dataGrid']}){ %> +
+
+
+
+ ${testData.isNewRecord ? '新增数据' : '编辑数据'} +
+
+ +
+
+ <#form:form id="inputForm" model="${testData}" action="${ctx}/test/testData/save" method="post" class="form-horizontal"> +
+
一列
+ <#form:hidden path="id"/> +
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:textarea path="testTextarea" rows="4" maxlength="200" class="form-control"/> +
+
+
+
+
两列
+
+
+
+ +
+ <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control" /> +
+
+
+
+
+ +
+ <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control" /> +
+
+
+
+
+
+
+ +
+ <#form:radio path="testRadio" dictType="sys_menu_type" class="form-control" /> +
+
+
+
+
+ +
+ <#form:checkbox path="testCheckbox" dictType="sys_menu_type" class="form-control" /> +
+
+
+
+
三列
+
+
+
+ +
+ <#form:input path="testDate" readonly="true" maxlength="20" class="form-control laydate " + dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/> +
+
+
+
+
+ +
+ <#form:input path="testDatetime" readonly="true" maxlength="20" class="form-control laydate " + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/> +
+
+
+
+
+ +
+ <#form:treeselect id="testUser" title="用户选择" + path="testUser.userCode" labelPath="testUser.userName" + url="${ctx}/sys/office/treeData?isLoadUser=true" + class="" allowClear="true"/> +
+
+
+
+
+
+
+ +
+ <#form:treeselect id="testOffice" title="机构选择" + path="testOffice.officeCode" labelPath="testOffice.officeName" + url="${ctx}/sys/office/treeData" + class="" allowClear="true"/> +
+
+
+
+
+ +
+ <#form:treeselect id="testAreaCode" title="区域选择" + path="testAreaCode" labelPath="testAreaName" + url="${ctx}/sys/area/treeData" + class="" allowClear="true"/> +
+
+
+
+
+ +
+ <#form:input path="remarks" class="form-control"/> +
+
+
+
+
+
+
+ + +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
四列
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+ + +
+
+<% } %> + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoFormTabPage.html b/web-fast/src/main/resources/views/modules/demo/demoFormTabPage.html new file mode 100644 index 00000000..ee783727 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoFormTabPage.html @@ -0,0 +1,72 @@ +<% layout('/layouts/default.html', {title: '多页签应用示例', libs: ['tabPage']}){ %> +
+
+
+
+ 多页签应用示例 +
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+<% } %> + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/demo/demoFormTableForm.html b/web-fast/src/main/resources/views/modules/demo/demoFormTableForm.html new file mode 100644 index 00000000..7d7f3792 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/demo/demoFormTableForm.html @@ -0,0 +1,239 @@ +<% layout('/layouts/default.html', {title: '数据管理', libs: ['validate','fileupload','ueditor','dataGrid']}){ %> +
+
+
+
+ 表格表单实例 +
+
+ +
+
+ <#form:form id="inputForm" model="${testData}" action="${ctx}/test/testData/save" method="post" class="form-horizontal"> +
+

产品信息情况

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
基本信息
* 负责人 + <#form:input path="testInput" maxlength="200" class="form-control required" defaultValue="小王"/> + 所属部门 + <#form:treeselect id="testOffice" title="机构选择" + path="testOffice.officeCode" labelPath="testOffice.officeName" + url="${ctx}/sys/office/treeData" defaultLabel="技术部" + class="required" allowClear="true"/> + +
+ <#form:fileupload id="uploadImage" bizKey="${testData.id}" bizType="testData_image" + uploadType="image" class="" readonly="false" preview="true" + maxUploadNum="1" isMini="true"/> +
+
单行文本 + <#form:input path="testInput" maxlength="200" class="form-control" defaultValue="演示文本"/> + 单行文本 + <#form:input path="testInput" maxlength="200" class="form-control" defaultValue="演示文本"/> +
下拉框 + <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control" defaultValue="1"/> + 下拉多选 + <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control" defaultValue="2"/> +
单选框 + <#form:radio path="testRadio" dictType="sys_menu_type" class="form-control" defaultValue="1"/> + 复选框 + <#form:checkbox path="testCheckbox" dictType="sys_menu_type" class="form-control" defaultValue="1"/> +
日期选择 + <#form:input path="testDate" readonly="true" maxlength="20" class="form-control laydate " + dataFormat="date" data-type="date" data-format="yyyy-MM-dd" defaultValue="${date()}"/> + 日期时间 + <#form:input path="testDatetime" readonly="true" maxlength="20" class="form-control laydate " + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm" defaultValue="${date()}"/> +
团队人数 人。其中技术人员 + 人。 +
办公面积服务户数
详细信息
+ + + + + + + + + + + + + + + + + +
项目编号项目名称项目版本
新增产值 万元新增销售额 万元新增交税总额 万元
+
内容简介 + +
子表数据 +
+ 增行 +
+ + + + + +
附件
+ <#form:fileupload id="uploadFile" bizKey="${testData.id}" bizType="testData_file" + uploadType="all" class="" readonly="false" preview="true"/> +
+
+   +   + +
+
+ + +
+
+<% } %> + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/test/testDataForm.html b/web-fast/src/main/resources/views/modules/test/testDataForm.html new file mode 100644 index 00000000..a106be91 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/test/testDataForm.html @@ -0,0 +1,403 @@ +<% layout('/layouts/default.html', {title: '数据管理', libs: ['validate','fileupload','dataGrid']}){ %> +
+
+
+
+ ${text(testData.isNewRecord ? '新增数据' : '编辑数据')} +
+
+ +
+
+ <#form:form id="inputForm" model="${testData}" action="${ctx}/test/testData/save" method="post" class="form-horizontal"> +
+
${text('基本信息')}
+ <#form:hidden path="id"/> +
+
+
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:textarea path="testTextarea" rows="4" maxlength="200" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control" /> +
+
+
+
+
+ +
+ <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control" /> +
+
+
+
+
+
+
+ +
+ <#form:radio path="testRadio" dictType="sys_menu_type" class="form-control" /> +
+
+
+
+
+ +
+ <#form:checkbox path="testCheckbox" dictType="sys_menu_type" class="form-control" /> +
+
+
+
+
+
+
+ +
+ <#form:input path="testDate" readonly="true" maxlength="20" class="form-control laydate" + dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/> +
+
+
+
+
+ +
+ <#form:input path="testDatetime" readonly="true" maxlength="20" class="form-control laydate" + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/> +
+
+
+
+
+
+
+ +
+ <#form:treeselect id="testUser" title="${text('用户选择')}" + path="testUser.userCode" labelPath="testUser.userName" + url="${ctx}/sys/office/treeData?isLoadUser=true" + class="" allowClear="true"/> +
+
+
+
+
+ +
+ <#form:treeselect id="testOffice" title="${text('机构选择')}" + path="testOffice.officeCode" labelPath="testOffice.officeName" + url="${ctx}/sys/office/treeData" + class="" allowClear="true"/> +
+
+
+
+
+
+
+ +
+ <#form:treeselect id="testAreaCode" title="${text('区域选择')}" + path="testAreaCode" labelPath="testAreaName" + url="${ctx}/sys/area/treeData" + class="" allowClear="true"/> +
+
+
+
+
+
+
+ +
+ <#form:textarea path="remarks" rows="4" maxlength="500" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:fileupload id="uploadImage" bizKey="${testData.id}" bizType="testData_image" + uploadType="image" class="" readonly="false" preview="true"/> +
+
+
+
+
+
+
+ +
+ <#form:fileupload id="uploadFile" bizKey="${testData.id}" bizType="testData_file" + uploadType="all" class="" readonly="false" preview="true"/> +
+
+
+
+

${text('子表数据')}

+
+
+ <% if (hasPermi('test:testData:edit')){ %> + ${text('增行')} + <% } %> +
+
+ + +
+
+<% } %> + + + + + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/test/testDataList.html b/web-fast/src/main/resources/views/modules/test/testDataList.html new file mode 100644 index 00000000..f6df5703 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/test/testDataList.html @@ -0,0 +1,244 @@ +<% layout('/layouts/default.html', {title: '数据管理', libs: ['dataGrid']}){ %> +
+
+
+
+ ${text('数据管理')} +
+
+ ${text('查询')} + <% if(hasPermi('test:testData:edit')){ %> + ${text('新增')} + <% } %> + 事务测试 + +
+
+
+ <#form:form id="searchForm" model="${testData}" action="${ctx}/test/testData/listData" method="post" class="form-inline " + data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}"> +
+ +
+ <#form:input path="testInput" maxlength="200" class="form-control width-120"/> +
+
+
+ +
+ <#form:input path="testTextarea" maxlength="200" class="form-control width-120"/> +
+
+
+ +
+ <#form:select path="testSelect" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:input path="testDate_gte" readonly="true" maxlength="20" class="form-control laydate width-date" + dataFormat="date" data-type="date" data-format="yyyy-MM-dd" data-done="testDate_lte.click()"/> +  -  + <#form:input path="testDate_lte" readonly="true" maxlength="20" class="form-control laydate width-date" + dataFormat="date" data-type="date" data-format="yyyy-MM-dd"/> +
+
+
+ + + +
+
+
+ +
+ <#form:input path="testDatetime_gte" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm" data-done="testDatetime_lte.click()"/> +  -  + <#form:input path="testDatetime_lte" readonly="true" maxlength="20" class="form-control laydate width-datetime" + dataFormat="datetime" data-type="datetime" data-format="yyyy-MM-dd HH:mm"/> +
+
+
+ +
+ <#form:treeselect id="testUser" title="${text('用户选择')}" + path="testUser.userCode" labelPath="testUser.userName" + url="${ctx}/sys/office/treeData?isLoadUser=true" allowClear="true"/> +
+
+
+ +
+ <#form:treeselect id="testOffice" title="${text('机构选择')}" + path="testOffice.officeCode" labelPath="testOffice.officeName" + url="${ctx}/sys/office/treeData" allowClear="true"/> +
+
+
+ +
+ <#form:treeselect id="testAreaCode" title="${text('区域选择')}" + path="testAreaCode" labelPath="testAreaName" + url="${ctx}/sys/area/treeData" allowClear="true"/> +
+
+
+ +
+ <#form:select path="testSelectMultiple" dictType="sys_menu_type" multiple="true" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/> +
+
+
+ +
+ <#form:radio path="testRadio" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+ <#form:checkbox path="testCheckbox" dictType="sys_menu_type" blankOption="true" class="form-control"/> +
+
+
+ +
+
+
+
+
+<% } %> + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/test/testTreeForm.html b/web-fast/src/main/resources/views/modules/test/testTreeForm.html new file mode 100644 index 00000000..8c3ad58d --- /dev/null +++ b/web-fast/src/main/resources/views/modules/test/testTreeForm.html @@ -0,0 +1,131 @@ +<% layout('/layouts/default.html', {title: '数据管理', libs: ['validate','fileupload']}){ %> +
+
+
+
+ ${text(testTree.isNewRecord ? '新增数据' : '编辑数据')} +
+
+ +
+
+ <#form:form id="inputForm" model="${testTree}" action="${ctx}/test/testTree/save" method="post" class="form-horizontal"> +
+
${text('基本信息')}
+
+
+
+ +
+ <#form:treeselect id="parent" title="${text('上级数据')}" + path="parent.id" labelPath="parent.treeName" + url="${ctx}/test/testTree/treeData?excludeCode=${testTree.id}" + class="" allowClear="true" canSelectRoot="true" canSelectParent="true"/> +
+
+
+
+
+ +
+ <#form:hidden path="isNewRecord"/> + <#form:input path="treeCode" maxlength="64" readonly="${!testTree.isNewRecord}" class="form-control required abc"/> +
+
+
+
+
+
+
+ +
+ <#form:input path="treeName" maxlength="200" class="form-control required"/> +
+
+
+
+
+ +
+ <#form:input path="treeSort" class="form-control required digits"/> +
+
+
+
+
+
+
+ +
+ <#form:textarea path="remarks" rows="4" maxlength="500" class="form-control"/> +
+
+
+
+
+
+
+ +
+ <#form:fileupload id="uploadImage" bizKey="${testTree.id}" bizType="testTree_image" + uploadType="image" class="" readonly="false" preview="true"/> +
+
+
+
+
+
+
+ +
+ <#form:fileupload id="uploadFile" bizKey="${testTree.id}" bizType="testTree_file" + uploadType="all" class="" readonly="false" preview="true"/> +
+
+
+
+
+ + +
+
+<% } %> + \ No newline at end of file diff --git a/web-fast/src/main/resources/views/modules/test/testTreeList.html b/web-fast/src/main/resources/views/modules/test/testTreeList.html new file mode 100644 index 00000000..6b7d0ff6 --- /dev/null +++ b/web-fast/src/main/resources/views/modules/test/testTreeList.html @@ -0,0 +1,95 @@ +<% layout('/layouts/default.html', {title: '数据管理', libs: ['dataGrid']}){ %> +
+
+
+
+ ${text('数据管理')} +
+
+ ${text('查询')} + ${text('刷新')} + ${text('展开')} + ${text('折叠')} + <% if(hasPermi('test:testTree:edit')){ %> + ${text('新增')} + 修复 + <% } %> +
+
+
+ <#form:form id="searchForm" model="${testTree}" action="${ctx}/test/testTree/listData" method="post" class="form-inline hide" + data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}"> +
+ +
+ <#form:input path="treeName" maxlength="200" class="form-control width-120"/> +
+
+
+ +
+ <#form:input path="remarks" maxlength="500" class="form-control width-120"/> +
+
+
+ +
+ <#form:select path="status" dictType="sys_search_status" blankOption="true" class="form-control isQuick"/> +
+
+
+ + +
+ +
+
+
+
+<% } %> + \ No newline at end of file diff --git a/web-fast/src/main/webapp/WEB-INF/startup.bat b/web-fast/src/main/webapp/WEB-INF/startup.bat new file mode 100644 index 00000000..ebc71645 --- /dev/null +++ b/web-fast/src/main/webapp/WEB-INF/startup.bat @@ -0,0 +1,51 @@ +@echo off +rem /** +rem * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +rem * No deletion without permission, or be held responsible to law. +rem * +rem * Author: ThinkGem@163.com +rem */ +echo. +echo [Ϣ] Web̡ +echo. +rem pause +rem echo. + +%~d0 +cd %~dp0 + +title %cd% + +rem JDKĿ¼ +rem set "JAVA_HOME=%cd%\jdk1.8.0_x64" + +rem · +set "CLASS_PATH=%cd%/../" + +rem ŻJVM +set "JAVA_OPTS=-Xms512m -Xmx1024m" + +rem ʽһⲿԶļ飩 +rem set "JAVA_OPTS=%JAVA_OPTS% -Dspring.config.location=%cd%\app.yml" + +rem ʽûƣزͬļ +rem set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=prod" + +if "%JAVA_HOME%" == "" goto noJavaHome +if not "%JAVA_HOME%" == "" goto gotJavaHome +goto end + +:noJavaHome +set RUN_JAVA=java +goto runJava + +:gotJavaHome +set "RUN_JAVA=%JAVA_HOME%\bin\java" +goto runJava + +:runJava +call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.WarLauncher +goto end + +:end +pause diff --git a/web-fast/src/main/webapp/WEB-INF/startup.sh b/web-fast/src/main/webapp/WEB-INF/startup.sh new file mode 100644 index 00000000..eba46cef --- /dev/null +++ b/web-fast/src/main/webapp/WEB-INF/startup.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# /** +# * Copyright (c) 2013-Now http://jeesite.com All rights reserved. +# * No deletion without permission, or be held responsible to law. +# * +# * Author: ThinkGem@163.com +# */ +echo "" +echo "[信息] 运行Web工程。" +echo "" + +# 设置JDK目录 +# JAVA_HOME="$PWD/jdk1.8.0_x64" + +# 设置类加载路径 +CLASS_PATH="$PWD/../" + +# 优化JVM参数 +JAVA_OPTS="-Xms512m -Xmx1024m" + +# 方式一、配置外部自定义的属性文件(建议) +# JAVA_OPTS="$JAVA_OPTS -Dspring.config.location=$PWD/app.yml" + +# 方式二、配置环境名称,加载不同的属性文件 +# JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=prod" + +if [ -z "$JAVA_HOME" ]; then + RUN_JAVA=java +else + RUN_JAVA="$JAVA_HOME"/bin/java +fi + +exec $RUN_JAVA -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.WarLauncher \ No newline at end of file diff --git a/web-fast/src/main/webapp/WEB-INF/web.xml b/web-fast/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..67e6ef59 --- /dev/null +++ b/web-fast/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,18 @@ + + + + JeeSite + + + 500 + /error/500 + + + 404 + /error/404 + + + \ No newline at end of file diff --git a/web-fast/src/test/java/com/jeesite/test/InitData.java b/web-fast/src/test/java/com/jeesite/test/InitData.java new file mode 100644 index 00000000..2a2089a6 --- /dev/null +++ b/web-fast/src/test/java/com/jeesite/test/InitData.java @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.test; + +import org.junit.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import com.jeesite.common.tests.BaseInitDataTests; +import com.jeesite.modules.FastApplication; + +/** + * 初始化数据表 + * @author ThinkGem + * @version 2020-5-26 + */ +@ActiveProfiles("test") +@SpringBootTest(classes = FastApplication.class) +public class InitData extends BaseInitDataTests { + + @Test + public void initData01() throws Exception{ + logger.info("数据库初始化完成。"); + } + + @Override + public void initProperty() { + System.setProperty("jeesite.initdata", "true"); + } + +} diff --git a/web-fast/src/test/java/com/jeesite/test/InsertBatchTest.java b/web-fast/src/test/java/com/jeesite/test/InsertBatchTest.java new file mode 100644 index 00000000..476777ce --- /dev/null +++ b/web-fast/src/test/java/com/jeesite/test/InsertBatchTest.java @@ -0,0 +1,51 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.test; + +import java.util.List; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import com.jeesite.common.callback.MethodCallback; +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.tests.BaseSpringContextTests; +import com.jeesite.modules.FastApplication; +import com.jeesite.modules.test.dao.TestDataDao; +import com.jeesite.modules.test.entity.TestData; + +/** + * 批量插入测试 + * @author ThinkGem + * @version 2019年10月28日 + */ +@ActiveProfiles("test") +@SpringBootTest(classes = FastApplication.class) +public class InsertBatchTest extends BaseSpringContextTests { + + @Autowired + private TestDataDao testDataDao; + + @Test + public void testData() throws Exception{ + List list = ListUtils.newArrayList(); + for(int i=0; i<5000; i++){ + TestData testData = new TestData(); + testData.setTestInput("test"+i); + list.add(testData); + } + ListUtils.pageList(list, 100, new MethodCallback() { + @SuppressWarnings("unchecked") + public Object execute(Object... objs) { + return testDataDao.insertBatch((List)objs[0]); + } + }); + list = testDataDao.findList(new TestData()); + System.out.println("size: " + list.size()); + } + +} diff --git a/web-fast/src/test/java/com/jeesite/test/MultiDataSourceTest.java b/web-fast/src/test/java/com/jeesite/test/MultiDataSourceTest.java new file mode 100644 index 00000000..c8049325 --- /dev/null +++ b/web-fast/src/test/java/com/jeesite/test/MultiDataSourceTest.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.test; + +import java.util.List; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import com.jeesite.common.collect.ListUtils; +import com.jeesite.common.idgen.IdGen; +import com.jeesite.common.tests.BaseSpringContextTests; +import com.jeesite.modules.FastApplication; +import com.jeesite.modules.test.entity.TestData; +import com.jeesite.modules.test.entity.TestDataChild; +import com.jeesite.modules.test.service.TestDataService; + +/** + * 多数据源并发测试
+ * 1、将 TestDataChildDao 的数据源设置为 ds2
+ * 2、将 TestDataChild 的表名设置为 test_data_child2
+ * 3、配置 ds2 数据源,并创建 test_data_child2 表 + * @author ThinkGem + * @version 2019-6-26 + */ +@ActiveProfiles("test") +@SpringBootTest(classes = FastApplication.class) +public class MultiDataSourceTest extends BaseSpringContextTests { + + @Autowired + private TestDataService testDataService; + + @Test + public void testData() throws Exception{ + ExecutorService pool = Executors.newCachedThreadPool(); + CountDownLatch latch = new CountDownLatch(10); + Runnable runnable = new Runnable() { + @Override + public void run() { + try{ + Thread.sleep(IdGen.randomInt(1000, 3000)); + TestData testData = new TestData(); + testData.setTestDataChildList(ListUtils.newArrayList( + new TestDataChild(), new TestDataChild(), new TestDataChild())); + testDataService.save(testData); + List list = testDataService.findList(new TestData()); + System.out.println("size: " + list.size()); + list.forEach(e -> { + System.out.println("get: " + testDataService.get(e)); + }); + } catch (Exception e) { + System.err.println(e.getMessage()); + } finally { + latch.countDown(); + } + } + }; + for (int i = 0; i < latch.getCount(); i++) { + pool.execute(runnable); + } + latch.await(); + pool.shutdown(); + } + +} diff --git a/web-fast/src/test/java/com/jeesite/test/RememberMeKeyGen.java b/web-fast/src/test/java/com/jeesite/test/RememberMeKeyGen.java new file mode 100644 index 00000000..c3005103 --- /dev/null +++ b/web-fast/src/test/java/com/jeesite/test/RememberMeKeyGen.java @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + */ +package com.jeesite.test; + +import org.apache.shiro.crypto.AesCipherService; + +/** + * v4.1.8 开始将不为记住我功能,设置默认密钥,即启动系统时生成新密钥。 + * 这样会造成一个问题,比如:重启服务后,记住登录的用户因为解密失败,而需要重新登录。 + * 为了解决这个问题,您可以通过这个类获取一个新密钥,设置到 shiro.rememberMe.secretKey 中即可。 + * 另外,如果你从配置文件里将 shiro.rememberMe.secretKey 设置为空,启动系统时也会自动设置一个新的密钥。 + * @author ThinkGem + * @version 2019年11月6日 + */ +public class RememberMeKeyGen { + + public static void main(String[] args) { + byte[] cipherKey = new AesCipherService().generateNewKey().getEncoded(); + String secretKey = org.apache.shiro.codec.Base64.encodeToString(cipherKey); + System.out.println("shiro.rememberMe.secretKey = " + secretKey); + } + +} diff --git a/web-fast/src/test/java/logback-test.xml b/web-fast/src/test/java/logback-test.xml new file mode 100644 index 00000000..98aa2446 --- /dev/null +++ b/web-fast/src/test/java/logback-test.xml @@ -0,0 +1,19 @@ + + + + + + + + + + %d{HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx + + + + + + + + + \ No newline at end of file