liyong
10 天以前 88e384da863bb2f7324cb1e1474885df3b7cce91
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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<CrmPermissionCreateReqBO> 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<Long> 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<CrmPermissionDO> getPermissionListByBiz(Integer bizType, Long bizId);
 
    /**
     * 获取数据权限列表,通过 数据类型 x 某个数据
     *
     * @param bizType 数据类型,关联 {@link CrmBizTypeEnum}
     * @param bizIds  数据编号,关联 {@link CrmBizTypeEnum} 对应模块 DO#getId()
     * @return Crm 数据权限列表
     */
    List<CrmPermissionDO> getPermissionListByBiz(Integer bizType, Collection<Long> bizIds);
 
    /**
     * 获取用户参与的模块数据列表
     *
     * @param bizType 模块类型
     * @param userId  用户编号
     * @return 模块数据列表
     */
    List<CrmPermissionDO> 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);
 
}