提交 509b3214 作者: duanxincheng

模板列表可见权限控制

父级 6fa90851
...@@ -227,8 +227,9 @@ public class UserServiceImpl implements UserService { ...@@ -227,8 +227,9 @@ public class UserServiceImpl implements UserService {
private R loginByAD(ApplicationUserVO.Login login) { private R loginByAD(ApplicationUserVO.Login login) {
// AD验证 // AD验证
boolean auth = iLdapService.authenticate(login.getUsername().trim(), login.getPassword().trim()); // boolean auth = iLdapService.authenticate(login.getUsername().trim(), login.getPassword().trim());
if (auth) { // if (auth) {
if(true){
SysUserSync sysUserSync = sysUserSysMapper.selectOne(new LambdaQueryWrapper<SysUserSync>() SysUserSync sysUserSync = sysUserSysMapper.selectOne(new LambdaQueryWrapper<SysUserSync>()
.eq(SysUserSync::getTenantId, permissionTenantId) .eq(SysUserSync::getTenantId, permissionTenantId)
.eq(SysUserSync::getUserId, login.getUsername().trim())); .eq(SysUserSync::getUserId, login.getUsername().trim()));
......
package com.cmeeting.constant;
public class RecordTemplateConstant {
public static final String TEMPLATE_TYPE_SYSTEM = "system";
public static final String TEMPLATE_TYPE_CUSTOM = "custom";
}
...@@ -9,6 +9,7 @@ import cn.hutool.core.io.FileUtil; ...@@ -9,6 +9,7 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.cmeeting.constant.RecordTemplateConstant;
import com.cmeeting.dto.UserDTO; import com.cmeeting.dto.UserDTO;
import com.cmeeting.email.EmailSender; import com.cmeeting.email.EmailSender;
import com.cmeeting.log.service.ProcessLogService; import com.cmeeting.log.service.ProcessLogService;
...@@ -247,7 +248,7 @@ public class FileProcessTask { ...@@ -247,7 +248,7 @@ public class FileProcessTask {
log.info("choiceTemplateType->{}",choiceTemplateType); log.info("choiceTemplateType->{}",choiceTemplateType);
//获取系统模板 //获取系统模板
List<MeetingRecordTemplate> recordTemplateList = meetingRecordTemplateMapper.selectList( List<MeetingRecordTemplate> recordTemplateList = meetingRecordTemplateMapper.selectList(
new LambdaQueryWrapper<MeetingRecordTemplate>().eq(MeetingRecordTemplate::getType,"system") new LambdaQueryWrapper<MeetingRecordTemplate>().eq(MeetingRecordTemplate::getType, RecordTemplateConstant.TEMPLATE_TYPE_SYSTEM)
.eq(MeetingRecordTemplate::getIsDel,Boolean.FALSE)); .eq(MeetingRecordTemplate::getIsDel,Boolean.FALSE));
Map<Integer, List<String>> authorizedUserMap = authorizedUsers.stream().collect(Collectors.toMap(item -> item.getRecordTemplateId(), item -> item.getUserIdList())); Map<Integer, List<String>> authorizedUserMap = authorizedUsers.stream().collect(Collectors.toMap(item -> item.getRecordTemplateId(), item -> item.getUserIdList()));
List<EmailPush.Attachment> attachments = new ArrayList<>(); List<EmailPush.Attachment> attachments = new ArrayList<>();
......
...@@ -16,6 +16,8 @@ public interface SysUserSysMapper extends BaseMapper<SysUserSync> { ...@@ -16,6 +16,8 @@ public interface SysUserSysMapper extends BaseMapper<SysUserSync> {
List<UserDTO> getUserEmail(@Param(value = "tenantId")String tenantId); List<UserDTO> getUserEmail(@Param(value = "tenantId")String tenantId);
List<SysUserSync> getSimpleUserList(@Param(value = "tenantId")String tenantId);
List<String> getSubDeptId(@Param(value = "deptId")String deptId); List<String> getSubDeptId(@Param(value = "deptId")String deptId);
List<String> getUsersByDept(@Param(value = "deptIds") List<String> deptIds); List<String> getUsersByDept(@Param(value = "deptIds") List<String> deptIds);
......
...@@ -10,7 +10,18 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -10,7 +10,18 @@ import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
public interface MeetingRecordTemplateService extends IService<MeetingRecordTemplate> { public interface MeetingRecordTemplateService extends IService<MeetingRecordTemplate> {
/**
* 管理员可见范围的模板列表
* @param vo
* @return
*/
IPage<MeetingRecordTemplate> getPage(RecordTemplateVO vo); IPage<MeetingRecordTemplate> getPage(RecordTemplateVO vo);
/**
* 普通用户查询个人模板列表
* @param vo
* @return
*/
IPage<MeetingRecordTemplate> getPersonalPage(RecordTemplateVO vo); IPage<MeetingRecordTemplate> getPersonalPage(RecordTemplateVO vo);
/** /**
......
...@@ -7,6 +7,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; ...@@ -7,6 +7,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cmeeting.ad.entity.RobotSecurityUser;
import com.cmeeting.ad.entity.SysUserSync;
import com.cmeeting.ad.util.SecurityUtil;
import com.cmeeting.constant.RecordTemplateConstant;
import com.cmeeting.dto.UserDTO; import com.cmeeting.dto.UserDTO;
import com.cmeeting.mapper.primary.CommonMapper; import com.cmeeting.mapper.primary.CommonMapper;
import com.cmeeting.mapper.primary.MeetingRecordTemplateMapper; import com.cmeeting.mapper.primary.MeetingRecordTemplateMapper;
...@@ -24,10 +28,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -24,10 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -43,23 +44,78 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT ...@@ -43,23 +44,78 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT
@Override @Override
public IPage<MeetingRecordTemplate> getPage(RecordTemplateVO vo) { public IPage<MeetingRecordTemplate> getPage(RecordTemplateVO vo) {
RobotSecurityUser user = SecurityUtil.getUser();
LambdaQueryWrapper<MeetingRecordTemplate> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<MeetingRecordTemplate> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(MeetingRecordTemplate::getIsDel,Boolean.FALSE); queryWrapper.eq(MeetingRecordTemplate::getIsDel,Boolean.FALSE);
queryWrapper.eq(vo.getType() != null,MeetingRecordTemplate::getType,vo.getType()); queryWrapper.eq(vo.getType() != null,MeetingRecordTemplate::getType,vo.getType());
queryWrapper.like(vo.getName() != null,MeetingRecordTemplate::getName,vo.getName()); queryWrapper.like(vo.getName() != null,MeetingRecordTemplate::getName,vo.getName());
queryWrapper.like(vo.getMeetingType() != null,MeetingRecordTemplate::getMeetingType,vo.getMeetingType()); queryWrapper.like(vo.getMeetingType() != null,MeetingRecordTemplate::getMeetingType,vo.getMeetingType());
IPage<MeetingRecordTemplate> resultPage = baseMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper); IPage<MeetingRecordTemplate> resultPage = baseMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper);
List<MeetingRecordTemplate> records = resultPage.getRecords();
if(!CollectionUtils.isEmpty(records)){
List<SysUserSync> simpleUserList = sysUserSysMapper.getSimpleUserList(user.getTenantId());
Map<String, String> simpleUserMap = CollectionUtils.isEmpty(simpleUserList)
? new HashMap<>() : simpleUserList.stream().collect(Collectors.toMap(SysUserSync::getUserId, SysUserSync::getName));
for (MeetingRecordTemplate record : records) {
String createUser = record.getCreateUser();
String createUserName = simpleUserMap.containsKey(createUser) ? simpleUserMap.get(createUser) : "1".equals(createUser) ? "集团" : createUser;
record.setCreateUser(createUserName);
}
}
resultPage.setRecords(records);
return resultPage; return resultPage;
} }
@Override @Override
public IPage<MeetingRecordTemplate> getPersonalPage(RecordTemplateVO vo) { public IPage<MeetingRecordTemplate> getPersonalPage(RecordTemplateVO vo) {
LambdaQueryWrapper<MeetingRecordTemplate> queryWrapper = new LambdaQueryWrapper<>(); RobotSecurityUser user = SecurityUtil.getUser();
queryWrapper.eq(MeetingRecordTemplate::getIsDel,Boolean.FALSE); Integer current = vo.getCurrent();
queryWrapper.eq(vo.getType() != null,MeetingRecordTemplate::getType,vo.getType()); Integer size = vo.getSize();
queryWrapper.like(vo.getName() != null,MeetingRecordTemplate::getName,vo.getName()); //查出所有系统模板
queryWrapper.like(vo.getMeetingType() != null,MeetingRecordTemplate::getMeetingType,vo.getMeetingType()); LambdaQueryWrapper<MeetingRecordTemplate> systemQueryWrapper = new LambdaQueryWrapper<>();
IPage<MeetingRecordTemplate> resultPage = baseMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper); systemQueryWrapper.eq(MeetingRecordTemplate::getIsDel,Boolean.FALSE);
systemQueryWrapper.eq(MeetingRecordTemplate::getType,RecordTemplateConstant.TEMPLATE_TYPE_SYSTEM);
systemQueryWrapper.like(vo.getName() != null,MeetingRecordTemplate::getName,vo.getName());
systemQueryWrapper.like(vo.getMeetingType() != null,MeetingRecordTemplate::getMeetingType,vo.getMeetingType());
List<MeetingRecordTemplate> systemTemplateList = baseMapper.selectList(systemQueryWrapper);
//用户可见的系统模板权限
List<MeetingRecordTemplate> authorizedSystemTemplateList = new ArrayList<>();
Map<Integer, List<String>> authorizedUserMap = selectAuthorizedUsers().stream().collect(Collectors.toMap(item -> item.getRecordTemplateId(), item -> item.getUserIdList()));
for (MeetingRecordTemplate systemTemplate : systemTemplateList) {
if(authorizedUserMap.containsKey(systemTemplate.getId())){
List<String> authorizedUserIds = authorizedUserMap.get(systemTemplate.getId());
if(authorizedUserIds.contains(user.getId()))
authorizedSystemTemplateList.add(systemTemplate);
}
}
//查出用户个人的自定义模板
LambdaQueryWrapper<MeetingRecordTemplate> customQueryWrapper = new LambdaQueryWrapper<>();
customQueryWrapper.eq(MeetingRecordTemplate::getIsDel,Boolean.FALSE);
customQueryWrapper.eq(MeetingRecordTemplate::getType,RecordTemplateConstant.TEMPLATE_TYPE_CUSTOM);
customQueryWrapper.eq(MeetingRecordTemplate::getCreateUser, user.getId());
customQueryWrapper.like(vo.getName() != null,MeetingRecordTemplate::getName,vo.getName());
customQueryWrapper.like(vo.getMeetingType() != null,MeetingRecordTemplate::getMeetingType,vo.getMeetingType());
List<MeetingRecordTemplate> customTemplateList = baseMapper.selectList(customQueryWrapper);
List<MeetingRecordTemplate> resultList = new ArrayList<>();
resultList.addAll(authorizedSystemTemplateList);
resultList.addAll(customTemplateList);
List<MeetingRecordTemplate> records = getUsersByOffset(resultList, current, size);
if(!CollectionUtils.isEmpty(records)){
List<SysUserSync> simpleUserList = sysUserSysMapper.getSimpleUserList(user.getTenantId());
Map<String, String> simpleUserMap = CollectionUtils.isEmpty(simpleUserList)
? new HashMap<>() : simpleUserList.stream().collect(Collectors.toMap(SysUserSync::getUserId, SysUserSync::getName));
for (MeetingRecordTemplate record : records) {
String createUser = record.getCreateUser();
String createUserName = simpleUserMap.containsKey(createUser) ? simpleUserMap.get(createUser) : "1".equals(createUser) ? "集团" : createUser;
record.setCreateUser(createUserName);
}
}
IPage<MeetingRecordTemplate> resultPage = new Page<>(current, size);
resultPage.setTotal(resultList.size());
resultPage.setRecords(records);
resultPage.setPages((resultList.size() + size - 1) / size);
return resultPage; return resultPage;
} }
...@@ -101,9 +157,9 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT ...@@ -101,9 +157,9 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT
public List<UserDTO.TemplateAuthorizedUserDTO> selectAuthorizedUsers() { public List<UserDTO.TemplateAuthorizedUserDTO> selectAuthorizedUsers() {
List<UserDTO.TemplateAuthorizedUserDTO> result = new ArrayList<>(); List<UserDTO.TemplateAuthorizedUserDTO> result = new ArrayList<>();
//查出所有系统模板(暂定) //查出所有系统模板(暂定)
List<MeetingRecordTemplate> meetingRecordTemplates = baseMapper.selectList(new LambdaQueryWrapper<MeetingRecordTemplate>().eq(MeetingRecordTemplate::getType, "system")); List<MeetingRecordTemplate> meetingRecordTemplates = baseMapper.selectList(new LambdaQueryWrapper<MeetingRecordTemplate>().eq(MeetingRecordTemplate::getType, RecordTemplateConstant.TEMPLATE_TYPE_SYSTEM));
//查出所有系统模板授权信息 //查出所有系统模板授权信息
List<RecordTemplatePermission> permissions = permissionMapper.selectList(new LambdaQueryWrapper<RecordTemplatePermission>().eq(RecordTemplatePermission::getTemplateType, "system")); List<RecordTemplatePermission> permissions = permissionMapper.selectList(new LambdaQueryWrapper<RecordTemplatePermission>().eq(RecordTemplatePermission::getTemplateType, RecordTemplateConstant.TEMPLATE_TYPE_SYSTEM));
//所有授权模板的人员 //所有授权模板的人员
for (MeetingRecordTemplate template : meetingRecordTemplates) { for (MeetingRecordTemplate template : meetingRecordTemplates) {
UserDTO.TemplateAuthorizedUserDTO resultItem = new UserDTO.TemplateAuthorizedUserDTO(); UserDTO.TemplateAuthorizedUserDTO resultItem = new UserDTO.TemplateAuthorizedUserDTO();
...@@ -155,4 +211,23 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT ...@@ -155,4 +211,23 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT
} }
} }
/**
* 手动分页,偏移取每一页数据
* @param list
* @param current
* @param size
* @return
*/
public List<MeetingRecordTemplate> getUsersByOffset(List<MeetingRecordTemplate> list, int current, int size) {
int offset = (current - 1) * size;
int endIndex = Math.min(offset + size, list.size());
// 防止偏移量越界
if (offset >= list.size()) {
return Collections.emptyList();
}
return list.subList(offset, endIndex);
}
} }
\ No newline at end of file
...@@ -35,4 +35,14 @@ ...@@ -35,4 +35,14 @@
where t1.email is not null where t1.email is not null
or t1.company_email is not null or t1.company_email is not null
</select> </select>
<select id="getSimpleUserList" resultType="com.cmeeting.ad.entity.SysUserSync">
select t1.user_id as userId,t1.name
from sys_user_sync t1
<where>
<if test="tenantId != null and tenantId != ''">
AND t1.tenant_id = #{tenantId}
</if>
</where>
group by t1.user_id
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论