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