diff --git a/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java b/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java index 68c20a92f2..8ebf604a00 100644 --- a/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java +++ b/backend/src/main/java/io/dataease/auth/service/impl/ShiroServiceImpl.java @@ -45,6 +45,8 @@ public class ShiroServiceImpl implements ShiroService { //验证链接 filterChainDefinitionMap.put("/api/link/validate**", ANON); filterChainDefinitionMap.put("/api/map/areaEntitys/**", ANON); + //未读消息数量 + filterChainDefinitionMap.put("/api/sys_msg/unReadCount", ANON); filterChainDefinitionMap.put("/**/*.json", ANON); filterChainDefinitionMap.put("/system/ui/**", ANON); diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtBaseMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtBaseMapper.java deleted file mode 100644 index 6bb998b724..0000000000 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtBaseMapper.java +++ /dev/null @@ -1,4 +0,0 @@ -package io.dataease.base.mapper.ext; - -public interface ExtBaseMapper { -} diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtBaseMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtBaseMapper.xml deleted file mode 100644 index 72123155c8..0000000000 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtBaseMapper.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - order by - - ${order.name} ${order.type} - - - - - - - - like CONCAT('%', #{${object}.value},'%') - - - not like CONCAT('%', #{${object}.value},'%') - - - in - - #{v} - - - - not in - - #{v} - - - - between #{${object}.value[0]} and #{${object}.value[1]} - - - > #{${object}.value} - - - < #{${object}.value} - - - >= #{${object}.value} - - - <= #{${object}.value} - - - = '${@io.metersphere.commons.utils.SessionUtils@getUserId()}' - - - = #{${object}.value} - - - - - diff --git a/backend/src/main/java/io/dataease/commons/utils/FileUtils.java b/backend/src/main/java/io/dataease/commons/utils/FileUtils.java deleted file mode 100644 index e76b24c687..0000000000 --- a/backend/src/main/java/io/dataease/commons/utils/FileUtils.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.dataease.commons.utils; - -import io.dataease.commons.exception.DEException; -import io.dataease.i18n.Translator; -import org.apache.commons.collections4.CollectionUtils; -import org.aspectj.util.FileUtil; -import org.springframework.web.multipart.MultipartFile; - -import java.io.*; -import java.util.List; - -public class FileUtils { - private static final String BODY_FILE_DIR = "/opt/metersphere/data/body"; - - public static void createBodyFiles(List bodyUploadIds, List bodyFiles) { - if (CollectionUtils.isNotEmpty(bodyUploadIds) && CollectionUtils.isNotEmpty(bodyFiles)) { - File testDir = new File(BODY_FILE_DIR); - if (!testDir.exists()) { - testDir.mkdirs(); - } - for (int i = 0; i < bodyUploadIds.size(); i++) { - MultipartFile item = bodyFiles.get(i); - File file = new File(BODY_FILE_DIR + "/" + bodyUploadIds.get(i) + "_" + item.getOriginalFilename()); - try (InputStream in = item.getInputStream(); OutputStream out = new FileOutputStream(file)) { - file.createNewFile(); - FileUtil.copyStream(in, out); - } catch (IOException e) { - LogUtil.error(e); - DEException.throwException(Translator.get("upload_fail")); - } - } - } - } -} diff --git a/backend/src/main/java/io/dataease/controller/sys/MsgController.java b/backend/src/main/java/io/dataease/controller/sys/MsgController.java index 1b4ce8bc8f..729edbae37 100644 --- a/backend/src/main/java/io/dataease/controller/sys/MsgController.java +++ b/backend/src/main/java/io/dataease/controller/sys/MsgController.java @@ -6,6 +6,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.dataease.base.domain.SysMsgChannel; import io.dataease.base.domain.SysMsgSetting; import io.dataease.base.domain.SysMsgType; +import io.dataease.commons.exception.DEException; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; @@ -21,6 +22,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Api(tags = "系统:消息管理") @@ -46,6 +48,16 @@ public class MsgController { return listPager; } + @ApiOperation("查询未读数量") + @PostMapping("/unReadCount") + public Long unReadCount(@RequestBody Map request) { + if(null == request || null == request.get("userId")) { + throw new RuntimeException("缺少用户ID"); + } + Long userId = request.get("userId"); + return sysMsgService.queryCount(userId); + } + @ApiOperation("设置已读") @PostMapping("/setReaded/{msgId}") public void setReaded(@PathVariable Long msgId) { diff --git a/backend/src/main/java/io/dataease/service/message/SysMsgService.java b/backend/src/main/java/io/dataease/service/message/SysMsgService.java index 0bfa10c343..798e0b42a2 100644 --- a/backend/src/main/java/io/dataease/service/message/SysMsgService.java +++ b/backend/src/main/java/io/dataease/service/message/SysMsgService.java @@ -105,6 +105,13 @@ public class SysMsgService { return msgGridDtos; } + public Long queryCount(Long userId) { + SysMsgExample example = new SysMsgExample(); + SysMsgExample.Criteria criteria = example.createCriteria(); + criteria.andUserIdEqualTo(userId).andStatusEqualTo(false); + return sysMsgMapper.countByExample(example); + } + public void setReaded(Long msgId) { SysMsg sysMsg = new SysMsg(); sysMsg.setMsgId(msgId); diff --git a/frontend/src/api/system/msg.js b/frontend/src/api/system/msg.js index 83accc340f..45ac7c687b 100644 --- a/frontend/src/api/system/msg.js +++ b/frontend/src/api/system/msg.js @@ -9,6 +9,15 @@ export function query(pageIndex, pageSize, data) { }) } +export function unReadCount(data) { + return request({ + url: '/api/sys_msg/unReadCount', + method: 'post', + loading: false, + data + }) +} + export function updateStatus(msgId) { return request({ url: '/api/sys_msg/setReaded/' + msgId, diff --git a/frontend/src/components/Notification/index.vue b/frontend/src/components/Notification/index.vue index 6e0d6cae1a..fa07c8e79d 100644 --- a/frontend/src/components/Notification/index.vue +++ b/frontend/src/components/Notification/index.vue @@ -53,14 +53,14 @@ class-name="notification" icon-class="notification" /> - {{ paginationConfig.total }} + {{ count || paginationConfig.total }} - -