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> </parent>
<groupId>com.rebuild</groupId> <groupId>com.rebuild</groupId>
<artifactId>rebuild</artifactId> <artifactId>rebuild</artifactId>
<version>2.8.3</version> <version>2.8.4</version>
<name>rebuild</name> <name>rebuild</name>
<description>Building your business-systems freely!</description> <description>Building your business-systems freely!</description>
<!-- UNCOMMENT USE TOMCAT --> <!-- UNCOMMENT USE TOMCAT -->

View file

@ -64,11 +64,11 @@ public class Application implements ApplicationListener<ApplicationStartedEvent>
/** /**
* Rebuild Version * 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} * Rebuild Build [MAJOR]{1}[MINOR]{2}[PATCH]{2}[BUILD]{2}
*/ */
public static final int BUILD = 2080308; public static final int BUILD = 2080408;
static { static {
// Driver for DB // Driver for DB

View file

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