REQ-3300: 用户离职

This commit is contained in:
yanglin 2025-02-27 11:35:53 +08:00
parent cccf8b6d96
commit c44d7240ed
2 changed files with 63 additions and 64 deletions

View File

@ -1,28 +1,32 @@
package cn.axzo.nanopart.ess.server.ess; package cn.axzo.nanopart.ess.server.ess;
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import static cn.axzo.nanopart.ess.server.ess.EssClient.Func.func;
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO; import static cn.axzo.nanopart.ess.server.utils.BizAssertions.fail;
import cn.axzo.nanopart.ess.api.domain.CreateContractInfo; import static cn.axzo.nanopart.ess.server.utils.IdBuilder.idbuilder;
import cn.axzo.nanopart.ess.api.domain.OrgPerson; import static java.util.stream.Collectors.toList;
import cn.axzo.nanopart.ess.api.domain.contract.Approver;
import cn.axzo.nanopart.ess.api.enums.EssConsoleUrlEndpoint; import java.lang.reflect.Method;
import cn.axzo.nanopart.ess.api.enums.EssEmbedType; import java.util.ArrayList;
import cn.axzo.nanopart.ess.api.utils.YesOrNo; import java.util.Arrays;
import cn.axzo.nanopart.ess.server.dao.EssLogDao; import java.util.Date;
import cn.axzo.nanopart.ess.server.entity.EssLog; import java.util.List;
import cn.axzo.nanopart.ess.server.entity.EssOrg; import java.util.function.Function;
import cn.axzo.nanopart.ess.server.entity.EssPerson; import java.util.regex.Matcher;
import cn.axzo.nanopart.ess.server.entity.EssSeal; import java.util.regex.Pattern;
import cn.axzo.nanopart.ess.server.entity.EssSealPerson;
import cn.axzo.nanopart.ess.server.ess.EssClient.Func.FuncBuilder; import javax.annotation.Resource;
import cn.axzo.nanopart.ess.server.ess.domain.OrgOpenId;
import cn.axzo.nanopart.ess.server.ess.domain.PersonOpenId; import org.apache.commons.collections4.CollectionUtils;
import cn.axzo.nanopart.ess.server.ess.support.EssProps; import org.apache.commons.lang3.StringUtils;
import cn.axzo.nanopart.ess.server.ess.support.EssSupport; import org.springframework.beans.factory.InitializingBean;
import cn.axzo.nanopart.ess.server.ess.support.OrgProfiles; import org.springframework.context.annotation.Bean;
import cn.axzo.nanopart.ess.server.ess.support.PersonProfiles; import org.springframework.stereotype.Component;
import cn.axzo.nanopart.ess.server.utils.BizAssertions; import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.ReflectionUtils;
import com.google.common.base.Throwables; import com.google.common.base.Throwables;
import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException; import com.tencentcloudapi.common.exception.TencentCloudSDKException;
@ -56,32 +60,31 @@ import com.tencentcloudapi.essbasic.v20210526.models.UploadFile;
import com.tencentcloudapi.essbasic.v20210526.models.UploadFilesRequest; import com.tencentcloudapi.essbasic.v20210526.models.UploadFilesRequest;
import com.tencentcloudapi.essbasic.v20210526.models.UploadFilesResponse; import com.tencentcloudapi.essbasic.v20210526.models.UploadFilesResponse;
import com.tencentcloudapi.essbasic.v20210526.models.UserInfo; import com.tencentcloudapi.essbasic.v20210526.models.UserInfo;
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
import cn.axzo.maokai.api.vo.response.OrganizationalUnitVO;
import cn.axzo.nanopart.ess.api.domain.CreateContractInfo;
import cn.axzo.nanopart.ess.api.domain.OrgPerson;
import cn.axzo.nanopart.ess.api.domain.contract.Approver;
import cn.axzo.nanopart.ess.api.enums.EssConsoleUrlEndpoint;
import cn.axzo.nanopart.ess.api.enums.EssEmbedType;
import cn.axzo.nanopart.ess.api.utils.YesOrNo;
import cn.axzo.nanopart.ess.server.dao.EssLogDao;
import cn.axzo.nanopart.ess.server.entity.EssLog;
import cn.axzo.nanopart.ess.server.entity.EssOrg;
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.ess.EssClient.Func.FuncBuilder;
import cn.axzo.nanopart.ess.server.ess.domain.OrgOpenId;
import cn.axzo.nanopart.ess.server.ess.domain.PersonOpenId;
import cn.axzo.nanopart.ess.server.ess.support.EssProps;
import cn.axzo.nanopart.ess.server.ess.support.EssSupport;
import cn.axzo.nanopart.ess.server.ess.support.OrgProfiles;
import cn.axzo.nanopart.ess.server.ess.support.PersonProfiles;
import cn.axzo.nanopart.ess.server.utils.BizAssertions;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.util.ReflectionUtils;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static cn.axzo.nanopart.ess.server.ess.EssClient.Func.func;
import static cn.axzo.nanopart.ess.server.utils.BizAssertions.fail;
import static cn.axzo.nanopart.ess.server.utils.IdBuilder.idbuilder;
import static java.util.stream.Collectors.toList;
/** /**
* @author yanglin * @author yanglin
@ -325,25 +328,19 @@ public class EssClient implements InitializingBean {
.command(() -> manage.CreateSignUrls(request))); .command(() -> manage.CreateSignUrls(request)));
} }
public void setEmployeeResigned(EssPerson superAdmin, List<EssPerson> employees) { public void setEmployeeResigned(EssPerson superAdmin, EssPerson person) {
ArrayList<ProxyOrganizationOperator> operators = new ArrayList<>(); ArrayList<ProxyOrganizationOperator> operators = new ArrayList<>();
for (EssPerson employee : employees) { ProxyOrganizationOperator operator = new ProxyOrganizationOperator();
ProxyOrganizationOperator operator = new ProxyOrganizationOperator(); operators.add(operator);
operators.add(operator); operator.setId(PersonOpenId.create(person).toOpenId());
operator.setId(PersonOpenId.create(employee).toOpenId()); operator.setName(person.getPersonName());
operator.setName(employee.getPersonName());
}
SyncProxyOrganizationOperatorsRequest request = new SyncProxyOrganizationOperatorsRequest(); SyncProxyOrganizationOperatorsRequest request = new SyncProxyOrganizationOperatorsRequest();
request.setAgent(agent(superAdmin)); request.setAgent(agent(superAdmin));
request.setOperatorType("RESIGN"); request.setOperatorType("RESIGN");
request.setProxyOrganizationOperators(operators.toArray(new ProxyOrganizationOperator[0])); request.setProxyOrganizationOperators(operators.toArray(new ProxyOrganizationOperator[0]));
exec(func() // exec(func() //
.context("SyncProxyOrganizationOperators") // .context("SyncProxyOrganizationOperators") //
.subject(employees.stream() // .subject(person.getPersonId() + "") //
.map(EssPerson::getPersonId) //
.map(String::valueOf) //
.reduce((a, b) -> a + "," + b) //
.orElse("")) //
.request(request) // .request(request) //
.command(() -> manage.SyncProxyOrganizationOperators(request))); .command(() -> manage.SyncProxyOrganizationOperators(request)));
} }

View File

@ -1,6 +1,13 @@
package cn.axzo.nanopart.ess.server.ess.mq; package cn.axzo.nanopart.ess.server.ess.mq;
import java.util.Collections;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventHandler; import cn.axzo.framework.rocketmq.EventHandler;
@ -11,13 +18,8 @@ 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.ess.EssClient; import cn.axzo.nanopart.ess.server.ess.EssClient;
import cn.axzo.nanopart.ess.server.ess.OrgManager; import cn.axzo.nanopart.ess.server.ess.OrgManager;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.util.Collections;
/** /**
* @author yanglin * @author yanglin
@ -69,7 +71,7 @@ public class PersonResignHandler implements EventHandler, InitializingBean {
return; return;
} }
EssPerson superAdmin = orgManager.getSuperAdminOrThrow(event.getOuId()); EssPerson superAdmin = orgManager.getSuperAdminOrThrow(event.getOuId());
essClient.setEmployeeResigned(superAdmin, Collections.singletonList(person)); essClient.setEmployeeResigned(superAdmin, person);
orgManager.setOrgPersonResign(person); orgManager.setOrgPersonResign(person);
log.info("set person resigned: {}", JSON.toJSONString(person)); log.info("set person resigned: {}", JSON.toJSONString(person));
} }