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

@@ -8,6 +8,7 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
/**
@@ -24,19 +25,19 @@ public class ResidentPersonBo extends BaseEntity {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
@NotNull(message = "主键id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 用户名称
*/
@NotBlank(message = "用户名称不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "用户名称不能为空", groups = {AddGroup.class, EditGroup.class})
private String userName;
/**
* 联系电话
*/
@NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "联系电话不能为空", groups = {AddGroup.class, EditGroup.class})
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;
/**
* 证件号
*/
@NotBlank(message = "证件号不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "证件号不能为空", groups = {AddGroup.class, EditGroup.class})
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.Map;
import java.util.Collection;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 入驻员工Service业务层处理
@@ -172,7 +174,7 @@ public class ResidentPersonServiceImpl implements IResidentPersonService {
// 显式移除e8id
LambdaUpdateWrapper<ResidentPerson> lqw = new LambdaUpdateWrapper<>();
lqw.eq(ResidentPerson::getId, update.getId())
.set(ResidentPerson::getEEightId, "");
.set(ResidentPerson::getEEightId, null);
baseMapper.update(lqw);
@@ -246,9 +248,12 @@ public class ResidentPersonServiceImpl implements IResidentPersonService {
.anyMatch(vo -> vo.getState() == 1); // 遇到第一个启用人员立即返回
Assert.isTrue(!hasEnabled, "当前存在人员状态为启用,请核对后再试!");
boolean hasE8 = list.stream()
.anyMatch(vo -> vo.getEEightId() != null); // 遇到第一个e8人员立即返回
Assert.isTrue(!hasE8, "当前存在人员已下发权限,请删除通行权限后再试!");
Collection<Long> e8Ids = list.stream()
.map(ResidentPersonVo::getEEightId)
.filter(Objects::nonNull)
.toList();
boolean auth = remoteSisAuth.deletePersonAuth(ids, e8Ids);
Assert.isTrue(auth, "删除授权记录失败!");
}
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.service.ISisAuthRecordService;
import java.util.Collection;
/**
* @author lsm
* @apiNote RemoteSisAuthImpl
@@ -28,4 +30,9 @@ public class RemoteSisAuthImpl implements RemoteSisAuth {
public Boolean updatePersonAuth(RemotePersonAuth 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
*/
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 org.apache.dubbo.config.annotation.DubboReference;
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.PageQuery;
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.SisPersonLibImgVo;
import org.dromara.sis.sdk.e8.E8PlatformApi;
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
import org.dromara.sis.service.*;
import org.springframework.stereotype.Service;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
@@ -192,6 +190,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(RemotePersonAuth bo) {
LambdaQueryWrapper<SisAuthRecord> lqw = new LambdaQueryWrapper<>();
lqw.eq(SisAuthRecord::getTargetId, bo.getId());
@@ -336,4 +335,36 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
.eq(SisAuthRecord::getTargetId, personId);
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;
}
}