From db05b691227dfc40aafa5ab20af9d4bb41388b0b Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Fri, 13 Dec 2024 17:02:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor(web):=E4=BC=98=E5=8C=96=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E6=9C=8D=E5=8A=A1=E5=92=8C=E6=95=B0=E6=8D=AE=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=9C=8D=E5=8A=A1=E7=9A=84=E6=9F=A5=E8=AF=A2=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ConfirmationService.java | 20 ++++++++++----- .../resource/service/DataResourceService.java | 25 +++++++++++++------ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java index 79493ca..8e6848b 100644 --- a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java +++ b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/confirmation/service/ConfirmationService.java @@ -17,6 +17,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Join; +import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.transaction.Transactional; @@ -52,15 +54,21 @@ public class ConfirmationService extends SimpleServiceSupport impl if (User.isAdministrator(loginUser)) { return Lists.immutable.empty(); } + Join orderJoin = root.join(Confirmation_.order, JoinType.LEFT); return Lists.immutable.of(builder.or( builder.equal(root.get(Confirmation_.createdUser), loginUser), builder.and( - builder.equal(root.get(Confirmation_.order).get(CheckOrder_.target), CheckOrder.Target.ROLE), - builder.equal(root.get(Confirmation_.order).get(CheckOrder_.targetRole), loginUser.getRole()) - ), - builder.and( - builder.equal(root.get(Confirmation_.order).get(CheckOrder_.target), CheckOrder.Target.USER), - builder.equal(root.get(Confirmation_.order).get(CheckOrder_.targetUser), loginUser) + builder.isNotNull(orderJoin), + builder.or( + builder.and( + builder.equal(orderJoin.get(CheckOrder_.target), CheckOrder.Target.ROLE), + builder.equal(orderJoin.get(CheckOrder_.targetRole), loginUser.getRole()) + ), + builder.and( + builder.equal(orderJoin.get(CheckOrder_.target), CheckOrder.Target.USER), + builder.equal(orderJoin.get(CheckOrder_.targetUser), loginUser) + ) + ) ) )); } diff --git a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/service/DataResourceService.java b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/service/DataResourceService.java index c1c2fa7..551aade 100644 --- a/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/service/DataResourceService.java +++ b/gringotts-web/src/main/java/com/eshore/gringotts/web/domain/resource/service/DataResourceService.java @@ -2,7 +2,6 @@ package com.eshore.gringotts.web.domain.resource.service; import com.eshore.gringotts.web.domain.authentication.entity.Authentication; import com.eshore.gringotts.web.domain.authentication.entity.Authentication_; -import com.eshore.gringotts.web.domain.base.entity.CheckingNeededEntity; import com.eshore.gringotts.web.domain.base.service.SimpleServiceSupport; import com.eshore.gringotts.web.domain.confirmation.entity.Confirmation; import com.eshore.gringotts.web.domain.confirmation.entity.Confirmation_; @@ -19,6 +18,7 @@ import com.eshore.gringotts.web.helper.EntityHelper; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Join; +import javax.persistence.criteria.JoinType; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import javax.persistence.criteria.Subquery; @@ -79,23 +79,34 @@ public class DataResourceService extends SimpleServiceSupport { } public ImmutableList listNoConfirmation() { - return Lists.immutable.ofAll(dataResourceRepository.findAllByConfirmationIsNull()); + return Lists.immutable.ofAll(dataResourceRepository.findAll( + (root, query, builder) -> { + Join confirmationJoin = root.join(DataResource_.confirmation, JoinType.LEFT); + return builder.and( + builder.isNull(confirmationJoin.get(Confirmation_.id)), + builder.equal(root.get(DataResource_.createdUser), userService.currentLoginUser()) + ); + } + )); } public ImmutableList listNoAuthentication() { return Lists.immutable.ofAll(dataResourceRepository.findAll( (root, query, builder) -> { - Join confirmationJoin = root.join("confirmation"); - confirmationJoin.on(builder.equal(confirmationJoin.get("state"), CheckingNeededEntity.State.NORMAL)); + Join confirmationJoin = root.join(DataResource_.confirmation, JoinType.LEFT); + confirmationJoin.on(builder.equal(confirmationJoin.get(Confirmation_.state), Confirmation.State.NORMAL)); Subquery authenticationSubquery = query.subquery(Authentication.class); Root authenticationRoot = authenticationSubquery.from(Authentication.class); authenticationSubquery.select(authenticationRoot) .where( - builder.equal(authenticationRoot.get("target"), root), - builder.equal(authenticationRoot.get("createdUser"), userService.currentLoginUser()) + builder.equal(authenticationRoot.get(Authentication_.target), root), + builder.equal(authenticationRoot.get(Authentication_.createdUser), userService.currentLoginUser()) ); - return builder.exists(authenticationSubquery).not(); + return builder.and( + builder.exists(authenticationSubquery).not(), + builder.equal(root.get(DataResource_.createdUser), userService.currentLoginUser()) + ); } )); }