From 47296c64f68644959a385c1c5319e7a476cfa540 Mon Sep 17 00:00:00 2001 From: yanglin Date: Fri, 28 Feb 2025 14:10:46 +0800 Subject: [PATCH] =?UTF-8?q?REQ-3581:=20=E6=B7=BB=E5=8A=A0=E5=8D=B0?= =?UTF-8?q?=E7=AB=A0=E4=BA=BA=E5=91=98=E7=9A=84=E6=97=B6=E9=97=B4,=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=BA=E5=91=98=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ess/api/domain/contract/OrgPersonInfo.java | 8 ++++++++ .../axzo/nanopart/ess/server/ess/OrgManager.java | 14 +++++++++++++- .../ess/server/ess/controller/ApiController.java | 9 +++++---- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/OrgPersonInfo.java b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/OrgPersonInfo.java index fa03534f..ad3583b9 100644 --- a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/OrgPersonInfo.java +++ b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/contract/OrgPersonInfo.java @@ -4,6 +4,7 @@ package cn.axzo.nanopart.ess.api.domain.contract; import cn.axzo.nanopart.ess.api.domain.OrgPerson; import lombok.Getter; import lombok.Setter; +import org.springframework.web.context.request.async.StandardServletAsyncWebRequest; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; @@ -15,6 +16,13 @@ import javax.validation.constraints.NotNull; @Getter public class OrgPersonInfo implements OrgPerson { + public static OrgPersonInfo create(Long ouId, Long personId) { + OrgPersonInfo orgPersonInfo = new OrgPersonInfo(); + orgPersonInfo.setOuId(ouId); + orgPersonInfo.setPersonId(personId); + return orgPersonInfo; + } + /** * 单位id */ diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java index f68af141..462e1983 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java @@ -9,6 +9,7 @@ import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Component; import cn.axzo.nanopart.ess.api.domain.OrgPerson; +import cn.axzo.nanopart.ess.api.domain.contract.OrgPersonInfo; import cn.axzo.nanopart.ess.api.enums.EssPersonState; import cn.axzo.nanopart.ess.api.enums.EssSealState; import cn.axzo.nanopart.ess.api.enums.EssSealType; @@ -156,7 +157,18 @@ public class OrgManager { } @BizTransactional - public void maybeAddSealPerson(String essSealId, Long personId) { + public void addSealPerson(String essSealId, Long personId) { + EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null); + BizAssertions.assertNotNull(seal, "印章不存在: {}", essSealId); + //noinspection DataFlowIssue + getOrCreateOrgPerson(OrgPersonInfo.create(seal.getOuId(), personId)); + maybeAddSealPerson(essSealId, personId); + } + + /** + * should be called in transaction + */ + private void maybeAddSealPerson(String essSealId, Long personId) { EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null); BizAssertions.assertNotNull(seal, "印章不存在: {}", essSealId); EssSealPerson savedSealPerson = essSealPersonDao.find(essSealId, personId, true).orElse(null); diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/ApiController.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/ApiController.java index b59338a2..d5ae3e44 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/ApiController.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/ApiController.java @@ -1,6 +1,10 @@ package cn.axzo.nanopart.ess.server.ess.controller; +import java.util.List; + +import org.springframework.web.bind.annotation.RestController; + import cn.axzo.basics.common.BeanMapper; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.nanopart.ess.api.EssApi; @@ -39,9 +43,6 @@ import cn.axzo.nanopart.ess.server.ess.OrgManager; import cn.axzo.nanopart.ess.server.ess.QueryService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; /** * @author yanglin @@ -100,7 +101,7 @@ class ApiController implements EssApi { @Override public ApiResult addSealPerson(AddSealPersonRequest request) { log.info("addSealPerson request={}", request); - orgManager.maybeAddSealPerson(request.getEssSealId(), request.getPersonId()); + orgManager.addSealPerson(request.getEssSealId(), request.getPersonId()); return ApiResult.ok(); }