diff --git a/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteSisAuth.java b/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteSisAuth.java index c8514320..d177bcc8 100644 --- a/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteSisAuth.java +++ b/ruoyi-api/sis-api/src/main/java/org/dromara/sis/api/RemoteSisAuth.java @@ -2,6 +2,8 @@ package org.dromara.sis.api; import org.dromara.sis.api.domain.RemotePersonAuth; +import java.util.Collection; + /** * @author lsm * @apiNote RemoteSisAuth @@ -12,4 +14,6 @@ public interface RemoteSisAuth { Boolean personAuth(RemotePersonAuth personAuth); Boolean updatePersonAuth(RemotePersonAuth personAuth); + + Boolean deletePersonAuth(Collection personId, Collection e8Ids); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ResidentPersonBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ResidentPersonBo.java index 706a9c32..efd5adf6 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ResidentPersonBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/ResidentPersonBo.java @@ -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; /** * 备注 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java index 2c74f403..7ed604b5 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/ResidentPersonServiceImpl.java @@ -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 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 e8Ids = list.stream() + .map(ResidentPersonVo::getEEightId) + .filter(Objects::nonNull) + .toList(); + boolean auth = remoteSisAuth.deletePersonAuth(ids, e8Ids); + Assert.isTrue(auth, "删除授权记录失败!"); } return baseMapper.deleteByIds(ids) > 0; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteSisAuthImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteSisAuthImpl.java index c5573b02..6f96bf02 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteSisAuthImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemoteSisAuthImpl.java @@ -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 ids, Collection e8Ids) { + return sisAuthRecordService.deleteByPersonIds(ids, e8Ids); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java index a3120950..bff61495 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java @@ -105,4 +105,13 @@ public interface ISisAuthRecordService { * @return SisAuthRecordVo */ SisAuthRecordVo queryByGroupIdAndPersonId(Long groupId, Long personId); + + /** + * 批量删除授权记录 + * + * @param ids 入驻员工ids + * @param e8Ids e8id + */ + Boolean deleteByPersonIds(Collection ids, Collection e8Ids); + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java index 129d38db..03c4b4f4 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java @@ -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 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 ids, Collection e8Ids) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(SisAuthRecord::getTargetId, ids); + boolean flag = baseMapper.delete(lqw) > 0; + Assert.isTrue(flag, "删除授权记录失败"); + + if (flag) { + + List list = new ArrayList<>(); + ids.forEach(id -> { + SisPersonLibImgVo imgVo = sisPersonLibImgService.queryByPersonId(id); + if (imgVo != null) { + list.add(imgVo); + } + }); + Collection imgIds = list.stream().map(SisPersonLibImgVo::getId).toList(); + flag = sisPersonLibImgService.deleteWithValidByIds(imgIds, false); + Assert.isTrue(flag, "删除人像库图片失败"); + + e8Ids.forEach(e8PlatformApi::deleteCustomer); + } + return flag; + } }