REQ-3581: 调整接口

This commit is contained in:
yanglin 2025-02-26 13:46:56 +08:00
parent 4216b56de9
commit 1534ede9b6
8 changed files with 81 additions and 70 deletions

View File

@ -4,7 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiResult;
import cn.axzo.nanopart.ess.api.domain.EssOrgAndSealInfo; import cn.axzo.nanopart.ess.api.domain.EssOrgAndSealInfo;
import cn.axzo.nanopart.ess.api.domain.EssSealPersonInfo; import cn.axzo.nanopart.ess.api.domain.EssSealPersonInfo;
import cn.axzo.nanopart.ess.api.request.AddSealAuthorizationRequest; import cn.axzo.nanopart.ess.api.request.AddSealAuthorizationRequest;
import cn.axzo.nanopart.ess.api.request.AddSealPersonsRequest; import cn.axzo.nanopart.ess.api.request.AddSealPersonRequest;
import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest; import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest;
import cn.axzo.nanopart.ess.api.request.CreateContractByFileRequest; import cn.axzo.nanopart.ess.api.request.CreateContractByFileRequest;
import cn.axzo.nanopart.ess.api.request.DownloadSingedContractPdfRequest; import cn.axzo.nanopart.ess.api.request.DownloadSingedContractPdfRequest;
@ -85,9 +85,9 @@ public interface EssApi {
/** /**
* 批量添加印章人员 (批量授权) * 批量添加印章人员 (批量授权)
*/ */
@PostMapping("api/ess/addSealPersons") @PostMapping("api/ess/addSealPerson")
ApiResult<Void> addSealPersons( ApiResult<Void> addSealPerson(
@RequestBody @Valid AddSealPersonsRequest request); @RequestBody @Valid AddSealPersonRequest request);
/** /**
* 删除印章人员 * 删除印章人员

View File

@ -14,21 +14,21 @@ public class EssSealPersonInfo {
*/ */
private Long ouId; private Long ouId;
/**
* 印章用户信息
*/
private PersonProfileInfo sealPerson = new PersonProfileInfo();
/**
* 印章授权人信息
*/
private PersonProfileInfo authorizedByPerson = new PersonProfileInfo();
/** /**
* 印章id * 印章id
*/ */
private String essSealId; private String essSealId;
/**
* 印章人员id
*/
private Long personId;
/**
* 印章人员名称
*/
private String personName;
/** /**
* 是否已经激活(实名认证) * 是否已经激活(实名认证)
*/ */
@ -49,14 +49,4 @@ public class EssSealPersonInfo {
*/ */
private boolean isSuperAdmin; private boolean isSuperAdmin;
/**
* 授权人员id
*/
private Long authorizedByPersonId;
/**
* 授权人员姓名
*/
private String authorizedByPersonName;
} }

View File

@ -0,0 +1,27 @@
package cn.axzo.nanopart.ess.api.domain;
import lombok.Getter;
import lombok.Setter;
/**
* @author yanglin
*/
@Setter @Getter
public class PersonProfileInfo {
/**
* 自然人id
*/
private Long personId;
/**
* 姓名
*/
private String personName;
/**
* 头像
*/
private String avatar;
}

View File

