REQ-3581: 印章授权人问题

This commit is contained in:
yanglin 2025-02-28 16:25:36 +08:00
parent 1cffe92afd
commit a2c83d1edf
4 changed files with 30 additions and 18 deletions

View File

@ -20,17 +20,23 @@ import cn.axzo.nanopart.ess.server.mapper.EssSealPersonMapper;
@Repository("essSealPersonDao")
public class EssSealPersonDao extends ServiceImpl<EssSealPersonMapper, EssSealPerson> {
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) //

View File

@ -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());
}

View File

@ -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

View File

@ -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());