| | |
| | | public class PartnerAppUserAccessService { |
| | | |
| | | private static final Integer PARTNER_ROLE_TYPE = 2; |
| | | private static final Integer COMPANY_ROLE_TYPE = 5; |
| | | private static final Long IMPOSSIBLE_USER_ID = -1L; |
| | | |
| | | @Resource |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 当前登录账号若为公司账号(roleType=5 且已绑定公司),返回其所属公司ID;非公司账号返回null。 |
| | | */ |
| | | public Integer getCurrentCompanyId() { |
| | | SysUser sysUser = getCurrentSysUser(); |
| | | if (!isCompany(sysUser)) { |
| | | return null; |
| | | } |
| | | return sysUser.getObjectId(); |
| | | } |
| | | |
| | | /** |
| | | * 数据范围强制:公司账号只允许查询本公司数据,覆盖前端传入的公司筛选条件;非公司账号保持原值。 |
| | | */ |
| | | public Integer resolveCompanyFilter(Integer requestCompanyId) { |
| | | Integer currentCompanyId = getCurrentCompanyId(); |
| | | return currentCompanyId != null ? currentCompanyId : requestCompanyId; |
| | | } |
| | | |
| | | /** |
| | | * 公司账号数据归属校验:记录不属于本公司时拒绝操作;非公司账号不做限制。 |
| | | */ |
| | | public void assertCompanyVisible(Integer recordCompanyId) { |
| | | Integer currentCompanyId = getCurrentCompanyId(); |
| | | if (currentCompanyId == null) { |
| | | return; |
| | | } |
| | | if (!Objects.equals(currentCompanyId, recordCompanyId)) { |
| | | throw new ServiceException("无权操作其他公司的数据"); |
| | | } |
| | | } |
| | | |
| | | private boolean isPartner(SysUser sysUser) { |
| | | return sysUser != null && Objects.equals(PARTNER_ROLE_TYPE, sysUser.getRoleType()); |
| | | } |
| | | |
| | | private boolean isCompany(SysUser sysUser) { |
| | | return sysUser != null && Objects.equals(COMPANY_ROLE_TYPE, sysUser.getRoleType()) |
| | | && sysUser.getObjectId() != null; |
| | | } |
| | | |
| | | private List<Long> impossibleUserIds() { |
| | | return Collections.singletonList(IMPOSSIBLE_USER_ID); |
| | | } |