REQ-3581: 备份
This commit is contained in:
parent
9f27605b1a
commit
d01c5e4314
@ -68,7 +68,7 @@ public class EssContractDao extends ServiceImpl<EssContractMapper, EssContract>
|
|||||||
.update();
|
.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOssKey(EssContract contract, String fileKey) {
|
public void setOssFileKey(EssContract contract, String fileKey) {
|
||||||
lambdaUpdate()
|
lambdaUpdate()
|
||||||
.eq(EssContract::getId, contract.getId())
|
.eq(EssContract::getId, contract.getId())
|
||||||
.set(EssContract::getOssFileKey, fileKey)
|
.set(EssContract::getOssFileKey, fileKey)
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
package cn.axzo.nanopart.ess.server.dao;
|
package cn.axzo.nanopart.ess.server.dao;
|
||||||
|
|
||||||
|
import cn.axzo.nanopart.ess.api.utils.YesOrNo;
|
||||||
import cn.axzo.nanopart.ess.server.entity.EssLog;
|
import cn.axzo.nanopart.ess.server.entity.EssLog;
|
||||||
import cn.axzo.nanopart.ess.server.mapper.EssLogMapper;
|
import cn.axzo.nanopart.ess.server.mapper.EssLogMapper;
|
||||||
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.google.common.base.Throwables;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,9 +19,17 @@ public class EssLogDao extends ServiceImpl<EssLogMapper, EssLog> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void log(String context, Object subject, Object... logContents) {
|
public void log(String context, Object subject, Object... logContents) {
|
||||||
|
log(null, context, subject, logContents);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void log(Exception exception, String context, Object subject, Object... logContents) {
|
||||||
EssLog log = new EssLog();
|
EssLog log = new EssLog();
|
||||||
log.setContext(context);
|
log.setContext(context);
|
||||||
log.setSubject(String.valueOf(subject));
|
log.setSubject(String.valueOf(subject));
|
||||||
|
if (exception != null) {
|
||||||
|
log.setIsError(YesOrNo.YES);
|
||||||
|
log.addLogContent("exception", Throwables.getStackTraceAsString(exception));
|
||||||
|
}
|
||||||
if (logContents != null && logContents.length > 0) {
|
if (logContents != null && logContents.length > 0) {
|
||||||
BizAssertions.assertTrue(logContents.length % 2 == 0, "logContents must be even");
|
BizAssertions.assertTrue(logContents.length % 2 == 0, "logContents must be even");
|
||||||
for (int i = 0; i < logContents.length; i += 2) {
|
for (int i = 0; i < logContents.length; i += 2) {
|
||||||
|
|||||||
@ -144,7 +144,9 @@ public class EssContract extends BaseEntity<EssContract> {
|
|||||||
.findFirst();
|
.findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAllSignPersonPreset() {
|
public boolean isApproversPreset() {
|
||||||
|
if (approvers == null)
|
||||||
|
return false;
|
||||||
return approvers.stream().allMatch(Approver::isSignPersonPresent);
|
return approvers.stream().allMatch(Approver::isSignPersonPresent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +0,0 @@
|
|||||||
package cn.axzo.nanopart.ess.server.entity.domain;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author yanglin
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
public class OrgRecipientId {
|
|
||||||
private Long ouId;
|
|
||||||
private String recipientId;
|
|
||||||
}
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package cn.axzo.nanopart.ess.server.dao.domain;
|
package cn.axzo.nanopart.ess.server.entity.domain;
|
||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -85,7 +85,11 @@ public class EssService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void essAddSealAuthorization(AddSealAuthorizationRequest request) {
|
public void essAddSealAuthorization(AddSealAuthorizationRequest request) {
|
||||||
essLogDao.logRequest("essAddSealAuthorization", request.getEssSealId(), request);
|
String subject = IdBuilder.builder()
|
||||||
|
.append(request.getEssSealId())
|
||||||
|
.append(request.getPersonId())
|
||||||
|
.build();
|
||||||
|
essLogDao.logRequest("essAddSealAuthorization", subject, request);
|
||||||
SealAndPerson sealAndPerson = getSealAndPersonOrThrow(request);
|
SealAndPerson sealAndPerson = getSealAndPersonOrThrow(request);
|
||||||
EssSealPerson sealPerson = sealAndPerson.getSealPerson();
|
EssSealPerson sealPerson = sealAndPerson.getSealPerson();
|
||||||
if (sealPerson.getIsAuthorized().isYes())
|
if (sealPerson.getIsAuthorized().isYes())
|
||||||
@ -99,7 +103,11 @@ public class EssService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void essRemoveSealAuthorization(RemoveSealAuthorizationRequest request) {
|
public void essRemoveSealAuthorization(RemoveSealAuthorizationRequest request) {
|
||||||
essLogDao.logRequest("essRemoveSealAuthorization", request.getEssSealId(), request);
|
String subject = IdBuilder.builder()
|
||||||
|
.append(request.getEssSealId())
|
||||||
|
.append(request.getPersonId())
|
||||||
|
.build();
|
||||||
|
essLogDao.logRequest("essRemoveSealAuthorization", subject, request);
|
||||||
SealAndPerson sealAndPerson = getSealAndPersonOrThrow(request);
|
SealAndPerson sealAndPerson = getSealAndPersonOrThrow(request);
|
||||||
if (sealAndPerson.getSealPerson().getIsAuthorized().isNo())
|
if (sealAndPerson.getSealPerson().getIsAuthorized().isNo())
|
||||||
return;
|
return;
|
||||||
@ -120,7 +128,12 @@ public class EssService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getContractSignUrl(GetSignUrlRequest request) {
|
public String getContractSignUrl(GetSignUrlRequest request) {
|
||||||
essLogDao.logRequest("getContractSignUrl", request.getEssContractId(), request);
|
String subject = IdBuilder.builder()
|
||||||
|
.append(request.getEssContractId())
|
||||||
|
.append(request.getOuId())
|
||||||
|
.append(request.getPersonId())
|
||||||
|
.build();
|
||||||
|
essLogDao.logRequest("getContractSignUrl", subject, request);
|
||||||
EssPerson signPerson = essPersonDao.findOrNull(request);
|
EssPerson signPerson = essPersonDao.findOrNull(request);
|
||||||
BizAssertions.assertNotNull(signPerson, "当前签署人员未加入单位, 无法签署");
|
BizAssertions.assertNotNull(signPerson, "当前签署人员未加入单位, 无法签署");
|
||||||
EssContract contract = essContractDao.getOrThrow(request.getEssContractId());
|
EssContract contract = essContractDao.getOrThrow(request.getEssContractId());
|
||||||
@ -137,7 +150,7 @@ public class EssService {
|
|||||||
? signUrlInfo.getSignQrcodeUrl()
|
? signUrlInfo.getSignQrcodeUrl()
|
||||||
: signUrlInfo.getSignUrl();
|
: signUrlInfo.getSignUrl();
|
||||||
};
|
};
|
||||||
if (contract.isAllSignPersonPreset())
|
if (contract.isApproversPreset())
|
||||||
return signUrlFun.apply(null);
|
return signUrlFun.apply(null);
|
||||||
BizAssertions.assertFalse(StringUtils.isBlank(request.getRecipientId()),
|
BizAssertions.assertFalse(StringUtils.isBlank(request.getRecipientId()),
|
||||||
"存在动态签署人的情况下, recipientId不能为空");
|
"存在动态签署人的情况下, recipientId不能为空");
|
||||||
@ -173,17 +186,19 @@ public class EssService {
|
|||||||
|
|
||||||
public void maybeUploadContractToOss(EssContract contract) {
|
public void maybeUploadContractToOss(EssContract contract) {
|
||||||
essSupport.asyncExec(() -> {
|
essSupport.asyncExec(() -> {
|
||||||
|
EssContract c = essContractDao.findOrNull(contract.getEssContractId());
|
||||||
|
if (c == null || !c.shouldDownloadContract() || StringUtils.isNotBlank(c.getOssFileKey()))
|
||||||
|
return;
|
||||||
try {
|
try {
|
||||||
EssContract c = essContractDao.findOrNull(contract.getEssContractId());
|
|
||||||
if (c == null || !c.shouldDownloadContract() || StringUtils.isNotBlank(c.getOssFileKey()))
|
|
||||||
return;
|
|
||||||
String pdfUrl = getContractPDFUrlFromEss(c);
|
String pdfUrl = getContractPDFUrlFromEss(c);
|
||||||
String fileName = String.format("%s.pdf", c.getContractName());
|
String fileName = String.format("%s.pdf", c.getContractName());
|
||||||
String fileKey = ossService.uploadToOss(pdfUrl, fileName);
|
String fileKey = ossService.uploadToOss(pdfUrl, fileName);
|
||||||
essContractDao.setOssKey(c, fileKey);
|
essContractDao.setOssFileKey(c, fileKey);
|
||||||
|
essLogDao.log("uploadContractToOss", c.getEssContractId());
|
||||||
log.info("上传合同到OSS成功, essContractId={}", c.getEssContractId());
|
log.info("上传合同到OSS成功, essContractId={}", c.getEssContractId());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("上传合同到OSS失败", e);
|
log.warn("上传合同到OSS失败", e);
|
||||||
|
essLogDao.log(e, "uploadContractToOss", c.getEssContractId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import cn.axzo.nanopart.ess.server.dao.EssOrgDao;
|
|||||||
import cn.axzo.nanopart.ess.server.dao.EssPersonDao;
|
import cn.axzo.nanopart.ess.server.dao.EssPersonDao;
|
||||||
import cn.axzo.nanopart.ess.server.entity.EssOrg;
|
import cn.axzo.nanopart.ess.server.entity.EssOrg;
|
||||||
import cn.axzo.nanopart.ess.server.entity.EssPerson;
|
import cn.axzo.nanopart.ess.server.entity.EssPerson;
|
||||||
|
import cn.axzo.nanopart.ess.server.utils.IdBuilder;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -65,15 +66,17 @@ public class PersonResignListener extends BaseListener
|
|||||||
EssOrg org = essOrgDao.findOrNull(event.getOuId());
|
EssOrg org = essOrgDao.findOrNull(event.getOuId());
|
||||||
if (org == null) return;
|
if (org == null) return;
|
||||||
EssPerson person = essPersonDao.findOrNull(event.getOuId(), event.getPersonId());
|
EssPerson person = essPersonDao.findOrNull(event.getOuId(), event.getPersonId());
|
||||||
|
String subject = IdBuilder.builder()
|
||||||
|
.append(event.getOuId())
|
||||||
|
.append(event.getPersonId())
|
||||||
|
.build();
|
||||||
if (person == null) {
|
if (person == null) {
|
||||||
essLogDao.log("personResigned", event.getOuId(),
|
essLogDao.log("personResigned", subject, "event", event, "isAuthorized", false);
|
||||||
"event", event, "isAuthorized", false);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
EssPerson superAdmin = orgManager.getSuperAdminOrThrow(event.getOuId());
|
EssPerson superAdmin = orgManager.getSuperAdminOrThrow(event.getOuId());
|
||||||
boolean isSuperAdmin = superAdmin.getPersonId().equals(event.getPersonId());
|
boolean isSuperAdmin = superAdmin.getPersonId().equals(event.getPersonId());
|
||||||
essLogDao.log("personResigned", person.getOuId(),
|
essLogDao.log("personResigned", subject, "event", event, "isSuperAdmin", isSuperAdmin);
|
||||||
"event", event, "isSuperAdmin", isSuperAdmin);
|
|
||||||
if (isSuperAdmin) {
|
if (isSuperAdmin) {
|
||||||
log.info("ignore super admin resigned: {}", JSON.toJSONString(person));
|
log.info("ignore super admin resigned: {}", JSON.toJSONString(person));
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import cn.axzo.nanopart.ess.server.dao.EssOrgDao;
|
|||||||
import cn.axzo.nanopart.ess.server.dao.EssPersonDao;
|
import cn.axzo.nanopart.ess.server.dao.EssPersonDao;
|
||||||
import cn.axzo.nanopart.ess.server.dao.EssSealDao;
|
import cn.axzo.nanopart.ess.server.dao.EssSealDao;
|
||||||
import cn.axzo.nanopart.ess.server.dao.EssSealPersonDao;
|
import cn.axzo.nanopart.ess.server.dao.EssSealPersonDao;
|
||||||
import cn.axzo.nanopart.ess.server.dao.domain.OuAndPersonId;
|
import cn.axzo.nanopart.ess.server.entity.domain.OuAndPersonId;
|
||||||
import cn.axzo.nanopart.ess.server.entity.EssOrg;
|
import cn.axzo.nanopart.ess.server.entity.EssOrg;
|
||||||
import cn.axzo.nanopart.ess.server.entity.EssPerson;
|
import cn.axzo.nanopart.ess.server.entity.EssPerson;
|
||||||
import cn.axzo.nanopart.ess.server.entity.EssSeal;
|
import cn.axzo.nanopart.ess.server.entity.EssSeal;
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package cn.axzo.nanopart.ess.server.ess.support;
|
|||||||
|
|
||||||
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||||
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
|
||||||
import cn.axzo.basics.profiles.dto.request.QueryPersonProfileByIdOrPhoneDto;
|
|
||||||
import cn.axzo.maokai.api.client.OrganizationalUnitApi;
|
import cn.axzo.maokai.api.client.OrganizationalUnitApi;
|
||||||
import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery;
|
import cn.axzo.maokai.api.vo.request.OrganizationalUnitQuery;
|
||||||
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
|
||||||
@ -41,7 +40,7 @@ public class EssSupport {
|
|||||||
|
|
||||||
private final ExecutorService executor = new ThreadPoolExecutor(1, 5,
|
private final ExecutorService executor = new ThreadPoolExecutor(1, 5,
|
||||||
0L, TimeUnit.MILLISECONDS,
|
0L, TimeUnit.MILLISECONDS,
|
||||||
new ArrayBlockingQueue<>(200),
|
new ArrayBlockingQueue<>(1024),
|
||||||
new NamedThreadFactory(EssSupport.class.getName(), false),
|
new NamedThreadFactory(EssSupport.class.getName(), false),
|
||||||
new CallerRunsPolicy());
|
new CallerRunsPolicy());
|
||||||
|
|
||||||
@ -93,13 +92,6 @@ public class EssSupport {
|
|||||||
return person;
|
return person;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<PersonProfileDto> findPersonByPhone(String phone) {
|
|
||||||
QueryPersonProfileByIdOrPhoneDto request = new QueryPersonProfileByIdOrPhoneDto();
|
|
||||||
request.setPhones(Collections.singletonList(phone));
|
|
||||||
List<PersonProfileDto> profiles = assertResponse(userProfileServiceApi.findPersonProfileListByIdOrPhone(request));
|
|
||||||
return CollectionUtils.isEmpty(profiles) ? Optional.empty() : Optional.of(profiles.get(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
public Optional<PersonProfileDto> findPersonProfile(OrgPerson orgPerson) {
|
public Optional<PersonProfileDto> findPersonProfile(OrgPerson orgPerson) {
|
||||||
CommonResponse<PersonProfileDto> response = userProfileServiceApi.getPersonProfile(orgPerson.getPersonId());
|
CommonResponse<PersonProfileDto> response = userProfileServiceApi.getPersonProfile(orgPerson.getPersonId());
|
||||||
if (response.getCode() == 404)
|
if (response.getCode() == 404)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user