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} /> )