REQ-3581: 保留超级管理员列表
This commit is contained in:
parent
936e01f387
commit
a49b69f6cb
@ -12,8 +12,6 @@ public class GetSignUrlResponse {
|
||||
|
||||
/**
|
||||
* 有效期为5分钟.
|
||||
* pc: 二维码地址
|
||||
* app: 微信小程序地址
|
||||
*/
|
||||
private String url;
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.nanopart.ess.server.dao;
|
||||
import cn.axzo.nanopart.ess.api.utils.YesOrNo;
|
||||
import cn.axzo.nanopart.ess.server.entity.EssOrg;
|
||||
import cn.axzo.nanopart.ess.server.mapper.EssOrgMapper;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Repository;
|
||||
@ -54,4 +55,13 @@ public class EssOrgDao extends ServiceImpl<EssOrgMapper, EssOrg> {
|
||||
.update();
|
||||
}
|
||||
|
||||
public void updateExt(EssOrg org) {
|
||||
if (org.getRecordExt() == null)
|
||||
return;
|
||||
lambdaUpdate()
|
||||
.eq(EssOrg::getId, org.getId())
|
||||
.set(EssOrg::getRecordExt, JSON.toJSONString(org.getRecordExt()))
|
||||
.update();
|
||||
}
|
||||
|
||||
}
|
||||
@ -9,6 +9,9 @@ import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@ -48,6 +51,16 @@ public class EssOrg extends BaseEntity<EssOrg> {
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
private RecordExt recordExt;
|
||||
|
||||
public RecordExt getOrCreateExt() {
|
||||
if (recordExt == null)
|
||||
recordExt = new RecordExt();
|
||||
return recordExt;
|
||||
}
|
||||
|
||||
public boolean isPotentialSuperAdmin(Long personId) {
|
||||
return getOrCreateExt().isPotentialSuperAdmin(personId);
|
||||
}
|
||||
|
||||
public boolean isAuthorized() {
|
||||
return isAuthorized.isYes();
|
||||
}
|
||||
@ -63,6 +76,18 @@ public class EssOrg extends BaseEntity<EssOrg> {
|
||||
|
||||
@Setter @Getter
|
||||
public static class RecordExt {
|
||||
|
||||
private Set<Long> historySuperAdmins;
|
||||
|
||||
public void addHistorySuperAdmin(Long personId) {
|
||||
if (historySuperAdmins == null)
|
||||
historySuperAdmins = new HashSet<>();
|
||||
historySuperAdmins.add(personId);
|
||||
}
|
||||
|
||||
public boolean isPotentialSuperAdmin(Long personId) {
|
||||
return historySuperAdmins != null && historySuperAdmins.contains(personId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -210,8 +210,8 @@ public class EssService {
|
||||
}
|
||||
|
||||
private String getContractPDFUrlFromEss(EssContract contract) {
|
||||
EssPerson creator = orgManager.getSuperAdminOrThrow(contract.getCreatorOuId());
|
||||
return essClient.getContractPDFUrl(creator, contract.getEssContractId());
|
||||
EssPerson superAdmin = orgManager.getSuperAdminOrThrow(contract.getCreatorOuId());
|
||||
return essClient.getContractPDFUrl(superAdmin, contract.getEssContractId());
|
||||
}
|
||||
|
||||
}
|
||||
@ -80,12 +80,24 @@ public class OrgManager {
|
||||
return essPerson;
|
||||
}
|
||||
|
||||
public void setOrgAuthorized(Long ouId, Long superAdminPersonId) {
|
||||
essOrgDao.setOrgAuthorized(ouId, superAdminPersonId);
|
||||
@Transactional
|
||||
public void setOrgAuthorized(Long ouId, Long superAdmin) {
|
||||
essOrgDao.setOrgAuthorized(ouId, superAdmin);
|
||||
addSuperAdmin(ouId, superAdmin);
|
||||
}
|
||||
|
||||
public void changeSuperAdmin(Long ouId, Long personId) {
|
||||
essOrgDao.changeSuperAdmin(ouId, personId);
|
||||
@Transactional
|
||||
public void changeSuperAdmin(Long ouId, Long superAdmin) {
|
||||
essOrgDao.changeSuperAdmin(ouId, superAdmin);
|
||||
addSuperAdmin(ouId, superAdmin);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void addSuperAdmin(Long ouId, Long superAdmin) {
|
||||
EssOrg org = essOrgDao.findForUpdateOrNull(ouId);
|
||||
if (org == null) return;
|
||||
org.getOrCreateExt().addHistorySuperAdmin(superAdmin);
|
||||
essOrgDao.updateExt(org);
|
||||
}
|
||||
|
||||
public EssPerson getSuperAdminOrThrow(Long ouId) {
|
||||
|
||||
@ -77,8 +77,8 @@ public class PersonResignListener extends BaseListener
|
||||
return;
|
||||
}
|
||||
EssPerson superAdmin = orgManager.getSuperAdminOrThrow(event.getOuId());
|
||||
boolean isSuperAdmin = superAdmin.getPersonId().equals(event.getPersonId());
|
||||
essLogDao.log("personResigned", subject, "event", event, "isSuperAdmin", isSuperAdmin);
|
||||
boolean isSuperAdmin = org.isPotentialSuperAdmin(event.getPersonId());
|
||||
essLogDao.log("personResigned", subject, "event", event, "isPotentialSuperAdmin", isSuperAdmin);
|
||||
if (isSuperAdmin) {
|
||||
log.info("ignore super admin resigned: {}", JSON.toJSONString(person));
|
||||
return;
|
||||
|
||||
@ -45,6 +45,8 @@ import static cn.axzo.nanopart.ess.api.request.CallbackRequest.SealOperate;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
/**
|
||||
* @see <a href="https://qian.tencent.com/developers/partner/callback_types_staffs">腾讯回调</a>
|
||||
*
|
||||
* @author yanglin
|
||||
*/
|
||||
@Slf4j
|
||||
|
||||
Loading…
Reference in New Issue
Block a user