组织操作限制优化

v1.4.1
Parker 5 years ago
parent b0e0c1cfaf
commit 502e386ce0

@ -35,10 +35,13 @@ import org.opsli.modulars.system.SystemMsg;
import org.opsli.modulars.system.org.entity.SysOrg; import org.opsli.modulars.system.org.entity.SysOrg;
import org.opsli.modulars.system.org.mapper.SysOrgMapper; import org.opsli.modulars.system.org.mapper.SysOrgMapper;
import org.opsli.modulars.system.org.service.ISysOrgService; import org.opsli.modulars.system.org.service.ISysOrgService;
import org.opsli.modulars.system.user.entity.SysUser;
import org.opsli.modulars.system.user.service.IUserOrgRefService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -60,7 +63,6 @@ public class SysOrgServiceImpl extends CrudServiceImpl<SysOrgMapper, SysOrg, Sys
@Autowired(required = false) @Autowired(required = false)
private SysOrgMapper mapper; private SysOrgMapper mapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public SysOrgModel insert(SysOrgModel model) { public SysOrgModel insert(SysOrgModel model) {
@ -119,13 +121,8 @@ public class SysOrgServiceImpl extends CrudServiceImpl<SysOrgMapper, SysOrg, Sys
// 如果 TenantId 发生变化 则需要更改 下级数据 租户ID // 如果 TenantId 发生变化 则需要更改 下级数据 租户ID
if(sysOrgModel != null && !sysOrgModel.getTenantId().equals( if(sysOrgModel != null && !sysOrgModel.getTenantId().equals(
model.getTenantId())){ model.getTenantId())){
QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>(); // 如果有组织还在被引用 则不允许操作该组织
queryWrapper.eq("org_id", sysOrgModel.getId()); this.validationUsedByDel(Collections.singletonList(sysOrgModel.getId()));
Integer countTmp = mapper.hasUse(queryWrapper);
if(countTmp > 0){
// 组织机构已被引用,不能删除
throw new ServiceException(SystemMsg.EXCEPTION_ORG_USE_TENANT);
}
// 如果没有被引用 则逐级修改 // 如果没有被引用 则逐级修改
this.updateTenantByParentId(sysOrgModel.getId(), model.getTenantId()); this.updateTenantByParentId(sysOrgModel.getId(), model.getTenantId());
@ -144,13 +141,8 @@ public class SysOrgServiceImpl extends CrudServiceImpl<SysOrgMapper, SysOrg, Sys
return false; return false;
} }
QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>(); // 如果有组织还在被引用 则不允许操作该组织
queryWrapper.eq("org_id", id); this.validationUsedByDel(Collections.singletonList(id));
Integer count = mapper.hasUse(queryWrapper);
if(count > 0){
// 组织机构已被引用,不能删除
throw new ServiceException(SystemMsg.EXCEPTION_ORG_USE);
}
ret = super.delete(id); ret = super.delete(id);
// 删除子数据 // 删除子数据
@ -166,13 +158,8 @@ public class SysOrgServiceImpl extends CrudServiceImpl<SysOrgMapper, SysOrg, Sys
return false; return false;
} }
QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>(); // 如果有组织还在被引用 则不允许操作该组织
queryWrapper.in("org_id", Convert.toList(String.class, ids)); this.validationUsedByDel(Convert.toList(String.class, ids));
Integer count = mapper.hasUse(queryWrapper);
if(count > 0){
// 组织机构已被引用,不能删除
throw new ServiceException(SystemMsg.EXCEPTION_ORG_USE);
}
ret = super.deleteAll(ids); ret = super.deleteAll(ids);
// 删除子数据 // 删除子数据
@ -265,4 +252,26 @@ public class SysOrgServiceImpl extends CrudServiceImpl<SysOrgMapper, SysOrg, Sys
return mapper.hasChildren(wrapper); return mapper.hasChildren(wrapper);
} }
/**
*
* @param orgIdList ID
*/
public void validationUsedByDel(List<String> orgIdList){
if(CollUtil.isEmpty(orgIdList)){
return;
}
// 如果有租户还在被引用 则不允许删除该租户
QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
queryWrapper.in("org_id",
orgIdList
);
Integer count = mapper.hasUse(queryWrapper);
if(count !=null && count > 0){
// 该租户正在被其他用户绑定,无法操作
throw new ServiceException(SystemMsg.EXCEPTION_TENANT_USED_DEL);
}
}
} }

Loading…
Cancel
Save