| | |
| | | if (CrmPermissionUtils.isCrmAdmin()) { |
| | | return; |
| | | } |
| | | // 公海允许查看有负责人的客户;只授予读取权限,不影响写入、转移或领取权限。 |
| | | if (CrmBizTypeEnum.CRM_CUSTOMER.getType().equals(bizType) |
| | | && CrmPermissionLevelEnum.isRead(permissionLevel) && isPublicPoolVisible(bizType, bizId)) { |
| | | return; |
| | | } |
| | | // 特殊:没有数据权限的情况,针对 READ 的特殊处理 |
| | | if (CollUtil.isEmpty(bizPermissions)) { |
| | | // 1.1 公海数据,如果没有团队成员,大家也应该有 READ 权限才对 |
| | |
| | | } |
| | | } |
| | | |
| | | // 2. 只考虑自身的权限 |
| | | // 2. 只考虑自身的权限;离职交接完成后,交接人继承离职人对该数据的权限 |
| | | Long userId = getUserId(); |
| | | CrmPermissionDO userPermission = CollUtil.findOne(bizPermissions, permission -> ObjUtil.equal(permission.getUserId(), userId)); |
| | | if (userPermission != null) { |
| | | if (isUserPermissionValid(userPermission, permissionLevel)) { |
| | | CrmPermissionDO userPermission = null; |
| | | for (Long ownerUserId : CrmPermissionUtils.getOwnerUserIds(userId)) { |
| | | CrmPermissionDO candidate = CollUtil.findOne(bizPermissions, |
| | | permission -> ObjUtil.equal(permission.getUserId(), ownerUserId)); |
| | | if (candidate != null && isUserPermissionValid(candidate, permissionLevel)) { |
| | | return; |
| | | } |
| | | userPermission = candidate != null ? candidate : userPermission; |
| | | } |
| | | |
| | | // 3. 商机特殊处理:检查客户团队权限 |