feat(Sis): 删除入驻员工包括删除授权记录和人像库图片,并调用 E8 平台 API 删除客户信息
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
2025-07-29 23:22:35 +08:00
parent b7fa3cd788
commit ec23e32ed6
6 changed files with 69 additions and 12 deletions

View File

@@ -2,6 +2,8 @@ package org.dromara.sis.api;
import org.dromara.sis.api.domain.RemotePersonAuth; import org.dromara.sis.api.domain.RemotePersonAuth;
import java.util.Collection;
/** /**
* @author lsm * @author lsm
* @apiNote RemoteSisAuth * @apiNote RemoteSisAuth
@@ -12,4 +14,6 @@ public interface RemoteSisAuth {
Boolean personAuth(RemotePersonAuth personAuth); Boolean personAuth(RemotePersonAuth personAuth);
Boolean updatePersonAuth(RemotePersonAuth personAuth); Boolean updatePersonAuth(RemotePersonAuth personAuth);
Boolean deletePersonAuth(Collection<Long> personId, Collection<Long> e8Ids);
} }

View File

@@ -8,6 +8,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.util.Date; import java.util.Date;
/** /**
@@ -24,19 +25,19 @@ public class ResidentPersonBo extends BaseEntity {
/** /**
* 主键id * 主键id
*/ */
@NotNull(message = "主键id不能为空", groups = { EditGroup.class }) @NotNull(message = "主键id不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/** /**
* 用户名称 * 用户名称
*/ */
@NotBlank(message = "用户名称不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "用户名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String userName; private String userName;
/** /**
* 联系电话 * 联系电话
*/ */
@NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "联系电话不能为空", groups = {AddGroup.class, EditGroup.class})
private String phone; private String phone;
/** /**
* 人员类型 * 人员类型
@@ -46,13 +47,13 @@ public class ResidentPersonBo extends BaseEntity {
/** /**
* 性别 * 性别
*/ */
@NotNull(message = "性别不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "性别不能为空", groups = {AddGroup.class, EditGroup.class})
private Long gender; private Long gender;
/** /**
* 证件号 * 证件号
*/ */
@NotBlank(message = "证件号不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "证件号不能为空", groups = {AddGroup.class, EditGroup.class})
private String idCard; private String idCard;
/** /**
@@ -113,7 +114,7 @@ public class ResidentPersonBo extends BaseEntity {
/** /**
* 状态 * 状态
*/ */
private Long state=1L; private Long state = 1L;
/** /**
* 备注 * 备注

View File

@@ -29,6 +29,8 @@ import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 入驻员工Service业务层处理 * 入驻员工Service业务层处理
@@ -172,7 +174,7 @@ public class ResidentPersonServiceImpl implements IResidentPersonService {
// 显式移除e8id // 显式移除e8id
LambdaUpdateWrapper<ResidentPerson> lqw = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<ResidentPerson> lqw = new LambdaUpdateWrapper<>();
lqw.eq(ResidentPerson::getId, update.getId()) lqw.eq(ResidentPerson::getId, update.getId())
.set(ResidentPerson::getEEightId, ""); .set(ResidentPerson::getEEightId, null);
baseMapper.update(lqw); baseMapper.update(lqw);
@@ -246,9 +248,12 @@ public class ResidentPersonServiceImpl implements IResidentPersonService {
.anyMatch(vo -> vo.getState() == 1); // 遇到第一个启用人员立即返回 .anyMatch(vo -> vo.getState() == 1); // 遇到第一个启用人员立即返回
Assert.isTrue(!hasEnabled, "当前存在人员状态为启用,请核对后再试!"); Assert.isTrue(!hasEnabled, "当前存在人员状态为启用,请核对后再试!");
boolean hasE8 = list.stream() Collection<Long> e8Ids = list.stream()
.anyMatch(vo -> vo.getEEightId() != null); // 遇到第一个e8人员立即返回 .map(ResidentPersonVo::getEEightId)
Assert.isTrue(!hasE8, "当前存在人员已下发权限,请删除通行权限后再试!"); .filter(Objects::nonNull)
.toList();
boolean auth = remoteSisAuth.deletePersonAuth(ids, e8Ids);
Assert.isTrue(auth, "删除授权记录失败!");
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }

View File

@@ -7,6 +7,8 @@ import org.dromara.sis.api.RemoteSisAuth;
import org.dromara.sis.api.domain.RemotePersonAuth; import org.dromara.sis.api.domain.RemotePersonAuth;
import org.dromara.sis.service.ISisAuthRecordService; import org.dromara.sis.service.ISisAuthRecordService;
import java.util.Collection;
/** /**
* @author lsm * @author lsm
* @apiNote RemoteSisAuthImpl * @apiNote RemoteSisAuthImpl
@@ -28,4 +30,9 @@ public class RemoteSisAuthImpl implements RemoteSisAuth {
public Boolean updatePersonAuth(RemotePersonAuth personAuth) { public Boolean updatePersonAuth(RemotePersonAuth personAuth) {
return sisAuthRecordService.updateByBo(personAuth); return sisAuthRecordService.updateByBo(personAuth);
} }
@Override
public Boolean deletePersonAuth(Collection<Long> ids, Collection<Long> e8Ids) {
return sisAuthRecordService.deleteByPersonIds(ids, e8Ids);
}
} }

View File

@@ -105,4 +105,13 @@ public interface ISisAuthRecordService {
* @return SisAuthRecordVo * @return SisAuthRecordVo
*/ */
SisAuthRecordVo queryByGroupIdAndPersonId(Long groupId, Long personId); SisAuthRecordVo queryByGroupIdAndPersonId(Long groupId, Long personId);
/**
* 批量删除授权记录
*
* @param ids 入驻员工ids
* @param e8Ids e8id
*/
Boolean deleteByPersonIds(Collection<Long> ids, Collection<Long> e8Ids);
} }

View File

@@ -3,7 +3,6 @@ package org.dromara.sis.service.impl;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.domain.TreeNode; import org.dromara.common.core.domain.TreeNode;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -22,7 +21,6 @@ import org.dromara.sis.domain.vo.SisAccessControlVo;
import org.dromara.sis.domain.vo.SisElevatorInfoVo; import org.dromara.sis.domain.vo.SisElevatorInfoVo;
import org.dromara.sis.domain.vo.SisPersonLibImgVo; import org.dromara.sis.domain.vo.SisPersonLibImgVo;
import org.dromara.sis.sdk.e8.E8PlatformApi; import org.dromara.sis.sdk.e8.E8PlatformApi;
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
import org.dromara.sis.service.*; import org.dromara.sis.service.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo;
@@ -192,6 +190,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
* @return 是否修改成功 * @return 是否修改成功
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(RemotePersonAuth bo) { public Boolean updateByBo(RemotePersonAuth bo) {
LambdaQueryWrapper<SisAuthRecord> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SisAuthRecord> lqw = new LambdaQueryWrapper<>();
lqw.eq(SisAuthRecord::getTargetId, bo.getId()); lqw.eq(SisAuthRecord::getTargetId, bo.getId());
@@ -336,4 +335,36 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
.eq(SisAuthRecord::getTargetId, personId); .eq(SisAuthRecord::getTargetId, personId);
return baseMapper.selectVoOne(lqw); return baseMapper.selectVoOne(lqw);
} }
/**
* 批量删除授权记录
*
* @param ids 入驻员工ids
* @param e8Ids e8id
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteByPersonIds(Collection<Long> ids, Collection<Long> e8Ids) {
LambdaQueryWrapper<SisAuthRecord> lqw = new LambdaQueryWrapper<>();
lqw.in(SisAuthRecord::getTargetId, ids);
boolean flag = baseMapper.delete(lqw) > 0;
Assert.isTrue(flag, "删除授权记录失败");
if (flag) {
List<SisPersonLibImgVo> list = new ArrayList<>();
ids.forEach(id -> {
SisPersonLibImgVo imgVo = sisPersonLibImgService.queryByPersonId(id);
if (imgVo != null) {
list.add(imgVo);
}
});
Collection<Long> imgIds = list.stream().map(SisPersonLibImgVo::getId).toList();
flag = sisPersonLibImgService.deleteWithValidByIds(imgIds, false);
Assert.isTrue(flag, "删除人像库图片失败");
e8Ids.forEach(e8PlatformApi::deleteCustomer);
}
return flag;
}
} }