diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssSealPersonDao.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssSealPersonDao.java index 556b79a7..39c4c5cc 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssSealPersonDao.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/dao/EssSealPersonDao.java @@ -20,17 +20,23 @@ import cn.axzo.nanopart.ess.server.mapper.EssSealPersonMapper; @Repository("essSealPersonDao") public class EssSealPersonDao extends ServiceImpl { - public void setPersonAuthorized(String essSealId, Long personId, Long authorizedByPersonId) { + public void setPersonAuthorized(String essSealId, Long personId) { lambdaUpdate() // .eq(EssSealPerson::getEssSealId, essSealId) // .eq(EssSealPerson::getPersonId, personId) // - .set(authorizedByPersonId != null && authorizedByPersonId > 0, EssSealPerson::getAuthorizedByPersonId, - authorizedByPersonId) // .set(EssSealPerson::getIsAuthorized, YesOrNo.YES) // .set(EssSealPerson::getAuthorizeTime, new Date()) // .update(); } + public void setSealPersonAuthorizedBy(String essSealId, Long personId, Long authorizedByPersonId) { + lambdaUpdate() // + .eq(EssSealPerson::getEssSealId, essSealId) // + .eq(EssSealPerson::getPersonId, personId) // + .set(EssSealPerson::getAuthorizedByPersonId, authorizedByPersonId) // + .update(); + } + public void removeSealAuthorization(String essSealId, Long personId) { lambdaUpdate() // .eq(EssSealPerson::getEssSealId, essSealId) // diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java index 072da641..bf9c2c16 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java @@ -103,7 +103,8 @@ public class EssService { BizAssertions.assertTrue(essPerson.isAuthorized(), "人员未加入单位, 无法授权"); EssPerson superAdmin = orgManager.getSuperAdminOrThrow(sealAndPerson.getSeal().getOuId()); essClient.addSealAuthorization(superAdmin, sealAndPerson.getSeal(), sealPerson); - orgManager.maybeAddPersonAndSetSealAuthorized(request.getEssSealId(), request.getPersonId(), + orgManager.maybeAddPersonAndSetSealAuthorized(request.getEssSealId(), request.getPersonId()); + orgManager.setSealPersonAuthorizedBy(request.getEssSealId(), request.getPersonId(), request.getOperatorPersonId()); } 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 e02faa21..16ba04d4 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 @@ -145,14 +145,16 @@ public class OrgManager { } @BizTransactional - public void maybeAddPersonAndSetSealAuthorized(String essSealId, Long personId, Long authorizedByPersonId) { + public void maybeAddPersonAndSetSealAuthorized(String essSealId, Long personId) { maybeAddSealPerson(essSealId, personId); - essSealPersonDao.setPersonAuthorized(essSealId, personId, authorizedByPersonId); + essSealPersonDao.setPersonAuthorized(essSealId, personId); String subject = idbuilder().append(essSealId).append(personId).build(); - essLogDao.log("maybeAddPersonAndSetSealAuthorized", subject, "personId", personId, "authorizedBy", - authorizedByPersonId); - log.info("add seal authorization: essSealId={}, personId={}, authorizedByPersonId={}", essSealId, personId, - authorizedByPersonId); + essLogDao.log("maybeAddPersonAndSetSealAuthorized", subject, "personId", personId); + log.info("add seal authorization: essSealId={}, personId={}", essSealId, personId); + } + + public void setSealPersonAuthorizedBy(String essSealId, Long personId, Long authorizedByPersonId) { + essSealPersonDao.setSealPersonAuthorizedBy(essSealId, personId, authorizedByPersonId); } @BizTransactional @@ -161,7 +163,7 @@ public class OrgManager { essSealPersonDao.removeSealAuthorization(essSealId, personId); String subject = idbuilder().append(essSealId).append(personId).build(); essLogDao.log("removeSealAuthorization", subject, "personId", personId); - log.info("add seal authorization: essSealId={}, personId={}", essSealId, personId); + log.info("remove seal authorization: essSealId={}, personId={}", essSealId, personId); } @BizTransactional diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java index 6dc0f42a..27f58de6 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java @@ -123,9 +123,11 @@ class CallbackController implements EssCallbackApi, InitializingBean { boolean sealCreated = orgManager.maybeAddSeal(ou.getOuId(), operate.getSealId(), EssSealType.fromEssCode(operate.getSealType())); // 1. 印章创建人会自动获得授权; 2. 避免miss create事件 - if (sealCreated) - orgManager.maybeAddPersonAndSetSealAuthorized(operate.getSealId(), operator.getPersonId(), + if (sealCreated) { + orgManager.maybeAddPersonAndSetSealAuthorized(operate.getSealId(), operator.getPersonId()); + orgManager.setSealPersonAuthorizedBy(operate.getSealId(), operator.getPersonId(), operator.getPersonId()); + } if ("Delete".equals(operate.getOperate())) orgManager.updateSealState(operate.getSealId(), EssSealState.DELETED); if ("Disable".equals(operate.getOperate())) @@ -133,14 +135,15 @@ class CallbackController implements EssCallbackApi, InitializingBean { if ("Enable".equals(operate.getOperate())) orgManager.updateSealState(operate.getSealId(), EssSealState.ENABLED); if ("Valid".equals(operate.getOperate())) { + orgManager.maybeAddPersonAndSetSealAuthorized(operate.getSealId(), authorized.getPersonId()); EssSealPerson savedPerson = essSealPersonDao // .find(operate.getSealId(), authorized.getPersonId()) // - .orElse(null); - // 可能从控制台直接授权 + .orElseThrow(InternalError::new); boolean authorizedByPreset = savedPerson != null && savedPerson.getAuthorizedByPersonId() > 0; - long authorizedByPersonId = authorizedByPreset ? 0L : operator.getPersonId(); - orgManager.maybeAddPersonAndSetSealAuthorized(operate.getSealId(), authorized.getPersonId(), - authorizedByPersonId); + // 可能从控制台直接授权 + if (!authorizedByPreset) + orgManager.setSealPersonAuthorizedBy(operate.getSealId(), authorized.getPersonId(), + operator.getPersonId()); } if ("Invalid".equals(operate.getOperate())) orgManager.removeSealAuthorization(operate.getSealId(), authorized.getPersonId());