@ -5,14 +5,13 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull;
import java.util.Set;
/** /**
* @author yanglin * @author yanglin
*/ */
@Setter @Getter @Setter @Getter
public class AddSealPersonsRequest { public class AddSealPersonRequest {
/** /**
* 印章id * 印章id
@ -23,8 +22,8 @@ public class AddSealPersonsRequest {
/** /**
* 人员id列表 * 人员id列表
*/ */
@NotEmpty(message = "personIds不能为空") @NotNull(message = "personId不能为空")
private Set<Long> personIds; private Long personId;
@Override @Override
public String toString() { public String toString() {

View File

@ -16,23 +16,15 @@ import cn.axzo.nanopart.ess.server.entity.EssPerson;
import cn.axzo.nanopart.ess.server.entity.EssSeal; import cn.axzo.nanopart.ess.server.entity.EssSeal;
import cn.axzo.nanopart.ess.server.entity.EssSealPerson; import cn.axzo.nanopart.ess.server.entity.EssSealPerson;
import cn.axzo.nanopart.ess.server.ess.domain.OrgAndPerson; import cn.axzo.nanopart.ess.server.ess.domain.OrgAndPerson;
import cn.axzo.nanopart.ess.server.ess.domain.SealPersons;
import cn.axzo.nanopart.ess.server.ess.support.EssSupport; import cn.axzo.nanopart.ess.server.ess.support.EssSupport;
import cn.axzo.nanopart.ess.server.utils.BizAssertions; import cn.axzo.nanopart.ess.server.utils.BizAssertions;
import cn.axzo.nanopart.ess.server.utils.BizTransactional; import cn.axzo.nanopart.ess.server.utils.BizTransactional;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Set;
import static java.util.stream.Collectors.toList;
/** /**
* @author yanglin * @author yanglin
@ -135,7 +127,7 @@ public class OrgManager {
@BizTransactional @BizTransactional
public void addSealAuthorization(String essSealId, Long personId, Long authorizedByPersonId) { public void addSealAuthorization(String essSealId, Long personId, Long authorizedByPersonId) {
maybeAddSealPersons(essSealId, Sets.newHashSet(personId)); maybeAddSealPerson(essSealId, personId);
essSealPersonDao.setPersonAuthorized(essSealId, personId, authorizedByPersonId); essSealPersonDao.setPersonAuthorized(essSealId, personId, authorizedByPersonId);
log.info("add seal authorization: essSealId={}, personId={}, authorizedByPersonId={}", log.info("add seal authorization: essSealId={}, personId={}, authorizedByPersonId={}",
essSealId, personId, authorizedByPersonId); essSealId, personId, authorizedByPersonId);
@ -143,34 +135,27 @@ public class OrgManager {
@BizTransactional @BizTransactional
public void removeSealAuthorization(String essSealId, Long personId) { public void removeSealAuthorization(String essSealId, Long personId) {
maybeAddSealPersons(essSealId, Sets.newHashSet(personId)); maybeAddSealPerson(essSealId, personId);
essSealPersonDao.removeSealAuthorization(essSealId, personId); essSealPersonDao.removeSealAuthorization(essSealId, personId);
log.info("add seal authorization: essSealId={}, personId={}", essSealId, personId); log.info("add seal authorization: essSealId={}, personId={}", essSealId, personId);
} }
@BizTransactional @BizTransactional
public void maybeAddSealPersons(String essSealId, Set<Long> personIds) { public void maybeAddSealPerson(String essSealId, Long personId) {
EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null); EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null);
BizAssertions.assertNotNull(seal, "印章不存在: {}", essSealId); BizAssertions.assertNotNull(seal, "印章不存在: {}", essSealId);
SealPersons sealPersons = SealPersons.wrap( EssSealPerson savedSealPerson = essSealPersonDao.find(essSealId, personId, true)
essSealPersonDao.getBySealAndPersonIds(essSealId, personIds)); .orElse(null);
List<EssSealPerson> newPersons = personIds.stream() if (savedSealPerson != null)
.filter(personId -> !sealPersons.containsPerson(personId)) return;
.map(personId -> {
EssSealPerson sealPerson = new EssSealPerson(); EssSealPerson sealPerson = new EssSealPerson();
//noinspection DataFlowIssue //noinspection DataFlowIssue
sealPerson.setOuId(seal.getOuId()); sealPerson.setOuId(seal.getOuId());
sealPerson.setEssSealId(essSealId); sealPerson.setEssSealId(essSealId);
sealPerson.setPersonId(personId); sealPerson.setPersonId(personId);
sealPerson.setIsAuthorized(YesOrNo.NO); sealPerson.setIsAuthorized(YesOrNo.NO);
return sealPerson;
})
.collect(toList());
if (CollectionUtils.isEmpty(newPersons))
return;
try { try {
essSealPersonDao.saveBatch(newPersons); essSealPersonDao.save(sealPerson);
log.info("add seal persons: {}", JSON.toJSONString(newPersons));
} catch (DuplicateKeyException ignored) { } catch (DuplicateKeyException ignored) {
} }
} }

View File

@ -6,6 +6,7 @@ import cn.axzo.nanopart.ess.api.domain.EssOrgAndSealInfo;
import cn.axzo.nanopart.ess.api.domain.EssOrgInfo; import cn.axzo.nanopart.ess.api.domain.EssOrgInfo;
import cn.axzo.nanopart.ess.api.domain.EssSealInfo; import cn.axzo.nanopart.ess.api.domain.EssSealInfo;
import cn.axzo.nanopart.ess.api.domain.EssSealPersonInfo; import cn.axzo.nanopart.ess.api.domain.EssSealPersonInfo;
import cn.axzo.nanopart.ess.api.domain.PersonProfileInfo;
import cn.axzo.nanopart.ess.api.enums.EssPersonState; import cn.axzo.nanopart.ess.api.enums.EssPersonState;
import cn.axzo.nanopart.ess.api.enums.EssSealState; import cn.axzo.nanopart.ess.api.enums.EssSealState;
import cn.axzo.nanopart.ess.api.request.GetOrgAuthStatesRequest; import cn.axzo.nanopart.ess.api.request.GetOrgAuthStatesRequest;
@ -38,6 +39,7 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.function.BiConsumer;
import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.toSet; import static java.util.stream.Collectors.toSet;
@ -127,10 +129,7 @@ public class QueryService {
sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized()); sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized());
sealPersonInfo.setAuthorizeTimeMs(sealPerson.getAuthorizeTime() == null sealPersonInfo.setAuthorizeTimeMs(sealPerson.getAuthorizeTime() == null
? null : sealPerson.getAuthorizeTime().getTime()); ? null : sealPerson.getAuthorizeTime().getTime());
PersonProfileDto person = personProfiles.findOrNull(sealPerson.getPersonId()); populatePersons(sealPerson, sealPersonInfo, personProfiles);
sealPersonInfo.setPersonName(person == null ? "" : person.getRealName());
PersonProfileDto authorizedBy = personProfiles.findOrNull(sealPerson.getAuthorizedByPersonId());
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
sealInfo.addSealPerson(sealPersonInfo); sealInfo.addSealPerson(sealPersonInfo);
} }
} }
@ -164,13 +163,24 @@ public class QueryService {
sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized()); sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized());
sealPersonInfo.setAuthorizeTimeMs(sealPerson.getAuthorizeTime() == null sealPersonInfo.setAuthorizeTimeMs(sealPerson.getAuthorizeTime() == null
? null : sealPerson.getAuthorizeTime().getTime()); ? null : sealPerson.getAuthorizeTime().getTime());
PersonProfileDto person = personProfiles.findOrNull(sealPerson.getPersonId()); populatePersons(sealPerson, sealPersonInfo, personProfiles);
sealPersonInfo.setPersonName(person == null ? "" : person.getRealName());
PersonProfileDto authorizedBy = personProfiles.findOrNull(sealPerson.getAuthorizedByPersonId());
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
sealPersonsInfo.add(sealPersonInfo); sealPersonsInfo.add(sealPersonInfo);
} }
return sealPersonsInfo; return sealPersonsInfo;
} }
private void populatePersons(EssSealPerson sealPerson,
EssSealPersonInfo sealPersonInfo,
PersonProfiles personProfiles) {
BiConsumer<Long, PersonProfileInfo> builder = (personId, profileInfo) -> {
PersonProfileDto profile = personProfiles.findOrNull(personId);
if (profile == null) return;
profileInfo.setPersonId(personId);
profileInfo.setPersonName(profile.getRealName());
profileInfo.setAvatar(profile.getAvatarUrl());
};
builder.accept(sealPerson.getPersonId(), sealPersonInfo.getSealPerson());
builder.accept(sealPerson.getAuthorizedByPersonId(), sealPersonInfo.getAuthorizedByPerson());
}
} }

View File

@ -7,7 +7,7 @@ import cn.axzo.nanopart.ess.api.domain.EssOrgAndSealInfo;
import cn.axzo.nanopart.ess.api.domain.EssSealPersonInfo; import cn.axzo.nanopart.ess.api.domain.EssSealPersonInfo;
import cn.axzo.nanopart.ess.api.domain.contract.EssContractInfo; import cn.axzo.nanopart.ess.api.domain.contract.EssContractInfo;
import cn.axzo.nanopart.ess.api.request.AddSealAuthorizationRequest; import cn.axzo.nanopart.ess.api.request.AddSealAuthorizationRequest;
import cn.axzo.nanopart.ess.api.request.AddSealPersonsRequest; import cn.axzo.nanopart.ess.api.request.AddSealPersonRequest;
import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest; import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest;
import cn.axzo.nanopart.ess.api.request.CreateContractByFileRequest; import cn.axzo.nanopart.ess.api.request.CreateContractByFileRequest;
import cn.axzo.nanopart.ess.api.request.DownloadSingedContractPdfRequest; import cn.axzo.nanopart.ess.api.request.DownloadSingedContractPdfRequest;
@ -97,9 +97,9 @@ class ApiController implements EssApi {
} }
@Override @Override
public ApiResult<Void> addSealPersons(AddSealPersonsRequest request) { public ApiResult<Void> addSealPerson(AddSealPersonRequest request) {
log.info("addSealPersons request={}", request); log.info("addSealPerson request={}", request);
orgManager.maybeAddSealPersons(request.getEssSealId(), request.getPersonIds()); orgManager.maybeAddSealPerson(request.getEssSealId(), request.getPersonId());
return ApiResult.ok(); return ApiResult.ok();
} }

View File

@ -552,7 +552,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
stampUserMap.forEach((key, value) -> { stampUserMap.forEach((key, value) -> {
if (CollectionUtils.isNotEmpty(value)) { if (CollectionUtils.isNotEmpty(value)) {
result.put(key, value.stream().map(u -> BpmnTaskDelegateAssigner.builder() result.put(key, value.stream().map(u -> BpmnTaskDelegateAssigner.builder()
.personId(String.valueOf(u.getPersonId())) .personId(String.valueOf(u.getSealPerson().getPersonId()))
.ouId(String.valueOf(u.getOuId())) .ouId(String.valueOf(u.getOuId()))
.tenantId(NO_TENANT_ID) .tenantId(NO_TENANT_ID)
.build()).collect(Collectors.toList())); .build()).collect(Collectors.toList()));