Fix 2.8.4 (#459)

* fix: rule for GroupAggregation

* v2.8.4
This commit is contained in:
RB 2022-04-25 13:44:17 +08:00 committed by GitHub
parent 7e72b52b0f
commit 39ab712324
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 15 deletions

View file

@ -10,7 +10,7 @@
</parent>
<groupId>com.rebuild</groupId>
<artifactId>rebuild</artifactId>
<version>2.8.3</version>
<version>2.8.4</version>
<name>rebuild</name>
<description>Building your business-systems freely!</description>
<!-- UNCOMMENT USE TOMCAT -->

View file

@ -64,11 +64,11 @@ public class Application implements ApplicationListener<ApplicationStartedEvent>
/**
* Rebuild Version
*/
public static final String VER = "2.8.3";
public static final String VER = "2.8.4";
/**
* Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2}
*/
public static final int BUILD = 2080308;
public static final int BUILD = 2080408;
static {
// Driver for DB

View file

@ -26,6 +26,7 @@ import com.rebuild.core.support.i18n.Language;
import lombok.extern.slf4j.Slf4j;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.util.Assert;
import java.lang.reflect.Method;
@ -131,9 +132,11 @@ public class PrivilegesGuardInterceptor implements MethodInterceptor, Guard {
}
// 无权限操作
if (!allowed && PrivilegesGuardContextHolder.getSkipGuardOnce() != null) {
ID skipId;
if (!allowed && (skipId = PrivilegesGuardContextHolder.getSkipGuardOnce()) != null) {
allowed = true;
log.warn("Allow no permission(" + action.getName() + ") passed once : " + recordId);
log.warn("Allow no permission({}) passed once : {}",
action.getName(), ObjectUtils.defaultIfNull(recordId, skipId));
}
if (!allowed) {

View file

@ -20,6 +20,7 @@ import com.rebuild.core.metadata.easymeta.DisplayType;
import com.rebuild.core.metadata.easymeta.EasyField;
import com.rebuild.core.metadata.easymeta.EasyMetaFactory;
import com.rebuild.core.metadata.impl.EasyFieldConfigProps;
import com.rebuild.core.privileges.PrivilegesGuardContextHolder;
import com.rebuild.core.privileges.UserService;
import com.rebuild.core.service.general.OperatingContext;
import com.rebuild.core.service.trigger.ActionContext;
@ -35,8 +36,6 @@ import java.util.*;
/**
* 分组聚合
*
* FIXME 目标实体记录自动新建时不会触发业务规则因为使用了 CommonService 创建
*
* @author devezhao
* @since 2021/6/28
*/
@ -195,6 +194,7 @@ public class GroupAggregation extends FieldAggregation {
// 不必担心必填字段必填只是前端约束
// 还可以通过设置字段默认值来完成必填字段的自动填写
// 0425 需要业务规则譬如自动编号默认值等
Record newTargetRecord = EntityHelper.forNew(targetEntity.getEntityCode(), UserService.SYSTEM_USER);
for (Map.Entry<String, String> e : groupFieldsMapping.entrySet()) {
@ -207,14 +207,13 @@ public class GroupAggregation extends FieldAggregation {
}
}
// // 若无权限可能抛出异常无权新建
// if (allowNoPermissionUpdate) {
// PrivilegesGuardContextHolder.setSkipGuard(PrivilegesGuardContextHolder.FOR_NEW_RECORD);
// }
// newTargetRecord = Application.getEntityService(targetEntity.getEntityCode()).create(newTargetRecord);
// FIXME 忽略业务规则新建
newTargetRecord = Application.getCommonsService().create(newTargetRecord, false);
// 强制新建
PrivilegesGuardContextHolder.setSkipGuard(EntityHelper.UNSAVED_ID);
try {
Application.getEntityService(targetEntity.getEntityCode()).create(newTargetRecord);
} finally {
PrivilegesGuardContextHolder.getSkipGuardOnce();
}
targetRecordId = newTargetRecord.getPrimary();
}