提交 333fc161 作者: duanxincheng

模板授权列表回显,模板授权优化增量更新

父级 509b3214
package com.cmeeting.ad.entity;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.*;
import java.io.Serializable;
/**
* 部门表
*
* @author makejava
* @since 2024-04-25 14:22:40
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SysDept implements Serializable {
private static final long serialVersionUID = 389470942890145726L;
/**
* 部门id
*/
private String id;
/**
* 部门名称
*/
private String name;
}
...@@ -90,11 +90,21 @@ public class RecordTemplateController { ...@@ -90,11 +90,21 @@ public class RecordTemplateController {
return R.ok(template); return R.ok(template);
} }
/**
* 模板授权
* @param vo
* @return
*/
@PostMapping("/auth") @PostMapping("/auth")
public R auth(@RequestBody RecordTemplateVO.TemplatePermissionVO vo) { public R auth(@RequestBody RecordTemplateVO.TemplatePermissionVO vo) {
return R.ok(recordTemplatePermissionService.auth(vo)); return R.ok(recordTemplatePermissionService.auth(vo));
} }
/**
* 模板已授权列表
* @param vo
* @return
*/
@PostMapping("/authList") @PostMapping("/authList")
public R authList(@RequestBody RecordTemplateVO.TemplateAuthVO vo) { public R authList(@RequestBody RecordTemplateVO.TemplateAuthVO vo) {
return R.ok(recordTemplatePermissionService.authList(vo)); return R.ok(recordTemplatePermissionService.authList(vo));
......
package com.cmeeting.mapper.secondary; package com.cmeeting.mapper.secondary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cmeeting.ad.entity.SysDept;
import com.cmeeting.ad.entity.SysUserSync; import com.cmeeting.ad.entity.SysUserSync;
import com.cmeeting.dto.UserDTO; import com.cmeeting.dto.UserDTO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
...@@ -18,6 +19,8 @@ public interface SysUserSysMapper extends BaseMapper<SysUserSync> { ...@@ -18,6 +19,8 @@ public interface SysUserSysMapper extends BaseMapper<SysUserSync> {
List<SysUserSync> getSimpleUserList(@Param(value = "tenantId")String tenantId); List<SysUserSync> getSimpleUserList(@Param(value = "tenantId")String tenantId);
List<SysDept> getSimpleDeptList(@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);
......
...@@ -3,8 +3,10 @@ package com.cmeeting.pojo; ...@@ -3,8 +3,10 @@ package com.cmeeting.pojo;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -65,11 +67,15 @@ public class MeetingInfo implements Serializable { ...@@ -65,11 +67,15 @@ public class MeetingInfo implements Serializable {
/** /**
* 会议开始时间(时间戳) * 会议开始时间(时间戳)
*/ */
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime startTime; private LocalDateTime startTime;
/** /**
* 会议结束时间(时间戳) * 会议结束时间(时间戳)
*/ */
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime endTime; private LocalDateTime endTime;
/** /**
...@@ -95,6 +101,8 @@ public class MeetingInfo implements Serializable { ...@@ -95,6 +101,8 @@ public class MeetingInfo implements Serializable {
/** /**
* 同步时间 * 同步时间
*/ */
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime syncTime; private LocalDateTime syncTime;
/** /**
...@@ -115,8 +123,10 @@ public class MeetingInfo implements Serializable { ...@@ -115,8 +123,10 @@ public class MeetingInfo implements Serializable {
*/ */
private String email; private String email;
/** /**
* 同步时间 * 更新时间
*/ */
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime updateTime; private LocalDateTime updateTime;
/** /**
......
...@@ -3,8 +3,10 @@ package com.cmeeting.pojo; ...@@ -3,8 +3,10 @@ package com.cmeeting.pojo;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -55,11 +57,15 @@ public class MeetingRecordTemplate implements Serializable { ...@@ -55,11 +57,15 @@ public class MeetingRecordTemplate implements Serializable {
/** /**
* 创建时间 * 创建时间
*/ */
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**
* 创建时间 * 创建时间
*/ */
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime updateTime; private LocalDateTime updateTime;
/** /**
......
...@@ -9,5 +9,5 @@ import java.util.List; ...@@ -9,5 +9,5 @@ import java.util.List;
public interface RecordTemplatePermissionService extends IService<RecordTemplatePermission> { public interface RecordTemplatePermissionService extends IService<RecordTemplatePermission> {
boolean auth(RecordTemplateVO.TemplatePermissionVO vo); boolean auth(RecordTemplateVO.TemplatePermissionVO vo);
List<RecordTemplatePermission> authList(RecordTemplateVO.TemplateAuthVO vo); List<RecordTemplateVO.PermissionItem> authList(RecordTemplateVO.TemplateAuthVO vo);
} }
...@@ -2,7 +2,12 @@ package com.cmeeting.service.impl; ...@@ -2,7 +2,12 @@ package com.cmeeting.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.entity.RobotSecurityUser;
import com.cmeeting.ad.entity.SysDept;
import com.cmeeting.ad.entity.SysUserSync;
import com.cmeeting.ad.util.SecurityUtil;
import com.cmeeting.mapper.primary.RecordTemplatePermissionMapper; import com.cmeeting.mapper.primary.RecordTemplatePermissionMapper;
import com.cmeeting.mapper.secondary.SysUserSysMapper;
import com.cmeeting.pojo.MeetingRecordTemplate; import com.cmeeting.pojo.MeetingRecordTemplate;
import com.cmeeting.pojo.RecordTemplatePermission; import com.cmeeting.pojo.RecordTemplatePermission;
import com.cmeeting.service.MeetingRecordTemplateService; import com.cmeeting.service.MeetingRecordTemplateService;
...@@ -14,7 +19,9 @@ import org.springframework.util.CollectionUtils; ...@@ -14,7 +19,9 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
...@@ -22,6 +29,8 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl ...@@ -22,6 +29,8 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
@Resource @Resource
private MeetingRecordTemplateService recordTemplateService; private MeetingRecordTemplateService recordTemplateService;
@Resource
private SysUserSysMapper sysUserSysMapper;
/** /**
* 授权 * 授权
...@@ -30,7 +39,7 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl ...@@ -30,7 +39,7 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
@Override @Override
public boolean auth(RecordTemplateVO.TemplatePermissionVO vo) { public boolean auth(RecordTemplateVO.TemplatePermissionVO vo) {
List<RecordTemplateVO.PermissionItem> permissionItems = vo.getPermissionItems(); List<RecordTemplateVO.PermissionItem> permissionItems = vo.getPermissionItems();
if(CollectionUtils.isEmpty(permissionItems) || vo.getTemplateId() == null){ if(vo.getTemplateId() == null){
return false; return false;
} }
MeetingRecordTemplate template = recordTemplateService.getById(vo.getTemplateId()); MeetingRecordTemplate template = recordTemplateService.getById(vo.getTemplateId());
...@@ -38,24 +47,6 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl ...@@ -38,24 +47,6 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
throw new RuntimeException("模板不存在"); throw new RuntimeException("模板不存在");
} }
List<RecordTemplatePermission> permissions = new ArrayList<>(); List<RecordTemplatePermission> permissions = new ArrayList<>();
// List<RecordTemplateVO.PermissionItem> deptPermissions = permissionItems.stream().filter(item -> "1".equals(item.getRelType())).collect(Collectors.toList());
// List<RecordTemplateVO.PermissionItem> userPermissions = permissionItems.stream().filter(item -> "2".equals(item.getRelType())).collect(Collectors.toList());
// for (RecordTemplateVO.PermissionItem userPermission : userPermissions) {
// RecordTemplatePermission permission = RecordTemplatePermission.builder()
// .templateId(vo.getTemplateId())
// .templateType(template.getType())
// .relType(userPermission.getRelType())
// .relId(userPermission.getRelId())
// .createTime(now)
// .build();
// permissions.add(permission);
// }
// List<String> deptPath = new ArrayList<>();
// for (RecordTemplateVO.PermissionItem deptPermission : deptPermissions) {
// String deptId = deptPermission.getRelId();
// getDeptPath(deptPath,deptId);
// }
// List<String> accessUserIds = !CollectionUtils.isEmpty(deptPath) ? commonMapper.getUsersByDept(deptPath) : new ArrayList<>();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
for (RecordTemplateVO.PermissionItem permissionItem : permissionItems) { for (RecordTemplateVO.PermissionItem permissionItem : permissionItems) {
RecordTemplatePermission permission = RecordTemplatePermission.builder() RecordTemplatePermission permission = RecordTemplatePermission.builder()
...@@ -67,7 +58,18 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl ...@@ -67,7 +58,18 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
.build(); .build();
permissions.add(permission); permissions.add(permission);
} }
//对比数据库中已保存的权限信息,删除本次授权不包含的对象权限
List<String> permissionRelIds = permissions.stream().map(RecordTemplatePermission::getRelId).collect(Collectors.toList());
List<RecordTemplatePermission> savedPermissions = baseMapper.selectList(new LambdaQueryWrapper<RecordTemplatePermission>().eq(RecordTemplatePermission::getTemplateId, template.getId()));
//过滤出需要删除的权限
List<Integer> deletablePermissionIds = savedPermissions.stream()
.filter(item -> !permissionRelIds.contains(item.getRelId())).map(RecordTemplatePermission::getId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(deletablePermissionIds)){
baseMapper.deleteBatchIds(deletablePermissionIds);
}
if(!CollectionUtils.isEmpty(permissions)){
baseMapper.batchInsert(permissions); baseMapper.batchInsert(permissions);
}
return true; return true;
} }
...@@ -77,10 +79,32 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl ...@@ -77,10 +79,32 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
* @return * @return
*/ */
@Override @Override
public List<RecordTemplatePermission> authList(RecordTemplateVO.TemplateAuthVO vo) { public List<RecordTemplateVO.PermissionItem> authList(RecordTemplateVO.TemplateAuthVO vo) {
RobotSecurityUser user = SecurityUtil.getUser();
List<RecordTemplatePermission> permissions = baseMapper.selectList( List<RecordTemplatePermission> permissions = baseMapper.selectList(
new LambdaQueryWrapper<RecordTemplatePermission>() new LambdaQueryWrapper<RecordTemplatePermission>()
.eq(RecordTemplatePermission::getTemplateId,vo.getTemplateId())); .eq(RecordTemplatePermission::getTemplateId,vo.getTemplateId()));
return permissions; List<RecordTemplateVO.PermissionItem> permissionItems = new ArrayList<>();
if(!CollectionUtils.isEmpty(permissions)){
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));
List<SysDept> simpleDeptList = sysUserSysMapper.getSimpleDeptList(user.getTenantId());
Map<String, String> simpleDeptMap = CollectionUtils.isEmpty(simpleDeptList)
? new HashMap<>() : simpleDeptList.stream().collect(Collectors.toMap(SysDept::getId, SysDept::getName));
for (RecordTemplatePermission permission : permissions) {
String relName = "1".equals(permission.getRelType()) && simpleDeptMap.containsKey(permission.getRelId())
? simpleDeptMap.get(permission.getRelId())
: "2".equals(permission.getRelType()) && simpleUserMap.containsKey(permission.getRelId())
? simpleUserMap.get(permission.getRelId()) : permission.getRelId();
RecordTemplateVO.PermissionItem permissionItem = RecordTemplateVO.PermissionItem.builder()
.relId(permission.getRelId())
.relType(permission.getRelType())
.relName(relName).build();
permissionItems.add(permissionItem);
}
}
return permissionItems;
} }
} }
\ No newline at end of file
package com.cmeeting.vo; package com.cmeeting.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List; import java.util.List;
...@@ -59,6 +62,9 @@ public class RecordTemplateVO { ...@@ -59,6 +62,9 @@ public class RecordTemplateVO {
} }
@Data @Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class PermissionItem{ public static class PermissionItem{
/** /**
* 对象类型 * 对象类型
...@@ -68,6 +74,10 @@ public class RecordTemplateVO { ...@@ -68,6 +74,10 @@ public class RecordTemplateVO {
* 关联对象id * 关联对象id
*/ */
private String relId; private String relId;
/**
* 关联对象
*/
private String relName;
} }
@Data @Data
......
...@@ -45,4 +45,13 @@ ...@@ -45,4 +45,13 @@
</where> </where>
group by t1.user_id group by t1.user_id
</select> </select>
<select id="getSimpleDeptList" resultType="com.cmeeting.ad.entity.SysDept">
SELECT
susc.id,
susc.`name`
FROM
sys_user_sync_category AS susc
WHERE
susc.tenant_id = #{tenantId}
</select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论