fix: 2.5.0:

1、Dashboard普通用户登录定时任务权限没有显示
2、Dashbaord添加用户权限按命名空间,组进行查询
This commit is contained in:
zhengweilin 2023-12-11 11:19:23 +08:00 committed by byteblogs168
parent 5cd7d074eb
commit f86a69406b
6 changed files with 104 additions and 27 deletions

View File

@ -23,17 +23,19 @@ public interface JobSummaryMapper extends BaseMapper<JobSummary> {
int insertOrUpdate(@Param("list") List<JobSummary> list);
IPage<DashboardRetryLineResponseDO.Task> jobTaskList(@Param("namespaceId") String namespaceId, Page<Object> page);
IPage<DashboardRetryLineResponseDO.Task> jobTaskList(@Param("namespaceId") String namespaceId, @Param("groupNames") List<String> groupNames, Page<Object> page);
List<DashboardLineResponseDO> jobLineList(@Param("namespaceId") String namespaceId,
@Param("groupNames") List<String> groupNames,
@Param("groupName") String groupName,
@Param("type") String type,
@Param("from") LocalDateTime from,
@Param("to") LocalDateTime to);
DashboardCardResponseDO.JobTask toJobTask(@Param("namespaceId") String namespaceId);
DashboardCardResponseDO.JobTask toJobTask(@Param("namespaceId") String namespaceId, @Param("groupNames") List<String> groupNames);
List<DashboardRetryLineResponseDO.Rank> dashboardRank(@Param("namespaceId") String namespaceId,
@Param("groupNames") List<String> groupNames,
@Param("groupName") String groupName,
@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime

View File

@ -23,13 +23,14 @@ public interface RetrySummaryMapper extends BaseMapper<RetrySummary> {
int insertOrUpdate(@Param("list") List<RetrySummary> list);
DashboardCardResponseDO.RetryTask retryTask(@Param("namespaceId") String namespaceId);
DashboardCardResponseDO.RetryTask retryTask(@Param("namespaceId") String namespaceId, @Param("groupNames") List<String> groupNames);
List<DashboardCardResponseDO.RetryTaskBar> retryTaskBarList(@Param("namespaceId") String namespaceId);
List<DashboardCardResponseDO.RetryTaskBar> retryTaskBarList(@Param("namespaceId") String namespaceId, @Param("groupNames") List<String> groupNames);
IPage<DashboardRetryLineResponseDO.Task> retryTaskList(@Param("namespaceId") String namespaceId, Page<Object> page);
IPage<DashboardRetryLineResponseDO.Task> retryTaskList(@Param("namespaceId") String namespaceId, @Param("groupNames") List<String> groupNames, Page<Object> page);
List<DashboardLineResponseDO> retryLineList(@Param("namespaceId") String namespaceId,
@Param("groupNames") List<String> groupNames,
@Param("groupName") String groupName,
@Param("type") String type,
@Param("from") LocalDateTime from,
@ -37,6 +38,7 @@ public interface RetrySummaryMapper extends BaseMapper<RetrySummary> {
List<DashboardRetryLineResponseDO.Rank> dashboardRank(@Param("namespaceId") String namespaceId,
@Param("groupNames") List<String> groupNames,
@Param("groupName") String groupName,
@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime

View File

@ -77,6 +77,12 @@
ifnull(SUM(success_num + fail_num + stop_num + cancel_num), 0) AS total
FROM job_summary
<where>
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
<if test="groupName != null and groupName != '' ">
AND group_name = #{groupName}
</if>
@ -94,6 +100,12 @@
ifnull(sum(success_num + fail_num + stop_num + cancel_num), 0) AS totalNum
FROM job_summary
WHERE namespace_id = #{namespaceId}
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
</select>
<select id="dashboardRank"
@ -102,6 +114,12 @@
CONCAT(group_name, '/', (SELECT job_name FROM job WHERE id=job_id)) `name`,
SUM(fail_num) AS total FROM job_summary
<where>
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
<if test="groupName != '' and groupName != null">
AND group_name = #{groupName}
</if>
@ -120,6 +138,12 @@
count(*) AS total
FROM job
WHERE namespace_id = #{namespaceId}
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
GROUP BY namespace_id, group_name
</select>
</mapper>

View File

@ -48,6 +48,12 @@
ifnull(sum(running_num + finish_num + max_count_num + suspend_num), 0) AS totalNum
FROM retry_summary
WHERE namespace_id = #{namespaceId}
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
</select>
<select id="retryTaskBarList"
@ -69,6 +75,12 @@
LEFT JOIN (SELECT DATE (trigger_at) AS triggerAt,
SUM(running_num + finish_num + max_count_num + suspend_num) AS taskTotal FROM retry_summary
WHERE namespace_id = #{namespaceId}
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
GROUP BY triggerAt
) b
ON tmp.date = b.triggerAt
@ -107,6 +119,12 @@
</if>
AND namespace_id = #{namespaceId} AND trigger_at BETWEEN #{from} AND #{to}
</where>
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
GROUP BY createDt
</select>
@ -122,6 +140,12 @@
AND namespace_id = #{namespaceId}
AND trigger_at >= #{startTime} AND trigger_at &lt;= #{endTime}
</where>
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
GROUP BY namespace_id, group_name, scene_name
HAVING total > 0
ORDER BY total DESC LIMIT 10
@ -134,6 +158,12 @@
count(*) AS total
FROM scene_config
WHERE namespace_id = #{namespaceId}
<if test="groupNames != null and groupNames.size > 0">
AND group_name IN
<foreach collection="groupNames" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
GROUP BY namespace_id, group_name
</select>
</mapper>

View File

@ -12,6 +12,7 @@ import com.aizuda.easy.retry.server.web.model.base.BaseQueryVO;
import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.enums.DateTypeEnum;
import com.aizuda.easy.retry.server.web.model.request.ServerNodeQueryVO;
import com.aizuda.easy.retry.server.web.model.request.UserSessionVO;
import com.aizuda.easy.retry.server.web.model.response.*;
import com.aizuda.easy.retry.server.web.service.DashBoardService;
import com.aizuda.easy.retry.server.web.service.convert.*;
@ -39,10 +40,7 @@ import org.springframework.web.client.RestTemplate;
import java.text.MessageFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -71,16 +69,19 @@ public class DashBoardServiceImpl implements DashBoardService {
@Override
public DashboardCardResponseVO taskRetryJob() {
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
// 查询登录用户权限
UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
String namespaceId = userSessionVO.getNamespaceId();
List<String> groupNames = userSessionVO.isUser() ? userSessionVO.getGroupNames() : new ArrayList<>();
DashboardCardResponseVO dashboardCardResponseVO = new DashboardCardResponseVO();
// 重试任务
dashboardCardResponseVO.setRetryTask(RetrySummaryResponseVOConverter.INSTANCE.toRetryTask(retrySummaryMapper.retryTask(namespaceId)));
dashboardCardResponseVO.setRetryTask(RetrySummaryResponseVOConverter.INSTANCE.toRetryTask(retrySummaryMapper.retryTask(namespaceId, groupNames)));
// 定时任务
dashboardCardResponseVO.setJobTask(JobSummaryResponseVOConverter.INSTANCE.toTaskJob(jobSummaryMapper.toJobTask(namespaceId)));
dashboardCardResponseVO.setJobTask(JobSummaryResponseVOConverter.INSTANCE.toTaskJob(jobSummaryMapper.toJobTask(namespaceId, groupNames)));
// 重试任务柱状图
dashboardCardResponseVO.setRetryTaskBarList(RetrySummaryResponseVOConverter.INSTANCE.toRetryTaskBar(retrySummaryMapper.retryTaskBarList(namespaceId)));
dashboardCardResponseVO.setRetryTaskBarList(RetrySummaryResponseVOConverter.INSTANCE.toRetryTaskBar(retrySummaryMapper.retryTaskBarList(namespaceId, groupNames)));
// 在线Pods
List<ActivePodQuantityResponseDO> activePodQuantityDO = serverNodeMapper.countActivePod(Lists.newArrayList(namespaceId, ServerRegister.NAMESPACE_ID));
List<ActivePodQuantityResponseDO> activePodQuantityDO = serverNodeMapper.countActivePod(Lists.newArrayList(userSessionVO.getNamespaceId(), ServerRegister.NAMESPACE_ID));
Map<Integer, Long> map = activePodQuantityDO.stream().collect(Collectors.toMap(ActivePodQuantityResponseDO::getNodeType, ActivePodQuantityResponseDO::getTotal));
Long clientTotal = map.getOrDefault(NodeTypeEnum.CLIENT.getType(), 0L);
Long serverTotal = map.getOrDefault(NodeTypeEnum.SERVER.getType(), 0L);
@ -94,10 +95,13 @@ public class DashBoardServiceImpl implements DashBoardService {
@Override
public DashboardRetryLineResponseVO retryLineList(BaseQueryVO baseQueryVO, String groupName, String type, String startTime, String endTime) {
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
// 查询登录用户权限
UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
String namespaceId = userSessionVO.getNamespaceId();
List<String> groupNames = userSessionVO.isUser() ? userSessionVO.getGroupNames() : new ArrayList<>();
DashboardRetryLineResponseVO dashboardRetryLineResponseVO = new DashboardRetryLineResponseVO();
// 重试任务列表
IPage<DashboardRetryLineResponseDO.Task> IPage = retrySummaryMapper.retryTaskList(namespaceId, new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize()));
IPage<DashboardRetryLineResponseDO.Task> IPage = retrySummaryMapper.retryTaskList(namespaceId, groupNames, new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize()));
List<DashboardRetryLineResponseVO.Task> taskList = JobSummaryResponseVOConverter.INSTANCE.toDashboardRetryLineResponseVO(IPage.getRecords());
PageResult<List<DashboardRetryLineResponseVO.Task>> pageResult = new PageResult<>(new PageDTO(IPage.getCurrent(), IPage.getSize(), IPage.getTotal()), taskList);
dashboardRetryLineResponseVO.setTaskList(pageResult);
@ -106,14 +110,14 @@ public class DashBoardServiceImpl implements DashBoardService {
DateTypeEnum dateTypeEnum = DateTypeEnum.valueOf(type);
LocalDateTime startDateTime = dateTypeEnum.getStartTime().apply(StrUtil.isNotBlank(startTime) ? LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null);
LocalDateTime endDateTime = dateTypeEnum.getEndTime().apply(StrUtil.isNotBlank(endTime) ? LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null);
List<DashboardLineResponseDO> dashboardRetryLinkeResponseDOList = retrySummaryMapper.retryLineList(namespaceId, groupName, type, startDateTime, endDateTime);
List<DashboardLineResponseDO> dashboardRetryLinkeResponseDOList = retrySummaryMapper.retryLineList(namespaceId, groupNames, groupName, type, startDateTime, endDateTime);
List<DashboardLineResponseVO> dashboardLineResponseVOList = DispatchQuantityResponseVOConverter.INSTANCE.toDashboardLineResponseVO(dashboardRetryLinkeResponseDOList);
dateTypeEnum.getConsumer().accept(dashboardLineResponseVOList);
dashboardLineResponseVOList.sort(Comparator.comparing(a -> a.getCreateDt()));
dashboardRetryLineResponseVO.setDashboardLineResponseDOList(dashboardLineResponseVOList);
// 排行榜
List<DashboardRetryLineResponseDO.Rank> rankList = retrySummaryMapper.dashboardRank(namespaceId, groupName, startDateTime, endDateTime);
List<DashboardRetryLineResponseDO.Rank> rankList = retrySummaryMapper.dashboardRank(namespaceId, groupNames, groupName, startDateTime, endDateTime);
List<DashboardRetryLineResponseVO.Rank> ranks = SceneQuantityRankResponseVOConverter.INSTANCE.toDashboardRetryLineResponseVORank(rankList);
dashboardRetryLineResponseVO.setRankList(ranks);
return dashboardRetryLineResponseVO;
@ -122,10 +126,13 @@ public class DashBoardServiceImpl implements DashBoardService {
@Override
public DashboardRetryLineResponseVO jobLineList(BaseQueryVO baseQueryVO, String groupName, String type, String startTime, String endTime) {
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
// 查询登录用户权限
UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
String namespaceId = userSessionVO.getNamespaceId();
List<String> groupNames = userSessionVO.isUser() ? userSessionVO.getGroupNames() : new ArrayList<>();
DashboardRetryLineResponseVO dashboardRetryLineResponseVO = new DashboardRetryLineResponseVO();
// 重试任务列表
IPage<DashboardRetryLineResponseDO.Task> IPage = jobSummaryMapper.jobTaskList(namespaceId, new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize()));
IPage<DashboardRetryLineResponseDO.Task> IPage = jobSummaryMapper.jobTaskList(namespaceId, groupNames, new Page<>(baseQueryVO.getPage(), baseQueryVO.getSize()));
List<DashboardRetryLineResponseVO.Task> taskList = JobSummaryResponseVOConverter.INSTANCE.toDashboardRetryLineResponseVO(IPage.getRecords());
PageResult<List<DashboardRetryLineResponseVO.Task>> pageResult = new PageResult<>(new PageDTO(IPage.getCurrent(), IPage.getSize(), IPage.getTotal()), taskList);
dashboardRetryLineResponseVO.setTaskList(pageResult);
@ -134,14 +141,14 @@ public class DashBoardServiceImpl implements DashBoardService {
DateTypeEnum dateTypeEnum = DateTypeEnum.valueOf(type);
LocalDateTime startDateTime = dateTypeEnum.getStartTime().apply(StrUtil.isNotBlank(startTime) ? LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null);
LocalDateTime endDateTime = dateTypeEnum.getEndTime().apply(StrUtil.isNotBlank(endTime) ? LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null);
List<DashboardLineResponseDO> dashboardLineResponseDOList = jobSummaryMapper.jobLineList(namespaceId, groupName, type, startDateTime, endDateTime);
List<DashboardLineResponseDO> dashboardLineResponseDOList = jobSummaryMapper.jobLineList(namespaceId, groupNames, groupName, type, startDateTime, endDateTime);
List<DashboardLineResponseVO> dashboardLineResponseVOList = DispatchQuantityResponseVOConverter.INSTANCE.toDashboardLineResponseVO(dashboardLineResponseDOList);
dateTypeEnum.getConsumer().accept(dashboardLineResponseVOList);
dashboardLineResponseVOList.sort(Comparator.comparing(a -> a.getCreateDt()));
dashboardRetryLineResponseVO.setDashboardLineResponseDOList(dashboardLineResponseVOList);
// 排行榜
List<DashboardRetryLineResponseDO.Rank> rankList = jobSummaryMapper.dashboardRank(namespaceId, groupName, startDateTime, endDateTime);
List<DashboardRetryLineResponseDO.Rank> rankList = jobSummaryMapper.dashboardRank(namespaceId, groupNames, groupName, startDateTime, endDateTime);
List<DashboardRetryLineResponseVO.Rank> ranks = SceneQuantityRankResponseVOConverter.INSTANCE.toDashboardRetryLineResponseVORank(rankList);
dashboardRetryLineResponseVO.setRankList(ranks);
return dashboardRetryLineResponseVO;

View File

@ -161,6 +161,18 @@ const retryUser = [
}
]
const jobUser = [
{
roleId: 1,
permissionId: 'JobAnalysis',
permissionName: '定时任务',
actionEntitySet: [
{
action: 'job',
describe: '定时',
defaultCheck: false
}
]
},
{
roleId: 1,
permissionId: 'dashboard',