提交 23a57087 作者: 洪东保

权限相关接口

父级 b33c9eef
...@@ -40,8 +40,6 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -40,8 +40,6 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired @Autowired
private RobotJwtAuthenticationTokenFilter robotJwtAuthenticationTokenFilter; private RobotJwtAuthenticationTokenFilter robotJwtAuthenticationTokenFilter;
// @Resource
// private RobotJwtCustomTokenFilter robotJwtCustomTokenFilter;
@Autowired @Autowired
private CustomWhiteConfigProperties customWhiteConfigProperties; private CustomWhiteConfigProperties customWhiteConfigProperties;
...@@ -134,8 +132,6 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -134,8 +132,6 @@ public class RobotWebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override @Override
public void configure(AuthenticationManagerBuilder auth) throws Exception { public void configure(AuthenticationManagerBuilder auth) throws Exception {
// auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());
// auth.userDetailsService(mobileUserDetailsService).passwordEncoder(new BCryptPasswordEncoder());
auth.authenticationProvider(customAuthenticationProvider()); auth.authenticationProvider(customAuthenticationProvider());
} }
......
...@@ -98,63 +98,52 @@ public class UserServiceImpl implements UserService { ...@@ -98,63 +98,52 @@ public class UserServiceImpl implements UserService {
stringStringHashMap.put("userId", userId); stringStringHashMap.put("userId", userId);
stringStringHashMap.put("tenantId", permissionTenantId); stringStringHashMap.put("tenantId", permissionTenantId);
stringStringHashMap.put("language", sysTenant.getLanguage()); stringStringHashMap.put("language", sysTenant.getLanguage());
// iUserLoginInfoService.updateInfo(null, userId, tenantId, null);
stringStringHashMap.put("nick", nick); stringStringHashMap.put("nick", nick);
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(userId, permissionTenantId); UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(userId, permissionTenantId);
usernamePasswordAuthenticationToken.setDetails(stringStringHashMap); usernamePasswordAuthenticationToken.setDetails(stringStringHashMap);
Authentication authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken); Authentication authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken);
SecurityContextHolder.getContext().setAuthentication(authentication); SecurityContextHolder.getContext().setAuthentication(authentication);
RobotSecurityUser userDetail = (RobotSecurityUser) authentication.getPrincipal(); RobotSecurityUser userDetail = (RobotSecurityUser) authentication.getPrincipal();
System.out.println(userId.toString());
String token = jwtUtil.generateToken(userDetail); String token = jwtUtil.generateToken(userDetail);
List<SysMenu> menuList = commonMapper.getMenuList(permissionTenantId); // List<SysMenu> menuList = commonMapper.getMenuList(permissionTenantId);
// 需要对menuList进行过滤 // // 需要对menuList进行过滤
// 根据uid查询对应角色,然后查询角色对应的菜单权限 // // 根据uid查询对应角色,然后查询角色对应的菜单权限
// List<String> roleIdList = getRoleIdByUserId(permissionTenantId, userId, path); //
// List<SysMenu> menuList1 = CollectionUtils.isEmpty(roleIdList) ? new ArrayList<>() : commonMapper.getMenuByRoleList(roleIdList, permissionTenantId); // menuList.sort(Comparator.comparingInt(SysMenu::getSort));
// Set<Integer> menuSet = menuList1.stream().map(SysMenu::getId).collect(Collectors.toSet()); //
// List<SysMenu> filteredMenu = menuList.stream().filter(menu -> menuSet.contains(menu.getId())).collect(Collectors.toList()); // // 总库去掉部分菜单
// menuList = (List<SysMenu>) CollectionUtils.intersection(filteredMenu, menuList); // if ("system".equals(userDetail.getUsername())) {
menuList.sort(Comparator.comparingInt(SysMenu::getSort)); // List<String> removeMenuList = Arrays.asList(removeMenus.split(","));
// int size = menuList.size();
// 总库去掉部分菜单 // for (int i = 0; i < size; i++) {
if ("system".equals(userDetail.getUsername())) { // SysMenu sysMenu = menuList.get(i);
List<String> removeMenuList = Arrays.asList(removeMenus.split(",")); // String tempName = sysMenu.getName();
int size = menuList.size(); // if (removeMenuList.contains(tempName)) {
for (int i = 0; i < size; i++) { // menuList.remove(sysMenu);
SysMenu sysMenu = menuList.get(i); // size -= 1;
String tempName = sysMenu.getName(); // i -= 1;
if (removeMenuList.contains(tempName)) { // }
menuList.remove(sysMenu); // }
size -= 1; // }
i -= 1; // RoleTree loginMenus = getLoginMenus(menuList);
} // HashSet<String> set = new HashSet<>();
} // for (SysMenu sysMenu : menuList) {
} // set.add(sysMenu.getPerms());
RoleTree loginMenus = getLoginMenus(menuList); // }
HashSet<String> set = new HashSet<>(); // if (set.contains("interactCenter")) {
for (SysMenu sysMenu : menuList) { // //看是否勾选了首页配置 121是首页菜单的id
set.add(sysMenu.getPerms()); // loginMenus.getInteractCenter().add("modelList");
} // loginMenus.getInteractCenter().add("modelPage");
if (set.contains("interactCenter")) { // }
//看是否勾选了首页配置 121是首页菜单的id // if (set.contains("robotCenter")) {
loginMenus.getInteractCenter().add("modelList"); // //看是否勾选了首页配置 121是首页菜单的id
loginMenus.getInteractCenter().add("modelPage"); // loginMenus.getRobotCenter().add("robotPage");
} // }
if (set.contains("robotCenter")) { // if (set.contains("processCenter")) {
//看是否勾选了首页配置 121是首页菜单的id // //看是否勾选了首页配置 121是首页菜单的id
loginMenus.getRobotCenter().add("robotPage"); // loginMenus.getProcessCenter().add("processPage");
} // }
if (set.contains("processCenter")) { // userDetail.setMenus(loginMenus);
//看是否勾选了首页配置 121是首页菜单的id
loginMenus.getProcessCenter().add("processPage");
}
userDetail.setMenus(loginMenus);
// SysPlatformSetting platformInfo = relPlatformSettingService.getPlatformInfoByCurrentTenantId(userDetail.getTenantId());
// SysPlatformSetting newSysPlatformSetting = new SysPlatformSetting();
// BeanUtil.copyProperties(platformInfo, newSysPlatformSetting);
// newSysPlatformSetting.setDocKnowledge(0);
// userDetail.setSysPlatformSetting(newSysPlatformSetting);
redisUtils.set(token, userDetail, Long.parseLong(expireTime)); redisUtils.set(token, userDetail, Long.parseLong(expireTime));
return token; return token;
......
...@@ -3,22 +3,19 @@ package com.cmeeting.constant; ...@@ -3,22 +3,19 @@ package com.cmeeting.constant;
/** /**
* @author 王长伟 * @author 王长伟
*/ */
public class CategoryConstant { public interface CategoryConstant {
String ALL = "全部";
String ALL_EN = "all";
String ROOT = "ROOT";
public static final String ALL = "全部";
public static final String ALL_EN = "all";
public static final String ROOT = "ROOT";
/** /**
* 根父级id * 根父级id
*/ */
public static final String ROOT_ID = "0"; String ROOT_ID = "0";
/** /**
* 根级路径 * 根级路径
*/ */
public static final String ROOT_PATH = "/"; String ROOT_PATH = "/";
} }
package com.cmeeting.constant; package com.cmeeting.constant;
public interface PermissionPruposeType { public interface PermissionPruposeType {
Integer ADMIN_AUTH = 0; // 超管授权纪要功能 /**
Integer TEMPLATE_TYPE_PERMISSION = 1;//纪要类型分享 * 超管授权纪要功能
Integer TEMPLATE_PERMISSION = 2;//纪要模板分享 */
Integer PERSONAL_CLOSE = 3; //用户自己关闭纪要功能 Integer ADMIN_AUTH = 0;
/**
* 纪要类型分享
*/
Integer TEMPLATE_TYPE_PERMISSION = 1;
/**
* 纪要模板分享
*/
Integer TEMPLATE_PERMISSION = 2;
/**
* 用户自己关闭纪要功能
*/
Integer PERSONAL_CLOSE = 3;
} }
...@@ -3,6 +3,13 @@ package com.cmeeting.constant; ...@@ -3,6 +3,13 @@ package com.cmeeting.constant;
public interface RecordTemplateConstant { public interface RecordTemplateConstant {
String TEMPLATE_TYPE_SYSTEM = "system"; String TEMPLATE_TYPE_SYSTEM = "system";
String TEMPLATE_TYPE_CUSTOM = "custom"; String TEMPLATE_TYPE_CUSTOM = "custom";
String REL_TYPE_DEPT = "1";
String REL_TYPE_USER = "2"; /**
* 部门
*/
Integer REL_TYPE_DEPT = 0;
/**
* 用户
*/
Integer REL_TYPE_USER = 1;
} }
package com.cmeeting.controller; package com.cmeeting.controller;
import com.azure.core.annotation.Get;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cmeeting.constant.CategoryConstant;
import com.cmeeting.constant.PermissionPruposeType;
import com.cmeeting.pojo.ModulePermission;
import com.cmeeting.service.ModulePermissionService; import com.cmeeting.service.ModulePermissionService;
import com.cmeeting.util.R; import com.cmeeting.util.R;
import com.cmeeting.vo.PermissionVO; import com.cmeeting.vo.PermissionVO;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.validation.Valid;
@RestController @RestController
@RequestMapping("/permission") @RequestMapping("/permission")
...@@ -17,9 +21,71 @@ public class PermissionController { ...@@ -17,9 +21,71 @@ public class PermissionController {
@Resource @Resource
private ModulePermissionService modulePermissionService; private ModulePermissionService modulePermissionService;
@PostMapping("/checkList") /**
public R list(@Validated @RequestBody PermissionVO.CheckList vo){ * 查询待选择用户接口
return R.ok(modulePermissionService.permissionList(vo.getSearch(), vo.getCategoryId(), vo.getUserType(), vo.getPurpose())); *
* @return 树形结构部门
*/
@PostMapping("/list")
public R list(@Validated @RequestBody PermissionVO.CheckList vo) {
return R.ok(modulePermissionService.permissionList(vo.getSearch(), vo.getCategoryId(), vo.getUserType(), vo.getPurpose(), vo.getTargetId(), null, null));
} }
/**
* 已授权用户
*
* @param vo
* @return
*/
@PostMapping("/authList")
public R authList(@Validated @RequestBody PermissionVO.CheckedList vo) {
return R.ok(modulePermissionService.checkedList(vo.getSearch(), vo.getPurpose(), vo.getTargetId()));
}
/**
* 授权用户
* @param vo
* @return
*/
@PostMapping("/auth")
public R auth(@Validated @RequestBody PermissionVO.Auth vo) {
return R.ok(modulePermissionService.auth(vo.getAuthData()));
}
@PostMapping("/remove")
public R remove(@Validated PermissionVO.Add vo) {
boolean needTarget = vo.getPurpose().equals(PermissionPruposeType.TEMPLATE_TYPE_PERMISSION)
|| vo.getPurpose().equals(PermissionPruposeType.TEMPLATE_PERMISSION);
if (needTarget && vo.getTargetId() == null) {
throw new RuntimeException("param error! `purpose` equals 1 or 2, but `targetId` is null.");
}
return R.ok(modulePermissionService.remove(new LambdaQueryWrapper<ModulePermission>()
.eq(!vo.getRelId().equals(CategoryConstant.ALL_EN), ModulePermission::getType, vo.getType())
.eq(!vo.getRelId().equals(CategoryConstant.ALL_EN), ModulePermission::getUserType, vo.getUserType())
.eq(ModulePermission::getPurpose, vo.getPurpose())
.eq(!vo.getRelId().equals(CategoryConstant.ALL_EN), ModulePermission::getRelId, vo.getRelId())
.eq(vo.getTargetId() != null, ModulePermission::getTargetId, vo.getTargetId()))
);
}
/**
* 用户自己取消使用生成纪要功能列表
* @return
*/
@GetMapping("/personalCancelList")
public R personalCancelList() {
return R.ok(modulePermissionService.personalCancelList());
}
/**
* 用户自己取消使用生成纪要功能
*/
@GetMapping("/personalCancel")
public R personalCancel() {
return R.ok();
}
} }
...@@ -34,5 +34,18 @@ public class PermissionCheckedDTO implements Serializable { ...@@ -34,5 +34,18 @@ public class PermissionCheckedDTO implements Serializable {
private String deptName; private String deptName;
private Boolean check = false; private Boolean check = false;
} }
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class CateOrUser{
private String id;
/**
* 0 部门 / 1 用户
*/
private Integer type;
private String name;
private String deptName;
}
} }
...@@ -8,6 +8,8 @@ import java.util.Date; ...@@ -8,6 +8,8 @@ import java.util.Date;
/** /**
* 核心模块权限实体类 * 核心模块权限实体类
*
* aigc后台系统中智能体权限类
*/ */
@Data @Data
@AllArgsConstructor @AllArgsConstructor
......
...@@ -6,7 +6,7 @@ import java.util.Date; ...@@ -6,7 +6,7 @@ import java.util.Date;
import lombok.Data; import lombok.Data;
/** /**
* 权限表 * meeting内部权限表
* @TableName module_permission * @TableName module_permission
*/ */
@TableName(value ="module_permission") @TableName(value ="module_permission")
...@@ -19,7 +19,7 @@ public class ModulePermission { ...@@ -19,7 +19,7 @@ public class ModulePermission {
private Long id; private Long id;
/** /**
* 类型,0-分类,1-用户 * 类型,0-分类,1-用户 RecordTemplateConstant
*/ */
private Integer type; private Integer type;
......
...@@ -16,5 +16,5 @@ import java.util.List; ...@@ -16,5 +16,5 @@ import java.util.List;
public interface IShareUserService extends IService<ShareUser>{ public interface IShareUserService extends IService<ShareUser>{
PermissionCheckedDTO findName(String categoryId, String search, String tenantId); PermissionCheckedDTO findName(String categoryId, String search, String tenantId, List<String> categoryList, List<String> userList);
} }
...@@ -3,6 +3,7 @@ package com.cmeeting.service; ...@@ -3,6 +3,7 @@ package com.cmeeting.service;
import com.cmeeting.dto.PermissionCheckedDTO; import com.cmeeting.dto.PermissionCheckedDTO;
import com.cmeeting.pojo.ModulePermission; import com.cmeeting.pojo.ModulePermission;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.cmeeting.vo.PermissionVO;
import java.util.List; import java.util.List;
...@@ -13,5 +14,12 @@ import java.util.List; ...@@ -13,5 +14,12 @@ import java.util.List;
*/ */
public interface ModulePermissionService extends IService<ModulePermission> { public interface ModulePermissionService extends IService<ModulePermission> {
PermissionCheckedDTO permissionList(String search, String categoryId, Integer userType, Integer purpose); PermissionCheckedDTO permissionList(String search, String categoryId, Integer userType, Integer purpose, Integer targetId, List<String> categoryList, List<String> userList);
PermissionCheckedDTO permissionList(String search, String categoryId, Integer userType, Integer purpose, List<String> categoryList, List<String> userList);
List<PermissionCheckedDTO.CateOrUser> checkedList(String search, Integer purpose, Long targetId);
Boolean auth(List<PermissionVO.Add> authData);
List<PermissionCheckedDTO.User> personalCancelList();
} }
...@@ -11,9 +11,9 @@ import java.util.List; ...@@ -11,9 +11,9 @@ import java.util.List;
public interface SysUserSyncService extends IService<SysUserSync> { public interface SysUserSyncService extends IService<SysUserSync> {
String getDeptPathByUserId(String userId); String getDeptPathByUserId(String userId);
PermissionCheckedDTO listByCategoryId(String categoryId, String search, String tenangId); PermissionCheckedDTO listByCategoryId(String categoryId, String search, String tenantId, List<String> categoryList, List<String> userList);
List<PermissionCheckedDTO.User> findInUserIdsOrShareCateIds(List<String> userIds, List<String> shareCateIds, String s, String search); List<PermissionCheckedDTO.User> findInUserIdsOrShareCateIds(List<String> userIds, List<String> shareCateIds, String tenantId, String search);
List<PermissionCheckedDTO.User> findByParam(List<String> userIds, List<String> notInCateIds, List<String> shareCateIds, String tenantId, String search, String categoryId); List<PermissionCheckedDTO.User> findByParam(List<String> userIds, List<String> notInCateIds, List<String> shareCateIds, String tenantId, String search, String categoryId);
} }
package com.cmeeting.service.impl; package com.cmeeting.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cmeeting.ad.util.SecurityUtil; import com.cmeeting.ad.util.SecurityUtil;
import com.cmeeting.constant.CategoryConstant;
import com.cmeeting.constant.PermissionPruposeType;
import com.cmeeting.constant.RecordTemplateConstant;
import com.cmeeting.constant.UserTypeConstant; import com.cmeeting.constant.UserTypeConstant;
import com.cmeeting.dto.PermissionCheckedDTO; import com.cmeeting.dto.PermissionCheckedDTO;
import com.cmeeting.pojo.ModulePermission; import com.cmeeting.pojo.ModulePermission;
...@@ -9,10 +15,14 @@ import com.cmeeting.service.IShareUserService; ...@@ -9,10 +15,14 @@ import com.cmeeting.service.IShareUserService;
import com.cmeeting.service.ModulePermissionService; import com.cmeeting.service.ModulePermissionService;
import com.cmeeting.mapper.primary.ModulePermissionMapper; import com.cmeeting.mapper.primary.ModulePermissionMapper;
import com.cmeeting.service.SysUserSyncService; import com.cmeeting.service.SysUserSyncService;
import com.cmeeting.vo.PermissionVO;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author Administrator * @author Administrator
...@@ -29,17 +39,117 @@ public class ModulePermissionServiceImpl extends ServiceImpl<ModulePermissionMap ...@@ -29,17 +39,117 @@ public class ModulePermissionServiceImpl extends ServiceImpl<ModulePermissionMap
private IShareUserService iShareUserService; private IShareUserService iShareUserService;
@Override @Override
public PermissionCheckedDTO permissionList(String search, String categoryId, Integer userType, Integer purpose) { public PermissionCheckedDTO permissionList(String search, String categoryId, Integer userType, Integer purpose, Integer targetId, List<String> categoryIdList, List<String> userIdList) {
PermissionCheckedDTO dto = permissionList(search, categoryId, userType, purpose, categoryIdList, userIdList);
List<ModulePermission> permissions = baseMapper.selectList(new LambdaQueryWrapper<ModulePermission>()
.eq(ModulePermission::getUserType, userType)
.eq(ModulePermission::getPurpose, purpose)
.eq(targetId != null, ModulePermission::getTargetId, targetId)
.select(ModulePermission::getRelId, ModulePermission::getType)
);
if (CollUtil.isNotEmpty(permissions)) {
Set<String> deptIds = permissions.stream()
.filter(e -> e.getType().equals(RecordTemplateConstant.REL_TYPE_DEPT))
.map(ModulePermission::getRelId).collect(Collectors.toSet());
List<PermissionCheckedDTO.Category> categoryList = dto.getCategoryList();
if (CollUtil.isNotEmpty(deptIds) && CollUtil.isEmpty(categoryList)) {
for (PermissionCheckedDTO.Category category : categoryList) {
if (deptIds.contains(category.getId())) {
category.setCheck(true);
}
}
}
List<PermissionCheckedDTO.User> userList = dto.getUserList();
Set<String> userIds = permissions.stream().filter(e -> e.getType().equals(RecordTemplateConstant.REL_TYPE_USER))
.map(ModulePermission::getRelId).collect(Collectors.toSet());
if (CollUtil.isNotEmpty(userIds) && CollUtil.isEmpty(userList)) {
for (PermissionCheckedDTO.User user : userList) {
if (userIds.contains(user.getId())) {
user.setCheck(true);
}
}
}
}
return dto;
}
@Override
public PermissionCheckedDTO permissionList(String search, String categoryId, Integer userType, Integer purpose, List<String> categoryList, List<String> userList) {
PermissionCheckedDTO dto = new PermissionCheckedDTO();
if (userType != null) { if (userType != null) {
if (userType == UserTypeConstant.SYNC) { if (userType == UserTypeConstant.SYNC) {
return iSysUserSyncService.listByCategoryId(categoryId, search, SecurityUtil.getTenantId()); dto = iSysUserSyncService.listByCategoryId(categoryId, search, SecurityUtil.getTenantId(), categoryList, userList);
} else if (userType == UserTypeConstant.ADMIN) { } else if (userType == UserTypeConstant.ADMIN) {
return iShareUserService.findName(categoryId, search, SecurityUtil.getTenantId()); dto = iShareUserService.findName(categoryId, search, SecurityUtil.getTenantId(), categoryList, userList);
} }
} else { } else {
dto = iSysUserSyncService.listByCategoryId(categoryId, search, SecurityUtil.getTenantId(), categoryList, userList);
PermissionCheckedDTO dto1 = iShareUserService.findName(categoryId, search, SecurityUtil.getTenantId(), categoryList, userList);
dto.getUserList().addAll(dto1.getUserList());
dto.getCategoryList().addAll(dto1.getCategoryList());
}
return dto;
}
@Override
public List<PermissionCheckedDTO.CateOrUser> checkedList(String search, Integer purpose, Long targetId) {
List<PermissionCheckedDTO.CateOrUser> retList = new ArrayList<>();
List<ModulePermission> modulePermissions = baseMapper.selectList(new LambdaQueryWrapper<ModulePermission>()
.eq(ModulePermission::getPurpose, purpose)
.eq(targetId != null, ModulePermission::getTargetId, targetId)
.select(ModulePermission::getRelId, ModulePermission::getType)
);
if (CollUtil.isNotEmpty(modulePermissions)) {
List<String> cateIds = modulePermissions.stream().filter(e -> Objects.equals(e.getType(), RecordTemplateConstant.REL_TYPE_DEPT)).map(ModulePermission::getRelId).collect(Collectors.toList());
List<String> userIds = modulePermissions.stream().filter(e -> Objects.equals(e.getType(), RecordTemplateConstant.REL_TYPE_USER)).map(ModulePermission::getRelId).collect(Collectors.toList());
PermissionCheckedDTO permissionCheckedDTO = permissionList(search, null, null, purpose, cateIds, userIds);
if (CollUtil.isNotEmpty(permissionCheckedDTO.getUserList())) {
for (PermissionCheckedDTO.User user : permissionCheckedDTO.getUserList()) {
PermissionCheckedDTO.CateOrUser cateOrUser = PermissionCheckedDTO.CateOrUser.builder()
.id(user.getId()).name(user.getName()).deptName(user.getDeptName()).type(RecordTemplateConstant.REL_TYPE_USER).build();
retList.add(cateOrUser);
}
}
if (CollUtil.isNotEmpty(permissionCheckedDTO.getCategoryList())) {
for (PermissionCheckedDTO.Category category : permissionCheckedDTO.getCategoryList()) {
PermissionCheckedDTO.CateOrUser cateOrUser = PermissionCheckedDTO.CateOrUser.builder()
.id(category.getId()).name(category.getName()).deptName(category.getName()).type(RecordTemplateConstant.REL_TYPE_DEPT).build();
retList.add(cateOrUser);
}
}
}
return retList;
}
@Override
public Boolean auth(List<PermissionVO.Add> authData) {
if (CollUtil.isNotEmpty(authData)) {
List<ModulePermission> list = new ArrayList<>();
for (PermissionVO.Add authDatum : authData) {
ModulePermission permission = BeanUtil.copyProperties(authDatum, ModulePermission.class);
permission.setCreateTime(new Date());
list.add(permission);
}
return this.saveBatch(list);
}
return false;
}
@Override
public List<PermissionCheckedDTO.User> personalCancelList() {
List<PermissionCheckedDTO.User> retList = new ArrayList<>();
List<ModulePermission> modulePermissions = baseMapper.selectList(new LambdaQueryWrapper<ModulePermission>()
.eq(ModulePermission::getPurpose, PermissionPruposeType.PERSONAL_CLOSE)
.select(ModulePermission::getRelId)
);
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();
} }
return null; return retList;
} }
} }
......
...@@ -43,8 +43,7 @@ public class ShareUserServiceImpl extends ServiceImpl<ShareUserMapper, ShareUser ...@@ -43,8 +43,7 @@ public class ShareUserServiceImpl extends ServiceImpl<ShareUserMapper, ShareUser
private SysUserSyncService iSysUserSyncService; private SysUserSyncService iSysUserSyncService;
@Override @Override
public PermissionCheckedDTO findName(String categoryId, String search, String tenantId) { public PermissionCheckedDTO findName(String categoryId, String search, String tenantId, List<String> categoryList, List<String> userList) {
List<String> categoryList;
PermissionCheckedDTO dto = new PermissionCheckedDTO(); PermissionCheckedDTO dto = new PermissionCheckedDTO();
List<ShareUser> shareUsers = baseMapper.selectList(new LambdaQueryWrapper<ShareUser>().eq(ShareUser::getTenantId, tenantId).select(ShareUser::getRelId, ShareUser::getType)); List<ShareUser> shareUsers = baseMapper.selectList(new LambdaQueryWrapper<ShareUser>().eq(ShareUser::getTenantId, tenantId).select(ShareUser::getRelId, ShareUser::getType));
...@@ -74,7 +73,11 @@ public class ShareUserServiceImpl extends ServiceImpl<ShareUserMapper, ShareUser ...@@ -74,7 +73,11 @@ public class ShareUserServiceImpl extends ServiceImpl<ShareUserMapper, ShareUser
} }
} }
List<String> shareCateIds = cateList.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toList()); List<String> shareCateIds = cateList.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toList());
if (categoryList != null) {
categoryList.addAll(shareCateIds);
} else {
categoryList = shareCateIds; categoryList = shareCateIds;
}
List<String> noExitParentIds = new ArrayList<>(); List<String> noExitParentIds = new ArrayList<>();
List<String> childrenDeptIds = new ArrayList<>(); List<String> childrenDeptIds = new ArrayList<>();
...@@ -117,7 +120,6 @@ public class ShareUserServiceImpl extends ServiceImpl<ShareUserMapper, ShareUser ...@@ -117,7 +120,6 @@ public class ShareUserServiceImpl extends ServiceImpl<ShareUserMapper, ShareUser
} }
dto.setCategoryList(cates); dto.setCategoryList(cates);
List<PermissionCheckedDTO.User> users = new ArrayList<>(); List<PermissionCheckedDTO.User> users = new ArrayList<>();
//所有直接分享的用户 //所有直接分享的用户
List<String> userIds = shareUsers.stream().filter(e -> e.getType() == 1).map(ShareUser::getRelId).collect(Collectors.toList()); List<String> userIds = shareUsers.stream().filter(e -> e.getType() == 1).map(ShareUser::getRelId).collect(Collectors.toList());
......
...@@ -58,7 +58,7 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSysMapper, SysUse ...@@ -58,7 +58,7 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSysMapper, SysUse
@Override @Override
public PermissionCheckedDTO listByCategoryId(String categoryId, String search, String tenantId) { public PermissionCheckedDTO listByCategoryId(String categoryId, String search, String tenantId, List<String> categoryList, List<String> userList) {
PermissionCheckedDTO dto = new PermissionCheckedDTO(); PermissionCheckedDTO dto = new PermissionCheckedDTO();
// 顶层分类查询所有parentId不存在的分类及用户 // 顶层分类查询所有parentId不存在的分类及用户
List<String> noExitParentIds = new ArrayList<>(); List<String> noExitParentIds = new ArrayList<>();
...@@ -85,6 +85,7 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSysMapper, SysUse ...@@ -85,6 +85,7 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSysMapper, SysUse
.in(StrUtil.isBlank(search) && CategoryConstant.ROOT.equals(categoryId) && CollUtil.isNotEmpty(noExitParentIds), SysUserSyncCategory::getDeptId, noExitParentIds) .in(StrUtil.isBlank(search) && CategoryConstant.ROOT.equals(categoryId) && CollUtil.isNotEmpty(noExitParentIds), SysUserSyncCategory::getDeptId, noExitParentIds)
.eq(StrUtil.isBlank(search) && StrUtil.isNotBlank(categoryId) && !CategoryConstant.ROOT.equals(categoryId), SysUserSyncCategory::getParentId, categoryId) .eq(StrUtil.isBlank(search) && StrUtil.isNotBlank(categoryId) && !CategoryConstant.ROOT.equals(categoryId), SysUserSyncCategory::getParentId, categoryId)
.like(StrUtil.isNotBlank(search), SysUserSyncCategory::getName, search) .like(StrUtil.isNotBlank(search), SysUserSyncCategory::getName, search)
.in(CollUtil.isNotEmpty(categoryList), SysUserSyncCategory::getDeptId, categoryList) // 指定分类
.select(SysUserSyncCategory::getDeptId, SysUserSyncCategory::getName)); .select(SysUserSyncCategory::getDeptId, SysUserSyncCategory::getName));
List<PermissionCheckedDTO.Category> cates = new ArrayList<>(); List<PermissionCheckedDTO.Category> cates = new ArrayList<>();
...@@ -105,7 +106,6 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSysMapper, SysUse ...@@ -105,7 +106,6 @@ public class SysUserSyncServiceImpl extends ServiceImpl<SysUserSysMapper, SysUse
users = baseMapper.findName(childrenDeptIds, null, search, tenantId, null); users = baseMapper.findName(childrenDeptIds, null, search, tenantId, null);
} }
} else { } else {
List<String> userList = new ArrayList<>();
List<String> deptIds = categories.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toList()); List<String> deptIds = categories.stream().map(SysUserSyncCategory::getDeptId).collect(Collectors.toList());
if (CategoryConstant.ROOT_ID.equals(categoryId)) { if (CategoryConstant.ROOT_ID.equals(categoryId)) {
List<SysUserSync> sysUserSyncList = this.list(new LambdaQueryWrapper<SysUserSync>() List<SysUserSync> sysUserSyncList = this.list(new LambdaQueryWrapper<SysUserSync>()
......
package com.cmeeting.vo; package com.cmeeting.vo;
import com.cmeeting.pojo.ModulePermission;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data @Data
public class PermissionVO { public class PermissionVO {
...@@ -25,6 +28,7 @@ public class PermissionVO { ...@@ -25,6 +28,7 @@ public class PermissionVO {
private Integer purpose; private Integer purpose;
@NotNull @NotNull
private Integer userType; private Integer userType;
private Integer targetId;
} }
...@@ -34,11 +38,58 @@ public class PermissionVO { ...@@ -34,11 +38,58 @@ public class PermissionVO {
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public static class List { public static class CheckedList {
/**
* purpose为0/3时为空,为1时是纪要类型id,2时纪要模板id
*/
private Long targetId;
private String search; private String search;
/**
* 0-授权纪要功能,1-纪要类型分享,2-纪要模板分享,3-用户自己关闭纪要功能
*/
@NotNull
private Integer purpose;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class Auth {
@NotEmpty(message = "param ids cant be null!")
private List<Add> authData;
}
@Data
public static class Add {
/**
* 类型,0-分类,1-用户
*/
@NotNull
private Integer type;
/**
* 用户类型,2-通讯录,3-超管分享
*/
@NotNull
private Integer userType;
/**
* 0-授权纪要功能,1-纪要类型分享,2-纪要模板分享,3-用户自己关闭纪要功能
*/
@NotNull @NotNull
private Integer purpose; private Integer purpose;
/**
* 关联id(分类id或用户id) 为all时 表示所有人授权/清空所有权限
*/
@NotNull
private String relId;
/**
* purpose为0/3时为空,为1时是纪要类型id,2时纪要模板id
*/
private Long targetId;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论