REQ-3581: fix bug

This commit is contained in:
yanglin 2025-03-04 18:44:02 +08:00
parent 263a3e70be
commit bf3c256e8a
4 changed files with 34 additions and 6 deletions

View File

@ -5,5 +5,5 @@ package cn.axzo.nanopart.ess.api.enums;
* @author yanglin
*/
public enum SignUrlEndpoint {
PC, WEIXIN_APP
PC, WEIXIN_APP, H5
}

View File

@ -37,7 +37,7 @@ public class AssignSignUrlRequest implements OrgPerson {
private Long personId;
/**
* PC: 电脑端, WEIXIN_APP: 小程序
* PC: 电脑端, WEIXIN_APP: 小程序, H5: h5
*/
@NotNull(message = "endpoint不能为空")
private SignUrlEndpoint endpoint;

View File

@ -41,6 +41,8 @@ import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateEmbedWebUrlRes
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateFlowApproversRequest;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateFlowByFilesRequest;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateFlowByFilesResponse;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateFlowSignUrlRequest;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateFlowSignUrlResponse;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateOrganizationBatchSignUrlRequest;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateOrganizationBatchSignUrlResponse;
import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateSealPolicyRequest;
@ -327,7 +329,7 @@ public class EssClient implements InitializingBean {
public String createPcSignUrl(EssPerson superAdmin, String essContractId, EssPerson signPerson) {
ChannelCreateOrganizationBatchSignUrlRequest request = new ChannelCreateOrganizationBatchSignUrlRequest();
request.setAgent(agent(superAdmin));
request.setAgent(agent(signPerson));
request.setFlowIds(new String[] { essContractId });
request.setOpenId(PersonOpenId.create(signPerson).toOpenId());
ChannelCreateOrganizationBatchSignUrlResponse response = exec(func() //
@ -362,6 +364,25 @@ public class EssClient implements InitializingBean {
return response.getSignUrlInfos()[0].getSignUrl();
}
public String channelCreateFlowSignUrl(EssPerson superAdmin, String essContractId, EssPerson signPerson) {
FlowApproverInfo approver = new FlowApproverInfo();
approver.setOpenId(PersonOpenId.create(signPerson).toOpenId());
approver.setOrganizationOpenId(OrgOpenId.ofPerson(signPerson).toOpenId());
ChannelCreateFlowSignUrlRequest request = new ChannelCreateFlowSignUrlRequest();
request.setAgent(agent(superAdmin));
request.setFlowId(essContractId);
request.setFlowApproverInfos(new FlowApproverInfo[]{approver});
ChannelCreateFlowSignUrlResponse response = exec(func() //
.context("ChannelCreateFlowSignUrl") //
.subject(idbuilder() //
.append(essContractId) //
.append(signPerson.getPersonId()) //
.build()) //
.request(request) //
.command(() -> manage.ChannelCreateFlowSignUrl(request)));
return response.getFlowApproverUrlInfos()[0].getSignUrl();
}
public void forward(EssPerson superAdmin, String essContractId, String recipientId, EssPerson signPerson) {
CreateFlowForwardsRequest request = new CreateFlowForwardsRequest();
request.setAgent(agent(superAdmin));

View File

@ -152,11 +152,18 @@ public class EssService {
essContractDao.updateAssigment(contract);
}
EssPerson superAdmin = contractManager.getContractSuperAdmin(contract);
if (request.getEndpoint() != SignUrlEndpoint.PC)
if (request.getEndpoint() == SignUrlEndpoint.PC) {
essClient.createFlowApprovers(superAdmin, contract.getEssContractId(), request.getRecipientId(),
signPerson);
return essClient.createPcSignUrl(superAdmin, contract.getEssContractId(), signPerson);
}
else if (request.getEndpoint() == SignUrlEndpoint.WEIXIN_APP)
return essClient.createSignUrls(superAdmin, contract.getEssContractId(), request.getRecipientId(),
signPerson);
essClient.createFlowApprovers(superAdmin, contract.getEssContractId(), request.getRecipientId(), signPerson);
return essClient.createPcSignUrl(superAdmin, contract.getEssContractId(), signPerson);
else if (request.getEndpoint() == SignUrlEndpoint.H5) {
return essClient.channelCreateFlowSignUrl(superAdmin, contract.getEssContractId(), signPerson);
} else
throw BizAssertions.fail("不支持的签署端点: {}", request.getEndpoint());
}
public String getContractPDFUrl(String essContractId) {