Compare commits
76 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c9dd006597 | ||
|
|
3a770f2818 | ||
|
|
4e16ddc6b1 | ||
|
|
8ecff6b07f | ||
|
|
de0d6f72e1 | ||
|
|
ab96f88dc4 | ||
|
|
a19f76788f | ||
|
|
b4c7f49589 | ||
|
|
708acb0817 | ||
|
|
8b629fe0f1 | ||
|
|
b2a0d0811b | ||
|
|
383f81a84b | ||
|
|
8e0ffb9591 | ||
|
|
222b66abeb | ||
|
|
19fc483274 | ||
|
|
6bd4204fec | ||
|
|
a9f8cd778e | ||
|
|
a57052ba38 | ||
|
|
63111832dc | ||
|
|
5834b92129 | ||
|
|
37259267a2 | ||
|
|
4396fdaea4 | ||
|
|
ce1c531580 | ||
|
|
238102bf80 | ||
|
|
6c01728455 | ||
|
|
c39a8226e5 | ||
|
|
0e39f391cd | ||
|
|
35b96a0f3d | ||
|
|
f2c23b72a0 | ||
|
|
04bef9ac2c | ||
|
|
ae274cd8e6 | ||
|
|
596c64aa56 | ||
|
|
dcbac8dea9 | ||
|
|
dcf2b48d31 | ||
|
|
0127572420 | ||
|
|
d5b2e37fdb | ||
|
|
aa9e0b82bc | ||
|
|
94ca59e025 | ||
|
|
b1996130e6 | ||
|
|
9dbf48c30d | ||
|
|
9cf813dcd6 | ||
|
|
f1c2aa1281 | ||
|
|
afc61f4a32 | ||
|
|
b05433f0b6 | ||
|
|
81657cd0df | ||
|
|
26871a85f6 | ||
|
|
b4d93dda93 | ||
|
|
06d75964db | ||
|
|
8a1268d8a8 | ||
|
|
759b416297 | ||
|
|
129764925c | ||
|
|
eb340af57c | ||
|
|
1ddaa7b34d | ||
|
|
c7a03196a8 | ||
|
|
a96991f7ea | ||
|
|
5fd34ea584 | ||
|
|
7e42620f44 | ||
|
|
7409024987 | ||
|
|
0e919bdd0a | ||
|
|
09a567f4d9 | ||
|
|
e61f7f1ecb | ||
|
|
dc9bfdc65e | ||
|
|
f7cf4dc521 | ||
|
|
46a4a3118f | ||
|
|
51335cffeb | ||
|
|
6c08c9a28c | ||
|
|
a98b928c3f | ||
|
|
ba55da3e71 | ||
|
|
9f8dfd53b1 | ||
|
|
4bf31c6418 | ||
|
|
ade275c057 | ||
|
|
c57bc6e6c0 | ||
|
|
22f4b1f121 | ||
|
|
a18ee3dbab | ||
|
|
699afecc3e | ||
|
|
fd55449efb |
@@ -8,6 +8,7 @@
|
||||
|
||||
### 报错信息
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
```
|
||||
@@ -39,8 +39,8 @@ JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,
|
||||
|
||||
## 技术选型
|
||||
|
||||
* 主框架:Spring Boot 2.2、Spring Framework 5.2、Apache Shiro 1.6、J2Cache
|
||||
* 持久层:Apache MyBatis 3.5、Hibernate Validator 6.0、Alibaba Druid 1.1
|
||||
* 主框架:Spring Boot 2.3、Spring Framework 5.2、Apache Shiro 1.7、J2Cache
|
||||
* 持久层:Apache MyBatis 3.5、Hibernate Validator 6.1、Alibaba Druid 1.2
|
||||
* 视图层:Spring MVC 5.2、Beetl 3.1(替换JSP)、Bootstrap 3.3、AdminLTE 2.4
|
||||
* 前端组件:jQuery 3.4、jqGrid 4.7、layer 3.1、zTree 3.5、jquery validation
|
||||
* 工作流引擎:Flowable 6.5、符合 BPMN 规范、在线流程设计器、中国式工作流
|
||||
|
||||
@@ -15,5 +15,4 @@ cd ..
|
||||
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."
|
||||
pause
|
||||
@@ -15,5 +15,4 @@ cd ..
|
||||
call mvn clean install -Dmaven.test.skip=true -Ppackage
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."
|
||||
pause
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>4.2.2-SNAPSHOT</version>
|
||||
<version>4.2.3-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -73,15 +73,15 @@ public class DesUtils {
|
||||
String encData = "";
|
||||
List firstKeyBt = null, secondKeyBt = null, thirdKeyBt = null;
|
||||
int firstLength = 0, secondLength = 0, thirdLength = 0;
|
||||
if (firstKey != null && firstKey != "") {
|
||||
if (firstKey != null && firstKey.equals("")) {
|
||||
firstKeyBt = getKeyBytes(firstKey);
|
||||
firstLength = firstKeyBt.size();
|
||||
}
|
||||
if (secondKey != null && secondKey != "") {
|
||||
if (secondKey != null && secondKey.equals("")) {
|
||||
secondKeyBt = getKeyBytes(secondKey);
|
||||
secondLength = secondKeyBt.size();
|
||||
}
|
||||
if (thirdKey != null && thirdKey != "") {
|
||||
if (thirdKey != null && thirdKey.equals("")) {
|
||||
thirdKeyBt = getKeyBytes(thirdKey);
|
||||
thirdLength = thirdKeyBt.size();
|
||||
}
|
||||
@@ -90,7 +90,7 @@ public class DesUtils {
|
||||
if (leng < 4) {
|
||||
int[] bt = strToBt(data);
|
||||
int[] encByte = null;
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("") && thirdKey != null && thirdKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y, z;
|
||||
tempBt = bt;
|
||||
@@ -105,7 +105,7 @@ public class DesUtils {
|
||||
}
|
||||
encByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y;
|
||||
tempBt = bt;
|
||||
@@ -117,7 +117,7 @@ public class DesUtils {
|
||||
}
|
||||
encByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "") {
|
||||
if (firstKey != null && firstKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x = 0;
|
||||
tempBt = bt;
|
||||
@@ -137,7 +137,7 @@ public class DesUtils {
|
||||
String tempData = data.substring(i * 4 + 0, i * 4 + 4);
|
||||
int[] tempByte = strToBt(tempData);
|
||||
int[] encByte = null;
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("") && thirdKey != null && thirdKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y, z;
|
||||
tempBt = tempByte;
|
||||
@@ -152,7 +152,7 @@ public class DesUtils {
|
||||
}
|
||||
encByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y;
|
||||
tempBt = tempByte;
|
||||
@@ -164,7 +164,7 @@ public class DesUtils {
|
||||
}
|
||||
encByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "") {
|
||||
if (firstKey != null && firstKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x;
|
||||
tempBt = tempByte;
|
||||
@@ -181,7 +181,7 @@ public class DesUtils {
|
||||
String remainderData = data.substring(iterator * 4 + 0, leng);
|
||||
int[] tempByte = strToBt(remainderData);
|
||||
int[] encByte = null;
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("") && thirdKey != null && thirdKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y, z;
|
||||
tempBt = tempByte;
|
||||
@@ -196,7 +196,7 @@ public class DesUtils {
|
||||
}
|
||||
encByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y;
|
||||
tempBt = tempByte;
|
||||
@@ -208,7 +208,7 @@ public class DesUtils {
|
||||
}
|
||||
encByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "") {
|
||||
if (firstKey != null && firstKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x;
|
||||
tempBt = tempByte;
|
||||
@@ -236,15 +236,15 @@ public class DesUtils {
|
||||
String decStr = "";
|
||||
List firstKeyBt = null, secondKeyBt = null, thirdKeyBt = null;
|
||||
int firstLength = 0, secondLength = 0, thirdLength = 0;
|
||||
if (firstKey != null && firstKey != "") {
|
||||
if (firstKey != null && firstKey.equals("")) {
|
||||
firstKeyBt = getKeyBytes(firstKey);
|
||||
firstLength = firstKeyBt.size();
|
||||
}
|
||||
if (secondKey != null && secondKey != "") {
|
||||
if (secondKey != null && secondKey.equals("")) {
|
||||
secondKeyBt = getKeyBytes(secondKey);
|
||||
secondLength = secondKeyBt.size();
|
||||
}
|
||||
if (thirdKey != null && thirdKey != "") {
|
||||
if (thirdKey != null && thirdKey.equals("")) {
|
||||
thirdKeyBt = getKeyBytes(thirdKey);
|
||||
thirdLength = thirdKeyBt.size();
|
||||
}
|
||||
@@ -260,7 +260,7 @@ public class DesUtils {
|
||||
intByte[j] = Integer.parseInt(strByte.substring(j, j + 1));
|
||||
}
|
||||
int[] decByte = null;
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "" && thirdKey != null && thirdKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("") && thirdKey != null && thirdKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y, z;
|
||||
tempBt = intByte;
|
||||
@@ -275,7 +275,7 @@ public class DesUtils {
|
||||
}
|
||||
decByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "" && secondKey != null && secondKey != "") {
|
||||
if (firstKey != null && firstKey.equals("") && secondKey != null && secondKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y, z;
|
||||
tempBt = intByte;
|
||||
@@ -287,7 +287,7 @@ public class DesUtils {
|
||||
}
|
||||
decByte = tempBt;
|
||||
} else {
|
||||
if (firstKey != null && firstKey != "") {
|
||||
if (firstKey != null && firstKey.equals("")) {
|
||||
int[] tempBt;
|
||||
int x, y, z;
|
||||
tempBt = intByte;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
*/
|
||||
package com.jeesite.common.idgen;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -79,7 +80,7 @@ public class IdGen {
|
||||
prefix = str.substring(0, lastNotNumIndex);
|
||||
prevNum = str.substring(lastNotNumIndex, str.length());
|
||||
}
|
||||
String nextNum = String.valueOf(Long.valueOf(prevNum) + 1);
|
||||
String nextNum = new BigDecimal(prevNum).add(BigDecimal.ONE).toString();
|
||||
str = prefix + StringUtils.leftPad(nextNum, prevNum.length(), "0");
|
||||
return str;
|
||||
}
|
||||
|
||||
@@ -218,21 +218,24 @@ public class PropertiesUtils {
|
||||
*/
|
||||
private static Logger initLogger(){
|
||||
String logPath = null;
|
||||
try {
|
||||
// 获取当前classes目录
|
||||
logPath = ResourceUtils.getResource("/").getFile().getPath();
|
||||
} catch (Exception e) {
|
||||
// 取不到,取当前工作路径
|
||||
logPath = System.getProperty("user.dir");
|
||||
}
|
||||
// 取当前日志路径下有classes目录,则使用classes目录
|
||||
String classesLogPath = FileUtils.path(logPath + "/WEB-INF/classes");
|
||||
if (new File(classesLogPath).exists()){
|
||||
logPath = classesLogPath;
|
||||
}
|
||||
if (StringUtils.isBlank(System.getProperty("logPath"))){
|
||||
System.setProperty("logPath", FileUtils.path(logPath));
|
||||
if (StringUtils.isNotBlank(System.getProperty("customLogPath"))){
|
||||
// 如果 Tomcat 下部署多个项目的时候 logPath 会出现项目之间串用问题,所以启用 customLogPath 名字
|
||||
logPath = System.getProperty("customLogPath");
|
||||
}else{
|
||||
try {
|
||||
// 获取当前classes目录
|
||||
logPath = ResourceUtils.getResource("/").getFile().getPath();
|
||||
} catch (Exception e) {
|
||||
// 取不到,取当前工作路径
|
||||
logPath = System.getProperty("user.dir");
|
||||
}
|
||||
// 取当前日志路径下有classes目录,则使用classes目录
|
||||
String classesLogPath = FileUtils.path(logPath + "/WEB-INF/classes");
|
||||
if (new File(classesLogPath).exists()){
|
||||
logPath = classesLogPath;
|
||||
}
|
||||
}
|
||||
System.setProperty("logPath", FileUtils.path(logPath));
|
||||
return LoggerFactory.getLogger(PropertiesUtils.class);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.jeesite.common.lang.StringUtils;
|
||||
* @author ThinkGem
|
||||
* @version 2020-10-26
|
||||
*/
|
||||
public class PropertyLoader extends PropertiesPropertySourceLoader implements org.springframework.boot.env.PropertySourceLoader, Ordered{
|
||||
public class PropertyLoader implements org.springframework.boot.env.PropertySourceLoader, Ordered{
|
||||
|
||||
private static boolean isLoadJeeSitePropertySource = false;
|
||||
private PropertiesPropertySourceLoader propertiesPropertySourceLoader = new PropertiesPropertySourceLoader();
|
||||
|
||||
@@ -23,7 +23,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
||||
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM/dd HH", "yyyy/MM",
|
||||
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM.dd HH", "yyyy.MM",
|
||||
"yyyy年MM月dd日", "yyyy年MM月dd日 HH时mm分ss秒", "yyyy年MM月dd日 HH时mm分", "yyyy年MM月dd日 HH时", "yyyy年MM月",
|
||||
"yyyy"};
|
||||
"yyyyMMdd", "yyyyMM", "yyyy"};
|
||||
|
||||
/**
|
||||
* 得到日期字符串 ,转换格式(yyyy-MM-dd)
|
||||
|
||||
@@ -13,6 +13,8 @@ import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.nustaq.serialization.FSTConfiguration;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.core.NamedThreadLocal;
|
||||
|
||||
@@ -23,6 +25,8 @@ import org.springframework.core.NamedThreadLocal;
|
||||
*/
|
||||
public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(ObjectUtils.class);
|
||||
|
||||
/**
|
||||
* 转换为 Double 类型
|
||||
*/
|
||||
@@ -170,7 +174,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
}
|
||||
long totalTime = System.currentTimeMillis() - beginTime;
|
||||
if (totalTime > 3000){
|
||||
System.out.println("Serialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
logger.warn(object.getClass() + " serialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
@@ -196,7 +200,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
}
|
||||
long totalTime = System.currentTimeMillis() - beginTime;
|
||||
if (totalTime > 3000){
|
||||
System.out.println("Unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
logger.warn(object.getClass() + " unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
}
|
||||
return object;
|
||||
}
|
||||
@@ -221,7 +225,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
byte[] bytes = fstConfiguration.get().asByteArray(object);
|
||||
long totalTime = System.currentTimeMillis() - beginTime;
|
||||
if (totalTime > 3000){
|
||||
System.out.println("Fst serialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
logger.warn(object.getClass() + " fst serialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
@@ -239,7 +243,7 @@ public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {
|
||||
Object object = fstConfiguration.get().asObject(bytes);
|
||||
long totalTime = System.currentTimeMillis() - beginTime;
|
||||
if (totalTime > 3000){
|
||||
System.out.println("Fst unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
logger.warn(object.getClass() + " fst unserialize time: " + TimeUtils.formatDateAgo(totalTime));
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.jeesite.common.codec.EncodeUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import com.jeesite.common.web.http.ServletUtils;
|
||||
|
||||
/**
|
||||
* Cookie工具类
|
||||
@@ -46,8 +45,7 @@ public class CookieUtils {
|
||||
* @param uri 路径
|
||||
*/
|
||||
public static void setCookie(HttpServletResponse response, String name, String value, int maxAge) {
|
||||
HttpServletRequest request = ServletUtils.getRequest();
|
||||
setCookie(response, name, value, request != null ? request.getContextPath() : "", maxAge);
|
||||
setCookie(response, name, value, "/", maxAge);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -203,7 +203,9 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
||||
.box-main>.box-header .box-title .fa {color:#1890ff;}
|
||||
.nav-tabs-custom>.nav-tabs>li.active {border-top-color:#3aa0ff;}
|
||||
.form-control:focus,.select2-container--default.select2-container--focus .select2-selection--multiple,
|
||||
.select2-container--default .select2-search--dropdown .select2-search__field {border-color:#66afe9!important;}
|
||||
.select2-container--default .select2-search--dropdown .select2-search__field,
|
||||
.select2-container--default.select2-container--focus .select2-selection--single,
|
||||
.select2-container--default.select2-container--focus .select2-selection--multiple {border-color:#40a9ff!important;box-shadow:0 0 0 2px rgba(24,144,255,.2);}
|
||||
.table thead tr, .ui-jqgrid-htable thead tr, .ui-jqgrid-hdiv, .ui-jqgrid-hbox {background-color:#f6f6f6;}
|
||||
.ui-jqgrid .ui-jqgrid-htable th.ui-th-column-header, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column,
|
||||
.ui-jqgrid .ui-jqgrid-labels th, .ui-jqgrid .ui-widget-content, .ui-jqgrid tr.ui-row-ltr td,
|
||||
|
||||
@@ -208,7 +208,9 @@ a, a:hover, a:active, a:focus, .form-unit, th[aria-selected=true] .ui-jqgrid-sor
|
||||
.box-main>.box-header .box-title .fa {color:#1e5edb;}
|
||||
.nav-tabs-custom>.nav-tabs>li.active {border-top-color:#1e5edb;}
|
||||
.form-control:focus,.select2-container--default.select2-container--focus .select2-selection--multiple,
|
||||
.select2-container--default .select2-search--dropdown .select2-search__field {border-color:#6980c3!important;}
|
||||
.select2-container--default .select2-search--dropdown .select2-search__field,
|
||||
.select2-container--default.select2-container--focus .select2-selection--single,
|
||||
.select2-container--default.select2-container--focus .select2-selection--multiple {border-color:#40a9ff!important;box-shadow:0 0 0 2px rgba(24,144,255,.2);}
|
||||
.table thead tr, .ui-jqgrid-htable thead tr, .ui-jqgrid-hdiv, .ui-jqgrid-hbox {background-color:#f6f6f6;}
|
||||
.ui-jqgrid .ui-jqgrid-htable th.ui-th-column-header, .ui-jqgrid .ui-jqgrid-htable th.ui-th-column,
|
||||
.ui-jqgrid .ui-jqgrid-labels th, .ui-jqgrid .ui-widget-content, .ui-jqgrid tr.ui-row-ltr td,
|
||||
|
||||
@@ -90,7 +90,6 @@ Tpl.pt.render = function(data, callback){
|
||||
var that = this, tpl;
|
||||
if(!data) return tool.error('no data');
|
||||
tpl = that.cache ? that.cache(data, tool.escape) : that.parse(that.tpl, data);
|
||||
console.log()
|
||||
if(!callback) return tpl;
|
||||
callback(tpl);
|
||||
};
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
if (!node[_disabled]) {
|
||||
|
||||
// Click
|
||||
if (type == _click) {
|
||||
if (type == _click || type == 'touchend') {
|
||||
if ($(event.target).is('a')) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6,5 +6,5 @@ a.slice(1)}function L(a,b,d,c){if(!c){if(b)a[p]("ifToggled");a[p]("ifChanged")[p
|
||||
c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),e(this),c.each(function(){var c=h(this);"destroy"==a?M(c,"ifDestroyed"):F(c,!0,a);h.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var f=h.extend({checkedClass:l,disabledClass:s,indeterminateClass:m,checkboxClass:'icheckbox_minimal-grey',radioClass:'iradio_minimal-grey',labelHover:!0,aria:!1},a),k=f.handle,B=f.hoverClass||"hover",x=f.focusClass||"focus",w=f.activeClass||"active",y=!!f.labelHover,C=f.labelHoverClass||
|
||||
"hover",r=(""+f.increaseArea).replace("%","")|0;if("checkbox"==k||k==u)d='input[type="'+k+'"]';-50>r&&(r=-50);e(this);return c.each(function(){var a=h(this);M(a);var c=this,b=c.id,e=-r+"%",d=100+2*r+"%",d={position:"absolute",top:e,left:e,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},e=J?{position:"absolute",visibility:"hidden"}:r?d:{position:"absolute",opacity:0},k="checkbox"==c[n]?f.checkboxClass||"icheckbox":f.radioClass||"i"+u,m=h(G+'[for="'+b+'"]').add(a.closest(G)),
|
||||
A=!!f.aria,E=q+"-"+Math.random().toString(36).replace("0.",""),g='<div class="'+k+'" '+(A?'role="'+c[n]+'" ':"");m.length&&A&&m.each(function(){g+='aria-labelledby="';this.id?g+=this.id:(this.id=E,g+=E);g+='"'});g=a.wrap(g+"/>")[p]("ifCreated").parent().append(f.insert);d=h('<ins class="'+I+'"/>').css(d).appendTo(g);a.data(q,{o:f,s:a.attr("style")}).css(e);f.inheritClass&&g[v](c.className||"");f.inheritID&&b&&g.attr("id",q+"-"+b);"static"==g.css("position")&&g.css("position","relative");F(a,!0,H);
|
||||
if(m.length)m.on("click.i mouseover.i mouseout.i touchbegin.i touchend.i",function(b){var d=b[n],e=h(this);if(!c[s]){if("click"==d){if(h(b.target).is("a"))return;F(a,!1,!0)}else y&&(/ut|nd/.test(d)?(g[z](B),e[z](C)):(g[v](B),e[v](C)));if(J)b.stopPropagation();else return!1}});a.on("click.i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[n];b=b.keyCode;if("click"==d)return!1;if("keydown"==d&&32==b)return c[n]==u&&c[l]||(c[l]?t(a,l):D(a,l)),!1;if("keyup"==d&&c[n]==u)!c[l]&&D(a,l);else if(/us|ur/.test(d))g["blur"==
|
||||
if(m.length)m.on("click.i mouseover.i mouseout.i touchbegin.i touchend.i",function(b){var d=b[n],e=h(this);if(!c[s]){if("click"==d||"touchend"==d){if(h(b.target).is("a"))return;F(a,!1,!0)}else y&&(/ut|nd/.test(d)?(g[z](B),e[z](C)):(g[v](B),e[v](C)));if(J)b.stopPropagation();else return!1}});a.on("click.i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[n];b=b.keyCode;if("click"==d)return!1;if("keydown"==d&&32==b)return c[n]==u&&c[l]||(c[l]?t(a,l):D(a,l)),!1;if("keyup"==d&&c[n]==u)!c[l]&&D(a,l);else if(/us|ur/.test(d))g["blur"==
|
||||
d?z:v](x)});d.on("click mousedown mouseup mouseover mouseout touchbegin.i touchend.i",function(b){var d=b[n],e=/wn|up/.test(d)?w:B;if(!c[s]){if("click"==d)F(a,!1,!0);else{if(/wn|er|in/.test(d))g[v](e);else g[z](e+" "+w);if(m.length&&y&&e==B)m[/ut|nd/.test(d)?z:v](C)}if(J)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto);
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 381 B |
@@ -0,0 +1,113 @@
|
||||
/*-------------------------------------
|
||||
zTree Style 3.4 author: Hunter.z、ThinkGem
|
||||
-------------------------------------*/
|
||||
|
||||
.ztree * {padding:0;margin:0;font-size:13px;}
|
||||
.ztree {margin:0;padding:5px;color:#333}
|
||||
.ztree li{padding:0;margin:0;list-style:none;line-height:21px;text-align:left;white-space:nowrap;outline:0}
|
||||
.ztree li ul{ margin:0;padding:0 0 0 18px}
|
||||
|
||||
.ztree li a {padding-right:3px;margin:0;cursor:pointer;height:23px;color:#333;background-color: transparent;text-decoration:none;display: inline-block;vertical-align: middle;}
|
||||
.ztree li a:hover {text-decoration:underline}
|
||||
.ztree li a.curSelectedNode {padding-top:0px;background-color:#e5e5e5;color:black;height:23px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.ztree li a.curSelectedNode_Edit {padding-top:0px;background-color:#e5e5e5;color:black;height:23px;border:1px #666 solid;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.ztree li a.tmpTargetNode_inner {padding-top:0px;background-color:#aaa;color:white;height:21px;border:1px #666 solid;
|
||||
opacity:0.8;filter:alpha(opacity=80)}
|
||||
.ztree li a.tmpTargetNode_prev {}
|
||||
.ztree li a.tmpTargetNode_next {}
|
||||
.ztree li a input.rename {height:14px;width:80px;padding:0;margin:0;
|
||||
font-size:12px;border:1px #7EC4CC solid;*border:0px}
|
||||
.ztree li span {line-height:23px;margin-right:2px}
|
||||
.ztree li span.button {line-height:0;margin:0;width:21px;height:21px;display: inline-block;vertical-align:middle;
|
||||
border:0 none;cursor: pointer;outline:none;}
|
||||
.ztree li span.button.ico_loading{margin-right:2px;background:url(./img/loading.gif) no-repeat scroll 0 0 transparent;vertical-align:top;*vertical-align:middle}
|
||||
|
||||
ul.tmpTargetzTree {background-color:#FFE6B0;opacity:0.8;filter:alpha(opacity=80)}
|
||||
|
||||
span.tmpzTreeMove_arrow {width:16px;height:21px;display: inline-block;padding:0;margin:2px 0 0 1px;border:0 none;position:absolute;
|
||||
background-color:transparent;background-repeat:no-repeat;background-attachment: scroll;}
|
||||
|
||||
ul.ztree.zTreeDragUL {margin:0;padding:0;position:absolute;width:auto;height:auto;overflow:hidden;background-color:#cfcfcf;border:1px #00B83F dotted;opacity:0.8;filter:alpha(opacity=80)}
|
||||
.zTreeMask {z-index:10000;background-color:#cfcfcf;opacity:0.0;filter:alpha(opacity=0);position:absolute}
|
||||
|
||||
/* 树搜索相关 */
|
||||
.treeSearchInput {padding:13px 0 0 20px;}
|
||||
.treeSearchInput label {padding:5px 0 3px 0;font-size:13px;font-weight:normal;vertical-align:middle;}
|
||||
.treeSearchInput input {width:140px;vertical-align:middle;line-height:24px;height:26px;border:1px solid #aaa;padding:0 4px;border-radius:4px;}
|
||||
.treeSearchInput button {border:1px solid #aaa;vertical-align:middle;height:26px;height:26px\9;font-size:13px;background:#efefef;padding:0 8px;}
|
||||
.treeShowHideButton {position:absolute;right:8px;top:-3px;font-size:12px;color:#333;z-index:3;}
|
||||
.treeShowHideButton label {cursor:pointer;}
|
||||
.treeExpandCollapse {float:right;margin:6px 5px;padding:5px;font-size:12px;color:#333;position:relative;z-index:2;background:#fff;}
|
||||
.treeExpandCollapse a {text-decoration:none;color:#333}
|
||||
.treeselect.ztree {padding:10px 20px;}
|
||||
|
||||
/* 字体图标风格 */
|
||||
.ztree * {box-sizing:content-box;}
|
||||
.ztree li li {padding-left:9px;}
|
||||
.ztree li ul.line {content:"";border-left:1px dotted #aaa;top:0px;left:0px;margin-top:-2px;padding-top:2px;}
|
||||
.ztree li ul {position:relative;background:none;margin-left:9px;padding-left:0;}
|
||||
.ztree li ul.line {background:none;}
|
||||
.ztree li .noline_open + a + ul:before {border-left:none;}
|
||||
.ztree li .noline_open + a + ul li:before {border-top:none;}
|
||||
.ztree li a {height:26px;padding-left:3px;}
|
||||
.ztree li span {height:26px;margin-left:4px;}
|
||||
.ztree li span.node_name {margin-right:6px;}
|
||||
.ztree li span.button.switch,
|
||||
.ztree li span.button.chk,
|
||||
.ztree li a span.button,
|
||||
.ztree li span.button[class$="Page"] {position:relative;width:18px;height:22px;background:none;background-position:center center !important;padding:2px 0;
|
||||
display:inline-block;font:normal normal normal 15px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
|
||||
.ztree li span.button[class$="Page"] {width:15px;}
|
||||
.ztree li a span.button[style="width:0px;height:0px;"]:before,
|
||||
.ztree li a span.button[style^="background"]:before {content:"";}
|
||||
.ztree li span.button.roots_docu, .ztree li span.button.center_docu, .ztree li span.button.bottom_docu {position:relative;height:24px;padding:0;}
|
||||
.ztree li span.button.roots_docu:before {content:"";display:block;width:18px;height:11px;border-left:1px dotted #aaa;position:absolute;top:10px;left:9px;}
|
||||
.ztree li span.button.roots_docu:after {content:"";display:block;width:9px;height:0;border-top:1px dotted #aaa;position:absolute;top:10px;left:9px;}
|
||||
.ztree li span.button.center_docu:before {content:"";display:block;width:0;height:25px;border-left:1px dotted #aaa;position:absolute;top:-3px;left:9px;}
|
||||
.ztree li span.button.center_docu:after {content:"";display:block;width:9px;height:0;border-top:1px dotted #aaa;position:absolute;top:10px;left:9px;}
|
||||
.ztree li span.button.bottom_docu:before {content:"";display:block;width:0;height:12px;border-left:1px dotted #aaa;position:absolute;top:-3px;left:9px;}
|
||||
.ztree li span.button.bottom_docu:after {content:"";display:block;width:9px;height:0;border-top:1px dotted #aaa;position:absolute;top:10px;left:9px;}
|
||||
.ztree li span.button:before {display:block;line-height:20px;text-align:left;padding-left:4px;color:#666;}
|
||||
.ztree li span.button.root_open:before,
|
||||
.ztree li span.button.roots_open:before,
|
||||
.ztree li span.button.center_open:before,
|
||||
.ztree li span.button.bottom_open:before,
|
||||
.ztree li span.button.noline_open:before {content:"\f147";}
|
||||
.ztree li span.button.root_close:before,
|
||||
.ztree li span.button.roots_close:before,
|
||||
.ztree li span.button.center_close:before,
|
||||
.ztree li span.button.bottom_close:before,
|
||||
.ztree li span.button.noline_close:before {content:"\f196";}
|
||||
.ztree li span.button.chk.checkbox_true_full:before,
|
||||
.ztree li span.button.chk.checkbox_true_disable:before,
|
||||
.ztree li span.button.chk.checkbox_true_full_focus:before {content:"\f046";}
|
||||
.ztree li span.button.chk.checkbox_false_full:before,
|
||||
.ztree li span.button.chk.checkbox_false_disable:before,
|
||||
.ztree li span.button.chk.checkbox_false_full_focus:before {content:"\f096";}
|
||||
.ztree li span.button.chk.checkbox_true_part:before,
|
||||
.ztree li span.button.chk.checkbox_true_part_focus:before,
|
||||
.ztree li span.button.chk.checkbox_false_part:before,
|
||||
.ztree li span.button.chk.checkbox_false_part_focus:before {content:"\f14a";}
|
||||
.ztree li span.button.chk.radio_true_full:before,
|
||||
.ztree li span.button.chk.radio_true_disable:before,
|
||||
.ztree li span.button.chk.radio_true_full_focus:before {content:"\f05d";}
|
||||
.ztree li span.button.chk.radio_false_full:before,
|
||||
.ztree li span.button.chk.radio_false_disable:before,
|
||||
.ztree li span.button.chk.radio_false_full_focus:before {content:"\f10c";}
|
||||
.ztree li span.button.chk.radio_true_part:before,
|
||||
.ztree li span.button.chk.radio_true_part_focus:before,
|
||||
.ztree li span.button.chk.radio_false_part:before,
|
||||
.ztree li span.button.chk.radio_false_part_focus:before {content:"\f192";}
|
||||
.ztree li span.button.ico_open:before {content:"\f115";}
|
||||
.ztree li span.button.ico_close:before {content:"\f114";}
|
||||
.ztree li span.button.ico_docu:before {content:"\f016";}
|
||||
.ztree li span.button.add:before {content:"\f196";}
|
||||
.ztree li span.button.edit:before {content:"\f044";}
|
||||
.ztree li span.button.remove:before {content:"\f014";}
|
||||
.ztree li span.button.firstPage:before {content:"\f100";}
|
||||
.ztree li span.button.prevPage:before {content:"\f104";}
|
||||
.ztree li span.button.nextPage:before {content:"\f105";}
|
||||
.ztree li span.button.lastPage:before {content:"\f101";}
|
||||
.ztree li span.button.chk[class$="focus"]:before {font-weight:bold;}
|
||||
.ztree li span.button.chk[class$="disable"]:before {color:#aaa;}
|
||||
.ztree li a.curSelectedNode, .ztree li a.tmpTargetNode_inner {height:26px;}
|
||||
@@ -8,23 +8,23 @@ website: http://code.google.com/p/jquerytree/
|
||||
|
||||
-------------------------------------*/
|
||||
|
||||
.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
|
||||
.ztree * {padding:0; margin:0; font-size:13px;}
|
||||
.ztree {margin:0; padding:5px; color:#333}
|
||||
.ztree li{padding:0; margin:0; list-style:none; line-height:21px; text-align:left; white-space:nowrap; outline:0}
|
||||
.ztree li ul{ margin:0; padding:0 0 0 18px}
|
||||
.ztree li ul.line{ background:url(./img/line_conn.png) 0 0 repeat-y;}
|
||||
|
||||
.ztree li a {padding-right:3px; margin:0; cursor:pointer; height:21px; color:#333; background-color: transparent; text-decoration:none; display: inline-block}
|
||||
.ztree li a {padding-right:3px; margin:0; cursor:pointer; height:23px; color:#333; background-color: transparent; text-decoration:none; display: inline-block; vertical-align: middle;}
|
||||
.ztree li a:hover {text-decoration:underline}
|
||||
.ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:22px; -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:22px; border:1px #666 solid; -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:23px; -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:23px; border:1px #666 solid; -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:white; height:21px; border:1px #666 solid;
|
||||
opacity:0.8; filter:alpha(opacity=80)}
|
||||
.ztree li a.tmpTargetNode_prev {}
|
||||
.ztree li a.tmpTargetNode_next {}
|
||||
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
|
||||
font-size:12px; border:1px #7EC4CC solid; *border:0px}
|
||||
.ztree li span {line-height:21px; margin-right:2px}
|
||||
.ztree li span {line-height:23px; margin-right:2px}
|
||||
.ztree li span.button {line-height:0; margin:0; width:21px; height:21px; display: inline-block; vertical-align:middle;
|
||||
border:0 none; cursor: pointer;outline:none;
|
||||
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
|
||||
@@ -59,8 +59,8 @@ website: http://code.google.com/p/jquerytree/
|
||||
.ztree li span.button.roots_close{background-position: -126px 0;}
|
||||
.ztree li span.button.center_open{background-position: -105px -21px;}
|
||||
.ztree li span.button.center_close{background-position: -126px -21px;}
|
||||
.ztree li span.button.bottom_open{background-position: -105px -42px;}
|
||||
.ztree li span.button.bottom_close{background-position: -126px -42px;}
|
||||
.ztree li span.button.bottom_open{background-position: -105px -43px;}
|
||||
.ztree li span.button.bottom_close{background-position: -126px -43px;}
|
||||
.ztree li span.button.noline_open{background-position: -126px -84px;}
|
||||
.ztree li span.button.noline_close{background-position: -105px -84px;}
|
||||
.ztree li span.button.root_docu{ background:none;}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -15,5 +15,4 @@ cd ..
|
||||
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."
|
||||
pause
|
||||
@@ -15,5 +15,4 @@ cd ..
|
||||
call mvn clean install -Dmaven.test.skip=true -Ppackage
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>..."
|
||||
pause
|
||||
@@ -11,8 +11,8 @@
|
||||
</page_setting>
|
||||
<category_index>0</category_index>
|
||||
<zoom>1.0</zoom>
|
||||
<x>317</x>
|
||||
<y>2406</y>
|
||||
<x>1625</x>
|
||||
<y>0</y>
|
||||
<default_color>
|
||||
<r>128</r>
|
||||
<g>128</g>
|
||||
@@ -4548,229 +4548,6 @@
|
||||
<schema></schema>
|
||||
</table_properties>
|
||||
</table>
|
||||
<table>
|
||||
<id>fe9991829b27dafb45a95e13b6e9dd724b3bf424</id>
|
||||
<height>308</height>
|
||||
<width>335</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<x>3897</x>
|
||||
<y>792</y>
|
||||
<color>
|
||||
<r>128</r>
|
||||
<g>128</g>
|
||||
<b>192</b>
|
||||
</color>
|
||||
<connections>
|
||||
</connections>
|
||||
<physical_name>js_sys_lang</physical_name>
|
||||
<logical_name>国际化语言</logical_name>
|
||||
<description></description>
|
||||
<constraint></constraint>
|
||||
<primary_key_name></primary_key_name>
|
||||
<option></option>
|
||||
<columns>
|
||||
<normal_column>
|
||||
<word_id>869fc70cf3a4e92e8056b40814df8e03f9f9efde</word_id>
|
||||
<id>58d907ff9cf0c81b565cad158f3bec8b3758d59e</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>varchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>true</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>c2c68b3979b0c52109cb085c491bebb415a189b4</word_id>
|
||||
<id>669456aef17849070945f58eba9269628ad31cc2</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>varchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>2392b56eaf51ec9f6e32fe6553460d25b3da9729</word_id>
|
||||
<id>1832e034e60a8176274736a921861da8f4a17b1f</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>nvarchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>26c952fa648f51d2350f628195fc098f918d8149</word_id>
|
||||
<id>923b79d81325f08f9ef6d6cc4302024dd0717bad</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>nvarchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>26bbe2ffbcc2678b0691f0721632c3dcdabfb4ff</word_id>
|
||||
<id>b3438798385ef62434d0cdef3d6d9fa7a63e313c</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>varchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<column_group>85024a2953cf3e3c9c1cce49b2351853ab0d125b</column_group>
|
||||
</columns>
|
||||
<indexes>
|
||||
<inidex>
|
||||
<full_text>false</full_text>
|
||||
<non_unique>true</non_unique>
|
||||
<name>idx_sys_lang_code</name>
|
||||
<type></type>
|
||||
<description></description>
|
||||
<columns>
|
||||
<column>
|
||||
<id>1832e034e60a8176274736a921861da8f4a17b1f</id>
|
||||
<desc>false</desc>
|
||||
</column>
|
||||
</columns>
|
||||
</inidex>
|
||||
<inidex>
|
||||
<full_text>false</full_text>
|
||||
<non_unique>true</non_unique>
|
||||
<name>idx_sys_lang_type</name>
|
||||
<type></type>
|
||||
<description></description>
|
||||
<columns>
|
||||
<column>
|
||||
<id>b3438798385ef62434d0cdef3d6d9fa7a63e313c</id>
|
||||
<desc>false</desc>
|
||||
</column>
|
||||
</columns>
|
||||
</inidex>
|
||||
</indexes>
|
||||
<complex_unique_key_list>
|
||||
</complex_unique_key_list>
|
||||
<table_properties>
|
||||
<schema></schema>
|
||||
</table_properties>
|
||||
</table>
|
||||
<table>
|
||||
<id>dfd92f583371dc219fe0aeb5c64f4d7fc5b2db58</id>
|
||||
<height>620</height>
|
||||
@@ -8200,8 +7977,8 @@
|
||||
</color>
|
||||
<connections>
|
||||
<relation>
|
||||
<id>8a39f8544732bdd0c9731340ee2fe7e265b9b3cb</id>
|
||||
<source>a1303ae2ba44af053708a3742aee02836c407c3d</source>
|
||||
<id>34abbb77c48708f95ddab5edd1235da98a90ea5f</id>
|
||||
<source>bbe68e376638ab208682d127d252c38bb6c953a5</source>
|
||||
<target>3c87a1572923924d481891ca9d1a09451008cef5</target>
|
||||
<source_xp>-1</source_xp>
|
||||
<source_yp>-1</source_yp>
|
||||
@@ -8288,7 +8065,7 @@
|
||||
<normal_column>
|
||||
<id>1882f53a36409270c8622486740876fcb2af9842</id>
|
||||
<referenced_column>e84c40cdf5ffdb2ba4d59630d98abb5972d74795</referenced_column>
|
||||
<relation>8a39f8544732bdd0c9731340ee2fe7e265b9b3cb</relation>
|
||||
<relation>34abbb77c48708f95ddab5edd1235da98a90ea5f</relation>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
@@ -13794,12 +13571,12 @@
|
||||
</table_properties>
|
||||
</table>
|
||||
<table>
|
||||
<id>a1303ae2ba44af053708a3742aee02836c407c3d</id>
|
||||
<height>1218</height>
|
||||
<id>bbe68e376638ab208682d127d252c38bb6c953a5</id>
|
||||
<height>1244</height>
|
||||
<width>617</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<x>2280</x>
|
||||
<x>2292</x>
|
||||
<y>36</y>
|
||||
<color>
|
||||
<r>128</r>
|
||||
@@ -14387,13 +14164,13 @@
|
||||
</table_properties>
|
||||
</table>
|
||||
<table>
|
||||
<id>0e046d64a970231cfcc17e4e5c4bc281c289072f</id>
|
||||
<height>360</height>
|
||||
<id>8a139a0643de7dcb7489ba3a6eb8072830e2442c</id>
|
||||
<height>906</height>
|
||||
<width>470</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<x>108</x>
|
||||
<y>2412</y>
|
||||
<y>2340</y>
|
||||
<color>
|
||||
<r>128</r>
|
||||
<g>128</g>
|
||||
@@ -14401,9 +14178,9 @@
|
||||
</color>
|
||||
<connections>
|
||||
<relation>
|
||||
<id>9d81b7570b3ebdcbbaeb87693137d863d319e742</id>
|
||||
<source>ea4a1c367ad1a436305eb4c93d3d1f87ac140ba1</source>
|
||||
<target>0e046d64a970231cfcc17e4e5c4bc281c289072f</target>
|
||||
<id>b0046026a86b96d1e93facef0237f3f72c3a6460</id>
|
||||
<source>d6c60af63d4b54ff24149a17b7dbef6ba492e484</source>
|
||||
<target>8a139a0643de7dcb7489ba3a6eb8072830e2442c</target>
|
||||
<source_xp>-1</source_xp>
|
||||
<source_yp>-1</source_yp>
|
||||
<target_xp>-1</target_xp>
|
||||
@@ -14466,7 +14243,7 @@
|
||||
<normal_column>
|
||||
<id>fc44d466dd6009e48b5222d1d71e38d025194ff0</id>
|
||||
<referenced_column>54b86f255d95078898534902087fb704b4265b60</referenced_column>
|
||||
<relation>9d81b7570b3ebdcbbaeb87693137d863d319e742</relation>
|
||||
<relation>b0046026a86b96d1e93facef0237f3f72c3a6460</relation>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
@@ -14663,6 +14440,7 @@
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<column_group>35ae805d1da92afdb99b2fe8c536d1649356fccd</column_group>
|
||||
<column_group>118dab95fc1f792cd468b9f66af2d4fabd98c39b</column_group>
|
||||
</columns>
|
||||
<indexes>
|
||||
<inidex>
|
||||
@@ -16474,13 +16252,13 @@
|
||||
</table_properties>
|
||||
</table>
|
||||
<table>
|
||||
<id>ea4a1c367ad1a436305eb4c93d3d1f87ac140ba1</id>
|
||||
<height>230</height>
|
||||
<id>d6c60af63d4b54ff24149a17b7dbef6ba492e484</id>
|
||||
<height>256</height>
|
||||
<width>397</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<x>852</x>
|
||||
<y>2451</y>
|
||||
<x>732</x>
|
||||
<y>2520</y>
|
||||
<color>
|
||||
<r>128</r>
|
||||
<g>128</g>
|
||||
@@ -16794,6 +16572,229 @@
|
||||
<schema></schema>
|
||||
</table_properties>
|
||||
</table>
|
||||
<table>
|
||||
<id>fe9991829b27dafb45a95e13b6e9dd724b3bf424</id>
|
||||
<height>308</height>
|
||||
<width>335</width>
|
||||
<font_name>Segoe UI</font_name>
|
||||
<font_size>9</font_size>
|
||||
<x>3897</x>
|
||||
<y>792</y>
|
||||
<color>
|
||||
<r>128</r>
|
||||
<g>128</g>
|
||||
<b>192</b>
|
||||
</color>
|
||||
<connections>
|
||||
</connections>
|
||||
<physical_name>js_sys_lang</physical_name>
|
||||
<logical_name>国际化语言</logical_name>
|
||||
<description></description>
|
||||
<constraint></constraint>
|
||||
<primary_key_name></primary_key_name>
|
||||
<option></option>
|
||||
<columns>
|
||||
<normal_column>
|
||||
<word_id>869fc70cf3a4e92e8056b40814df8e03f9f9efde</word_id>
|
||||
<id>58d907ff9cf0c81b565cad158f3bec8b3758d59e</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>varchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>true</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>c2c68b3979b0c52109cb085c491bebb415a189b4</word_id>
|
||||
<id>669456aef17849070945f58eba9269628ad31cc2</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>varchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>2392b56eaf51ec9f6e32fe6553460d25b3da9729</word_id>
|
||||
<id>1832e034e60a8176274736a921861da8f4a17b1f</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>nvarchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>26c952fa648f51d2350f628195fc098f918d8149</word_id>
|
||||
<id>923b79d81325f08f9ef6d6cc4302024dd0717bad</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>nvarchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<normal_column>
|
||||
<word_id>26bbe2ffbcc2678b0691f0721632c3dcdabfb4ff</word_id>
|
||||
<id>b3438798385ef62434d0cdef3d6d9fa7a63e313c</id>
|
||||
<description></description>
|
||||
<unique_key_name></unique_key_name>
|
||||
<logical_name></logical_name>
|
||||
<physical_name></physical_name>
|
||||
<type>varchar(n)</type>
|
||||
<constraint></constraint>
|
||||
<default_value></default_value>
|
||||
<auto_increment>false</auto_increment>
|
||||
<foreign_key>false</foreign_key>
|
||||
<not_null>true</not_null>
|
||||
<primary_key>false</primary_key>
|
||||
<unique_key>false</unique_key>
|
||||
<character_set></character_set>
|
||||
<collation></collation>
|
||||
<sequence>
|
||||
<name></name>
|
||||
<schema></schema>
|
||||
<increment></increment>
|
||||
<min_value></min_value>
|
||||
<max_value></max_value>
|
||||
<start></start>
|
||||
<cache></cache>
|
||||
<nocache>false</nocache>
|
||||
<cycle>false</cycle>
|
||||
<order>false</order>
|
||||
<description></description>
|
||||
<data_type></data_type>
|
||||
<decimal_size>0</decimal_size>
|
||||
</sequence>
|
||||
</normal_column>
|
||||
<column_group>85024a2953cf3e3c9c1cce49b2351853ab0d125b</column_group>
|
||||
</columns>
|
||||
<indexes>
|
||||
<inidex>
|
||||
<full_text>false</full_text>
|
||||
<non_unique>true</non_unique>
|
||||
<name>idx_sys_lang_code</name>
|
||||
<type></type>
|
||||
<description></description>
|
||||
<columns>
|
||||
<column>
|
||||
<id>1832e034e60a8176274736a921861da8f4a17b1f</id>
|
||||
<desc>false</desc>
|
||||
</column>
|
||||
</columns>
|
||||
</inidex>
|
||||
<inidex>
|
||||
<full_text>false</full_text>
|
||||
<non_unique>true</non_unique>
|
||||
<name>idx_sys_lang_type</name>
|
||||
<type></type>
|
||||
<description></description>
|
||||
<columns>
|
||||
<column>
|
||||
<id>b3438798385ef62434d0cdef3d6d9fa7a63e313c</id>
|
||||
<desc>false</desc>
|
||||
</column>
|
||||
</columns>
|
||||
</inidex>
|
||||
</indexes>
|
||||
<complex_unique_key_list>
|
||||
</complex_unique_key_list>
|
||||
<table_properties>
|
||||
<schema></schema>
|
||||
</table_properties>
|
||||
</table>
|
||||
</contents>
|
||||
<column_groups>
|
||||
<column_group>
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE js_sys_file_upload
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks vargraphic(500),
|
||||
extend_s1 vargraphic(500),
|
||||
extend_s2 vargraphic(500),
|
||||
extend_s3 vargraphic(500),
|
||||
extend_s4 vargraphic(500),
|
||||
extend_s5 vargraphic(500),
|
||||
extend_s6 vargraphic(500),
|
||||
extend_s7 vargraphic(500),
|
||||
extend_s8 vargraphic(500),
|
||||
extend_i1 decimal(19),
|
||||
extend_i2 decimal(19),
|
||||
extend_i3 decimal(19),
|
||||
extend_i4 decimal(19),
|
||||
extend_f1 decimal(19,4),
|
||||
extend_f2 decimal(19,4),
|
||||
extend_f3 decimal(19,4),
|
||||
extend_f4 decimal(19,4),
|
||||
extend_d1 timestamp,
|
||||
extend_d2 timestamp,
|
||||
extend_d3 timestamp,
|
||||
extend_d4 timestamp,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE js_sys_file_upload
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date datetime NOT NULL,
|
||||
remarks varchar(500),
|
||||
extend_s1 varchar(500),
|
||||
extend_s2 varchar(500),
|
||||
extend_s3 varchar(500),
|
||||
extend_s4 varchar(500),
|
||||
extend_s5 varchar(500),
|
||||
extend_s6 varchar(500),
|
||||
extend_s7 varchar(500),
|
||||
extend_s8 varchar(500),
|
||||
extend_i1 decimal(19),
|
||||
extend_i2 decimal(19),
|
||||
extend_i3 decimal(19),
|
||||
extend_i4 decimal(19),
|
||||
extend_f1 decimal(19,4),
|
||||
extend_f2 decimal(19,4),
|
||||
extend_f3 decimal(19,4),
|
||||
extend_f4 decimal(19,4),
|
||||
extend_d1 datetime,
|
||||
extend_d2 datetime,
|
||||
extend_d3 datetime,
|
||||
extend_d4 datetime,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE [js_sys_file_upload]
|
||||
[update_by] varchar(64) NOT NULL,
|
||||
[update_date] datetime NOT NULL,
|
||||
[remarks] nvarchar(500),
|
||||
[extend_s1] nvarchar(500),
|
||||
[extend_s2] nvarchar(500),
|
||||
[extend_s3] nvarchar(500),
|
||||
[extend_s4] nvarchar(500),
|
||||
[extend_s5] nvarchar(500),
|
||||
[extend_s6] nvarchar(500),
|
||||
[extend_s7] nvarchar(500),
|
||||
[extend_s8] nvarchar(500),
|
||||
[extend_i1] decimal(19),
|
||||
[extend_i2] decimal(19),
|
||||
[extend_i3] decimal(19),
|
||||
[extend_i4] decimal(19),
|
||||
[extend_f1] decimal(19,4),
|
||||
[extend_f2] decimal(19,4),
|
||||
[extend_f3] decimal(19,4),
|
||||
[extend_f4] decimal(19,4),
|
||||
[extend_d1] datetime,
|
||||
[extend_d2] datetime,
|
||||
[extend_d3] datetime,
|
||||
[extend_d4] datetime,
|
||||
PRIMARY KEY ([id])
|
||||
);
|
||||
|
||||
|
||||
@@ -293,6 +293,26 @@ CREATE TABLE js_sys_file_upload
|
||||
update_by varchar(64) NOT NULL COMMENT '更新者',
|
||||
update_date datetime NOT NULL COMMENT '更新时间',
|
||||
remarks varchar(500) COMMENT '备注信息',
|
||||
extend_s1 varchar(500) COMMENT '扩展 String 1',
|
||||
extend_s2 varchar(500) COMMENT '扩展 String 2',
|
||||
extend_s3 varchar(500) COMMENT '扩展 String 3',
|
||||
extend_s4 varchar(500) COMMENT '扩展 String 4',
|
||||
extend_s5 varchar(500) COMMENT '扩展 String 5',
|
||||
extend_s6 varchar(500) COMMENT '扩展 String 6',
|
||||
extend_s7 varchar(500) COMMENT '扩展 String 7',
|
||||
extend_s8 varchar(500) COMMENT '扩展 String 8',
|
||||
extend_i1 decimal(19) COMMENT '扩展 Integer 1',
|
||||
extend_i2 decimal(19) COMMENT '扩展 Integer 2',
|
||||
extend_i3 decimal(19) COMMENT '扩展 Integer 3',
|
||||
extend_i4 decimal(19) COMMENT '扩展 Integer 4',
|
||||
extend_f1 decimal(19,4) COMMENT '扩展 Float 1',
|
||||
extend_f2 decimal(19,4) COMMENT '扩展 Float 2',
|
||||
extend_f3 decimal(19,4) COMMENT '扩展 Float 3',
|
||||
extend_f4 decimal(19,4) COMMENT '扩展 Float 4',
|
||||
extend_d1 datetime COMMENT '扩展 Date 1',
|
||||
extend_d2 datetime COMMENT '扩展 Date 2',
|
||||
extend_d3 datetime COMMENT '扩展 Date 3',
|
||||
extend_d4 datetime COMMENT '扩展 Date 4',
|
||||
PRIMARY KEY (id)
|
||||
) COMMENT = '文件上传表';
|
||||
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE js_sys_file_upload
|
||||
update_by varchar2(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks nvarchar2(500),
|
||||
extend_s1 nvarchar2(500),
|
||||
extend_s2 nvarchar2(500),
|
||||
extend_s3 nvarchar2(500),
|
||||
extend_s4 nvarchar2(500),
|
||||
extend_s5 nvarchar2(500),
|
||||
extend_s6 nvarchar2(500),
|
||||
extend_s7 nvarchar2(500),
|
||||
extend_s8 nvarchar2(500),
|
||||
extend_i1 number(19),
|
||||
extend_i2 number(19),
|
||||
extend_i3 number(19),
|
||||
extend_i4 number(19),
|
||||
extend_f1 number(19,4),
|
||||
extend_f2 number(19,4),
|
||||
extend_f3 number(19,4),
|
||||
extend_f4 number(19,4),
|
||||
extend_d1 timestamp,
|
||||
extend_d2 timestamp,
|
||||
extend_d3 timestamp,
|
||||
extend_d4 timestamp,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
@@ -1136,6 +1156,26 @@ COMMENT ON COLUMN js_sys_file_upload.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_sys_file_upload.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_sys_file_upload.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_sys_file_upload.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s1 IS '扩展 String 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s2 IS '扩展 String 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s3 IS '扩展 String 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s4 IS '扩展 String 4';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s5 IS '扩展 String 5';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s6 IS '扩展 String 6';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s7 IS '扩展 String 7';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s8 IS '扩展 String 8';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i1 IS '扩展 Integer 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i2 IS '扩展 Integer 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i3 IS '扩展 Integer 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i4 IS '扩展 Integer 4';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f1 IS '扩展 Float 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f2 IS '扩展 Float 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f3 IS '扩展 Float 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f4 IS '扩展 Float 4';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d1 IS '扩展 Date 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d4 IS '扩展 Date 4';
|
||||
COMMENT ON TABLE js_sys_job IS '作业调度表';
|
||||
COMMENT ON COLUMN js_sys_job.job_name IS '任务名称';
|
||||
COMMENT ON COLUMN js_sys_job.job_group IS '任务组名';
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE js_sys_file_upload
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks varchar(500),
|
||||
extend_s1 varchar(500),
|
||||
extend_s2 varchar(500),
|
||||
extend_s3 varchar(500),
|
||||
extend_s4 varchar(500),
|
||||
extend_s5 varchar(500),
|
||||
extend_s6 varchar(500),
|
||||
extend_s7 varchar(500),
|
||||
extend_s8 varchar(500),
|
||||
extend_i1 decimal(19),
|
||||
extend_i2 decimal(19),
|
||||
extend_i3 decimal(19),
|
||||
extend_i4 decimal(19),
|
||||
extend_f1 decimal(19,4),
|
||||
extend_f2 decimal(19,4),
|
||||
extend_f3 decimal(19,4),
|
||||
extend_f4 decimal(19,4),
|
||||
extend_d1 timestamp,
|
||||
extend_d2 timestamp,
|
||||
extend_d3 timestamp,
|
||||
extend_d4 timestamp,
|
||||
PRIMARY KEY (id)
|
||||
) WITHOUT OIDS;
|
||||
|
||||
@@ -1136,6 +1156,26 @@ COMMENT ON COLUMN js_sys_file_upload.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN js_sys_file_upload.update_by IS '更新者';
|
||||
COMMENT ON COLUMN js_sys_file_upload.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN js_sys_file_upload.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s1 IS '扩展 String 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s2 IS '扩展 String 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s3 IS '扩展 String 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s4 IS '扩展 String 4';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s5 IS '扩展 String 5';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s6 IS '扩展 String 6';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s7 IS '扩展 String 7';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_s8 IS '扩展 String 8';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i1 IS '扩展 Integer 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i2 IS '扩展 Integer 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i3 IS '扩展 Integer 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_i4 IS '扩展 Integer 4';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f1 IS '扩展 Float 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f2 IS '扩展 Float 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f3 IS '扩展 Float 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_f4 IS '扩展 Float 4';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d1 IS '扩展 Date 1';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN js_sys_file_upload.extend_d4 IS '扩展 Date 4';
|
||||
COMMENT ON TABLE js_sys_job IS '作业调度表';
|
||||
COMMENT ON COLUMN js_sys_job.job_name IS '任务名称';
|
||||
COMMENT ON COLUMN js_sys_job.job_group IS '任务组名';
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>4.2.2-SNAPSHOT</version>
|
||||
<version>4.2.3-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
*/
|
||||
package com.jeesite.autoconfigure.sys;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import com.jeesite.common.mybatis.MyBatisFactoryBean;
|
||||
import com.jeesite.modules.sys.service.AreaService;
|
||||
import com.jeesite.modules.sys.service.CompanyService;
|
||||
import com.jeesite.modules.sys.service.EmpUserService;
|
||||
@@ -27,7 +29,8 @@ import com.jeesite.modules.sys.service.support.PostServiceSupport;
|
||||
* @author ThinkGem
|
||||
* @version 2018-10-13
|
||||
*/
|
||||
@Configuration
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnBean(MyBatisFactoryBean.class)
|
||||
public class SysAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.apache.shiro.session.Session;
|
||||
import org.apache.shiro.subject.Subject;
|
||||
import org.apache.shiro.web.servlet.Cookie;
|
||||
import org.apache.shiro.web.servlet.SimpleCookie;
|
||||
import org.apache.shiro.web.servlet.Cookie.SameSiteOptions;
|
||||
import org.apache.shiro.web.util.WebUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -40,6 +41,7 @@ import com.jeesite.modules.sys.entity.Log;
|
||||
import com.jeesite.modules.sys.entity.User;
|
||||
import com.jeesite.modules.sys.utils.LogUtils;
|
||||
import com.jeesite.modules.sys.utils.UserUtils;
|
||||
import com.jeesite.modules.sys.utils.ValidCodeUtils;
|
||||
|
||||
/**
|
||||
* 表单验证(包含验证码)过滤类
|
||||
@@ -64,9 +66,12 @@ public class FormAuthenticationFilter extends org.apache.shiro.web.filter.authc.
|
||||
*/
|
||||
public FormAuthenticationFilter() {
|
||||
super();
|
||||
rememberUserCodeCookie = new SimpleCookie(REMEMBER_USERCODE_PARAM);
|
||||
rememberUserCodeCookie.setHttpOnly(true);
|
||||
rememberUserCodeCookie.setMaxAge(Cookie.ONE_YEAR);
|
||||
rememberUserCodeCookie = new SimpleCookie();
|
||||
rememberUserCodeCookie.setName(REMEMBER_USERCODE_PARAM);
|
||||
rememberUserCodeCookie.setPath(Global.getProperty("session.sessionIdCookiePath"));
|
||||
rememberUserCodeCookie.setSecure(Global.getPropertyToBoolean("session.sessionIdCookieSecure", "false"));
|
||||
rememberUserCodeCookie.setHttpOnly(Global.getPropertyToBoolean("session.sessionIdCookieHttpOnly", "true"));
|
||||
rememberUserCodeCookie.setSameSite(SameSiteOptions.valueOf(Global.getProperty("session.sessionIdCookieSameSite", "LAX")));
|
||||
instance = this;
|
||||
}
|
||||
|
||||
@@ -243,7 +248,21 @@ public class FormAuthenticationFilter extends org.apache.shiro.web.filter.authc.
|
||||
protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
|
||||
// 是否在登录后生成新的Session(默认false)
|
||||
if (Global.getPropertyToBoolean("shiro.isGenerateNewSessionAfterLogin", "false")){
|
||||
String[] keys = new String[] {ValidCodeUtils.VALID_CODE};
|
||||
Map<String, Object> map = MapUtils.newHashMap();
|
||||
final Session sessionOld = UserUtils.getSession();
|
||||
for (String key : keys) {
|
||||
Object value = sessionOld.getAttribute(key);
|
||||
if (value != null) {
|
||||
map.put(key, value);
|
||||
}
|
||||
}
|
||||
UserUtils.getSubject().logout();
|
||||
// 恢复生成新的Session之前的Session数据
|
||||
final Session sessionNew = UserUtils.getSession();
|
||||
map.forEach((key, value) -> {
|
||||
sessionNew.setAttribute(key, value);
|
||||
});
|
||||
}
|
||||
return super.executeLogin(request, response);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.jeesite.common.web.http.ServletUtils;
|
||||
*/
|
||||
public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(LogoutFilter.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(LogoutFilter.class);
|
||||
private BaseAuthorizingRealm authorizingRealm; // 安全认证类
|
||||
|
||||
@Override
|
||||
@@ -53,7 +53,7 @@ public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter
|
||||
// 退出登录
|
||||
subject.logout();
|
||||
} catch (SessionException ise) {
|
||||
log.debug("Encountered session exception during logout. This can generally safely be ignored.", ise);
|
||||
logger.debug("Encountered session exception during logout. This can generally safely be ignored.", ise);
|
||||
}
|
||||
|
||||
// 如果是Ajax请求,返回Json字符串。
|
||||
@@ -65,7 +65,7 @@ public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter
|
||||
|
||||
issueRedirect(request, response, redirectUrl);
|
||||
}catch(Exception e){
|
||||
log.debug("Encountered session exception during logout. This can generally safely be ignored.", e);
|
||||
logger.debug("Encountered session exception during logout. This can generally safely be ignored.", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import org.apache.shiro.cas.CasSubjectFactory;
|
||||
import org.apache.shiro.realm.Realm;
|
||||
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
|
||||
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
|
||||
import org.apache.shiro.web.filter.InvalidRequestFilter;
|
||||
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
@@ -45,7 +46,7 @@ import com.jeesite.common.shiro.web.WebSecurityManager;
|
||||
* @version 2018-7-11
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
@Configuration
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class ShiroConfig {
|
||||
|
||||
/**
|
||||
@@ -115,15 +116,24 @@ public class ShiroConfig {
|
||||
private UserFilter shiroUserFilter() {
|
||||
return new UserFilter();
|
||||
}
|
||||
|
||||
/**
|
||||
* 非法请求过滤器
|
||||
*/
|
||||
private InvalidRequestFilter invalidRequestFilter() {
|
||||
InvalidRequestFilter bean = new InvalidRequestFilter();
|
||||
bean.setBlockNonAscii(false);
|
||||
return bean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shiro认证过滤器
|
||||
*/
|
||||
@Bean
|
||||
public ShiroFilterFactoryBean shiroFilter(WebSecurityManager securityManager,
|
||||
public ShiroFilterFactoryBean shiroFilter(WebSecurityManager webSecurityManager,
|
||||
AuthorizingRealm authorizingRealm, CasAuthorizingRealm casAuthorizingRealm) {
|
||||
ShiroFilterFactoryBean bean = new ShiroFilterFactoryBean();
|
||||
bean.setSecurityManager(securityManager);
|
||||
bean.setSecurityManager(webSecurityManager);
|
||||
bean.setLoginUrl(Global.getProperty("shiro.loginUrl"));
|
||||
bean.setSuccessUrl(Global.getProperty("adminPath")+"/index");
|
||||
Map<String, Filter> filters = bean.getFilters();
|
||||
@@ -134,6 +144,7 @@ public class ShiroConfig {
|
||||
filters.put("perms", shiroPermsFilter());
|
||||
filters.put("roles", shiroRolesFilter());
|
||||
filters.put("user", shiroUserFilter());
|
||||
filters.put("invalidRequest", invalidRequestFilter());
|
||||
FilterChainDefinitionMap chains = new FilterChainDefinitionMap();
|
||||
chains.setFilterChainDefinitions(Global.getProperty("shiro.filterChainDefinitions"));
|
||||
chains.setDefaultFilterChainDefinitions(Global.getProperty("shiro.defaultFilterChainDefinitions"));
|
||||
@@ -176,7 +187,7 @@ public class ShiroConfig {
|
||||
* 定义Shiro安全管理配置
|
||||
*/
|
||||
@Bean
|
||||
public WebSecurityManager securityManager(AuthorizingRealm authorizingRealm,
|
||||
public WebSecurityManager webSecurityManager(AuthorizingRealm authorizingRealm,
|
||||
CasAuthorizingRealm casAuthorizingRealm, SessionManager sessionManager,
|
||||
CacheManager shiroCacheManager) {
|
||||
WebSecurityManager bean = new WebSecurityManager();
|
||||
@@ -215,20 +226,20 @@ public class ShiroConfig {
|
||||
* 启用Shrio授权注解拦截方式,AOP式方法级权限检查
|
||||
*/
|
||||
@Bean
|
||||
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(WebSecurityManager securityManager) {
|
||||
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(WebSecurityManager webSecurityManager) {
|
||||
AuthorizationAttributeSourceAdvisor bean = new AuthorizationAttributeSourceAdvisor();
|
||||
bean.setSecurityManager(securityManager);
|
||||
bean.setSecurityManager(webSecurityManager);
|
||||
return bean;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 在方法中 注入 securityManager 进行代理控制
|
||||
// * 在方法中 注入 webSecurityManager 进行代理控制
|
||||
// */
|
||||
// @Bean
|
||||
// public MethodInvokingFactoryBean methodInvokingFactoryBean(DefaultWebSecurityManager securityManager) {
|
||||
// public MethodInvokingFactoryBean methodInvokingFactoryBean(DefaultWebSecurityManager webSecurityManager) {
|
||||
// MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean();
|
||||
// bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager");
|
||||
// bean.setArguments(new Object[] { securityManager });
|
||||
// bean.setArguments(new Object[] { webSecurityManager });
|
||||
// return bean;
|
||||
// }
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.alibaba.druid.support.http.WebStatFilter;
|
||||
* @author ThinkGem
|
||||
* @version 2017年11月30日
|
||||
*/
|
||||
@Configuration
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnProperty(name="state.enabled", havingValue="true", matchIfMissing=true)
|
||||
public class DruidStatConfig {
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.springframework.core.Ordered;
|
||||
* @author ThinkGem
|
||||
* @version 2020年1月21日
|
||||
*/
|
||||
@Configuration
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnProperty(name="server.schemeHttps", havingValue="true", matchIfMissing=false)
|
||||
public class SchemeHttpsConfig {
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@ import com.jeesite.modules.sys.interceptor.LogInterceptor;
|
||||
* @author ThinkGem
|
||||
* @version 2018年1月10日
|
||||
*/
|
||||
@Configuration
|
||||
@EnableWebMvc
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnProperty(name="web.interceptor.log.enabled", havingValue="true", matchIfMissing=true)
|
||||
@EnableWebMvc
|
||||
public class LogInterceptorConfig implements WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,9 +19,9 @@ import com.jeesite.modules.sys.interceptor.MobileInterceptor;
|
||||
* @author ThinkGem
|
||||
* @version 2018年1月10日
|
||||
*/
|
||||
@Configuration
|
||||
@EnableWebMvc
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnProperty(name="web.interceptor.mobile.enabled", havingValue="true", matchIfMissing=false)
|
||||
@EnableWebMvc
|
||||
public class MobileViewInterceptorConfig implements WebMvcConfigurer {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
* @author ThinkGem
|
||||
* @version 2019-03-12
|
||||
*/
|
||||
@Table(name="${_prefix}sys_msg_inner", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_msg_inner", alias="a", label="内部消息", columns={
|
||||
@Column(name="id", attrName="id", label="编号", isPK=true),
|
||||
@Column(name="msg_title", attrName="msgTitle", label="消息标题", queryType=QueryType.LIKE),
|
||||
@Column(name="content_level", attrName="contentLevel", label="内容等级", comment="内容等级(1普通 2一般 3紧急)"),
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
* @author ThinkGem
|
||||
* @version 2019-03-12
|
||||
*/
|
||||
@Table(name="${_prefix}sys_msg_inner_record", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_msg_inner_record", alias="a", label="消息发送记录", columns={
|
||||
@Column(name="id", attrName="id", label="编号", isPK=true),
|
||||
@Column(name="msg_inner_id", attrName="msgInnerId", label="所属消息"),
|
||||
@Column(name="receive_user_code", attrName="receiveUserCode", label="接受者用户编码"),
|
||||
|
||||
@@ -17,7 +17,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-22
|
||||
*/
|
||||
@Table(name="${_prefix}sys_area", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_area", alias="a", label="区域信息", columns={
|
||||
@Column(includeEntity=DataEntity.class),
|
||||
@Column(includeEntity=TreeEntity.class),
|
||||
@Column(name="area_code", attrName="areaCode", label="区域代码", isPK=true),
|
||||
|
||||
@@ -28,7 +28,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-23
|
||||
*/
|
||||
@Table(name="${_prefix}sys_company", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_company", alias="a", label="公司信息", columns={
|
||||
@Column(includeEntity=BaseEntity.class),
|
||||
@Column(includeEntity=DataEntity.class),
|
||||
@Column(includeEntity=TreeEntity.class),
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.jeesite.common.utils.excel.fieldtype.OfficeType;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-25
|
||||
*/
|
||||
@Table(name="${_prefix}sys_user", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_user", alias="a", label="员工信息", columns={
|
||||
@Column(includeEntity=User.class),
|
||||
}, joinTable={
|
||||
@JoinTable(type=Type.JOIN, entity=Employee.class, alias="e",
|
||||
@@ -122,7 +122,7 @@ public class EmpUser extends User {
|
||||
public void setEmployee(Employee employee){
|
||||
super.setRefObj(employee);
|
||||
}
|
||||
|
||||
|
||||
public String[] getCodes() {
|
||||
return codes;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-25
|
||||
*/
|
||||
@Table(name="${_prefix}sys_employee", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_employee", alias="a", label="员工信息", columns={
|
||||
@Column(includeEntity=BaseEntity.class),
|
||||
@Column(includeEntity=DataEntity.class),
|
||||
@Column(name="emp_code", attrName="empCode", label="员工编码", isPK=true),
|
||||
|
||||
@@ -25,7 +25,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-19
|
||||
*/
|
||||
@Table(name="${_prefix}sys_log", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_log", alias="a", label="操作日志", columns={
|
||||
@Column(includeEntity=BaseEntity.class),
|
||||
@Column(name="id", attrName="id", label="编码", isPK=true),
|
||||
@Column(name="log_type", attrName="logType", label="日志类型"),
|
||||
@@ -36,6 +36,7 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
@Column(name="request_uri", attrName="requestUri", label="请求URI", queryType=QueryType.LIKE),
|
||||
@Column(name="request_method", attrName="requestMethod", label="操作方式"),
|
||||
@Column(name="request_params", attrName="requestParams", label="操作提交的数据", queryType=QueryType.LIKE),
|
||||
@Column(name="diff_modify_data",attrName="diffModifyData", label="差异修改数据", queryType=QueryType.LIKE),
|
||||
@Column(name="biz_key", attrName="bizKey", label="业务主键"),
|
||||
@Column(name="biz_type", attrName="bizType", label="业务类型"),
|
||||
@Column(name="remote_addr", attrName="remoteAddr", label="操作IP地址"),
|
||||
@@ -63,6 +64,7 @@ public class Log extends DataEntity<Log> {
|
||||
private String requestUri; // 请求URI
|
||||
private String requestMethod; // 操作方式
|
||||
private String requestParams; // 操作提交的数据
|
||||
private String diffModifyData; // 差异修改数据
|
||||
private String bizKey; // 业务主键
|
||||
private String bizType; // 业务类型
|
||||
private String remoteAddr; // 操作IP地址
|
||||
@@ -130,6 +132,14 @@ public class Log extends DataEntity<Log> {
|
||||
this.requestParams = requestParams;
|
||||
}
|
||||
|
||||
public String getDiffModifyData() {
|
||||
return diffModifyData;
|
||||
}
|
||||
|
||||
public void setDiffModifyData(String diffModifyData) {
|
||||
this.diffModifyData = diffModifyData;
|
||||
}
|
||||
|
||||
@Length(min=0, max=64, message="业务主键长度不能超过 64 个字符")
|
||||
public String getBizKey() {
|
||||
return bizKey;
|
||||
@@ -220,6 +230,9 @@ public class Log extends DataEntity<Log> {
|
||||
}
|
||||
|
||||
public String getExecuteTimeFormat(){
|
||||
if (executeTime == null) {
|
||||
executeTime = 0L;
|
||||
}
|
||||
return TimeUtils.formatDateAgo(executeTime);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.jeesite.modules.sys.utils.EmpUtils;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-23
|
||||
*/
|
||||
@Table(name="${_prefix}sys_office", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_office", alias="a", label="组织机构", columns={
|
||||
@Column(includeEntity=BaseEntity.class),
|
||||
@Column(includeEntity=DataEntity.class),
|
||||
@Column(includeEntity=TreeEntity.class),
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.jeesite.common.mybatis.annotation.Column;
|
||||
import com.jeesite.common.mybatis.annotation.Table;
|
||||
import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
|
||||
@Table(name="${_prefix}sys_post", alias="a", columns={
|
||||
@Table(name="${_prefix}sys_post", alias="a", label="岗位信息", columns={
|
||||
@Column(includeEntity=BaseEntity.class),
|
||||
@Column(includeEntity=DataEntity.class),
|
||||
@Column(name="post_code", attrName="postCode", label="岗位编码", isPK=true),
|
||||
|
||||
@@ -8,12 +8,15 @@ import java.text.SimpleDateFormat;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.core.NamedThreadLocal;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import com.jeesite.common.idgen.IdGen;
|
||||
import com.jeesite.common.lang.ByteUtils;
|
||||
import com.jeesite.common.lang.DateUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import com.jeesite.common.lang.TimeUtils;
|
||||
import com.jeesite.common.network.IpUtils;
|
||||
import com.jeesite.common.service.BaseService;
|
||||
@@ -27,12 +30,16 @@ import com.jeesite.modules.sys.utils.UserUtils;
|
||||
*/
|
||||
public class LogInterceptor extends BaseService implements HandlerInterceptor {
|
||||
|
||||
private static final String TRACE_ID = "TRACE_ID";
|
||||
private static final ThreadLocal<Long> startTimeThreadLocal =
|
||||
new NamedThreadLocal<Long>("LogInterceptor StartTime");
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
|
||||
Object handler) throws Exception {
|
||||
if (StringUtils.isBlank(MDC.get(TRACE_ID))) {
|
||||
MDC.put(TRACE_ID, IdGen.nextId());
|
||||
}
|
||||
long beginTime = System.currentTimeMillis();// 1、开始时间
|
||||
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
|
||||
if (logger.isDebugEnabled()){
|
||||
@@ -77,7 +84,7 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
|
||||
DateUtils.formatDate(endTime, "hh:mm:ss.SSS"), TimeUtils.formatDateAgo(executeTime), request.getRequestURI(),
|
||||
ByteUtils.formatByteSize(runtime.totalMemory()), ByteUtils.formatByteSize(runtime.totalMemory()-runtime.freeMemory()));
|
||||
}
|
||||
|
||||
MDC.remove(TRACE_ID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ public class CompanyServiceSupport extends TreeService<CompanyDao, Company>
|
||||
@Transactional(readOnly=false)
|
||||
public void save(Company company) {
|
||||
if (company.getIsNewRecord()){
|
||||
// 生成主键,并验证改主键是否存在,如存在则抛出验证信息
|
||||
genIdAndValid(company, company.getViewCode());
|
||||
// 当前新数据授权,如果用户有上级数据权限,则当前数据也有相应的数据权限
|
||||
dataScopeService.insertIfParentExists(company, "Company");
|
||||
|
||||
@@ -59,6 +59,7 @@ public class OfficeServiceSupport extends TreeService<OfficeDao, Office>
|
||||
@Transactional(readOnly=false)
|
||||
public void save(Office office) {
|
||||
if (office.getIsNewRecord()){
|
||||
// 生成主键,并验证改主键是否存在,如存在则抛出验证信息
|
||||
genIdAndValid(office, office.getViewCode());
|
||||
// 当前新数据授权,如果用户有上级数据权限,则当前数据也有相应的数据权限
|
||||
dataScopeService.insertIfParentExists(office, "Office");
|
||||
|
||||
@@ -11,12 +11,12 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import io.netty.util.concurrent.DefaultThreadFactory;
|
||||
import org.apache.ibatis.mapping.SqlCommandType;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.core.DefaultParameterNameDiscoverer;
|
||||
import org.springframework.core.ParameterNameDiscoverer;
|
||||
import org.springframework.core.annotation.AnnotationUtils;
|
||||
import org.springframework.web.bind.WebDataBinder;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.jeesite.common.mybatis.annotation.Column;
|
||||
import com.jeesite.common.mybatis.annotation.Table;
|
||||
import com.jeesite.common.mybatis.mapper.MapperHelper;
|
||||
import com.jeesite.common.network.IpUtils;
|
||||
import com.jeesite.common.utils.DiffDataUtils;
|
||||
import com.jeesite.common.utils.SpringUtils;
|
||||
import com.jeesite.common.web.http.UserAgentUtils;
|
||||
import com.jeesite.modules.sys.entity.Log;
|
||||
@@ -37,6 +38,7 @@ import com.jeesite.modules.sys.service.LogService;
|
||||
import com.jeesite.modules.sys.service.MenuService;
|
||||
|
||||
import eu.bitwalker.useragentutils.UserAgent;
|
||||
import io.netty.util.concurrent.DefaultThreadFactory;
|
||||
|
||||
/**
|
||||
* 日志工具类
|
||||
@@ -60,7 +62,7 @@ public class LogUtils {
|
||||
|
||||
// 参数名获取工具(尝试获取标注为@ModelAttribute注解的方法,第一个参数名一般为主键名)
|
||||
private static ParameterNameDiscoverer pnd = new DefaultParameterNameDiscoverer();
|
||||
|
||||
|
||||
/**
|
||||
* 保存日志
|
||||
*/
|
||||
@@ -112,9 +114,14 @@ public class LogUtils {
|
||||
if (throwable == null){
|
||||
throwable = ExceptionUtils.getThrowable(request);
|
||||
}
|
||||
|
||||
// 获取原数据和修改后的目标数据对象
|
||||
Object sourceData = request.getAttribute(WebDataBinder.class.getName()+".SOURCE");
|
||||
Object targetData = request.getAttribute(WebDataBinder.class.getName()+".TARGET");
|
||||
|
||||
// 异步保存日志
|
||||
logThreadPool.submit(new SaveLogThread(log, handler, request.getContextPath(), throwable));
|
||||
logThreadPool.submit(new SaveLogThread(log, handler, request.getContextPath(),
|
||||
throwable, sourceData, targetData));
|
||||
}
|
||||
/**
|
||||
* 保存日志线程
|
||||
@@ -125,12 +132,17 @@ public class LogUtils {
|
||||
private Object handler;
|
||||
private String contextPath;
|
||||
private Throwable throwable;
|
||||
private Object sourceData;
|
||||
private Object targetData;
|
||||
|
||||
public SaveLogThread(Log log, Object handler, String contextPath, Throwable throwable){
|
||||
public SaveLogThread(Log log, Object handler, String contextPath,
|
||||
Throwable throwable, Object sourceData, Object targetData){
|
||||
this.log = log;
|
||||
this.handler = handler;
|
||||
this.contextPath = contextPath;
|
||||
this.throwable = throwable;
|
||||
this.sourceData = sourceData;
|
||||
this.targetData = targetData;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -217,11 +229,15 @@ public class LogUtils {
|
||||
if (StringUtils.isBlank(log.getRequestUri()) && StringUtils.isBlank(log.getExceptionInfo())){
|
||||
return;
|
||||
}
|
||||
// 如果是修改类型的日志,则获取修改前后的差异数据
|
||||
if (Log.TYPE_UPDATE.equals(log.getLogType()) && sourceData != null && targetData != null) {
|
||||
log.setDiffModifyData(DiffDataUtils.getDiffData(sourceData, targetData));
|
||||
}
|
||||
// 保存日志信息
|
||||
log.setIsNewRecord(true);
|
||||
Static.logService.insertLog(log);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -264,7 +264,11 @@ public class LoginController extends BaseController{
|
||||
//UserUtils.removeCache(UserUtils.CACHE_AUTH_INFO+"_"+session.getId());
|
||||
|
||||
// 返回指定用户类型的首页视图
|
||||
String view = UserUtils.getUserTypeValue(user.getUserType(), "indexView");
|
||||
String userType = user.getUserType();
|
||||
if (User.USER_TYPE_NONE.equals(userType)){
|
||||
userType = User.USER_TYPE_EMPLOYEE;
|
||||
}
|
||||
String view = UserUtils.getUserTypeValue(userType, "indexView");
|
||||
if(StringUtils.isNotBlank(view)){
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ public class UserController extends BaseController {
|
||||
@ResponseBody
|
||||
public String infoSaveBase(User user, HttpServletRequest request) {
|
||||
if (StringUtils.isBlank(user.getUserName())){
|
||||
return renderResult(Global.TRUE, text("sys.user.userNameNotBlank"));
|
||||
return renderResult(Global.FALSE, text("sys.user.userNameNotBlank"));
|
||||
}
|
||||
Global.assertDemoMode();
|
||||
User currentUser = UserUtils.getUser();
|
||||
|
||||
@@ -20,9 +20,9 @@ jdbc:
|
||||
|
||||
# 初始化连接数
|
||||
init: 1
|
||||
# 最小连接数
|
||||
# 最小活动连接数
|
||||
minIdle: 3
|
||||
# 最大连接数
|
||||
# 最大激活连接数
|
||||
maxActive: 20
|
||||
|
||||
# 获取连接等待超时时间,单位毫秒(1分钟)(4.0.6+)
|
||||
@@ -108,8 +108,11 @@ frontPath: /f
|
||||
# 分页相关
|
||||
page:
|
||||
|
||||
# 分页默认大小
|
||||
# 默认每页显示的数据条数
|
||||
pageSize: 20
|
||||
|
||||
# 每页最大条数,防止分页过大导致系统缓慢或内存溢出
|
||||
maxPageSize: 999
|
||||
|
||||
# 用户相关
|
||||
user:
|
||||
@@ -367,7 +370,8 @@ shiro:
|
||||
# 是否允许嵌入到外部网站iframe中(true:不限制,false:不允许)
|
||||
isAllowExternalSiteIframe: true
|
||||
|
||||
# 是否允许跨域访问 CORS,如果允许,设置允许的域名,全部域名设置*号,如果不允许,此设置应该为空
|
||||
# 是否允许跨域访问 CORS,如果允许,设置允许的域名。当设置'*'号全部域名时,accessControlAllowCredentials应该设置为false。
|
||||
# v4.2.3 开始支持多个域名和模糊匹配,例如:http://*.jeesite.com,http://*.jeesite.net
|
||||
# accessControlAllowOrigin: http://demo.jeesite.com
|
||||
# accessControlAllowOrigin: '*'
|
||||
|
||||
@@ -375,8 +379,8 @@ shiro:
|
||||
# accessControlAllowMethods: GET, POST, OPTIONS
|
||||
# accessControlAllowHeaders: Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With
|
||||
|
||||
# 是否允许接收跨域的Cookie凭证数据 CORS
|
||||
# accessControlAllowCredentials: true
|
||||
# 是否允许接收跨域的Cookie凭证数据 CORS,当设置为true时,accessControlAllowOrigin不能设置为'*'。
|
||||
# accessControlAllowCredentials: false
|
||||
|
||||
# 允许的网站来源地址,不设置为全部地址(避免一些跨站点请求伪造 CSRF、防盗链)
|
||||
# allowReferers: http://127.0.0.1,http://localhost
|
||||
@@ -403,11 +407,11 @@ shiro:
|
||||
# ${adminPath}/${spring.application.name}/swagger/** = anon
|
||||
# ${adminPath}/** = user
|
||||
filterChainDefinitions: |
|
||||
${adminPath}/sys/corpAdmin/treeData = anon
|
||||
${adminPath}/** = user
|
||||
|
||||
# 默认的授权过滤定义,如果在filterChainDefinitions中已经定义,则该定义会被覆盖。
|
||||
defaultFilterChainDefinitions: |
|
||||
/tags/* = anon
|
||||
/lang/** = anon
|
||||
/account/* = anon
|
||||
/userfiles/** = anon
|
||||
@@ -419,6 +423,7 @@ shiro:
|
||||
${adminPath}/login = authc
|
||||
${adminPath}/logout = logout
|
||||
${adminPath}/file/** = user
|
||||
${adminPath}/sys/corpAdmin/treeData = anon
|
||||
${adminPath}/cms/* = perms[cms:view]
|
||||
${adminPath}/cms/site/select = user
|
||||
${adminPath}/cms/site/* = perms[cms:site:view]
|
||||
@@ -450,6 +455,11 @@ session:
|
||||
# 共享的SessionId的Cookie名称,保存到跟路径下,第三方应用获取。同一域名下多个项目时需设置共享Cookie的名称。
|
||||
#shareSessionIdCookieName: ${session.sessionIdCookieName}
|
||||
|
||||
# 其它 SimpleCookie 参数(v4.2.3)
|
||||
#sessionIdCookieSecure: false
|
||||
#sessionIdCookieHttpOnly: true
|
||||
#sessionIdCookieSameSite: LAX
|
||||
|
||||
# 设置接收SessionId请求参数的名称
|
||||
sessionIdParamName: __sid
|
||||
|
||||
@@ -489,6 +499,9 @@ mybatis:
|
||||
# TypeHandlers 扫描基础包,如果多个,用“,”分隔
|
||||
scanTypeHandlersPackage: ~
|
||||
|
||||
# 是否开启 JDBC 管理事务,默认 Spring 管理事务 v4.2.3
|
||||
jdbcTransaction: false
|
||||
|
||||
# Mapper文件刷新线程
|
||||
mapper:
|
||||
refresh:
|
||||
@@ -551,7 +564,7 @@ web:
|
||||
# 静态文件后缀,排除的url路径,指定哪些uri路径不进行静态文件过滤。
|
||||
staticFileExcludeUri: /druid/
|
||||
|
||||
# 静态资源路径前缀,可做CDN加速优化
|
||||
# 静态资源路径前缀,可做 CDN 加速优化,默认前面增加 ctxPath 前缀,如果前面写 “//” 两个斜杠 或 包含 “://” 不加 ctxPath。
|
||||
staticPrefix: /static
|
||||
|
||||
# 严格模式(更严格的数据安全验证)
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
<logger name="com.atomikos.jdbc.AbstractDataSourceBean" level="ERROR" />
|
||||
<logger name="com.atomikos.jdbc.AtomikosConnectionProxy" level="ERROR" />
|
||||
<logger name="com.atomikos.recovery.xa.XaResourceRecoveryManager" level="ERROR" />
|
||||
<logger name="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator" level="DEBUG" />
|
||||
<!-- <logger name="org.springframework.transaction.support.TransactionSynchronizationManager" level="TRACE" /> -->
|
||||
|
||||
<logger name="springfox.documentation.spring.web.readers.parameter.ParameterDataTypeReader" level="ERROR" />
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE ${_prefix}sys_file_upload
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks vargraphic(500),
|
||||
extend_s1 vargraphic(500),
|
||||
extend_s2 vargraphic(500),
|
||||
extend_s3 vargraphic(500),
|
||||
extend_s4 vargraphic(500),
|
||||
extend_s5 vargraphic(500),
|
||||
extend_s6 vargraphic(500),
|
||||
extend_s7 vargraphic(500),
|
||||
extend_s8 vargraphic(500),
|
||||
extend_i1 decimal(19),
|
||||
extend_i2 decimal(19),
|
||||
extend_i3 decimal(19),
|
||||
extend_i4 decimal(19),
|
||||
extend_f1 decimal(19,4),
|
||||
extend_f2 decimal(19,4),
|
||||
extend_f3 decimal(19,4),
|
||||
extend_f4 decimal(19,4),
|
||||
extend_d1 timestamp,
|
||||
extend_d2 timestamp,
|
||||
extend_d3 timestamp,
|
||||
extend_d4 timestamp,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE ${_prefix}sys_file_upload
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date datetime NOT NULL,
|
||||
remarks varchar(500),
|
||||
extend_s1 varchar(500),
|
||||
extend_s2 varchar(500),
|
||||
extend_s3 varchar(500),
|
||||
extend_s4 varchar(500),
|
||||
extend_s5 varchar(500),
|
||||
extend_s6 varchar(500),
|
||||
extend_s7 varchar(500),
|
||||
extend_s8 varchar(500),
|
||||
extend_i1 decimal(19),
|
||||
extend_i2 decimal(19),
|
||||
extend_i3 decimal(19),
|
||||
extend_i4 decimal(19),
|
||||
extend_f1 decimal(19,4),
|
||||
extend_f2 decimal(19,4),
|
||||
extend_f3 decimal(19,4),
|
||||
extend_f4 decimal(19,4),
|
||||
extend_d1 datetime,
|
||||
extend_d2 datetime,
|
||||
extend_d3 datetime,
|
||||
extend_d4 datetime,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE [${_prefix}sys_file_upload]
|
||||
[update_by] varchar(64) NOT NULL,
|
||||
[update_date] datetime NOT NULL,
|
||||
[remarks] nvarchar(500),
|
||||
[extend_s1] nvarchar(500),
|
||||
[extend_s2] nvarchar(500),
|
||||
[extend_s3] nvarchar(500),
|
||||
[extend_s4] nvarchar(500),
|
||||
[extend_s5] nvarchar(500),
|
||||
[extend_s6] nvarchar(500),
|
||||
[extend_s7] nvarchar(500),
|
||||
[extend_s8] nvarchar(500),
|
||||
[extend_i1] decimal(19),
|
||||
[extend_i2] decimal(19),
|
||||
[extend_i3] decimal(19),
|
||||
[extend_i4] decimal(19),
|
||||
[extend_f1] decimal(19,4),
|
||||
[extend_f2] decimal(19,4),
|
||||
[extend_f3] decimal(19,4),
|
||||
[extend_f4] decimal(19,4),
|
||||
[extend_d1] datetime,
|
||||
[extend_d2] datetime,
|
||||
[extend_d3] datetime,
|
||||
[extend_d4] datetime,
|
||||
PRIMARY KEY ([id])
|
||||
);
|
||||
|
||||
|
||||
@@ -293,6 +293,26 @@ CREATE TABLE ${_prefix}sys_file_upload
|
||||
update_by varchar(64) NOT NULL COMMENT '更新者',
|
||||
update_date datetime NOT NULL COMMENT '更新时间',
|
||||
remarks varchar(500) COMMENT '备注信息',
|
||||
extend_s1 varchar(500) COMMENT '扩展 String 1',
|
||||
extend_s2 varchar(500) COMMENT '扩展 String 2',
|
||||
extend_s3 varchar(500) COMMENT '扩展 String 3',
|
||||
extend_s4 varchar(500) COMMENT '扩展 String 4',
|
||||
extend_s5 varchar(500) COMMENT '扩展 String 5',
|
||||
extend_s6 varchar(500) COMMENT '扩展 String 6',
|
||||
extend_s7 varchar(500) COMMENT '扩展 String 7',
|
||||
extend_s8 varchar(500) COMMENT '扩展 String 8',
|
||||
extend_i1 decimal(19) COMMENT '扩展 Integer 1',
|
||||
extend_i2 decimal(19) COMMENT '扩展 Integer 2',
|
||||
extend_i3 decimal(19) COMMENT '扩展 Integer 3',
|
||||
extend_i4 decimal(19) COMMENT '扩展 Integer 4',
|
||||
extend_f1 decimal(19,4) COMMENT '扩展 Float 1',
|
||||
extend_f2 decimal(19,4) COMMENT '扩展 Float 2',
|
||||
extend_f3 decimal(19,4) COMMENT '扩展 Float 3',
|
||||
extend_f4 decimal(19,4) COMMENT '扩展 Float 4',
|
||||
extend_d1 datetime COMMENT '扩展 Date 1',
|
||||
extend_d2 datetime COMMENT '扩展 Date 2',
|
||||
extend_d3 datetime COMMENT '扩展 Date 3',
|
||||
extend_d4 datetime COMMENT '扩展 Date 4',
|
||||
PRIMARY KEY (id)
|
||||
) COMMENT = '文件上传表';
|
||||
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE ${_prefix}sys_file_upload
|
||||
update_by varchar2(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks nvarchar2(500),
|
||||
extend_s1 nvarchar2(500),
|
||||
extend_s2 nvarchar2(500),
|
||||
extend_s3 nvarchar2(500),
|
||||
extend_s4 nvarchar2(500),
|
||||
extend_s5 nvarchar2(500),
|
||||
extend_s6 nvarchar2(500),
|
||||
extend_s7 nvarchar2(500),
|
||||
extend_s8 nvarchar2(500),
|
||||
extend_i1 number(19),
|
||||
extend_i2 number(19),
|
||||
extend_i3 number(19),
|
||||
extend_i4 number(19),
|
||||
extend_f1 number(19,4),
|
||||
extend_f2 number(19,4),
|
||||
extend_f3 number(19,4),
|
||||
extend_f4 number(19,4),
|
||||
extend_d1 timestamp,
|
||||
extend_d2 timestamp,
|
||||
extend_d3 timestamp,
|
||||
extend_d4 timestamp,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
@@ -1136,6 +1156,26 @@ COMMENT ON COLUMN ${_prefix}sys_file_upload.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.update_by IS '更新者';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s1 IS '扩展 String 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s2 IS '扩展 String 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s3 IS '扩展 String 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s4 IS '扩展 String 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s5 IS '扩展 String 5';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s6 IS '扩展 String 6';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s7 IS '扩展 String 7';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s8 IS '扩展 String 8';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i1 IS '扩展 Integer 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i2 IS '扩展 Integer 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i3 IS '扩展 Integer 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i4 IS '扩展 Integer 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f1 IS '扩展 Float 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f2 IS '扩展 Float 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f3 IS '扩展 Float 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f4 IS '扩展 Float 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d1 IS '扩展 Date 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d4 IS '扩展 Date 4';
|
||||
COMMENT ON TABLE ${_prefix}sys_job IS '作业调度表';
|
||||
COMMENT ON COLUMN ${_prefix}sys_job.job_name IS '任务名称';
|
||||
COMMENT ON COLUMN ${_prefix}sys_job.job_group IS '任务组名';
|
||||
|
||||
@@ -292,6 +292,26 @@ CREATE TABLE ${_prefix}sys_file_upload
|
||||
update_by varchar(64) NOT NULL,
|
||||
update_date timestamp NOT NULL,
|
||||
remarks varchar(500),
|
||||
extend_s1 varchar(500),
|
||||
extend_s2 varchar(500),
|
||||
extend_s3 varchar(500),
|
||||
extend_s4 varchar(500),
|
||||
extend_s5 varchar(500),
|
||||
extend_s6 varchar(500),
|
||||
extend_s7 varchar(500),
|
||||
extend_s8 varchar(500),
|
||||
extend_i1 decimal(19),
|
||||
extend_i2 decimal(19),
|
||||
extend_i3 decimal(19),
|
||||
extend_i4 decimal(19),
|
||||
extend_f1 decimal(19,4),
|
||||
extend_f2 decimal(19,4),
|
||||
extend_f3 decimal(19,4),
|
||||
extend_f4 decimal(19,4),
|
||||
extend_d1 timestamp,
|
||||
extend_d2 timestamp,
|
||||
extend_d3 timestamp,
|
||||
extend_d4 timestamp,
|
||||
PRIMARY KEY (id)
|
||||
) WITHOUT OIDS;
|
||||
|
||||
@@ -1136,6 +1156,26 @@ COMMENT ON COLUMN ${_prefix}sys_file_upload.create_date IS '创建时间';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.update_by IS '更新者';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.update_date IS '更新时间';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.remarks IS '备注信息';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s1 IS '扩展 String 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s2 IS '扩展 String 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s3 IS '扩展 String 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s4 IS '扩展 String 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s5 IS '扩展 String 5';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s6 IS '扩展 String 6';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s7 IS '扩展 String 7';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s8 IS '扩展 String 8';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i1 IS '扩展 Integer 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i2 IS '扩展 Integer 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i3 IS '扩展 Integer 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i4 IS '扩展 Integer 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f1 IS '扩展 Float 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f2 IS '扩展 Float 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f3 IS '扩展 Float 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f4 IS '扩展 Float 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d1 IS '扩展 Date 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d4 IS '扩展 Date 4';
|
||||
COMMENT ON TABLE ${_prefix}sys_job IS '作业调度表';
|
||||
COMMENT ON COLUMN ${_prefix}sys_job.job_name IS '任务名称';
|
||||
COMMENT ON COLUMN ${_prefix}sys_job.job_group IS '任务组名';
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
-- 文件上传表增加 20 个扩展字段
|
||||
ALTER TABLE ${_prefix}sys_file_upload
|
||||
ADD extend_s1 nvarchar(500),
|
||||
extend_s2 nvarchar(500),
|
||||
extend_s3 nvarchar(500),
|
||||
extend_s4 nvarchar(500),
|
||||
extend_s5 nvarchar(500),
|
||||
extend_s6 nvarchar(500),
|
||||
extend_s7 nvarchar(500),
|
||||
extend_s8 nvarchar(500),
|
||||
extend_i1 decimal(19),
|
||||
extend_i2 decimal(19),
|
||||
extend_i3 decimal(19),
|
||||
extend_i4 decimal(19),
|
||||
extend_f1 decimal(19,4),
|
||||
extend_f2 decimal(19,4),
|
||||
extend_f3 decimal(19,4),
|
||||
extend_f4 decimal(19,4),
|
||||
extend_d1 datetime,
|
||||
extend_d2 datetime,
|
||||
extend_d3 datetime,
|
||||
extend_d4 datetime;
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
-- 文件上传表增加 20 个扩展字段
|
||||
ALTER TABLE `${_prefix}sys_file_upload`
|
||||
ADD COLUMN extend_s1 varchar(500) COMMENT '扩展 String 1',
|
||||
ADD COLUMN extend_s2 varchar(500) COMMENT '扩展 String 2',
|
||||
ADD COLUMN extend_s3 varchar(500) COMMENT '扩展 String 3',
|
||||
ADD COLUMN extend_s4 varchar(500) COMMENT '扩展 String 4',
|
||||
ADD COLUMN extend_s5 varchar(500) COMMENT '扩展 String 5',
|
||||
ADD COLUMN extend_s6 varchar(500) COMMENT '扩展 String 6',
|
||||
ADD COLUMN extend_s7 varchar(500) COMMENT '扩展 String 7',
|
||||
ADD COLUMN extend_s8 varchar(500) COMMENT '扩展 String 8',
|
||||
ADD COLUMN extend_i1 decimal(19) COMMENT '扩展 Integer 1',
|
||||
ADD COLUMN extend_i2 decimal(19) COMMENT '扩展 Integer 2',
|
||||
ADD COLUMN extend_i3 decimal(19) COMMENT '扩展 Integer 3',
|
||||
ADD COLUMN extend_i4 decimal(19) COMMENT '扩展 Integer 4',
|
||||
ADD COLUMN extend_f1 decimal(19,4) COMMENT '扩展 Float 1',
|
||||
ADD COLUMN extend_f2 decimal(19,4) COMMENT '扩展 Float 2',
|
||||
ADD COLUMN extend_f3 decimal(19,4) COMMENT '扩展 Float 3',
|
||||
ADD COLUMN extend_f4 decimal(19,4) COMMENT '扩展 Float 4',
|
||||
ADD COLUMN extend_d1 datetime COMMENT '扩展 Date 1',
|
||||
ADD COLUMN extend_d2 datetime COMMENT '扩展 Date 2',
|
||||
ADD COLUMN extend_d3 datetime COMMENT '扩展 Date 3',
|
||||
ADD COLUMN extend_d4 datetime COMMENT '扩展 Date 4';
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
-- 文件上传表增加 20 个扩展字段
|
||||
ALTER TABLE ${_prefix}sys_file_upload
|
||||
ADD (extend_s1 nvarchar2(500),
|
||||
extend_s2 nvarchar2(500),
|
||||
extend_s3 nvarchar2(500),
|
||||
extend_s4 nvarchar2(500),
|
||||
extend_s5 nvarchar2(500),
|
||||
extend_s6 nvarchar2(500),
|
||||
extend_s7 nvarchar2(500),
|
||||
extend_s8 nvarchar2(500),
|
||||
extend_i1 number(19),
|
||||
extend_i2 number(19),
|
||||
extend_i3 number(19),
|
||||
extend_i4 number(19),
|
||||
extend_f1 number(19,4),
|
||||
extend_f2 number(19,4),
|
||||
extend_f3 number(19,4),
|
||||
extend_f4 number(19,4),
|
||||
extend_d1 timestamp,
|
||||
extend_d2 timestamp,
|
||||
extend_d3 timestamp,
|
||||
extend_d4 timestamp);
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s1 IS '扩展 String 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s2 IS '扩展 String 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s3 IS '扩展 String 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s4 IS '扩展 String 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s5 IS '扩展 String 5';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s6 IS '扩展 String 6';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s7 IS '扩展 String 7';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s8 IS '扩展 String 8';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i1 IS '扩展 Integer 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i2 IS '扩展 Integer 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i3 IS '扩展 Integer 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i4 IS '扩展 Integer 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f1 IS '扩展 Float 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f2 IS '扩展 Float 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f3 IS '扩展 Float 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f4 IS '扩展 Float 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d1 IS '扩展 Date 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d4 IS '扩展 Date 4';
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
-- 文件上传表增加 20 个扩展字段
|
||||
ALTER TABLE ${_prefix}sys_file_upload
|
||||
ADD COLUMN extend_s1 varchar(500),
|
||||
ADD COLUMN extend_s2 varchar(500),
|
||||
ADD COLUMN extend_s3 varchar(500),
|
||||
ADD COLUMN extend_s4 varchar(500),
|
||||
ADD COLUMN extend_s5 varchar(500),
|
||||
ADD COLUMN extend_s6 varchar(500),
|
||||
ADD COLUMN extend_s7 varchar(500),
|
||||
ADD COLUMN extend_s8 varchar(500),
|
||||
ADD COLUMN extend_i1 decimal(19),
|
||||
ADD COLUMN extend_i2 decimal(19),
|
||||
ADD COLUMN extend_i3 decimal(19),
|
||||
ADD COLUMN extend_i4 decimal(19),
|
||||
ADD COLUMN extend_f1 decimal(19,4),
|
||||
ADD COLUMN extend_f2 decimal(19,4),
|
||||
ADD COLUMN extend_f3 decimal(19,4),
|
||||
ADD COLUMN extend_f4 decimal(19,4),
|
||||
ADD COLUMN extend_d1 timestamp,
|
||||
ADD COLUMN extend_d2 timestamp,
|
||||
ADD COLUMN extend_d3 timestamp,
|
||||
ADD COLUMN extend_d4 timestamp;
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s1 IS '扩展 String 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s2 IS '扩展 String 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s3 IS '扩展 String 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s4 IS '扩展 String 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s5 IS '扩展 String 5';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s6 IS '扩展 String 6';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s7 IS '扩展 String 7';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_s8 IS '扩展 String 8';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i1 IS '扩展 Integer 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i2 IS '扩展 Integer 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i3 IS '扩展 Integer 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_i4 IS '扩展 Integer 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f1 IS '扩展 Float 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f2 IS '扩展 Float 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f3 IS '扩展 Float 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_f4 IS '扩展 Float 4';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d1 IS '扩展 Date 1';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d2 IS '扩展 Date 2';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d3 IS '扩展 Date 3';
|
||||
COMMENT ON COLUMN ${_prefix}sys_file_upload.extend_d4 IS '扩展 Date 4';
|
||||
@@ -17,4 +17,6 @@
|
||||
4.1.8
|
||||
4.1.9
|
||||
4.2.0
|
||||
4.2.1
|
||||
4.2.1
|
||||
4.2.2
|
||||
4.2.3
|
||||
@@ -385,6 +385,29 @@
|
||||
租户切换失败,没有这个租户!=Tenant switch failed, no tenant!
|
||||
租户切换失败,只有超级管理员才可以操作!=Tenant switch failed, only super administrator can operate!
|
||||
|
||||
# =========== 安全审计 ===========
|
||||
|
||||
安全审计=Security Audit
|
||||
账号密码审计=Account password audit
|
||||
菜单权限审计=Menu permission audit
|
||||
用户权限审计=User privileges audit
|
||||
|
||||
全部问题=All Problems
|
||||
未修改初始密码=The initial password was not changed
|
||||
密码等级是弱或者很弱的=The password level is weak or very weak
|
||||
使用简单密码=Use simple password
|
||||
定期未修改密码=Periodically unchanged password
|
||||
定期未修改密码的账号\ {0}\ 天内不被审查=Periodic accounts with unchanged passwords {0} will not be reviewed within days
|
||||
长期未登录=Long time not logged in
|
||||
长期未登录的账号\ {0}\ 天内不被审查=Long time unlogged account \ {0}\ not censored within days
|
||||
未设置密保=No is set secret guard
|
||||
|
||||
审计结果=Audit Result
|
||||
修改密码时间=Change password time
|
||||
最后登录时间=Last login time
|
||||
|
||||
请设置\ sys.user.passwordModifyCycle\ 参数,指定密码修改周期天数=Please set 'sys.user.passwordModifyCycle' parameter, specify the number of days password change cycle
|
||||
|
||||
# =========== 菜单管理 ===========
|
||||
|
||||
新增菜单=New menu
|
||||
|
||||
@@ -389,6 +389,29 @@
|
||||
租户切换失败,没有这个租户!=テナント换の失敗が、このテナント!
|
||||
租户切换失败,只有超级管理员才可以操作!=テナント换に失敗し、スーパーの管理のみを操作できる!
|
||||
|
||||
# =========== 安全审计 ===========
|
||||
|
||||
安全审计=安全監査
|
||||
账号密码审计=パスワード監査
|
||||
菜单权限审计=メニュー権限監査
|
||||
用户权限审计=ユーザ権限監査
|
||||
|
||||
全部问题=すべての問題
|
||||
未修改初始密码=初期パスワードは未修正
|
||||
密码等级是弱或者很弱的=暗号レベルは弱いか弱い
|
||||
使用简单密码=簡単なパスワードを使う
|
||||
定期未修改密码=定期的にパスワードを修正しない
|
||||
定期未修改密码的账号\ {0}\ 天内不被审查=定期的にパスワードを変更しないアカウント {0} は日中審査されません
|
||||
长期未登录=長期未登録
|
||||
长期未登录的账号\ {0}\ 天内不被审查=長期未ログインのアカウント {0} は日中審査されません
|
||||
未设置密保=未設置密保
|
||||
|
||||
审计结果=監査結果
|
||||
修改密码时间=パスワードを修正する時間
|
||||
最后登录时间=最終登録時間
|
||||
|
||||
请设置\ sys.user.passwordModifyCycle\ 参数,指定密码修改周期天数=設置 sys.user.passwordModifyCycle パラメータ、パスワードを指定改正周期日数
|
||||
|
||||
# =========== 菜单管理 ===========
|
||||
|
||||
新增菜单=メニューの追加
|
||||
|
||||
1
modules/core/src/main/resources/static/images/date.svg
Normal file
1
modules/core/src/main/resources/static/images/date.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1611372977925" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1701" width="27" height="22" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M797.909333 219.818667h-91.306666v-21.333334a27.392 27.392 0 0 0-54.784 0v21.333334H371.754667v-21.333334a27.392 27.392 0 1 0-54.784 0v21.333334H225.621333c-30.293333 0-54.784 24.490667-54.784 54.784v523.605333c0 30.293333 24.490667 54.784 54.826667 54.784H797.866667c30.293333 0 54.826667-24.618667 54.826666-54.784V274.602667c0-30.293333-24.490667-54.784-54.826666-54.784zM317.013333 270.805333v19.029334a27.392 27.392 0 0 0 54.784 0v-19.029334h280.064v19.029334a27.392 27.392 0 0 0 54.784 0v-19.029334h95.146667v95.146667H221.866667v-95.146667h95.104z m487.04 533.205334H219.989333V414.592h584.021334v389.418667zM341.333333 512.042667h48.64a24.362667 24.362667 0 0 1 0 48.725333H341.333333a24.32 24.32 0 1 1 0-48.682667V512z m146.090667 0h48.682667a24.362667 24.362667 0 0 1 0 48.725333h-48.64a24.32 24.32 0 0 1 0-48.682667L487.424 512z m146.090667 0h48.768a24.362667 24.362667 0 0 1 0 48.725333h-48.768a24.32 24.32 0 1 1 0-48.682667V512zM341.333333 659.626667h48.768a24.362667 24.362667 0 0 1 0 48.682666H341.333333a24.32 24.32 0 0 1 0-48.682666z m146.176 0h48.682667a24.362667 24.362667 0 0 1 0 48.682666h-48.725333a24.32 24.32 0 0 1 0-48.682666z" fill="#999999" p-id="1702"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -92,6 +92,7 @@ $.extend($.jgrid,{
|
||||
viewtitle: "View selected row"
|
||||
},
|
||||
col : {
|
||||
all: "Check all",
|
||||
caption: "Select columns",
|
||||
bSubmit: "Ok",
|
||||
bCancel: "Cancel"
|
||||
|
||||
@@ -85,6 +85,7 @@ $.extend($.jgrid,{
|
||||
viewtitle: "View selected row"
|
||||
},
|
||||
col : {
|
||||
all: "全テーマ",
|
||||
caption: "\u5217\u3092\u8868\u793a\uff0f\u96a0\u3059",
|
||||
bSubmit: "\u9001\u4fe1",
|
||||
bCancel: "\u30ad\u30e3\u30f3\u30bb\u30eb"
|
||||
|
||||
@@ -91,6 +91,7 @@ $.extend($.jgrid,{
|
||||
viewtitle: "查看所选记录"
|
||||
},
|
||||
col : {
|
||||
all: "全选",
|
||||
caption: "选择列",
|
||||
bSubmit: "确定",
|
||||
bCancel: "取消"
|
||||
|
||||
@@ -84,6 +84,7 @@ $.extend($.jgrid,{
|
||||
viewtitle: "檢視已選列"
|
||||
},
|
||||
col : {
|
||||
all: "全選",
|
||||
caption: "選擇欄",
|
||||
bSubmit: "確定",
|
||||
bCancel: "取消"
|
||||
|
||||
@@ -71,6 +71,10 @@ $(function(){
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if ($.fn.strength){
|
||||
$("#fp_password").strength();
|
||||
}
|
||||
|
||||
$('#forgetForm').validate({
|
||||
ignore: ":hidden",
|
||||
|
||||
@@ -64,6 +64,10 @@ $(function(){
|
||||
});
|
||||
});
|
||||
|
||||
if ($.fn.strength){
|
||||
$("#reg_password").strength();
|
||||
}
|
||||
|
||||
$('#registerForm').validate({
|
||||
ignore: ":hidden",
|
||||
submitHandler: function(form) {
|
||||
|
||||
@@ -22,26 +22,26 @@
|
||||
</childTable>
|
||||
</category>
|
||||
<category value="crud_cloud" label="单表/主子表 (增删改查 Cloud,生成 Api/Client)">
|
||||
<template>crud/mapper.xml</template>
|
||||
<template>crud_cloud/mapper.xml</template>
|
||||
<template>crud_cloud/entity.xml</template>
|
||||
<template>crud/dao.xml</template>
|
||||
<template>crud_cloud/dao.xml</template>
|
||||
<template>crud_cloud/api.xml</template>
|
||||
<template>crud_cloud/client.xml</template>
|
||||
<template>crud_cloud/service.xml</template>
|
||||
<template>crud/controller.xml</template>
|
||||
<template>crud/viewList.xml</template>
|
||||
<template>crud/viewForm.xml</template>
|
||||
<template>crud_cloud/controller.xml</template>
|
||||
<template>crud_cloud/viewList.xml</template>
|
||||
<template>crud_cloud/viewForm.xml</template>
|
||||
<childTable>
|
||||
<template>crud/mapper.xml</template>
|
||||
<template>crud_cloud/mapper.xml</template>
|
||||
<template>crud_cloud/entity.xml</template>
|
||||
<template>crud/dao.xml</template>
|
||||
<template>crud_cloud/dao.xml</template>
|
||||
</childTable>
|
||||
</category>
|
||||
<category value="treeGrid" label="树表/树结构表(增删改查)">
|
||||
<template>category-ref:crud</template>
|
||||
</category>
|
||||
<category value="treeGrid_cloud" label="树表/树结构表(增删改查 Cloud,生成 Api/Client)">
|
||||
<template>category-ref:crud</template>
|
||||
<template>category-ref:crud_cloud</template>
|
||||
</category>
|
||||
<category value="service" label="业务层和持久层(dao/service,不含控制器和视图)">
|
||||
<template>category-ref:dao</template>
|
||||
|
||||
@@ -9,12 +9,11 @@
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
*/
|
||||
package ${packageName}.${moduleName}.web${isNotEmpty(subModuleName)?'.'+subModuleName:''};
|
||||
<% if(table.isTreeEntity){ %>
|
||||
|
||||
<% if (table.isTreeEntity){ %>
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
<% }else{ %>
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
<% } %>
|
||||
@@ -45,6 +44,9 @@ import com.jeesite.common.codec.EncodeUtils;
|
||||
<% } %>
|
||||
import com.jeesite.common.web.BaseController;
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName};
|
||||
<% for (child in table.childList){ %>
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${@StringUtils.cap(child.className)};
|
||||
<% } %>
|
||||
import ${packageName}.${moduleName}.service${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName}Service;
|
||||
|
||||
/**
|
||||
@@ -120,6 +122,20 @@ public class ${ClassName}Controller extends BaseController {
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
<% for (child in table.childList){ %>
|
||||
|
||||
/**
|
||||
* 查询子表数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "${@StringUtils.uncap(child.className)}ListData")
|
||||
@ResponseBody
|
||||
public Page<${@StringUtils.cap(child.className)}> subListData(${@StringUtils.cap(child.className)} ${@StringUtils.uncap(child.className)}, HttpServletRequest request, HttpServletResponse response) {
|
||||
${@StringUtils.uncap(child.className)}.setPage(new Page<>(request, response));
|
||||
Page<${@StringUtils.cap(child.className)}> page = ${className}Service.findSubPage(${@StringUtils.uncap(child.className)});
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
|
||||
/**
|
||||
* 查看编辑表单
|
||||
@@ -287,12 +303,12 @@ public class ${ClassName}Controller extends BaseController {
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "${className}Select")
|
||||
public String empUserSelect(${ClassName} ${className}, String selectData, Model model) {
|
||||
public String ${className}Select(${ClassName} ${className}, String selectData, Model model) {
|
||||
String selectDataJson = EncodeUtils.decodeUrl(selectData);
|
||||
if (selectDataJson != null && JSONValidator.from(selectDataJson).validate()){
|
||||
model.addAttribute("selectData", selectDataJson);
|
||||
}
|
||||
model.addAttribute("${ClassName}", ${className});
|
||||
model.addAttribute("${className}", ${className});
|
||||
return "${lastPackageName}/${viewPrefix}Select";
|
||||
}
|
||||
<% } %>
|
||||
|
||||
@@ -34,7 +34,7 @@ import com.jeesite.modules.bpm.entity.BpmEntity;
|
||||
* @author ${functionAuthor}
|
||||
* @version ${functionVersion}
|
||||
*/
|
||||
@Table(name="${table.genTableName}", alias="a", columns={
|
||||
@Table(name="${table.genTableName}", alias="a", label="${functionNameSimple}信息", columns={
|
||||
<%
|
||||
var isBase = false, isData = false,
|
||||
isTree = false, isExtend = false;
|
||||
|
||||
@@ -10,15 +10,18 @@
|
||||
*/
|
||||
package ${packageName}.${moduleName}.service${isNotEmpty(subModuleName)?'.'+subModuleName:''};
|
||||
|
||||
<% if (table.isTreeEntity){ %>
|
||||
import java.util.List;
|
||||
|
||||
<% } %>
|
||||
<% if (table.childList.~size > 0){ %>
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
<% } %>
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
<% if (!table.isTreeEntity){ %>
|
||||
import com.jeesite.common.entity.Page;
|
||||
<% } %>
|
||||
import com.jeesite.common.service.${table.isTreeEntity?'Tree':'Crud'}Service;
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName};
|
||||
import ${packageName}.${moduleName}.dao${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName}Dao;
|
||||
@@ -96,6 +99,20 @@ public class ${ClassName}Service extends ${table.isTreeEntity?'Tree':'Crud'}Serv
|
||||
return super.findList(${className});
|
||||
}
|
||||
<% } %>
|
||||
<% for (child in table.childList){ %>
|
||||
|
||||
/**
|
||||
* 查询子表分页数据
|
||||
* @param ${@StringUtils.uncap(child.className)}
|
||||
* @param ${@StringUtils.uncap(child.className)}.page 分页对象
|
||||
* @return
|
||||
*/
|
||||
public Page<${@StringUtils.cap(child.className)}> findSubPage(${@StringUtils.cap(child.className)} ${@StringUtils.uncap(child.className)}) {
|
||||
Page<${@StringUtils.cap(child.className)}> page = ${@StringUtils.uncap(child.className)}.getPage();
|
||||
page.setList(${@StringUtils.uncap(child.className)}Dao.findList(${@StringUtils.uncap(child.className)}));
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
|
||||
/**
|
||||
* 保存数据(插入或更新)
|
||||
|
||||
@@ -94,7 +94,11 @@ $('#btnDraft').click(function(){
|
||||
});
|
||||
// 流程按钮操作事件
|
||||
BpmButton = window.BpmButton || {};
|
||||
BpmButton.init = function(task){ }
|
||||
BpmButton.init = function(task){
|
||||
if (task && task.priority){
|
||||
$('#bpm_priority').val(task.priority).trigger('change'); // 设置下一个任务的优先级
|
||||
}
|
||||
}
|
||||
BpmButton.complete = function($this, task){
|
||||
$('#status').val(Global.STATUS_AUDIT);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,318 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved. -->
|
||||
<template>
|
||||
<name>controller</name>
|
||||
<filePath>${moduleName}/src/main/java/${packageName}/${moduleName}/web/${subModuleName}</filePath>
|
||||
<fileName>${ClassName}Controller.java</fileName>
|
||||
<content><![CDATA[
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
*/
|
||||
package ${packageName}.${moduleName}.web${isNotEmpty(subModuleName)?'.'+subModuleName:''};
|
||||
|
||||
<% if (table.isTreeEntity){ %>
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
<% }else{ %>
|
||||
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;
|
||||
<% if(table.isTreeEntity){ %>
|
||||
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;
|
||||
<% }else{ %>
|
||||
import com.jeesite.common.entity.Page;
|
||||
<% } %>
|
||||
<% if (table.tplCategory == 'crud_select'){ %>
|
||||
import com.alibaba.fastjson.JSONValidator;
|
||||
import com.jeesite.common.codec.EncodeUtils;
|
||||
<% } %>
|
||||
import com.jeesite.common.web.BaseController;
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName};
|
||||
<% for (child in table.childList){ %>
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${@StringUtils.cap(child.className)};
|
||||
<% } %>
|
||||
import ${packageName}.${moduleName}.service${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName}Service;
|
||||
|
||||
/**
|
||||
* ${functionName}Controller
|
||||
* @author ${functionAuthor}
|
||||
* @version ${functionVersion}
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping(value = "\${adminPath}/${urlPrefix}")
|
||||
public class ${ClassName}Controller extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private ${ClassName}Service ${className}Service;
|
||||
|
||||
/**
|
||||
* 获取数据
|
||||
*/
|
||||
@ModelAttribute
|
||||
public ${ClassName} get(<% for(pk in table.pkList){ %>${pkLP.index!=1?', ':''}${pk.simpleAttrType} ${pk.simpleAttrName}<% } %>, boolean isNewRecord) {
|
||||
<% if (table.pkList.~size == 1){ %>
|
||||
return ${className}Service.get(<% for(pk in table.pkList){ %>${pkLP.index!=1?', ':''}${pk.simpleAttrName}<% } %>, isNewRecord);
|
||||
<% }else{ %>
|
||||
${ClassName} ${className} = new ${ClassName}();
|
||||
<% for(pk in table.pkList){ %>
|
||||
${className}.set${@StringUtils.cap(pk.simpleAttrName)}(${pk.simpleAttrName});
|
||||
<% } %>
|
||||
${className}.setIsNewRecord(isNewRecord);
|
||||
return ${className}Service.getAndValid(${className});
|
||||
<% } %>
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询列表
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = {"list", ""})
|
||||
public String list(${ClassName} ${className}, Model model) {
|
||||
model.addAttribute("${className}", ${className});
|
||||
return "${lastPackageName}/${viewPrefix}List";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询列表数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "listData")
|
||||
@ResponseBody
|
||||
<% if(table.isTreeEntity){ %>
|
||||
public List<${ClassName}> listData(${ClassName} ${className}) {
|
||||
if (StringUtils.isBlank(${className}.getParentCode())) {
|
||||
${className}.setParentCode(${ClassName}.ROOT_CODE);
|
||||
}
|
||||
<% for(c in table.columnList){ %>
|
||||
<% if(c.isQuery == "1" && !c.isTreeEntityColumn && c.attrName != 'status'){ %>
|
||||
<% if(c.attrType == 'String'){ %>
|
||||
if (StringUtils.isNotBlank(${className}.${c.attrNameForGetMethod})){
|
||||
${className}.setParentCode(null);
|
||||
}
|
||||
<% }else{ %>
|
||||
if (${className}.${c.attrNameForGetMethod} != null){
|
||||
${className}.setParentCode(null);
|
||||
}
|
||||
<% } %>
|
||||
<% } %>
|
||||
<% } %>
|
||||
List<${ClassName}> list = ${className}Service.findList(${className});
|
||||
return list;
|
||||
}
|
||||
<% }else{ %>
|
||||
public Page<${ClassName}> listData(${ClassName} ${className}, HttpServletRequest request, HttpServletResponse response) {
|
||||
${className}.setPage(new Page<>(request, response));
|
||||
Page<${ClassName}> page = ${className}Service.findPage(${className});
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
<% for (child in table.childList){ %>
|
||||
|
||||
/**
|
||||
* 查询子表数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "${@StringUtils.uncap(child.className)}ListData")
|
||||
@ResponseBody
|
||||
public Page<${@StringUtils.cap(child.className)}> subListData(${@StringUtils.cap(child.className)} ${@StringUtils.uncap(child.className)}, HttpServletRequest request, HttpServletResponse response) {
|
||||
${@StringUtils.uncap(child.className)}.setPage(new Page<>(request, response));
|
||||
Page<${@StringUtils.cap(child.className)}> page = ${className}Service.findSubPage(${@StringUtils.uncap(child.className)});
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
|
||||
/**
|
||||
* 查看编辑表单
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "form")
|
||||
public String form(${ClassName} ${className}, Model model) {
|
||||
<% if(table.isTreeEntity){ %>
|
||||
// 创建并初始化下一个节点信息
|
||||
${className} = createNextNode(${className});
|
||||
<% } %>
|
||||
model.addAttribute("${className}", ${className});
|
||||
return "${lastPackageName}/${viewPrefix}Form";
|
||||
}
|
||||
<% if(table.isTreeEntity){ %>
|
||||
|
||||
/**
|
||||
* 创建并初始化下一个节点信息,如:排序号、默认值
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:edit")
|
||||
@RequestMapping(value = "createNextNode")
|
||||
@ResponseBody
|
||||
public ${ClassName} createNextNode(${ClassName} ${className}) {
|
||||
if (StringUtils.isNotBlank(${className}.getParentCode())){
|
||||
${className}.setParent(${className}Service.get(${className}.getParentCode()));
|
||||
}
|
||||
if (${className}.getIsNewRecord()) {
|
||||
${ClassName} where = new ${ClassName}();
|
||||
where.setParentCode(${className}.getParentCode());
|
||||
${ClassName} last = ${className}Service.getLastByParentCode(where);
|
||||
// 获取到下级最后一个节点
|
||||
if (last != null){
|
||||
${className}.setTreeSort(last.getTreeSort() + 30);
|
||||
<% if(table.isPkCustom){ %>
|
||||
${className}.set${@StringUtils.cap(table.treeViewCodeAttrName)}(IdGen.nextCode(last.get${@StringUtils.cap(table.treeViewCodeAttrName)}()));
|
||||
}else if (${className}.getParent() != null){
|
||||
${className}.set${@StringUtils.cap(table.treeViewCodeAttrName)}(${className}.getParent().get${@StringUtils.cap(table.treeViewCodeAttrName)}() + "001");
|
||||
<% } %>
|
||||
}
|
||||
}
|
||||
// 以下设置表单默认数据
|
||||
if (${className}.getTreeSort() == null){
|
||||
${className}.setTreeSort(${ClassName}.DEFAULT_TREE_SORT);
|
||||
}
|
||||
return ${className};
|
||||
}
|
||||
<% } %>
|
||||
|
||||
/**
|
||||
* 保存数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:edit")
|
||||
@PostMapping(value = "save")
|
||||
@ResponseBody
|
||||
public String save(@Validated ${ClassName} ${className}) {
|
||||
${className}Service.save(${className});
|
||||
return renderResult(Global.TRUE, text("保存${functionNameSimple}成功!"));
|
||||
}
|
||||
<% if(toBoolean(table.optionMap['isHaveDisableEnable'])){ %>
|
||||
|
||||
/**
|
||||
* 停用数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:edit")
|
||||
@RequestMapping(value = "disable")
|
||||
@ResponseBody
|
||||
public String disable(${ClassName} ${className}) {
|
||||
<% if(table.isTreeEntity){ %>
|
||||
${ClassName} where = new ${ClassName}();
|
||||
where.setStatus(${ClassName}.STATUS_NORMAL);
|
||||
where.setParentCodes("," + ${className}.getId() + ",");
|
||||
long count = ${className}Service.findCount(where);
|
||||
if (count > 0) {
|
||||
return renderResult(Global.FALSE, text("该${functionNameSimple}包含未停用的子${functionNameSimple}!"));
|
||||
}
|
||||
<% } %>
|
||||
${className}.setStatus(${ClassName}.STATUS_DISABLE);
|
||||
${className}Service.updateStatus(${className});
|
||||
return renderResult(Global.TRUE, text("停用${functionNameSimple}成功"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:edit")
|
||||
@RequestMapping(value = "enable")
|
||||
@ResponseBody
|
||||
public String enable(${ClassName} ${className}) {
|
||||
${className}.setStatus(${ClassName}.STATUS_NORMAL);
|
||||
${className}Service.updateStatus(${className});
|
||||
return renderResult(Global.TRUE, text("启用${functionNameSimple}成功"));
|
||||
}
|
||||
<% } %>
|
||||
<% if(toBoolean(table.optionMap['isHaveDelete'])){ %>
|
||||
|
||||
/**
|
||||
* 删除数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:edit")
|
||||
@RequestMapping(value = "delete")
|
||||
@ResponseBody
|
||||
public String delete(${ClassName} ${className}) {
|
||||
${className}Service.delete(${className});
|
||||
return renderResult(Global.TRUE, text("删除${functionNameSimple}成功!"));
|
||||
}
|
||||
<% } %>
|
||||
<% if(table.isTreeEntity){ %>
|
||||
|
||||
/**
|
||||
* 获取树结构数据
|
||||
* @param excludeCode 排除的Code
|
||||
* @param isShowCode 是否显示编码(true or 1:显示在左侧;2:显示在右侧;false or null:不显示)
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "treeData")
|
||||
@ResponseBody
|
||||
public List<Map<String, Object>> treeData(String excludeCode, String isShowCode) {
|
||||
List<Map<String, Object>> mapList = ListUtils.newArrayList();
|
||||
List<${ClassName}> list = ${className}Service.findList(new ${ClassName}());
|
||||
for (int i=0; i<list.size(); i++){
|
||||
${ClassName} e = list.get(i);
|
||||
<% if (table.statusExists){ %>
|
||||
// 过滤非正常的数据
|
||||
if (!${ClassName}.STATUS_NORMAL.equals(e.getStatus())){
|
||||
continue;
|
||||
}
|
||||
<% } %>
|
||||
// 过滤被排除的编码(包括所有子级)
|
||||
if (StringUtils.isNotBlank(excludeCode)){
|
||||
if (e.getId().equals(excludeCode)){
|
||||
continue;
|
||||
}
|
||||
if (e.getParentCodes().contains("," + excludeCode + ",")){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Map<String, Object> map = MapUtils.newHashMap();
|
||||
map.put("id", e.getId());
|
||||
map.put("pId", e.getParentCode());
|
||||
map.put("name", StringUtils.getTreeNodeName(isShowCode, e.get${@StringUtils.cap(table.treeViewCodeAttrName)}(), e.get${@StringUtils.cap(table.treeViewNameAttrName)}()));
|
||||
mapList.add(map);
|
||||
}
|
||||
return mapList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修复表结构相关数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:edit")
|
||||
@RequestMapping(value = "fixTreeData")
|
||||
@ResponseBody
|
||||
public String fixTreeData(${ClassName} ${className}){
|
||||
if (!UserUtils.getUser().isAdmin()){
|
||||
return renderResult(Global.FALSE, "操作失败,只有管理员才能进行修复!");
|
||||
}
|
||||
${className}Service.fixTreeData();
|
||||
return renderResult(Global.TRUE, "数据修复成功");
|
||||
}
|
||||
<% } %>
|
||||
<% if (table.tplCategory == 'crud_select'){ %>
|
||||
|
||||
/**
|
||||
* 列表选择对话框
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "${className}Select")
|
||||
public String ${className}Select(${ClassName} ${className}, String selectData, Model model) {
|
||||
String selectDataJson = EncodeUtils.decodeUrl(selectData);
|
||||
if (selectDataJson != null && JSONValidator.from(selectDataJson).validate()){
|
||||
model.addAttribute("selectData", selectDataJson);
|
||||
}
|
||||
model.addAttribute("${className}", ${className});
|
||||
return "${lastPackageName}/${viewPrefix}Select";
|
||||
}
|
||||
<% } %>
|
||||
|
||||
}]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved. -->
|
||||
<template>
|
||||
<name>dao</name>
|
||||
<filePath>${moduleName}/src/main/java/${packageName}/${moduleName}/dao/${subModuleName}</filePath>
|
||||
<fileName>${ClassName}Dao.java</fileName>
|
||||
<content><![CDATA[
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
*/
|
||||
package ${packageName}.${moduleName}.dao${isNotEmpty(subModuleName)?'.'+subModuleName:''};
|
||||
|
||||
import com.jeesite.common.dao.${table.isTreeEntity?'Tree':'Crud'}Dao;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName};
|
||||
|
||||
/**
|
||||
* ${functionName}DAO接口
|
||||
* @author ${functionAuthor}
|
||||
* @version ${functionVersion}
|
||||
*/
|
||||
@MyBatisDao<% if(isNotBlank(table.dataSourceName)){ %>(dataSourceName="${table.dataSourceName}")<% } %>
|
||||
public interface ${ClassName}Dao extends ${table.isTreeEntity?'Tree':'Crud'}Dao<${ClassName}> {
|
||||
|
||||
}]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -34,7 +34,7 @@ import com.jeesite.modules.bpm.entity.BpmEntity;
|
||||
* @author ${functionAuthor}
|
||||
* @version ${functionVersion}
|
||||
*/
|
||||
@Table(name="${table.genTableName}", alias="a", columns={
|
||||
@Table(name="${table.genTableName}", alias="a", label="${functionNameSimple}信息", columns={
|
||||
<%
|
||||
var isBase = false, isData = false,
|
||||
isTree = false, isExtend = false;
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved. -->
|
||||
<template>
|
||||
<name>mapper</name>
|
||||
<filePath>${moduleName}/src/main/resources/mappings/${lastPackageName}/${moduleName}/${subModuleName}</filePath>
|
||||
<fileName>${ClassName}Dao.xml</fileName>
|
||||
<content><![CDATA[
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="${packageName}.${moduleName}.dao${isNotBlank(subModuleName)?'.'+subModuleName:''}.${ClassName}Dao">
|
||||
|
||||
<!-- 查询数据
|
||||
<select id="findList" resultType="${ClassName}">
|
||||
SELECT \${sqlMap.column.toSql()}
|
||||
FROM \${sqlMap.table.toSql()}
|
||||
<where>
|
||||
\${sqlMap.where.toSql()}
|
||||
</where>
|
||||
ORDER BY \${sqlMap.order.toSql()}
|
||||
</select> -->
|
||||
|
||||
</mapper>]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved. -->
|
||||
<template>
|
||||
<name>service</name>
|
||||
<filePath>src/main/java/${packageName}/${moduleName}/service/${subModuleName}</filePath>
|
||||
<filePath>${moduleName}/src/main/java/${packageName}/${moduleName}/service/${subModuleName}</filePath>
|
||||
<fileName>${ClassName}Service.java</fileName>
|
||||
<content><![CDATA[
|
||||
/**
|
||||
@@ -10,8 +10,9 @@
|
||||
*/
|
||||
package ${packageName}.${moduleName}.service${isNotEmpty(subModuleName)?'.'+subModuleName:''};
|
||||
|
||||
<% if (table.isTreeEntity){ %>
|
||||
import java.util.List;
|
||||
|
||||
<% } %>
|
||||
<% if (table.childList.~size > 0){ %>
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
<% } %>
|
||||
@@ -19,7 +20,9 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
<% if (!table.isTreeEntity){ %>
|
||||
import com.jeesite.common.entity.Page;
|
||||
<% } %>
|
||||
import com.jeesite.common.service.${table.isTreeEntity?'Tree':'Crud'}Service;
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName};
|
||||
import ${packageName}.${moduleName}.dao${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName}Dao;
|
||||
@@ -100,6 +103,20 @@ public class ${ClassName}Service extends ${table.isTreeEntity?'Tree':'Crud'}Serv
|
||||
return super.findList(${className});
|
||||
}
|
||||
<% } %>
|
||||
<% for (child in table.childList){ %>
|
||||
|
||||
/**
|
||||
* 查询子表分页数据
|
||||
* @param ${@StringUtils.uncap(child.className)}
|
||||
* @param ${@StringUtils.uncap(child.className)}.page 分页对象
|
||||
* @return
|
||||
*/
|
||||
public Page<${@StringUtils.cap(child.className)}> findSubPage(${@StringUtils.cap(child.className)} ${@StringUtils.uncap(child.className)}) {
|
||||
Page<${@StringUtils.cap(child.className)}> page = ${@StringUtils.uncap(child.className)}.getPage();
|
||||
page.setList(${@StringUtils.uncap(child.className)}Dao.findList(${@StringUtils.uncap(child.className)}));
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
|
||||
/**
|
||||
* 保存数据(插入或更新)
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved. -->
|
||||
<template>
|
||||
<name>viewForm</name>
|
||||
<filePath>${moduleName}/src/main/resources/views/${lastPackageName}/${moduleName}/${subModuleName}</filePath>
|
||||
<fileName>${className}Form.html</fileName>
|
||||
<content><![CDATA[
|
||||
<%
|
||||
var extLibs = '';
|
||||
if(toBoolean(table.optionMap['isImageUpload']) || toBoolean(table.optionMap['isFileUpload'])){
|
||||
extLibs = extLibs + ',\'fileupload\'';
|
||||
}
|
||||
if(table.childList.~size > 0){
|
||||
extLibs = extLibs + ',\'dataGrid\'';
|
||||
}
|
||||
%>
|
||||
\<% layout('/layouts/default.html', {title: '${functionNameSimple}管理', libs: ['validate'${extLibs}]}){ %>
|
||||
<div class="main-content">
|
||||
<div class="box box-main">
|
||||
<div class="box-header with-border">
|
||||
<div class="box-title">
|
||||
<i class="fa icon-note"></i> \${text(${className}.isNewRecord ? '新增${functionNameSimple}' : '编辑${functionNameSimple}')}
|
||||
</div>
|
||||
<div class="box-tools pull-right">
|
||||
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<${'#'}form:form id="inputForm" model="\${${className}}" action="\${ctx}/${urlPrefix}/save" method="post" class="form-horizontal">
|
||||
<div class="box-body">
|
||||
<div class="form-unit">\${text('基本信息')}</div>
|
||||
<% if(table.isTreeEntity){ %>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">\${text('上级${functionNameSimple}')}:</label>
|
||||
<div class="col-sm-8">
|
||||
<${'#'}form:treeselect id="parent" title="\${text('上级${functionNameSimple}')}"
|
||||
path="parent.id" labelPath="parent.${table.treeViewNameAttrName}"
|
||||
url="\${ctx}/${urlPrefix}/treeData?excludeCode=\${${className}.id}"
|
||||
class="" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% include('/templates/modules/gen/include/formControl.html'){} %>
|
||||
<% include('/templates/modules/gen/include/formChildTable.html'){} %>
|
||||
<% if(toBoolean(table.optionMap['isBpmForm'])){ %>
|
||||
\<% if(isNotBlank(${className}.bpm.taskId)){ %>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-2">${text('审批意见')}:</label>
|
||||
<div class="col-xs-10">
|
||||
<${'#'}bpm:comment bpmEntity="\${${className}}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
\<% } %>
|
||||
<${'#'}bpm:nextTaskInfo bpmEntity="\${${className}}" />
|
||||
<% } %>
|
||||
</div>
|
||||
<div class="box-footer">
|
||||
<div class="row">
|
||||
<div class="col-sm-offset-2 col-sm-10">
|
||||
<% if(toBoolean(table.optionMap['isBpmForm'])){ %>
|
||||
\<% if (hasPermi('${permissionPrefix}:edit')){ %>
|
||||
<${'#'}form:hidden path="status"/>
|
||||
\<% if (${className}.isNewRecord || ${className}.status == '9'){ %>
|
||||
<button type="submit" class="btn btn-sm btn-info" id="btnDraft"><i class="fa fa-save"></i> ${text('暂 存')}</button>
|
||||
\<% } %>
|
||||
<${'#'}bpm:button bpmEntity="\${${className}}" formKey="${table.optionMap['bpmFormKey']}" completeText="${text('提 交')}"/>
|
||||
\<% } %>
|
||||
<% }else{ %>
|
||||
\<% if (hasPermi('${permissionPrefix}:edit')){ %>
|
||||
<button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> \${text('保 存')}</button>
|
||||
\<% } %>
|
||||
<% } %>
|
||||
<button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> \${text('关 闭')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</${'#'}form:form>
|
||||
</div>
|
||||
</div>
|
||||
\<% } %>
|
||||
<% include('/templates/modules/gen/include/formChildTableScript.html'){} %>
|
||||
<script>
|
||||
<% if(toBoolean(table.optionMap['isBpmForm'])){ %>
|
||||
// 业务实现草稿按钮
|
||||
$('#btnDraft').click(function(){
|
||||
$('#status').val(Global.STATUS_DRAFT);
|
||||
});
|
||||
// 流程按钮操作事件
|
||||
BpmButton = window.BpmButton || {};
|
||||
BpmButton.init = function(task){
|
||||
if (task && task.priority){
|
||||
$('#bpm_priority').val(task.priority).trigger('change'); // 设置下一个任务的优先级
|
||||
}
|
||||
}
|
||||
BpmButton.complete = function($this, task){
|
||||
$('#status').val(Global.STATUS_AUDIT);
|
||||
};
|
||||
// 表单验证提交事件
|
||||
<% } %>
|
||||
$("#inputForm").validate({
|
||||
submitHandler: function(form){
|
||||
js.ajaxSubmitForm($(form), function(data){
|
||||
js.showMessage(data.message);
|
||||
if(data.result == Global.TRUE){
|
||||
js.closeCurrentTabPage(function(contentWindow){
|
||||
<% if(table.isTreeEntity){ %>
|
||||
contentWindow.$('#dataGrid').dataGrid('refreshTreeChildren',
|
||||
$('#parentCode').val(), '\${${className}.id}');
|
||||
<% }else{ %>
|
||||
contentWindow.page();
|
||||
<% } %>
|
||||
});
|
||||
}
|
||||
}, "json");
|
||||
}
|
||||
});
|
||||
<% if(table.isTreeEntity){ %>
|
||||
|
||||
// 选择上级节点回调方法
|
||||
function treeselectCallback(id, act, index, layero){
|
||||
if (id == 'parent' && (act == 'ok' || act == 'clear')){
|
||||
// 创建并初始化下一个节点信息,如:排序号、默认值
|
||||
$.get('\${ctx}/${urlPrefix}/createNextNode?parentCode='
|
||||
+$('#parentCode').val(), function(data){
|
||||
$('#treeSort').val(data.treeSort);
|
||||
});
|
||||
}
|
||||
}
|
||||
<% } %>
|
||||
</script>]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved. -->
|
||||
<template>
|
||||
<name>viewList</name>
|
||||
<filePath>${moduleName}/src/main/resources/views/${lastPackageName}/${moduleName}/${subModuleName}</filePath>
|
||||
<fileName>${className}List.html</fileName>
|
||||
<content><![CDATA[
|
||||
\<% layout('/layouts/default.html', {title: '${functionNameSimple}管理', libs: ['dataGrid']}){ %>
|
||||
<div class="main-content">
|
||||
<div class="box box-main">
|
||||
<div class="box-header">
|
||||
<div class="box-title">
|
||||
<i class="fa icon-notebook"></i> \${text('${functionNameSimple}管理')}
|
||||
</div>
|
||||
<div class="box-tools pull-right">
|
||||
<a href="#" class="btn btn-default" id="btnSearch" title="\${text('查询')}"><i class="fa fa-filter"></i> \${text('查询')}</a>
|
||||
<% if(table.isTreeEntity){ %>
|
||||
<a href="#" class="btn btn-default" id="btnRefreshTree" title="\${text('刷新')}"><i class="fa fa-refresh"></i> \${text('刷新')}</a>
|
||||
<a href="#" class="btn btn-default" id="btnExpandTreeNode" title="\${text('展开一级')}"><i class="fa fa-angle-double-down"></i> \${text('展开')}</a>
|
||||
<a href="#" class="btn btn-default" id="btnCollapseTreeNode" title="\${text('折叠全部')}"><i class="fa fa-angle-double-up"></i> \${text('折叠')}</a>
|
||||
<% } %>
|
||||
\<% if(hasPermi('${permissionPrefix}:edit')){ %>
|
||||
<a href="\${ctx}/${urlPrefix}/form" class="btn btn-default btnTool" title="\${text('新增${functionNameSimple}')}"><i class="fa fa-plus"></i> \${text('新增')}</a>
|
||||
\<% } %>
|
||||
<a href="#" class="btn btn-default" id="btnSetting" title="\${text('设置')}"><i class="fa fa-navicon"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<% include('/templates/modules/gen/include/searchForm.html'){} %>
|
||||
<table id="dataGrid"></table>
|
||||
<% if(!table.isTreeEntity){ %>
|
||||
<div id="dataGridPage"></div>
|
||||
<% } %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
\<% } %>
|
||||
<% include('/templates/modules/gen/include/dataGridScript.html'){} %>]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -22,7 +22,6 @@ cd ..
|
||||
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "部署完成..."
|
||||
pause]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -22,7 +22,6 @@ cd ..
|
||||
call mvn clean install -Dmaven.test.skip=true -Ppackage
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "打包完成..."
|
||||
pause]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -47,7 +47,7 @@
|
||||
<suspend_validator>false</suspend_validator>
|
||||
<export_setting>
|
||||
<export_ddl_setting>
|
||||
<output_path>db\${module.moduleCode}.sql</output_path>
|
||||
<output_path>db${'\\'}${module.moduleCode}.sql</output_path>
|
||||
<encoding>UTF-8</encoding>
|
||||
<line_feed>CR+LF</line_feed>
|
||||
<is_open_after_saved>false</is_open_after_saved>
|
||||
@@ -79,7 +79,7 @@
|
||||
</export_ddl_setting>
|
||||
<export_excel_setting>
|
||||
<category_id>null</category_id>
|
||||
<output_path>db\${module.moduleCode}.xls</output_path>
|
||||
<output_path>db${'\\'}${module.moduleCode}.xls</output_path>
|
||||
<template></template>
|
||||
<template_path></template_path>
|
||||
<used_default_template_lang>en</used_default_template_lang>
|
||||
@@ -95,7 +95,7 @@
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
</export_html_setting>
|
||||
<export_image_setting>
|
||||
<output_file_path>db\${module.moduleCode}.png</output_file_path>
|
||||
<output_file_path>db${'\\'}${module.moduleCode}.png</output_file_path>
|
||||
<category_dir_path></category_dir_path>
|
||||
<with_category_image>true</with_category_image>
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
|
||||
@@ -22,7 +22,6 @@ cd ..
|
||||
call mvn clean deploy -Dmaven.test.skip=true -Pdeploy
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "部署完成..."
|
||||
pause]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -22,7 +22,6 @@ cd ..
|
||||
call mvn clean install -Dmaven.test.skip=true -Ppackage
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "打包完成..."
|
||||
pause]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -22,7 +22,6 @@ cd ..
|
||||
call mvn clean package spring-boot:repackage -Dmaven.test.skip=true -U
|
||||
|
||||
cd bin
|
||||
cmd /c msg %username% /time:0 /w "打包完成..."
|
||||
pause]]>
|
||||
</content>
|
||||
</template>
|
||||
@@ -47,7 +47,7 @@
|
||||
<suspend_validator>false</suspend_validator>
|
||||
<export_setting>
|
||||
<export_ddl_setting>
|
||||
<output_path>db\${module.moduleCode}.sql</output_path>
|
||||
<output_path>db${'\\'}${module.moduleCode}.sql</output_path>
|
||||
<encoding>UTF-8</encoding>
|
||||
<line_feed>CR+LF</line_feed>
|
||||
<is_open_after_saved>false</is_open_after_saved>
|
||||
@@ -79,7 +79,7 @@
|
||||
</export_ddl_setting>
|
||||
<export_excel_setting>
|
||||
<category_id>null</category_id>
|
||||
<output_path>db\${module.moduleCode}.xls</output_path>
|
||||
<output_path>db${'\\'}${module.moduleCode}.xls</output_path>
|
||||
<template></template>
|
||||
<template_path></template_path>
|
||||
<used_default_template_lang>en</used_default_template_lang>
|
||||
@@ -95,7 +95,7 @@
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
</export_html_setting>
|
||||
<export_image_setting>
|
||||
<output_file_path>db\${module.moduleCode}.png</output_file_path>
|
||||
<output_file_path>db${'\\'}${module.moduleCode}.png</output_file_path>
|
||||
<category_dir_path></category_dir_path>
|
||||
<with_category_image>true</with_category_image>
|
||||
<is_open_after_saved>true</is_open_after_saved>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- Copyright (c) 2013-Now http://jeesite.com All rights reserved. -->
|
||||
<template>
|
||||
<name>pom</name>
|
||||
<filePath>${module.moduleCode}</filePath>
|
||||
<filePath>${module.moduleCode}/${module.moduleCode}</filePath>
|
||||
<fileName>pom.xml</fileName>
|
||||
<charset></charset>
|
||||
<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
|
||||
@@ -12,41 +12,165 @@
|
||||
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<artifactId>jeesite-cloud-parent</artifactId>
|
||||
<version>${jeesiteVersion}-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
<relativePath>../../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<artifactId>jeesite-module-${module.moduleCode}</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<artifactId>jeesite-cloud-module-${module.moduleCode}</artifactId>
|
||||
<packaging>war</packaging>
|
||||
|
||||
<name>JeeSite Module ${module.moduleName}</name>
|
||||
<name>JeeSite Cloud Module ${module.moduleName}</name>
|
||||
<url>http://jeesite.com</url>
|
||||
<inceptionYear>2013-Now</inceptionYear>
|
||||
|
||||
<properties>
|
||||
|
||||
<finalName>web</finalName><!-- war包的名称 -->
|
||||
<start-class>com.jeesite.modules.${@StringUtils.cap(module.moduleCode)}Application</start-class>
|
||||
|
||||
<!-- environment setting -->
|
||||
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
|
||||
<eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>
|
||||
|
||||
<!-- docker setting -->
|
||||
<docker.run.port>8989:8989</docker.run.port>
|
||||
|
||||
</properties>
|
||||
|
||||
|
||||
<dependencies>
|
||||
|
||||
|
||||
<!-- 服务发现 -->
|
||||
<!-- <dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
|
||||
</dependency> -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 配置中心 -->
|
||||
<!-- <dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-config</artifactId>
|
||||
</dependency> -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 链路追踪服务 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-zipkin</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 在线文档 -->
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-module-core</artifactId>
|
||||
<artifactId>jeesite-module-swagger</artifactId>
|
||||
<version>\${project.parent.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 分布式事务
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-cloud-module-txlcn-client</artifactId>
|
||||
<version>\${project.parent.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-cloud-module-seata-client</artifactId>
|
||||
<version>\${project.parent.version}</version>
|
||||
</dependency> -->
|
||||
|
||||
<!-- 核心模块 -->
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-cloud-module-core-client</artifactId>
|
||||
<version>\${project.parent.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-cloud-module-${module.moduleCode}-client</artifactId>
|
||||
<version>\${project.parent.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 业务流程
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-cloud-module-bpm-client</artifactId>
|
||||
<version>\${project.parent.version}</version>
|
||||
</dependency> -->
|
||||
|
||||
<!-- Spring Boot Tomcat
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-tomcat</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency> -->
|
||||
|
||||
<!-- 自定义jar依赖包演示
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>test-core</artifactId>
|
||||
<version>1.0</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>\${project.basedir}/src/main/webapp/WEB-INF/lib/test-core-1.0.jar</systemPath>
|
||||
</dependency> -->
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>\${finalName}</finalName>
|
||||
<outputDirectory>\${project.basedir}/src/main/webapp/WEB-INF/classes/</outputDirectory>
|
||||
<plugins>
|
||||
|
||||
<!-- Spring Boot -->
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<!-- <plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
</plugin> -->
|
||||
|
||||
<!-- 打包插件, war包名称不带版本号 -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<configuration>
|
||||
<!-- <packagingExcludes></packagingExcludes>
|
||||
<warSourceExcludes></warSourceExcludes> -->
|
||||
<webappDirectory>\${project.build.directory}/\${project.artifactId}</webappDirectory>
|
||||
<warName>\${finalName}</warName>
|
||||
<archive>
|
||||
<addMavenDescriptor>false</addMavenDescriptor>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Eclipse插件 -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-eclipse-plugin</artifactId>
|
||||
<configuration>
|
||||
<downloadSources>\${eclipse-plugin-download-sources}</downloadSources>
|
||||
<downloadJavadocs>\${eclipse-plugin-download-javadocs}</downloadJavadocs>
|
||||
<wtpContextName>\${finalName}</wtpContextName>
|
||||
<wtpversion>2.0</wtpversion>
|
||||
<jeeversion>6.0</jeeversion>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
|
||||
<developers>
|
||||
@@ -63,6 +187,25 @@
|
||||
<name>JeeSite</name>
|
||||
<url>http://jeesite.com</url>
|
||||
</organization>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>aliyun-repos</id>
|
||||
<url>https://maven.aliyun.com/repository/public</url>
|
||||
<releases><enabled>true</enabled></releases>
|
||||
<snapshots><enabled>false</enabled></snapshots>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>jeesite-repos</id>
|
||||
<url>http://maven.jeesite.net/repository/maven-public</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>aliyun-repos</id>
|
||||
<url>https://maven.aliyun.com/repository/public</url>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
|
||||
</project>
|
||||
]]>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<template>
|
||||
<name>logback-spring</name>
|
||||
<filePath>${module.moduleCode}/${module.moduleCode}/src/main/resources/config</filePath>
|
||||
<fileName>logback-spring.yml</fileName>
|
||||
<fileName>logback-spring.xml</fileName>
|
||||
<content><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false" scan="false">
|
||||
|
||||
|
||||
@@ -9,12 +9,11 @@
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
*/
|
||||
package ${packageName}.${moduleName}.web${isNotEmpty(subModuleName)?'.'+subModuleName:''};
|
||||
<% if(table.isTreeEntity){ %>
|
||||
|
||||
<% if (table.isTreeEntity){ %>
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
<% }else{ %>
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
<% } %>
|
||||
@@ -39,6 +38,9 @@ import com.jeesite.common.entity.Page;
|
||||
<% } %>
|
||||
import com.jeesite.common.web.BaseController;
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName};
|
||||
<% for (child in table.childList){ %>
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${@StringUtils.cap(child.className)};
|
||||
<% } %>
|
||||
import ${packageName}.${moduleName}.service${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName}Service;
|
||||
|
||||
/**
|
||||
@@ -114,6 +116,20 @@ public class ${ClassName}Controller extends BaseController {
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
<% for (child in table.childList){ %>
|
||||
|
||||
/**
|
||||
* 查询子表数据
|
||||
*/
|
||||
@RequiresPermissions("${permissionPrefix}:view")
|
||||
@RequestMapping(value = "${@StringUtils.uncap(child.className)}ListData")
|
||||
@ResponseBody
|
||||
public Page<${@StringUtils.cap(child.className)}> subListData(${@StringUtils.cap(child.className)} ${@StringUtils.uncap(child.className)}, HttpServletRequest request, HttpServletResponse response) {
|
||||
${@StringUtils.uncap(child.className)}.setPage(new Page<>(request, response));
|
||||
Page<${@StringUtils.cap(child.className)}> page = ${className}Service.findSubPage(${@StringUtils.uncap(child.className)});
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
|
||||
/**
|
||||
* 查看编辑表单
|
||||
|
||||
@@ -10,14 +10,17 @@
|
||||
*/
|
||||
package ${packageName}.${moduleName}.service${isNotEmpty(subModuleName)?'.'+subModuleName:''};
|
||||
|
||||
<% if (table.isTreeEntity){ %>
|
||||
import java.util.List;
|
||||
|
||||
<% } %>
|
||||
<% if (table.childList.~size > 0){ %>
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
<% } %>
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
<% if (!table.isTreeEntity){ %>
|
||||
import com.jeesite.common.entity.Page;
|
||||
<% } %>
|
||||
import com.jeesite.common.service.${table.isTreeEntity?'Tree':'Query'}Service;
|
||||
import ${packageName}.${moduleName}.entity${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName};
|
||||
import ${packageName}.${moduleName}.dao${isNotEmpty(subModuleName)?'.'+subModuleName:''}.${ClassName}Dao;
|
||||
@@ -84,6 +87,20 @@ public class ${ClassName}Service extends ${table.isTreeEntity?'Tree':'Query'}Ser
|
||||
return super.findList(${className});
|
||||
}
|
||||
<% } %>
|
||||
<% for (child in table.childList){ %>
|
||||
|
||||
/**
|
||||
* 查询子表分页数据
|
||||
* @param ${@StringUtils.uncap(child.className)}
|
||||
* @param ${@StringUtils.uncap(child.className)}.page 分页对象
|
||||
* @return
|
||||
*/
|
||||
public Page<${@StringUtils.cap(child.className)}> findSubPage(${@StringUtils.cap(child.className)} ${@StringUtils.uncap(child.className)}) {
|
||||
Page<${@StringUtils.cap(child.className)}> page = ${@StringUtils.uncap(child.className)}.getPage();
|
||||
page.setList(${@StringUtils.uncap(child.className)}Dao.findList(${@StringUtils.uncap(child.className)}));
|
||||
return page;
|
||||
}
|
||||
<% } %>
|
||||
|
||||
}]]>
|
||||
</content>
|
||||
|
||||
@@ -50,7 +50,7 @@ else {
|
||||
</div>
|
||||
<div class="copyright">
|
||||
© ${@DateUtils.getYear()} ${@Global.getConfig('productName')} - Powered By <a
|
||||
href="http://jeesite.com">JeeSite ${@Global.getProperty('jeesiteVersion')}</a>
|
||||
href="http://jeesite.com" target="_blank">JeeSite ${@Global.getProperty('jeesiteVersion')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user