mirror of https://gitee.com/topiam/eiam
优化门户端我的应用接口
commit
d5478994b6
|
@ -17,24 +17,36 @@
|
|||
*/
|
||||
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.app.AppEntity;
|
||||
import cn.topiam.employee.common.repository.app.impl.mapper.AppEntityMapper;
|
||||
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 com.google.common.collect.Lists;
|
||||
|
||||
import cn.topiam.employee.common.entity.account.OrganizationMemberEntity;
|
||||
import cn.topiam.employee.common.entity.account.UserGroupMemberEntity;
|
||||
import cn.topiam.employee.common.entity.account.query.UserGroupMemberListQuery;
|
||||
import cn.topiam.employee.common.entity.app.po.AppGroupPO;
|
||||
import cn.topiam.employee.common.entity.app.query.AppGroupQuery;
|
||||
import cn.topiam.employee.common.repository.account.OrganizationMemberRepository;
|
||||
import cn.topiam.employee.common.repository.account.UserGroupMemberRepository;
|
||||
import cn.topiam.employee.common.repository.app.AppGroupRepositoryCustomized;
|
||||
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
|
||||
|
@ -105,7 +117,26 @@ public class AppGroupRepositoryCustomizedImpl implements AppGroupRepositoryCusto
|
|||
*/
|
||||
@Override
|
||||
public List<AppGroupPO> getAppGroupList(Long userId, AppGroupQuery query) {
|
||||
return null;
|
||||
//@formatter:on
|
||||
Map<String, Object> paramMap = new HashMap<>(16);
|
||||
paramMap.put("subjectIds", getAccessPolicysubjectIdsByUserId(userId));
|
||||
//@formatter:off
|
||||
StringBuilder builder = new StringBuilder("SELECT `group`.id_, `group`.name_, `group`.code_, `group`.type_, `group`.create_time, `group`.remark_, IFNULL( ass.app_count, 0) AS app_count FROM app_group `group` LEFT JOIN(SELECT aga.group_id, COUNT(*) AS `app_count` FROM app_group_association aga INNER JOIN app ON aga.app_id = app.id_ AND app.is_deleted = 0 INNER JOIN app_access_policy app_acce ON app.id_ = app_acce.app_id and app_acce.is_deleted = 0 WHERE aga.is_deleted = 0 and (app_acce.subject_id IN (:subjectIds) OR app.authorization_type = '"+ALL_ACCESS.getCode()+ "') GROUP BY aga.group_id ) ass ON `group`.id_ = ass.group_id WHERE is_deleted = '0'");
|
||||
//分组名称
|
||||
if (StringUtils.isNoneBlank(query.getName())) {
|
||||
builder.append(" AND `group`.name_ like '%").append(query.getName()).append("%'");
|
||||
}
|
||||
//分组编码
|
||||
if (StringUtils.isNoneBlank(query.getCode())) {
|
||||
builder.append(" AND `group`.code_ like '%").append(query.getCode()).append("%'");
|
||||
}
|
||||
//分组类型
|
||||
if (ObjectUtils.isNotEmpty(query.getType())) {
|
||||
builder.append(" AND `group`.type_ like '%").append(query.getType().getCode()).append("%'");
|
||||
}
|
||||
builder.append(" ORDER BY `group`.create_time DESC");
|
||||
return namedParameterJdbcTemplate.query(builder.toString(),paramMap, new AppGroupPoMapper());
|
||||
//@formatter:off
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -117,8 +148,59 @@ public class AppGroupRepositoryCustomizedImpl implements AppGroupRepositoryCusto
|
|||
*/
|
||||
@Override
|
||||
public Long getAppCount(String groupId, Long userId) {
|
||||
return null;
|
||||
//@formatter:on
|
||||
Map<String, Object> paramMap = new HashMap<>(16);
|
||||
paramMap.put("subjectIds", getAccessPolicysubjectIdsByUserId(userId));
|
||||
//@formatter:off
|
||||
StringBuilder builder = new StringBuilder("SELECT COUNT(DISTINCT app.id_) 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
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据用户ID获取访问策略主体ID
|
||||
*
|
||||
* @param userId {@link Long}
|
||||
* @return {@link List}
|
||||
*/
|
||||
private List<Object> getAccessPolicysubjectIdsByUserId(Long userId){
|
||||
//@formatter:on
|
||||
List<Object> list = Lists.newArrayList();
|
||||
//当前用户加入的用户组Id
|
||||
List<Long> groupIdList = userGroupMemberRepository.findByUserId(userId).stream()
|
||||
.map(UserGroupMemberEntity::getGroupId).toList();
|
||||
//当前用户加入的组织id
|
||||
List<String> orgId = organizationMemberRepository.findAllByUserId(userId).stream()
|
||||
.map(OrganizationMemberEntity::getOrgId).toList();
|
||||
list.addAll(groupIdList);
|
||||
list.addAll(orgId);
|
||||
list.add(userId);
|
||||
return list;
|
||||
//@formatter:off
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* JdbcTemplate
|
||||
*/
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
|
||||
|
||||
/**
|
||||
* NamedParameterJdbcTemplate
|
||||
*/
|
||||
private final NamedParameterJdbcTemplate namedParameterJdbcTemplate;
|
||||
|
||||
/**
|
||||
* UserGroupMemberRepository
|
||||
*/
|
||||
private final UserGroupMemberRepository userGroupMemberRepository;
|
||||
|
||||
/**
|
||||
* OrganizationMemberRepository
|
||||
*/
|
||||
private final OrganizationMemberRepository organizationMemberRepository;
|
||||
}
|
||||
|
|
|
@ -59,24 +59,14 @@ public class AppRepositoryCustomizedImpl implements AppRepositoryCustomized {
|
|||
* 获取我的应用列表
|
||||
*
|
||||
* @param userId {@link Long}
|
||||
* @param query {@link GetAppListQuery}
|
||||
* @param query {@link GetAppListQuery}
|
||||
* @param pageable {@link Pageable}
|
||||
* @return {@link List}
|
||||
*/
|
||||
@Override
|
||||
public Page<AppEntity> getAppList(Long userId, GetAppListQuery query, Pageable pageable) {
|
||||
List<Object> paramList = Lists.newArrayList();
|
||||
//当前用户加入的用户组Id
|
||||
List<Long> groupIdList = userGroupMemberRepository.findByUserId(userId).stream()
|
||||
.map(UserGroupMemberEntity::getGroupId).toList();
|
||||
//当前用户加入的组织id
|
||||
List<String> orgId = organizationMemberRepository.findAllByUserId(userId).stream()
|
||||
.map(OrganizationMemberEntity::getOrgId).toList();
|
||||
paramList.addAll(groupIdList);
|
||||
paramList.addAll(orgId);
|
||||
paramList.add(userId);
|
||||
Map<String, Object> paramMap = new HashMap<>(16);
|
||||
paramMap.put("subjectIds", paramList);
|
||||
paramMap.put("subjectIds", getAccessPolicysubjectIdsByUserId(userId));
|
||||
//@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()+"')");
|
||||
//用户名
|
||||
|
@ -147,23 +137,53 @@ public class AppRepositoryCustomizedImpl implements AppRepositoryCustomized {
|
|||
*/
|
||||
@Override
|
||||
public Long getAppCount(Long userId) {
|
||||
return null;
|
||||
//@formatter:on
|
||||
Map<String, Object> paramMap = new HashMap<>(16);
|
||||
paramMap.put("subjectIds", getAccessPolicysubjectIdsByUserId(userId));
|
||||
StringBuilder builder = new StringBuilder(
|
||||
"SELECT COUNT(DISTINCT app.id_) FROM app LEFT JOIN app_access_policy app_acce ON app.id_ = app_acce.app_id AND app_acce.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() + "')");
|
||||
return namedParameterJdbcTemplate.queryForObject(builder.toString(), paramMap, Long.class);
|
||||
//@formatter:off
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据用户ID获取访问策略主体ID
|
||||
*
|
||||
* @param userId {@link Long}
|
||||
* @return {@link List}
|
||||
*/
|
||||
private List<Object> getAccessPolicysubjectIdsByUserId(Long userId){
|
||||
//@formatter:on
|
||||
List<Object> list = Lists.newArrayList();
|
||||
//当前用户加入的用户组Id
|
||||
List<Long> groupIdList = userGroupMemberRepository.findByUserId(userId).stream()
|
||||
.map(UserGroupMemberEntity::getGroupId).toList();
|
||||
//当前用户加入的组织id
|
||||
List<String> orgId = organizationMemberRepository.findAllByUserId(userId).stream()
|
||||
.map(OrganizationMemberEntity::getOrgId).toList();
|
||||
list.addAll(groupIdList);
|
||||
list.addAll(orgId);
|
||||
list.add(userId);
|
||||
return list;
|
||||
//@formatter:off
|
||||
}
|
||||
|
||||
/**
|
||||
* JdbcTemplate
|
||||
*/
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
|
||||
/**
|
||||
* NamedParameterJdbcTemplate
|
||||
*/
|
||||
private final NamedParameterJdbcTemplate namedParameterJdbcTemplate;
|
||||
private final NamedParameterJdbcTemplate namedParameterJdbcTemplate;
|
||||
|
||||
/**
|
||||
* UserGroupMemberRepository
|
||||
*/
|
||||
private final UserGroupMemberRepository userGroupMemberRepository;
|
||||
private final UserGroupMemberRepository userGroupMemberRepository;
|
||||
|
||||
/**
|
||||
* OrganizationMemberRepository
|
||||
|
|
|
@ -24,9 +24,6 @@ import java.util.List;
|
|||
import cn.topiam.employee.common.enums.app.AppProtocol;
|
||||
import cn.topiam.employee.common.enums.app.AppType;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import lombok.Data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
|
|
Loading…
Reference in New Issue