package cn.iocoder.yudao.module.crm.service.permission; import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionSaveReqVO; import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; import jakarta.validation.Valid; import java.util.Collection; import java.util.List; /** * crm 数据权限 Service 接口 * * @author HUIHUI */ public interface CrmPermissionService { /** * 创建数据权限 * * @param reqVO 创建信息 * @param userId 用户编号 */ void createPermission(CrmPermissionSaveReqVO reqVO, Long userId); /** * 创建数据权限 * * @param createReqBO 创建信息 * @return 编号 */ Long createPermission(@Valid CrmPermissionCreateReqBO createReqBO); /** * 创建数据权限 * * @param createReqBOs 创建信息 */ void createPermissionBatch(@Valid List createReqBOs); /** * 更新数据权限 * * @param updateReqVO 更新信息 */ void updatePermission(CrmPermissionUpdateReqVO updateReqVO); /** * 数据权限转移 * * @param crmPermissionTransferReqBO 数据权限转移请求 */ void transferPermission(@Valid CrmPermissionTransferReqBO crmPermissionTransferReqBO); /** * 删除数据权限 * * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} * @param bizId 数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId() * @param level 数据权限级别,关联 {@link CrmPermissionLevelEnum} */ void deletePermission(Integer bizType, Long bizId, Integer level); /** * 删除数据权限 * * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} * @param bizId 数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId() */ void deletePermission(Integer bizType, Long bizId); /** * 批量删除数据权限 * * @param ids 权限编号 * @param userId 用户编号 */ void deletePermissionBatch(Collection ids, Long userId); /** * 删除指定用户数据权限 * * @param id 权限编号 * @param userId 用户编号 */ void deleteSelfPermission(Long id, Long userId); /** * 获取数据权限列表,通过 数据类型 x 某个数据 * * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} * @param bizId 数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId() * @return Crm 数据权限列表 */ List getPermissionListByBiz(Integer bizType, Long bizId); /** * 获取数据权限列表,通过 数据类型 x 某个数据 * * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} * @param bizIds 数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId() * @return Crm 数据权限列表 */ List getPermissionListByBiz(Integer bizType, Collection bizIds); /** * 获取用户参与的模块数据列表 * * @param bizType 模块类型 * @param userId 用户编号 * @return 模块数据列表 */ List getPermissionListByBizTypeAndUserId(Integer bizType, Long userId); /** * 校验是否有指定数据的操作权限 * * @param bizType 数据类型,关联 {@link CrmBizTypeEnum} * @param bizId 数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId() * @param userId 用户编号 * @param level 权限级别 * @return 是否有权限 */ boolean hasPermission(Integer bizType, Long bizId, Long userId, CrmPermissionLevelEnum level); }