diff --git a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/EssSealInfo.java b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/EssSealInfo.java index dac41eb3..95a76b18 100644 --- a/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/EssSealInfo.java +++ b/ess/ess-api/src/main/java/cn/axzo/nanopart/ess/api/domain/EssSealInfo.java @@ -25,6 +25,11 @@ public class EssSealInfo { */ private String essSealId; + /** + * 印章名称 + */ + private String name; + /** * 印章类型. OFFICIAL: 公章, CONTRACT: 合同专用章, FINANCE: 财务专用章, PERSONNEL: 人事专用章, INVOICE: 发票专用章, LEGAL_PERSON_SEAL: 法定代表人章, OTHER: 其它 */ diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssSeal.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssSeal.java index 2aececb5..97b50250 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssSeal.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/entity/EssSeal.java @@ -29,6 +29,11 @@ public class EssSeal extends BaseEntity { */ private String essSealId; + /** + * 印章名称 + */ + private String name; + /** * 印章状态. CREATE: 创建, DELETED: 删除, DISABLED: 停用, ENABLED: 启用 */ 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 0da9ed32..b1d11b5d 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 @@ -49,6 +49,8 @@ import com.tencentcloudapi.essbasic.v20210526.models.ChannelCreateSealPolicyRequ import com.tencentcloudapi.essbasic.v20210526.models.ChannelDeleteSealPoliciesRequest; import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeEmployeesRequest; import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeEmployeesResponse; +import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeOrganizationSealsRequest; +import com.tencentcloudapi.essbasic.v20210526.models.ChannelDescribeOrganizationSealsResponse; import com.tencentcloudapi.essbasic.v20210526.models.ComponentLimit; import com.tencentcloudapi.essbasic.v20210526.models.CreateConsoleLoginUrlRequest; import com.tencentcloudapi.essbasic.v20210526.models.CreateConsoleLoginUrlResponse; @@ -60,6 +62,7 @@ import com.tencentcloudapi.essbasic.v20210526.models.DescribeResourceUrlsByFlows import com.tencentcloudapi.essbasic.v20210526.models.FillApproverInfo; import com.tencentcloudapi.essbasic.v20210526.models.FlowApproverInfo; import com.tencentcloudapi.essbasic.v20210526.models.FlowForwardInfo; +import com.tencentcloudapi.essbasic.v20210526.models.OccupiedSeal; import com.tencentcloudapi.essbasic.v20210526.models.ProxyOrganizationOperator; import com.tencentcloudapi.essbasic.v20210526.models.SyncProxyOrganizationOperatorsRequest; import com.tencentcloudapi.essbasic.v20210526.models.UploadFile; @@ -156,6 +159,18 @@ public class EssClient implements InitializingBean { return response.getWebUrl(); } + public OccupiedSeal getSealInfo(EssPerson superAdmin, String sealId) { + ChannelDescribeOrganizationSealsRequest request = new ChannelDescribeOrganizationSealsRequest(); + request.setAgent(agent(superAdmin)); + request.setSealId(sealId); + ChannelDescribeOrganizationSealsResponse response = exec(func() // + .context("ChannelDescribeOrganizationSeals") // + .subject(sealId) // + .request(request) // + .command(() -> manage.ChannelDescribeOrganizationSeals(request))); + return response.getSeals()[0]; + } + public void addSealAuthorization(EssPerson superAdmin, EssSeal seal, EssSealPerson sealPerson) { ChannelCreateSealPolicyRequest request = new ChannelCreateSealPolicyRequest(); request.setAgent(agent(superAdmin)); diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java index 2663a3ab..63d7d631 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/OrgManager.java @@ -120,13 +120,14 @@ public class OrgManager { // !! seal @BizTransactional - public boolean maybeAddSeal(Long ouId, String essSealId, EssSealType type) { + public boolean maybeAddSeal(Long ouId, String essSealId, EssSealType type, String name) { EssSeal seal = essSealDao.findByEssSealId(essSealId).orElse(null); if (seal != null) return false; seal = new EssSeal(); seal.setOuId(ouId); seal.setEssSealId(essSealId); + seal.setName(name); seal.setState(EssSealState.CREATE); seal.setType(type); try { diff --git a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java index 717e2a3e..b9d6e037 100644 --- a/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java +++ b/ess/ess-server/src/main/java/cn/axzo/nanopart/ess/server/ess/controller/CallbackController.java @@ -21,6 +21,7 @@ import org.springframework.transaction.support.TransactionTemplate; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; +import com.tencentcloudapi.essbasic.v20210526.models.OccupiedSeal; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; @@ -39,8 +40,10 @@ import cn.axzo.nanopart.ess.server.dao.EssLogDao; import cn.axzo.nanopart.ess.server.dao.EssSealPersonDao; import cn.axzo.nanopart.ess.server.entity.EssContract; import cn.axzo.nanopart.ess.server.entity.EssLog; +import cn.axzo.nanopart.ess.server.entity.EssPerson; import cn.axzo.nanopart.ess.server.entity.EssSealPerson; import cn.axzo.nanopart.ess.server.ess.ContractManager; +import cn.axzo.nanopart.ess.server.ess.EssClient; import cn.axzo.nanopart.ess.server.ess.EssService; import cn.axzo.nanopart.ess.server.ess.OrgManager; import cn.axzo.nanopart.ess.server.ess.domain.OrgOpenId; @@ -69,6 +72,7 @@ class CallbackController implements EssCallbackApi, InitializingBean { private final EssSealPersonDao essSealPersonDao; private final TransactionTemplate transactionTemplate; private final EssSupport essSupport; + private final EssClient essClient; private final Map handlers = new HashMap<>(); @Override @@ -121,8 +125,10 @@ class CallbackController implements EssCallbackApi, InitializingBean { PersonOpenId operator = PersonOpenId.parse(operate.getProxyOperatorOpenId()); PersonOpenId authorized = StringUtils.isBlank(operate.getAuthorizedOperatorOpenId()) ? PersonOpenId.none() : PersonOpenId.parse(operate.getAuthorizedOperatorOpenId()); + EssPerson superAdmin = orgManager.getSuperAdminOrThrow(operator.getOuId()); + OccupiedSeal sealInfo = essClient.getSealInfo(superAdmin, operate.getSealId()); boolean sealCreated = orgManager.maybeAddSeal(ou.getOuId(), operate.getSealId(), - EssSealType.fromEssCode(operate.getSealType())); + EssSealType.fromEssCode(operate.getSealType()), sealInfo.getSealName()); // 1. 印章创建人会自动获得授权; 2. 避免miss create事件 if (sealCreated) { orgManager.maybeAddPersonAndSetSealAuthorized(operate.getSealId(), operator.getPersonId());