From 14f8cd24fb1327c29824413d100d41d1274c18d4 Mon Sep 17 00:00:00 2001 From: shao1121353141 <> Date: Tue, 26 Sep 2023 18:33:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppGroupRepositoryCustomizedImpl.java | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/eiam-common/src/main/java/cn/topiam/employee/common/repository/app/impl/AppGroupRepositoryCustomizedImpl.java b/eiam-common/src/main/java/cn/topiam/employee/common/repository/app/impl/AppGroupRepositoryCustomizedImpl.java index dabb08a4..3af199f2 100644 --- a/eiam-common/src/main/java/cn/topiam/employee/common/repository/app/impl/AppGroupRepositoryCustomizedImpl.java +++ b/eiam-common/src/main/java/cn/topiam/employee/common/repository/app/impl/AppGroupRepositoryCustomizedImpl.java @@ -17,15 +17,25 @@ */ package cn.topiam.employee.common.repository.app.impl; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; +import cn.topiam.employee.common.entity.account.OrganizationMemberEntity; +import cn.topiam.employee.common.entity.account.UserGroupMemberEntity; +import cn.topiam.employee.common.entity.app.AppEntity; +import cn.topiam.employee.common.repository.account.OrganizationMemberRepository; +import cn.topiam.employee.common.repository.account.UserGroupMemberRepository; +import cn.topiam.employee.common.repository.app.impl.mapper.AppEntityMapper; +import com.google.common.collect.Lists; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Repository; import cn.topiam.employee.common.entity.account.query.UserGroupMemberListQuery; @@ -36,6 +46,8 @@ import cn.topiam.employee.common.repository.app.impl.mapper.AppGroupPoMapper; import lombok.AllArgsConstructor; +import static cn.topiam.employee.common.enums.app.AuthorizationType.ALL_ACCESS; + /** * @author TopIAM * Created by support@topiam.cn on 2023/9/8 19:20 @@ -117,8 +129,46 @@ public class AppGroupRepositoryCustomizedImpl implements AppGroupRepositoryCusto */ @Override public Long getAppCount(String groupId, Long userId) { - return null; + //@formatter:on + List paramList = Lists.newArrayList(); + //当前用户加入的用户组Id + List groupIdList = userGroupMemberRepository.findByUserId(userId).stream() + .map(UserGroupMemberEntity::getGroupId).toList(); + //当前用户加入的组织id + List orgId = organizationMemberRepository.findAllByUserId(userId).stream() + .map(OrganizationMemberEntity::getOrgId).toList(); + paramList.addAll(groupIdList); + paramList.addAll(orgId); + paramList.add(userId); + Map paramMap = new HashMap<>(16); + paramMap.put("subjectIds", paramList); + //@formatter:off + StringBuilder builder = new StringBuilder("SELECT DISTINCT app.* FROM app LEFT JOIN app_access_policy app_acce ON app.id_ = app_acce.app_id AND app_acce.is_deleted = '0' LEFT JOIN app_group_association ass ON app.id_ = ass.app_id AND ass.is_deleted = '0' WHERE app.is_enabled = 1 AND app.is_deleted = '0' AND (app_acce.subject_id IN (:subjectIds) OR app.authorization_type = '"+ALL_ACCESS.getCode()+"')"); + builder.append(" AND ass.group_id = ").append(groupId); + return namedParameterJdbcTemplate.queryForObject(builder.toString(), paramMap, + Long.class); + //@formatter:off } + + /** + * JdbcTemplate + */ private final JdbcTemplate jdbcTemplate; + + + /** + * NamedParameterJdbcTemplate + */ + private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + /** + * UserGroupMemberRepository + */ + private final UserGroupMemberRepository userGroupMemberRepository; + + /** + * OrganizationMemberRepository + */ + private final OrganizationMemberRepository organizationMemberRepository; }