diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java index 6441dc9e3..59bd50731 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/controller/ProblemKnowledgeBaseEOController.java @@ -53,6 +53,7 @@ public class ProblemKnowledgeBaseEOController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseEO, req.getParameterMap()); + this.problemKnowledgeBaseEOService.createQueryPermission(queryWrapper); queryWrapper.orderByDesc("create_time"); Page page = new Page(pageNo, pageSize); IPage pageList = problemKnowledgeBaseEOService.page(page, queryWrapper); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseUserEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseUserEO.java index 4865c5bdd..0faa4094e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseUserEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/entity/ProblemKnowledgeBaseUserEO.java @@ -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; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java index 93645bb8f..b62c1331a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseEOService.java @@ -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 datas,String cut); + + /** + * 创建查询权限 + * @param queryWrapper + */ + void createQueryPermission(QueryWrapper queryWrapper); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseUserEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseUserEOService.java index 6a1521524..a3086262e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseUserEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/IProblemKnowledgeBaseUserEOService.java @@ -58,4 +58,11 @@ public interface IProblemKnowledgeBaseUserEOService extends IService queryList(); + + /** + * 处理数据 + * @param datas + * @param cut + */ + void disposeData(List datas,String cut); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java index d6c5e73ad..57a0f9ada 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java @@ -129,6 +129,7 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl queryList(ProblemKnowledgeBaseEO problemKnowledgeBaseEO, HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseEO, req.getParameterMap()); + this.createQueryPermission(queryWrapper); queryWrapper.orderByDesc("create_time"); List result = this.list(queryWrapper); this.disposeData(result,problemKnowledgeBaseEO.getCut()); @@ -182,6 +183,12 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl collectEOList = this.problemKnowledgeBaseCollectEOService.list(collectQueryWrapper); + //查询出数据的所有的权限用户 + QueryWrapper permissionUserQueryWrapper = new QueryWrapper<>(); + permissionUserQueryWrapper.lambda().in(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId,probleKnowledgeBaseIdList); + List 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 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 queryWrapper) { + /** + * 查询权限 + * 公开:所有人都可以看到。 + * 私密:只有配置了的权限用户可以看到。 + */ + LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + QueryWrapper userPermissionQueryWrapper = new QueryWrapper<>(); + userPermissionQueryWrapper.lambda().eq(ProblemKnowledgeBaseUserEO::getUserId,currentUser.getId()); + List problemKnowledgeBaseUserEOList = problemKnowledgeBaseUserEOService.list(userPermissionQueryWrapper); + + List 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); + }); + }); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseUserEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseUserEOServiceImpl.java index f5f56bd8e..4f3679dcf 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseUserEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseUserEOServiceImpl.java @@ -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 implements IProblemKnowledgeBaseUserEOService { + @Autowired + private ISysUserService sysUserService; + /** * 保存 * @@ -89,4 +99,30 @@ public class ProblemKnowledgeBaseUserEOServiceImpl extends ServiceImpl queryList() { return list(); } + + @Override + public void disposeData(List datas, String cut) { + if(CollectionUtils.isNotEmpty(datas)){ + List userIdList = datas.stream().map(ProblemKnowledgeBaseUserEO::getUserId).distinct().collect(Collectors.toList()); + + List 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); + } + } + }); + + } + } }