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

View File

@ -14,21 +14,21 @@ public class EssSealPersonInfo {
*/
private Long ouId;
/**
* 印章用户信息
*/
private PersonProfileInfo sealPerson = new PersonProfileInfo();
/**
* 印章授权人信息
*/
private PersonProfileInfo authorizedByPerson = new PersonProfileInfo();
/**
* 印章id
*/
private String essSealId;
/**
* 印章人员id
*/
private Long personId;
/**
* 印章人员名称
*/
private String personName;
/**
* 是否已经激活(实名认证)
*/
@ -49,14 +49,4 @@ public class EssSealPersonInfo {
*/
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 javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.Set;
import javax.validation.constraints.NotNull;
/**
* @author yanglin
*/
@Setter @Getter
public class AddSealPersonsRequest {
public class AddSealPersonRequest {
/**
* 印章id
@ -23,8 +22,8 @@ public class AddSealPersonsRequest {
/**
* 人员id列表
*/
@NotEmpty(message = "personIds不能为空")
private Set<Long> personIds;
@NotNull(message = "personId不能为空")
private Long personId;
@Override
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.EssSealPerson;
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.utils.BizAssertions;
import cn.axzo.nanopart.ess.server.utils.BizTransactional;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import static java.util.stream.Collectors.toList;
/**
* @author yanglin
@ -135,7 +127,7 @@ public class OrgManager {
@BizTransactional
public void addSealAuthorization(String essSealId, Long personId, Long authorizedByPersonId) {
maybeAddSealPersons(essSealId, Sets.newHashSet(personId));
maybeAddSealPerson(essSealId, personId);
essSealPersonDao.setPersonAuthorized(essSealId, personId, authorizedByPersonId);
log.info("add seal authorization: essSealId={}, personId={}, authorizedByPersonId={}",
essSealId, personId, authorizedByPersonId);
@ -143,34 +135,27 @@ public class OrgManager {
@BizTransactional
public void removeSealAuthorization(String essSealId, Long personId) {
maybeAddSealPersons(essSealId, Sets.newHashSet(personId));
maybeAddSealPerson(essSealId, personId);
essSealPersonDao.removeSealAuthorization(essSealId, personId);
log.info("add seal authorization: essSealId={}, personId={}", essSealId, personId);
}
@BizTransactional
public void maybeAddSealPersons(String essSealId, Set<Long> personIds) {
public void maybeAddSealPerson(String essSealId, Long personId) {
EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null);
BizAssertions.assertNotNull(seal, "印章不存在: {}", essSealId);
SealPersons sealPersons = SealPersons.wrap(
essSealPersonDao.getBySealAndPersonIds(essSealId, personIds));
List<EssSealPerson> newPersons = personIds.stream()
.filter(personId -> !sealPersons.containsPerson(personId))
.map(personId -> {
EssSealPerson sealPerson = new EssSealPerson();
//noinspection DataFlowIssue
sealPerson.setOuId(seal.getOuId());
sealPerson.setEssSealId(essSealId);
sealPerson.setPersonId(personId);
sealPerson.setIsAuthorized(YesOrNo.NO);
return sealPerson;
})
.collect(toList());
if (CollectionUtils.isEmpty(newPersons))
EssSealPerson savedSealPerson = essSealPersonDao.find(essSealId, personId, true)
.orElse(null);
if (savedSealPerson != null)
return;
EssSealPerson sealPerson = new EssSealPerson();
//noinspection DataFlowIssue
sealPerson.setOuId(seal.getOuId());
sealPerson.setEssSealId(essSealId);
sealPerson.setPersonId(personId);
sealPerson.setIsAuthorized(YesOrNo.NO);
try {
essSealPersonDao.saveBatch(newPersons);
log.info("add seal persons: {}", JSON.toJSONString(newPersons));
essSealPersonDao.save(sealPerson);
} 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.EssSealInfo;
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.EssSealState;
import cn.axzo.nanopart.ess.api.request.GetOrgAuthStatesRequest;
@ -38,6 +39,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.toSet;
@ -127,10 +129,7 @@ public class QueryService {
sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized());
sealPersonInfo.setAuthorizeTimeMs(sealPerson.getAuthorizeTime() == null
? null : sealPerson.getAuthorizeTime().getTime());
PersonProfileDto person = personProfiles.findOrNull(sealPerson.getPersonId());
sealPersonInfo.setPersonName(person == null ? "" : person.getRealName());
PersonProfileDto authorizedBy = personProfiles.findOrNull(sealPerson.getAuthorizedByPersonId());
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
populatePersons(sealPerson, sealPersonInfo, personProfiles);
sealInfo.addSealPerson(sealPersonInfo);
}
}
@ -164,13 +163,24 @@ public class QueryService {
sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized());
sealPersonInfo.setAuthorizeTimeMs(sealPerson.getAuthorizeTime() == null
? null : sealPerson.getAuthorizeTime().getTime());
PersonProfileDto person = personProfiles.findOrNull(sealPerson.getPersonId());
sealPersonInfo.setPersonName(person == null ? "" : person.getRealName());
PersonProfileDto authorizedBy = personProfiles.findOrNull(sealPerson.getAuthorizedByPersonId());
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
populatePersons(sealPerson, sealPersonInfo, personProfiles);
sealPersonsInfo.add(sealPersonInfo);
}
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.contract.EssContractInfo;
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.CreateContractByFileRequest;
import cn.axzo.nanopart.ess.api.request.DownloadSingedContractPdfRequest;
@ -97,9 +97,9 @@ class ApiController implements EssApi {
}
@Override
public ApiResult<Void> addSealPersons(AddSealPersonsRequest request) {
log.info("addSealPersons request={}", request);
orgManager.maybeAddSealPersons(request.getEssSealId(), request.getPersonIds());
public ApiResult<Void> addSealPerson(AddSealPersonRequest request) {
log.info("addSealPerson request={}", request);
orgManager.maybeAddSealPerson(request.getEssSealId(), request.getPersonId());
return ApiResult.ok();
}

View File

@ -552,7 +552,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl<ChangeRecordRel
stampUserMap.forEach((key, value) -> {
if (CollectionUtils.isNotEmpty(value)) {
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()))
.tenantId(NO_TENANT_ID)
.build()).collect(Collectors.toList()));