提交 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 {
return R.ok(template);
}
/**
* 模板授权
* @param vo
* @return
*/
@PostMapping("/auth")
public R auth(@RequestBody RecordTemplateVO.TemplatePermissionVO vo) {
return R.ok(recordTemplatePermissionService.auth(vo));
}
/**
* 模板已授权列表
* @param vo
* @return
*/
@PostMapping("/authList")
public R authList(@RequestBody RecordTemplateVO.TemplateAuthVO vo) {
return R.ok(recordTemplatePermissionService.authList(vo));
......
package com.cmeeting.mapper.secondary;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cmeeting.ad.entity.SysDept;
import com.cmeeting.ad.entity.SysUserSync;
import com.cmeeting.dto.UserDTO;
import org.apache.ibatis.annotations.Mapper;
......@@ -18,6 +19,8 @@ public interface SysUserSysMapper extends BaseMapper<SysUserSync> {
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> getUsersByDept(@Param(value = "deptIds") List<String> deptIds);
......
......@@ -3,8 +3,10 @@ package com.cmeeting.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
......@@ -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;
/**
* 会议结束时间(时间戳)
*/
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime endTime;
/**
......@@ -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;
/**
......@@ -115,8 +123,10 @@ public class MeetingInfo implements Serializable {
*/
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;
/**
......
......@@ -3,8 +3,10 @@ package com.cmeeting.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
......@@ -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;
/**
* 创建时间
*/
@DateTimeFormat(pattern = "yyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
private LocalDateTime updateTime;
/**
......
......@@ -9,5 +9,5 @@ import java.util.List;
public interface RecordTemplatePermissionService extends IService<RecordTemplatePermission> {
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;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.secondary.SysUserSysMapper;
import com.cmeeting.pojo.MeetingRecordTemplate;
import com.cmeeting.pojo.RecordTemplatePermission;
import com.cmeeting.service.MeetingRecordTemplateService;
......@@ -14,7 +19,9 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
......@@ -22,6 +29,8 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
@Resource
private MeetingRecordTemplateService recordTemplateService;
@Resource
private SysUserSysMapper sysUserSysMapper;
/**
* 授权
......@@ -30,7 +39,7 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
@Override
public boolean auth(RecordTemplateVO.TemplatePermissionVO vo) {
List<RecordTemplateVO.PermissionItem> permissionItems = vo.getPermissionItems();
if(CollectionUtils.isEmpty(permissionItems) || vo.getTemplateId() == null){
if(vo.getTemplateId() == null){
return false;
}
MeetingRecordTemplate template = recordTemplateService.getById(vo.getTemplateId());
......@@ -38,24 +47,6 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
throw new RuntimeException("模板不存在");
}
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();
for (RecordTemplateVO.PermissionItem permissionItem : permissionItems) {
RecordTemplatePermission permission = RecordTemplatePermission.builder()
......@@ -67,7 +58,18 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
.build();
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);
}
return true;
}
......@@ -77,10 +79,32 @@ public class RecordTemplatePermissionServiceImpl extends ServiceImpl<RecordTempl
* @return
*/
@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(
new LambdaQueryWrapper<RecordTemplatePermission>()
.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;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
......@@ -59,6 +62,9 @@ public class RecordTemplateVO {
}
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class PermissionItem{
/**
* 对象类型
......@@ -68,6 +74,10 @@ public class RecordTemplateVO {
* 关联对象id
*/
private String relId;
/**
* 关联对象
*/
private String relName;
}
@Data
......
......@@ -45,4 +45,13 @@
</where>
group by t1.user_id
</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>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论