提交 3253fdc4 作者: 洪东保

授权改动

定时任务选择模板debug
父级 58a4154a
......@@ -15,8 +15,10 @@ import com.cmeeting.exception.RobotBaseException;
import com.cmeeting.mapper.primary.AuthMapper;
import com.cmeeting.mapper.primary.SysUserSyncMapper;
import com.cmeeting.pojo.CoreModulePermissions;
import com.cmeeting.pojo.ModulePermission;
import com.cmeeting.pojo.UserAccessRecord;
import com.cmeeting.service.IUserAccessRecordService;
import com.cmeeting.service.ModulePermissionService;
import com.cmeeting.util.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
......@@ -70,6 +72,8 @@ public class UserServiceImpl implements UserService {
private SysUserSyncMapper sysUserSyncMapper;
@Resource
private IUserAccessRecordService iUserAccessRecordService;
@Resource
private ModulePermissionService iModulePermissionService;
@Override
public R login(String agentId, String data, String ip) {
......@@ -115,15 +119,31 @@ public class UserServiceImpl implements UserService {
RobotSecurityUser robotSecurityUser = JSON.parseObject(data.toJSONString(), RobotSecurityUser.class);
String userId = String.format("%08d", robotSecurityUser.getUserId());
//权限控制
List<CoreModulePermissions> auths = authMapper.getAuthByTargetId(permissionApplicationId, permissionTenantId);
//先判断智能体是否有直接授权给当前登录人
// //权限控制
// List<CoreModulePermissions> auths = authMapper.getAuthByTargetId(permissionApplicationId, permissionTenantId);
// //先判断智能体是否有直接授权给当前登录人
// boolean userAccess = auths.stream().anyMatch(item -> item.getType().equals(1) && item.getRelId().equals(userId));
// //未直接授权到人,判断是否有授权给当前登录人所在组织
// if (!userAccess) {
// List<CoreModulePermissions> authDepts = auths.stream().filter(item -> item.getType().equals(0)).collect(Collectors.toList());
// List<String> deptPath = new ArrayList<>();
// for (CoreModulePermissions authDept : authDepts) {
// String deptId = authDept.getRelId();
// getDeptPath(deptPath, deptId);
// }
// //已被授权部门下的userid
// List<String> accessUserIds = !CollectionUtils.isEmpty(deptPath) ? sysUserSyncMapper.getUsersByDept(deptPath) : new ArrayList<>();
// if (!accessUserIds.contains(userId)) {
// throw new RobotBaseException("您暂无权限");
// }
// }
List<ModulePermission> auths = iModulePermissionService.list(new LambdaQueryWrapper<ModulePermission>().eq(ModulePermission::getPurpose, 0));
boolean userAccess = auths.stream().anyMatch(item -> item.getType().equals(1) && item.getRelId().equals(userId));
//未直接授权到人,判断是否有授权给当前登录人所在组织
if (!userAccess) {
List<CoreModulePermissions> authDepts = auths.stream().filter(item -> item.getType().equals(0)).collect(Collectors.toList());
List<ModulePermission> authDepts = auths.stream().filter(item -> item.getType().equals(0)).collect(Collectors.toList());
List<String> deptPath = new ArrayList<>();
for (CoreModulePermissions authDept : authDepts) {
for (ModulePermission authDept : authDepts) {
String deptId = authDept.getRelId();
getDeptPath(deptPath, deptId);
}
......
......@@ -87,8 +87,8 @@ public class PermissionController {
* @return
*/
@GetMapping("/cancelList")
public R cancelList() {
return R.ok(modulePermissionService.personalCancelList());
public R cancelList(String query) {
return R.ok(modulePermissionService.personalCancelList(query));
}
/**
......
......@@ -221,7 +221,7 @@ public class FileProcessTask {
Boolean emailGenerateAccess = meetingInfo.getEmailGenerateAccess();
if (emailGenerateAccess) {
Long choiceTemplateType = choiceTemplateType(meetingInfo.getSubject());
List<Long> choiceTemplateType = choiceTemplateType(meetingInfo.getSubject());
log.info("choiceTemplateType -> meet: {}, type: {}", meetingInfo.getSubject(), choiceTemplateType);
// 2. 获取这个会议需要使用的一个模板
MeetingRecordTemplate template = meetingRecordTemplateService.getEnabledRecordTemplate(choiceTemplateType, userIdMapper.getWidByTid(meetingInfo.getHostUid()));
......@@ -319,19 +319,18 @@ public class FileProcessTask {
* @param subject 会议主题
* @return
*/
private Long choiceTemplateType(String subject) {
Long type = 1L;
private List<Long> choiceTemplateType(String subject) {
List<Long> list = new ArrayList<>();
list.add(1L);
List<MeetType> meetTypeList = meetTypeService.list(new LambdaQueryWrapper<MeetType>().select(MeetType::getId, MeetType::getName, MeetType::getRegex).ne(MeetType::getName, "重要"));
if (CollUtil.isNotEmpty(meetTypeList)) {
type = meetTypeList.get(0).getId();
for (MeetType meetType : meetTypeList) {
if (checkRegex(meetType.getRegex(), subject) || subject.contains(meetType.getName())) {
type = meetType.getId();
break;
list.add(meetType.getId());
}
}
}
return type;
return list;
}
private boolean checkRegex(String regex, String subject) {
......
......@@ -84,7 +84,7 @@ public interface MeetingRecordTemplateService extends IService<MeetingRecordTemp
* @param meetType 会议类型id
* @param userId userId
*/
MeetingRecordTemplate getEnabledRecordTemplate(Long meetType, String userId);
MeetingRecordTemplate getEnabledRecordTemplate(List<Long> meetType, String userId);
/**
* 获取模板列表
......
......@@ -22,7 +22,7 @@ public interface ModulePermissionService extends IService<ModulePermission> {
Boolean auth(List<AuthVO.Add> authData);
List<PermissionCheckedDTO.User> personalCancelList();
List<PermissionCheckedDTO.User> personalCancelList(String query);
Boolean personalSwitch(String userId, boolean enable);
......
......@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
......@@ -291,7 +292,7 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT
recordTemplate.setTypeDetail(recordTemplateVo.getTypeDetail());
recordTemplate.setPrompt(recordTemplateVo.getPrompt());
recordTemplate.setReferTemplateId(recordTemplateVo.getReferTemplateId());
recordTemplate.setTemplate(template != null ? template.getTemplate(): defaultTemplatePath);
recordTemplate.setTemplate(template != null ? template.getTemplate() : defaultTemplatePath);
recordTemplate.setEnable(true);
if (MeetingTypeConstant.TYPE_SYSTEM.equals(role) && RecordTemplateConstant.COMMON_MEET_TYPE.equals(meetType.getId())) {
// 超管在系统通用会议类型下创建模板
......@@ -435,35 +436,37 @@ public class MeetingRecordTemplateServiceImpl extends ServiceImpl<MeetingRecordT
* @param userId userId
*/
@Override
public MeetingRecordTemplate getEnabledRecordTemplate(Long meetType, String userId) {
public MeetingRecordTemplate getEnabledRecordTemplate(List<Long> meetType, String userId) {
log.info("查询用户可用模板, meetType: {}, userId: {}", meetType, userId);
MeetingRecordTemplate template = null;
String deptPathByUserId = sysUserSyncService.getDeptPathByUserId(userId);
List<String> parentDeptIdList = Arrays.asList(deptPathByUserId.split("/"));
List<MeetTypeDto> list = this.getMeetTypeList(userId, parentDeptIdList, "custom");
System.out.println("用户拥有的模板:" + JSON.toJSONString(list));
// 获取制定会议类型下的模板
for (MeetTypeDto meetTypeDto : list) {
if (meetTypeDto.getId().equals(meetType)) {
if (CollUtil.isNotEmpty(meetTypeDto.getRecordTemplateDTOList())) {
for (RecordTemplateDto templateDto : meetTypeDto.getRecordTemplateDTOList()) {
if (templateDto.getEnable()) {
template = BeanUtil.copyProperties(templateDto, MeetingRecordTemplate.class);
break;
for (Long aLong : meetType) {
if (meetTypeDto.getId().equals(aLong)) {
if (CollUtil.isNotEmpty(meetTypeDto.getRecordTemplateDTOList())) {
for (RecordTemplateDto templateDto : meetTypeDto.getRecordTemplateDTOList()) {
if (templateDto.getEnable()) {
template = BeanUtil.copyProperties(templateDto, MeetingRecordTemplate.class);
break;
}
}
}
}
}
}
// 获取通用会议类型下的模板
if (template == null) {
for (MeetTypeDto meetTypeDto : list.stream().filter(e -> e.getId().equals(1L)).collect(Collectors.toList())) {
if (meetTypeDto.getId().equals(meetType)) {
if (CollUtil.isNotEmpty(meetTypeDto.getRecordTemplateDTOList())) {
for (RecordTemplateDto templateDto : meetTypeDto.getRecordTemplateDTOList()) {
if (templateDto.getEnable()) {
template = BeanUtil.copyProperties(templateDto, MeetingRecordTemplate.class);
break;
}
if (CollUtil.isNotEmpty(meetTypeDto.getRecordTemplateDTOList())) {
for (RecordTemplateDto templateDto : meetTypeDto.getRecordTemplateDTOList()) {
if (templateDto.getEnable()) {
template = BeanUtil.copyProperties(templateDto, MeetingRecordTemplate.class);
break;
}
}
}
......
......@@ -2,6 +2,7 @@ package com.cmeeting.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cmeeting.constant.CategoryConstant;
......@@ -136,7 +137,7 @@ public class ModulePermissionServiceImpl extends ServiceImpl<ModulePermissionMap
}
@Override
public List<PermissionCheckedDTO.User> personalCancelList() {
public List<PermissionCheckedDTO.User> personalCancelList(String query) {
List<PermissionCheckedDTO.User> retList = new ArrayList<>();
List<ModulePermission> modulePermissions = baseMapper.selectList(new LambdaQueryWrapper<ModulePermission>()
......@@ -146,7 +147,11 @@ public class ModulePermissionServiceImpl extends ServiceImpl<ModulePermissionMap
if (CollUtil.isNotEmpty(modulePermissions)) {
List<String> userIds = modulePermissions.stream().map(ModulePermission::getRelId).collect(Collectors.toList());
PermissionCheckedDTO permissionCheckedDTO = permissionList(null, null, UserTypeConstant.SYNC, PermissionPruposeType.PERSONAL_CLOSE, null, userIds);
retList = permissionCheckedDTO.getUserList();
List<PermissionCheckedDTO.User> userList = permissionCheckedDTO.getUserList();
if (CollUtil.isNotEmpty(userList) && StrUtil.isNotBlank(query)) {
userList = userList.stream().filter(e -> e.getName().contains(query)).collect(Collectors.toList());
}
retList = userList;
}
return retList;
}
......
......@@ -8,6 +8,8 @@ import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@SpringBootTest
public class MeetingApiTest {
......@@ -26,7 +28,9 @@ public class MeetingApiTest {
public void test2(){
String userId = "00010786";
Long templateType = 96L;
MeetingRecordTemplate enabledRecordTemplate = meetingRecordTemplateService.getEnabledRecordTemplate(templateType, userId);
List<Long> list = new ArrayList<>();
list.add(templateType);
MeetingRecordTemplate enabledRecordTemplate = meetingRecordTemplateService.getEnabledRecordTemplate(list, userId);
System.out.println(enabledRecordTemplate.getName());
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论