diff --git a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/enums/SignUrlEndpoint.java b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/enums/SignUrlEndpoint.java index dbaeb109..6df661f0 100644 --- a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/enums/SignUrlEndpoint.java +++ b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/enums/SignUrlEndpoint.java @@ -5,5 +5,5 @@ package cn.axzo.nanopart.ess.api.enums; * @author yanglin */ public enum SignUrlEndpoint { - PC, WEIXIN_APP + PC, WEIXIN_APP, H5 } diff --git a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/request/AssignSignUrlRequest.java b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/request/AssignSignUrlRequest.java index b304fbab..a8ecee5d 100644 --- a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/request/AssignSignUrlRequest.java +++ b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/request/AssignSignUrlRequest.java @@ -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; diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java index 53b4261b..f1052bf4 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssClient.java @@ -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)); diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java index 0c8beac4..97583a86 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/EssService.java @@ -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) {