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.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.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.GetOrgAuthStatesRequest;
|
||||
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.GetSignUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
||||
@ -73,6 +75,13 @@ public interface EssApi {
|
||||
ApiResult<List<EssOrgAndSealInfo>> getOrgEnabledSeals(
|
||||
@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) {
|
||||
authorizedPersons.add(person);
|
||||
public void addSealPerson(EssSealPersonInfo 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();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
public boolean is(Long ouId, Long personId) {
|
||||
return this.ouId.equals(ouId) && this.personId.equals(personId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
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.request.GetOrgAuthStatesRequest;
|
||||
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.response.GetOrgAuthStatesResponse;
|
||||
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.EssSealPerson;
|
||||
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.PersonProfiles;
|
||||
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -36,10 +39,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
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.toMap;
|
||||
import static java.util.stream.Collectors.toSet;
|
||||
|
||||
/**
|
||||
@ -102,8 +102,7 @@ public class QueryService {
|
||||
personIds.add(sealPerson.getAuthorizedByPersonId());
|
||||
});
|
||||
// ess person
|
||||
Map<OuAndPersonId, EssPerson> sealPersons = essPersonDao.getByPersonIds(personIds).stream()
|
||||
.collect(toMap(p -> OuAndPersonId.create(p.getOuId(), p.getPersonId()), identity()));
|
||||
EssPersons essPersons = EssPersons.wrap(essPersonDao.getByPersonIds(personIds));
|
||||
// person profile
|
||||
PersonProfiles personProfiles = PersonProfiles.wrap(
|
||||
essSupport.getPersonProfiles(Lists.newArrayList(personIds)));
|
||||
@ -113,17 +112,16 @@ public class QueryService {
|
||||
essOrgAndSeals.add(orgAndSeal);
|
||||
orgAndSeal.setOrg(BeanMapper.copyBean(org, EssOrgInfo.class));
|
||||
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));
|
||||
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) {
|
||||
EssPerson essPerson = sealPersons.get(OuAndPersonId.create(
|
||||
EssPerson essPerson = essPersons.getOrThrow(OuAndPersonId.create(
|
||||
sealPerson.getOuId(), sealPerson.getPersonId()));
|
||||
if (essPerson.getState() == EssPersonState.RESIGNED)
|
||||
continue;
|
||||
EssSealPersonInfo sealPersonInfo = BeanMapper.copyBean(sealPerson, EssSealPersonInfo.class);
|
||||
sealInfo.addAuthorizedPerson(sealPersonInfo);
|
||||
sealPersonInfo.setSuperAdmin(org.isSuperAdmin(sealPerson.getPersonId()));
|
||||
sealPersonInfo.setSealAuthorized(sealPerson.getIsAuthorized().isYes());
|
||||
sealPersonInfo.setPersonAuthorized(essPerson.isAuthorized());
|
||||
@ -133,10 +131,46 @@ public class QueryService {
|
||||
sealPersonInfo.setPersonName(person == null ? "" : person.getRealName());
|
||||
PersonProfileDto authorizedBy = personProfiles.findOrNull(sealPerson.getPersonId());
|
||||
sealPersonInfo.setAuthorizedByPersonName(authorizedBy == null ? "" : authorizedBy.getRealName());
|
||||
sealInfo.addSealPerson(sealPersonInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
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.nanopart.ess.api.EssApi;
|
||||
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;
|
||||
@ -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.GetOrgAuthStatesRequest;
|
||||
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.GetSignUrlRequest;
|
||||
import cn.axzo.nanopart.ess.api.request.RemoveSealAuthorizationRequest;
|
||||
@ -88,6 +90,12 @@ class ApiController implements EssApi {
|
||||
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
|
||||
public ApiResult<Void> addSealPersons(AddSealPersonsRequest 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