问题知识库-列表数据查询权限。

问题知识库展示权限-处理数据方法。
This commit is contained in:
wangzhijiang
2022-08-08 14:26:52 +08:00
parent 7e2c00a840
commit 0a2f273472
6 changed files with 97 additions and 0 deletions
@@ -53,6 +53,7 @@ public class ProblemKnowledgeBaseEOController extends JeroController<ProblemKnow
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseEO, req.getParameterMap());
this.problemKnowledgeBaseEOService.createQueryPermission(queryWrapper);
queryWrapper.orderByDesc("create_time");
Page<ProblemKnowledgeBaseEO> page = new Page<ProblemKnowledgeBaseEO>(pageNo, pageSize);
IPage<ProblemKnowledgeBaseEO> pageList = problemKnowledgeBaseEOService.page(page, queryWrapper);
@@ -4,6 +4,7 @@ import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -70,5 +71,8 @@ public class ProblemKnowledgeBaseUserEO implements Serializable {
@Excel(name = "用户id", width = 15)
@ApiModelProperty(value = "用户id")
private java.lang.String userId;
/**用户姓名*/
@TableField(exist = false)
private String userName;
}
@@ -1,5 +1,6 @@
package com.jero.modules.problemKnowledgeBase.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseEO;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -68,4 +69,10 @@ public interface IProblemKnowledgeBaseEOService extends IService<ProblemKnowledg
* @param cut
*/
void disposeData(List<ProblemKnowledgeBaseEO> datas,String cut);
/**
* 创建查询权限
* @param queryWrapper
*/
void createQueryPermission(QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper);
}
@@ -58,4 +58,11 @@ public interface IProblemKnowledgeBaseUserEOService extends IService<ProblemKnow
* @return
*/
List<ProblemKnowledgeBaseUserEO> queryList();
/**
* 处理数据
* @param datas
* @param cut
*/
void disposeData(List<ProblemKnowledgeBaseUserEO> datas,String cut);
}
@@ -129,6 +129,7 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
public List<ProblemKnowledgeBaseEO> queryList(ProblemKnowledgeBaseEO problemKnowledgeBaseEO,
HttpServletRequest req) {
QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseEO, req.getParameterMap());
this.createQueryPermission(queryWrapper);
queryWrapper.orderByDesc("create_time");
List<ProblemKnowledgeBaseEO> result = this.list(queryWrapper);
this.disposeData(result,problemKnowledgeBaseEO.getCut());
@@ -182,6 +183,12 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
collectQueryWrapper.lambda().in(ProblemKnowledgeBaseCollectEO::getProblemKnowledgeBaseId,probleKnowledgeBaseIdList);
List<ProblemKnowledgeBaseCollectEO> collectEOList = this.problemKnowledgeBaseCollectEOService.list(collectQueryWrapper);
//查询出数据的所有的权限用户
QueryWrapper<ProblemKnowledgeBaseUserEO> permissionUserQueryWrapper = new QueryWrapper<>();
permissionUserQueryWrapper.lambda().in(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId,probleKnowledgeBaseIdList);
List<ProblemKnowledgeBaseUserEO> permissionUserEOList = this.problemKnowledgeBaseUserEOService.list(permissionUserQueryWrapper);
this.problemKnowledgeBaseUserEOService.disposeData(permissionUserEOList,cut);
datas.forEach(data -> {
if(StringUtils.isNotEmpty(data.getShowPermissions())){
data.setShowPermissions_dicText(ShowPermissionsEnum.getTextByValue(data.getShowPermissions(),cut));
@@ -239,7 +246,42 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
if(CollectionUtils.isNotEmpty(problemKnowledgeBaseCollectEOS)){
data.setCollectEO(problemKnowledgeBaseCollectEOS.get(0));
}
List<ProblemKnowledgeBaseUserEO> permissionUserEOS = permissionUserEOList.stream().filter(permissionUserEO -> {
boolean flag = false;
if (StringUtils.equals(data.getId(), permissionUserEO.getProblemKnowledgeBaseId())) {
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(permissionUserEOS)){
data.setPermissionUserList(permissionUserEOS);
}
});
}
}
@Override
public void createQueryPermission(QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper) {
/**
* 查询权限
* 公开:所有人都可以看到。
* 私密:只有配置了的权限用户可以看到。
*/
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
QueryWrapper<ProblemKnowledgeBaseUserEO> userPermissionQueryWrapper = new QueryWrapper<>();
userPermissionQueryWrapper.lambda().eq(ProblemKnowledgeBaseUserEO::getUserId,currentUser.getId());
List<ProblemKnowledgeBaseUserEO> problemKnowledgeBaseUserEOList = problemKnowledgeBaseUserEOService.list(userPermissionQueryWrapper);
List<String> problemKnowledgeBaseIdList = problemKnowledgeBaseUserEOList.stream().map(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId).distinct().collect(Collectors.toList());
queryWrapper.lambda().and(query -> {
query.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.OPEN.getValue()).
or(o -> {
o.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.PRIVACY.getValue());
o.in(ProblemKnowledgeBaseEO::getId,problemKnowledgeBaseIdList);
});
});
}
}
@@ -3,9 +3,16 @@ package com.jero.modules.problemKnowledgeBase.service.impl;
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseUserEO;
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseUserEOMapper;
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseUserEOService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Date;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -20,6 +27,9 @@ import org.springframework.transaction.annotation.Transactional;
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
public class ProblemKnowledgeBaseUserEOServiceImpl extends ServiceImpl<ProblemKnowledgeBaseUserEOMapper, ProblemKnowledgeBaseUserEO> implements IProblemKnowledgeBaseUserEOService {
@Autowired
private ISysUserService sysUserService;
/**
* 保存
*
@@ -89,4 +99,30 @@ public class ProblemKnowledgeBaseUserEOServiceImpl extends ServiceImpl<ProblemKn
public List<ProblemKnowledgeBaseUserEO> queryList() {
return list();
}
@Override
public void disposeData(List<ProblemKnowledgeBaseUserEO> datas, String cut) {
if(CollectionUtils.isNotEmpty(datas)){
List<String> userIdList = datas.stream().map(ProblemKnowledgeBaseUserEO::getUserId).distinct().collect(Collectors.toList());
List<SysUser> userList = sysUserService.querySysUserListByIdList(userIdList);
datas.forEach(data -> {
if(CollectionUtils.isNotEmpty(userList)){
String userName = "";
for (SysUser user : userList) {
if (StringUtils.equals(data.getUserId(), user.getId())) {
userName = user.getUsername();
break;
}
}
if(StringUtils.isNotEmpty(userName)){
data.setUserName(userName);
}
}
});
}
}
}