REQ-3581: 接口
This commit is contained in:
parent
b22255a078
commit
ad22696413
@ -2,6 +2,7 @@ package cn.axzo.nanopart.ess.api;
|
|||||||
|
|
||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
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.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.AddSealPersonsRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest;
|
import cn.axzo.nanopart.ess.api.request.CreateConsoleLoginUrlRequest;
|
||||||
@ -11,6 +12,7 @@ import cn.axzo.nanopart.ess.api.request.GetContractDetailByContractIdRequest;
|
|||||||
import cn.axzo.nanopart.ess.api.request.GetEmbedWebUrlRequest;
|
import cn.axzo.nanopart.ess.api.request.GetEmbedWebUrlRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetOrgAuthStatesRequest;
|
import cn.axzo.nanopart.ess.api.request.GetOrgAuthStatesRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
||||||
|
import cn.axzo.nanopart.ess.api.request.GetSealPersonRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
|
import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetSignUrlRequest;
|
import cn.axzo.nanopart.ess.api.request.GetSignUrlRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
||||||
@ -73,6 +75,13 @@ public interface EssApi {
|
|||||||
ApiResult<List<EssOrgAndSealInfo>> getOrgEnabledSeals(
|
ApiResult<List<EssOrgAndSealInfo>> getOrgEnabledSeals(
|
||||||
@RequestBody @Valid GetSealsRequest request);
|
@RequestBody @Valid GetSealsRequest request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询印章管理员
|
||||||
|
*/
|
||||||
|
@PostMapping("api/ess/getSealPersons")
|
||||||
|
ApiResult<List<EssSealPersonInfo>> getSealPersons(
|
||||||
|
@RequestBody @Valid GetSealPersonRequest request);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量添加印章人员 (批量授权)
|
* 批量添加印章人员 (批量授权)
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -32,10 +32,10 @@ public class EssSealInfo {
|
|||||||
/**
|
/**
|
||||||
* 授权人员列表
|
* 授权人员列表
|
||||||
*/
|
*/
|
||||||
private List<EssSealPersonInfo> authorizedPersons = new ArrayList<>();
|
private List<EssSealPersonInfo> sealPersons = new ArrayList<>();
|
||||||
|
|
||||||
public void addAuthorizedPerson(EssSealPersonInfo person) {
|
public void addSealPerson(EssSealPersonInfo person) {
|
||||||
authorizedPersons.add(person);
|
sealPersons.add(person);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
package cn.axzo.nanopart.ess.api.request;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author yanglin
|
||||||
|
*/
|
||||||
|
@Setter @Getter
|
||||||
|
public class GetSealPersonRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 印章在腾讯的id
|
||||||
|
*/
|
||||||
|
@NotBlank(message = "essSealId不能为空")
|
||||||
|
private String essSealId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -65,4 +65,10 @@ public class EssSealPersonDao extends ServiceImpl<EssSealPersonMapper, EssSealPe
|
|||||||
.list();
|
.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<EssSealPerson> get(String essSealId) {
|
||||||
|
return lambdaQuery()
|
||||||
|
.eq(EssSealPerson::getEssSealId, essSealId)
|
||||||
|
.list();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -20,6 +20,10 @@ public class OuAndPersonId {
|
|||||||
return new OuAndPersonId(ouId, personId);
|
return new OuAndPersonId(ouId, personId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean is(Long ouId, Long personId) {
|
||||||
|
return this.ouId.equals(ouId) && this.personId.equals(personId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (!(o instanceof OuAndPersonId)) return false;
|
if (!(o instanceof OuAndPersonId)) return false;
|
||||||
|
|||||||
@ -10,6 +10,7 @@ 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;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
||||||
|
import cn.axzo.nanopart.ess.api.request.GetSealPersonRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
|
import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
|
||||||
import cn.axzo.nanopart.ess.api.response.GetOrgAuthStatesResponse;
|
import cn.axzo.nanopart.ess.api.response.GetOrgAuthStatesResponse;
|
||||||
import cn.axzo.nanopart.ess.api.response.GetPersonAuthStateResponse;
|
import cn.axzo.nanopart.ess.api.response.GetPersonAuthStateResponse;
|
||||||
@ -22,8 +23,10 @@ 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.entity.domain.OuAndPersonId;
|
import cn.axzo.nanopart.ess.server.entity.domain.OuAndPersonId;
|
||||||
|
import cn.axzo.nanopart.ess.server.ess.domain.EssPersons;
|
||||||
import cn.axzo.nanopart.ess.server.ess.support.EssSupport;
|
import cn.axzo.nanopart.ess.server.ess.support.EssSupport;
|
||||||
import cn.axzo.nanopart.ess.server.ess.support.PersonProfiles;
|
import cn.axzo.nanopart.ess.server.ess.support.PersonProfiles;
|
||||||
|
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -36,10 +39,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static java.util.Collections.emptyList;
|
|
||||||
import static java.util.function.Function.identity;
|
|
||||||
import static java.util.stream.Collectors.groupingBy;
|
import static java.util.stream.Collectors.groupingBy;
|
||||||
import static java.util.stream.Collectors.toMap;
|
|
||||||
import static java.util.stream.Collectors.toSet;
|
import static java.util.stream.Collectors.toSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -102,8 +102,7 @@ public class QueryService {
|
|||||||
personIds.add(sealPerson.getAuthorizedByPersonId());
|
personIds.add(sealPerson.getAuthorizedByPersonId());
|
||||||
});
|
});
|
||||||
// ess person
|
// ess person
|
||||||
Map<OuAndPersonId, EssPerson> sealPersons = essPersonDao.getByPersonIds(personIds).stream()
|
EssPersons essPersons = EssPersons.wrap(essPersonDao.getByPersonIds(personIds));
|
||||||
.collect(toMap(p -> OuAndPersonId.create(p.getOuId(), p.getPersonId()), identity()));
|
|
||||||
// person profile
|
// person profile
|
||||||
PersonProfiles personProfiles = PersonProfiles.wrap(
|
PersonProfiles personProfiles = PersonProfiles.wrap(
|
||||||
essSupport.getPersonProfiles(Lists.newArrayList(personIds)));
|
essSupport.getPersonProfiles(Lists.newArrayList(personIds)));
|
||||||
@ -113,17 +112,16 @@ public class QueryService {
|
|||||||
essOrgAndSeals.add(orgAndSeal);
|
essOrgAndSeals.add(orgAndSeal);
|
||||||
orgAndSeal.setOrg(BeanMapper.copyBean(org, EssOrgInfo.class));
|
orgAndSeal.setOrg(BeanMapper.copyBean(org, EssOrgInfo.class));
|
||||||
orgAndSeal.getOrg().setOrgAuthorized(org.isAuthorized());
|
orgAndSeal.getOrg().setOrgAuthorized(org.isAuthorized());
|
||||||
List<EssSeal> seals = ouId2Seals.getOrDefault(org.getOuId(), emptyList());
|
List<EssSeal> seals = ouId2Seals.getOrDefault(org.getOuId(), Collections.emptyList());
|
||||||
orgAndSeal.setSeals(BeanMapper.copyList(seals, EssSealInfo.class));
|
orgAndSeal.setSeals(BeanMapper.copyList(seals, EssSealInfo.class));
|
||||||
for (EssSealInfo sealInfo : orgAndSeal.getSeals()) {
|
for (EssSealInfo sealInfo : orgAndSeal.getSeals()) {
|
||||||
List<EssSealPerson> persons = essSealId2Persons.getOrDefault(sealInfo.getEssSealId(), emptyList());
|
List<EssSealPerson> persons = essSealId2Persons.getOrDefault(sealInfo.getEssSealId(), Collections.emptyList());
|
||||||
for (EssSealPerson sealPerson : persons) {
|
for (EssSealPerson sealPerson : persons) {
|
||||||
EssPerson essPerson = sealPersons.get(OuAndPersonId.create(
|
EssPerson essPerson = essPersons.getOrThrow(OuAndPersonId.create(
|
||||||
sealPerson.getOuId(), sealPerson.getPersonId()));
|
sealPerson.getOuId(), sealPerson.getPersonId()));
|
||||||
if (essPerson.getState() == EssPersonState.RESIGNED)
|
if (essPerson.getState() == EssPersonState.RESIGNED)
|
||||||
continue;
|
continue;
|
||||||
EssSealPersonInfo sealPersonInfo = BeanMapper.copyBean(sealPerson, EssSealPersonInfo.class);
|
EssSealPersonInfo sealPersonInfo = BeanMapper.copyBean(sealPerson, EssSealPersonInfo.class);
|
||||||
sealInfo.addAuthorizedPerson(sealPersonInfo);
|
|
||||||
sealPersonInfo.setSuperAdmin(org.isSuperAdmin(sealPerson.getPersonId()));
|
sealPersonInfo.setSuperAdmin(org.isSuperAdmin(sealPerson.getPersonId()));
|
||||||
sealPersonInfo.setSealAuthorized(sealPerson.getIsAuthorized().isYes());
|
sealPersonInfo.setSealAuthorized(sealPerson.getIsAuthorized().isYes());
|
||||||
sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized());
|
sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized());
|
||||||
@ -133,10 +131,46 @@ public class QueryService {
|
|||||||
sealPersonInfo.setPersonName(person == null ? "" : person.getRealName());
|
sealPersonInfo.setPersonName(person == null ? "" : person.getRealName());
|
||||||
PersonProfileDto authorizedBy = personProfiles.findOrNull(sealPerson.getPersonId());
|
PersonProfileDto authorizedBy = personProfiles.findOrNull(sealPerson.getPersonId());
|
||||||
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
|
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
|
||||||
|
sealInfo.addSealPerson(sealPersonInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return essOrgAndSeals;
|
return essOrgAndSeals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<EssSealPersonInfo> getSealPersons(GetSealPersonRequest request) {
|
||||||
|
List<EssSealPerson> sealPersons = essSealPersonDao.get(request.getEssSealId());
|
||||||
|
if (sealPersons.isEmpty())
|
||||||
|
return Collections.emptyList();
|
||||||
|
HashSet<Long> personIds = new HashSet<>();
|
||||||
|
sealPersons.forEach(sealPerson -> {
|
||||||
|
personIds.add(sealPerson.getPersonId());
|
||||||
|
personIds.add(sealPerson.getAuthorizedByPersonId());
|
||||||
|
});
|
||||||
|
EssPersons essPersons = EssPersons.wrap(essPersonDao.getByPersonIds(personIds));
|
||||||
|
PersonProfiles personProfiles = PersonProfiles.wrap(
|
||||||
|
essSupport.getPersonProfiles(Lists.newArrayList(personIds)));
|
||||||
|
EssOrg org = essOrgDao.findOrNull(sealPersons.get(0).getOuId());
|
||||||
|
BizAssertions.assertNotNull(org, "org not found, ouId={}", sealPersons.get(0).getOuId());
|
||||||
|
ArrayList<EssSealPersonInfo> sealPersonsInfo = new ArrayList<>();
|
||||||
|
for (EssSealPerson sealPerson : sealPersons) {
|
||||||
|
EssPerson essPerson = essPersons.getOrThrow(OuAndPersonId.create(
|
||||||
|
sealPerson.getOuId(), sealPerson.getPersonId()));
|
||||||
|
if (essPerson.getState() == EssPersonState.RESIGNED)
|
||||||
|
continue;
|
||||||
|
EssSealPersonInfo sealPersonInfo = BeanMapper.copyBean(sealPerson, EssSealPersonInfo.class);
|
||||||
|
sealPersonInfo.setSuperAdmin(org.isSuperAdmin(sealPerson.getPersonId()));
|
||||||
|
sealPersonInfo.setSealAuthorized(sealPerson.getIsAuthorized().isYes());
|
||||||
|
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.getPersonId());
|
||||||
|
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
|
||||||
|
sealPersonsInfo.add(sealPersonInfo);
|
||||||
|
}
|
||||||
|
return sealPersonsInfo;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@ import cn.axzo.basics.common.BeanMapper;
|
|||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.nanopart.ess.api.EssApi;
|
import cn.axzo.nanopart.ess.api.EssApi;
|
||||||
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.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.AddSealPersonsRequest;
|
||||||
@ -14,6 +15,7 @@ import cn.axzo.nanopart.ess.api.request.GetContractDetailByContractIdRequest;
|
|||||||
import cn.axzo.nanopart.ess.api.request.GetEmbedWebUrlRequest;
|
import cn.axzo.nanopart.ess.api.request.GetEmbedWebUrlRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetOrgAuthStatesRequest;
|
import cn.axzo.nanopart.ess.api.request.GetOrgAuthStatesRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
import cn.axzo.nanopart.ess.api.request.GetPersonAuthStateRequest;
|
||||||
|
import cn.axzo.nanopart.ess.api.request.GetSealPersonRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
|
import cn.axzo.nanopart.ess.api.request.GetSealsRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.GetSignUrlRequest;
|
import cn.axzo.nanopart.ess.api.request.GetSignUrlRequest;
|
||||||
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
||||||
@ -88,6 +90,12 @@ class ApiController implements EssApi {
|
|||||||
return ApiResult.ok(queryService.getOrgEnabledSeals(request));
|
return ApiResult.ok(queryService.getOrgEnabledSeals(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiResult<List<EssSealPersonInfo>> getSealPersons(GetSealPersonRequest request) {
|
||||||
|
log.info("getSealPersons request={}", request);
|
||||||
|
return ApiResult.ok(queryService.getSealPersons(request));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApiResult<Void> addSealPersons(AddSealPersonsRequest request) {
|
public ApiResult<Void> addSealPersons(AddSealPersonsRequest request) {
|
||||||
log.info("addSealPersons request={}", request);
|
log.info("addSealPersons request={}", request);
|
||||||
|
|||||||
@ -0,0 +1,49 @@
|
|||||||
|
package cn.axzo.nanopart.ess.server.ess.domain;
|
||||||
|
|
||||||
|
import cn.axzo.nanopart.ess.server.entity.EssPerson;
|
||||||
|
import cn.axzo.nanopart.ess.server.entity.domain.OuAndPersonId;
|
||||||
|
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author yanglin
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public class EssPersons {
|
||||||
|
|
||||||
|
private final List<EssPerson> persons;
|
||||||
|
|
||||||
|
public static EssPersons wrap(List<EssPerson> persons) {
|
||||||
|
return new EssPersons(persons);
|
||||||
|
}
|
||||||
|
|
||||||
|
public EssPerson getOrThrow(Long personId) {
|
||||||
|
EssPerson person = find(personId).orElse(null);
|
||||||
|
BizAssertions.assertNotNull(person, "person not found, personId={}", personId);
|
||||||
|
return person;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<EssPerson> find(Long personId) {
|
||||||
|
return persons.stream()
|
||||||
|
.filter(p -> p.getId().equals(personId))
|
||||||
|
.findFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
public EssPerson getOrThrow(OuAndPersonId ouAndPersonId) {
|
||||||
|
EssPerson person = find(ouAndPersonId).orElse(null);
|
||||||
|
BizAssertions.assertNotNull(person, "person not found, ouId={}, personId={}",
|
||||||
|
ouAndPersonId.getOuId(), ouAndPersonId.getPersonId());
|
||||||
|
return person;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<EssPerson> find(OuAndPersonId ouAndPersonId) {
|
||||||
|
return persons.stream()
|
||||||
|
.filter(p -> ouAndPersonId.is(p.getOuId(), p.getPersonId()))
|
||||||
|
.findFirst();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user