From 0a2f2734721d2bbfca05d6d7194ff967a27d51b8 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Mon, 8 Aug 2022 14:26:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=9F=A5=E8=AF=86=E5=BA=93-?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=E6=9D=83?= =?UTF-8?q?=E9=99=90=E3=80=82=20=E9=97=AE=E9=A2=98=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93=E5=B1=95=E7=A4=BA=E6=9D=83=E9=99=90-=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=95=B0=E6=8D=AE=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProblemKnowledgeBaseEOController.java | 1 + .../entity/ProblemKnowledgeBaseUserEO.java | 4 ++ .../IProblemKnowledgeBaseEOService.java | 7 ++++ .../IProblemKnowledgeBaseUserEOService.java | 7 ++++ .../ProblemKnowledgeBaseEOServiceImpl.java | 42 +++++++++++++++++++ ...ProblemKnowledgeBaseUserEOServiceImpl.java | 36 ++++++++++++++++ 6 files changed, 97 insertions(+) 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); + } + } + }); + + } + } }