diff --git a/.gitee/ISSUE_TEMPLATE/bug.yaml b/.gitee/ISSUE_TEMPLATE/bug.yaml
new file mode 100644
index 000000000..67cd804d4
--- /dev/null
+++ b/.gitee/ISSUE_TEMPLATE/bug.yaml
@@ -0,0 +1,52 @@
+name: 问题反馈
+description: 在使用中遇到了问题,并经过测试确信这个问题不是由于配置错误产生的。
+body:
+ - type: markdown
+ attributes:
+ value: 请简要陈述您要反馈的问题,记得包含重要关键词以便其他人能搜索到。
+ - type: markdown
+ attributes:
+ value: |
+ ----
+
+ ### **提交须知**
+ - 请严格按照问题反馈模板填写信息,如你未能按照模板要求填写,我们将不做处理,敬请谅解。
+
+ ----
+ - type: checkboxes
+ attributes:
+ label: 是否有人反馈过此问题?
+ options:
+ - label: 我已经搜索过了,确认此问题没有其他人反馈过。
+ required: true
+ - type: dropdown
+ attributes:
+ label: 是否使用官方发布包?
+ options:
+ - 是。我使用官方发布包
+ - 否。我使用自己修改过代码
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: 问题描述
+ description: 请大致说一下这是个什么问题
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: 问题重现步骤
+ description: 请详细描述如何重现这个问题
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: 系统环境
+ description: 服务器软件版本信息和本地浏览器等信息
+ placeholder: |
+ REBUILD 版本
+ 操作系统类型和版本
+ 数据库类型和版本
+ 浏览器类型和版本
+ validations:
+ required: true
diff --git a/.gitee/ISSUE_TEMPLATE/config.yaml b/.gitee/ISSUE_TEMPLATE/config.yaml
new file mode 100644
index 000000000..0cf08a69f
--- /dev/null
+++ b/.gitee/ISSUE_TEMPLATE/config.yaml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: 使用问题请看官网文档
+ url: https://getrebuild.com/docs/startup
+ about: 包括安装、升级遇到问题,功能不会使用等。
diff --git a/.gitee/ISSUE_TEMPLATE/feat.yaml b/.gitee/ISSUE_TEMPLATE/feat.yaml
new file mode 100644
index 000000000..50e1a010a
--- /dev/null
+++ b/.gitee/ISSUE_TEMPLATE/feat.yaml
@@ -0,0 +1,31 @@
+name: 需求建议
+description: 想要某种新功能,或者想要改进某个已有的功能。
+body:
+ - type: markdown
+ attributes:
+ value: 请简要陈述您要反馈的问题,记得包含重要关键词以便其他人能搜索到。
+ - type: markdown
+ attributes:
+ value: |
+ ----
+
+ ### **提交须知**
+ - 请严格按照问题反馈模板填写信息,如你未能按照模板要求填写,我们将不做处理。
+
+ ----
+ - type: checkboxes
+ attributes:
+ label: 是否有人提出过此需求?
+ options:
+ - label: 我已经搜索过了,确认此需求没有其他人提过。
+ required: true
+ - type: textarea
+ attributes:
+ label: 新需求描述
+ description: 清晰并简洁地描述这个需求
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: 新需求所解决的问题
+ description: 清晰并简洁地描述此需求所解决的问题及其应用场景
diff --git a/pom.xml b/pom.xml
index a29c93d37..b4a139fd8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
com.rebuild
rebuild
- 3.4.2
+ 3.4.3
rebuild
Building your business-systems freely!
diff --git a/src/main/java/com/rebuild/core/Application.java b/src/main/java/com/rebuild/core/Application.java
index 18dbe189e..5dcf8432d 100644
--- a/src/main/java/com/rebuild/core/Application.java
+++ b/src/main/java/com/rebuild/core/Application.java
@@ -73,11 +73,11 @@ public class Application implements ApplicationListener
/**
* Rebuild Version
*/
- public static final String VER = "3.4.2";
+ public static final String VER = "3.4.3";
/**
* Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2}
*/
- public static final int BUILD = 3040207;
+ public static final int BUILD = 3040308;
static {
// Driver for DB
@@ -213,7 +213,7 @@ public static boolean init() throws Exception {
// 版本升级会清除缓存
int lastBuild = ObjectUtils.toInt(RebuildConfiguration.get(ConfigurationItem.AppBuild, true), 0);
- if (lastBuild > 0 && lastBuild < BUILD) {
+ if (lastBuild > 0 && lastBuild != BUILD) {
log.warn("Clean up the cache once when upgrading : {}", BUILD);
Installer.clearAllCache();
RebuildConfiguration.set(ConfigurationItem.AppBuild, BUILD);
diff --git a/src/main/java/com/rebuild/core/support/SysbaseHeartbeat.java b/src/main/java/com/rebuild/core/support/SysbaseHeartbeat.java
index c91fa58d5..791a66593 100644
--- a/src/main/java/com/rebuild/core/support/SysbaseHeartbeat.java
+++ b/src/main/java/com/rebuild/core/support/SysbaseHeartbeat.java
@@ -83,8 +83,6 @@ public void heartbeat() {
if (Math.abs(networkDateLeft) > 15) {
log.warn("Server date offset : {} vs {}", networkDate, localDate);
dangers.put(DateNotSync, String.valueOf(networkDateLeft));
- // FIXME v3.4.2 暂时禁用
- dangers.remove(DateNotSync);
} else {
dangers.remove(DateNotSync);
}
diff --git a/src/main/java/com/rebuild/core/support/setup/Installer.java b/src/main/java/com/rebuild/core/support/setup/Installer.java
index 7396403f6..4a8ed141e 100644
--- a/src/main/java/com/rebuild/core/support/setup/Installer.java
+++ b/src/main/java/com/rebuild/core/support/setup/Installer.java
@@ -539,6 +539,8 @@ public static boolean isInstalled() {
* 清除所有缓存
*/
public static void clearAllCache() {
+ Application.getCommonsCache().getEhcacheCache().clear();
+
if (isUseRedis()) {
try (Jedis jedis = Application.getCommonsCache().getJedisPool().getResource()) {
// https://redis.io/commands/flushdb/
@@ -548,8 +550,6 @@ public static void clearAllCache() {
jedis.flushDB();
}
}
- } else {
- Application.getCommonsCache().getEhcacheCache().clear();
}
}
}
\ No newline at end of file
diff --git a/src/main/resources/web/assets/js/rb-advfilter.js b/src/main/resources/web/assets/js/rb-advfilter.js
index 0ad845787..dca05fb22 100644
--- a/src/main/resources/web/assets/js/rb-advfilter.js
+++ b/src/main/resources/web/assets/js/rb-advfilter.js
@@ -674,7 +674,8 @@ class FilterItem extends React.Component {
$el.removeClass('is-invalid')
const v = e.target ? e.target.value : e.val()
if ($empty(v)) {
- $el.addClass('is-invalid')
+ // 忽略数组
+ if (typeof v !== 'object') $el.addClass('is-invalid')
} else {
if (/^\{@[a-z0-9._]{4,}}$/i.test(v)) {
// pass: Field var {@FIELD}
diff --git a/src/main/resources/web/assets/js/rb-base.js b/src/main/resources/web/assets/js/rb-base.js
index 70b538204..89aacfa6c 100644
--- a/src/main/resources/web/assets/js/rb-base.js
+++ b/src/main/resources/web/assets/js/rb-base.js
@@ -124,7 +124,7 @@ See LICENSE and COMMERCIAL in the project root for license information.
// for `watermark`
if (window.watermark && self === top) {
window.watermark.init({
- watermark_txt: [rb.currentUser ? ('***' + rb.currentUser.substr(7)) : null, rb.appName, rb._rbTempAuth ? 'TEMP.AUTH 临时授权' : null],
+ watermark_txt: [rb.currentUser ? '***' + rb.currentUser.substr(7) : null, rb.appName, rb._rbTempAuth ? 'TEMP.AUTH 临时授权' : null],
watermark_angle: 30,
watermark_width: 200,
watermark_font: 'arial',
@@ -326,7 +326,7 @@ var $regex = {
},
clearNumber: function (n) {
return (n + '').replace(/[^\d|^\\.|^\\-]/g, '')
- }
+ },
}
/**
@@ -370,7 +370,9 @@ var $random = function (prefix, alphabetic, maxLength) {
maxLength = maxLength || 24
var c = prefix || ''
while (c.length < maxLength) {
- c += Math.random().toString(36).replace(/[^a-z1-9]+/g, '')
+ c += Math.random()
+ .toString(36)
+ .replace(/[^a-z1-9]+/g, '')
}
return c.substring(0, maxLength)
} else {
@@ -539,4 +541,4 @@ var $isLight = function (color) {
var c_b = parseInt(hex.substring(4, 4 + 2), 16)
var brightness = (c_r * 299 + c_g * 587 + c_b * 114) / 1000
return brightness > 155
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/web/assets/js/trigger/trigger.FIELDAGGREGATION.js b/src/main/resources/web/assets/js/trigger/trigger.FIELDAGGREGATION.js
index 20fa57f67..ad56cd9e6 100644
--- a/src/main/resources/web/assets/js/trigger/trigger.FIELDAGGREGATION.js
+++ b/src/main/resources/web/assets/js/trigger/trigger.FIELDAGGREGATION.js
@@ -288,7 +288,6 @@ class ContentFieldAggregation extends ActionContentSpec {
onConfirm={(v) => {
$(this._$sourceFormula).attr('data-v', v).text(FormulaAggregation.textFormula(v, this.__sourceFieldsCache))
}}
- verifyFormula
entity={this.props.sourceEntity}
/>
)
diff --git a/src/main/resources/web/assets/js/trigger/trigger.GROUPAGGREGATION.js b/src/main/resources/web/assets/js/trigger/trigger.GROUPAGGREGATION.js
index a2e8b337f..8a6149399 100644
--- a/src/main/resources/web/assets/js/trigger/trigger.GROUPAGGREGATION.js
+++ b/src/main/resources/web/assets/js/trigger/trigger.GROUPAGGREGATION.js
@@ -404,7 +404,6 @@ class ContentGroupAggregation extends ActionContentSpec {
onConfirm={(v) => {
$(this._$sourceFormula).attr('data-v', v).text(FormulaAggregation.textFormula(v, this.__sourceFieldsCache))
}}
- verifyFormula
entity={this.props.sourceEntity}
/>
)