From 1e33054903ef5911bd0c668168556cb549492ae6 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Mon, 26 Jul 2021 21:31:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20everyone=E9=BB=98=E8=AE=A4=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E4=BB=AA=E8=A1=A8=E6=9D=BF=E5=88=86=E4=BA=AB=E3=80=81?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=A4=B1=E8=B4=A5=E6=B6=88=E6=81=AF=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/base/domain/SysMsgSetting.java | 4 + .../base/mapper/ext/ExtSysMsgMapper.java | 4 + .../base/mapper/ext/ExtSysMsgMapper.xml | 9 ++ .../controller/message/MsgController.java | 11 +- .../message/dto/BatchSettingRequest.java | 16 +++ .../service/message/SysMsgService.java | 63 ++++++++- frontend/src/api/system/msg.js | 9 ++ frontend/src/views/msg/setting.vue | 127 ++++++++++++++++-- 8 files changed, 225 insertions(+), 18 deletions(-) create mode 100644 backend/src/main/java/io/dataease/controller/message/dto/BatchSettingRequest.java diff --git a/backend/src/main/java/io/dataease/base/domain/SysMsgSetting.java b/backend/src/main/java/io/dataease/base/domain/SysMsgSetting.java index 4d679effec..6d86ed720f 100644 --- a/backend/src/main/java/io/dataease/base/domain/SysMsgSetting.java +++ b/backend/src/main/java/io/dataease/base/domain/SysMsgSetting.java @@ -16,4 +16,8 @@ public class SysMsgSetting implements Serializable { private Boolean enable; private static final long serialVersionUID = 1L; + + public Boolean match(SysMsgSetting setting) { + return setting.getTypeId() == typeId && setting.getChannelId() == channelId; + } } \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.java index 08d0eb5123..7070b0c4d3 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.java @@ -1,6 +1,8 @@ package io.dataease.base.mapper.ext; import io.dataease.base.domain.SysMsgExample; +import io.dataease.base.domain.SysMsgSetting; +import io.dataease.controller.message.dto.BatchSettingRequest; import io.dataease.controller.message.dto.MsgGridDto; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; @@ -34,6 +36,8 @@ public interface ExtSysMsgMapper { }) int batchDelete(@Param("msgIds") List msgIds); + int batchInsert(@Param("settings") List settings); + List queryGrid(SysMsgExample example); diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.xml index 90959633e4..567993eef3 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtSysMsgMapper.xml @@ -57,4 +57,13 @@ + + INSERT INTO sys_msg_setting (user_id,type_id,channel_id,enable) + VALUES + + (#{setting.userId}, #{setting.typeId}, #{setting.channelId}, #{setting.enable}) + + + + diff --git a/backend/src/main/java/io/dataease/controller/message/MsgController.java b/backend/src/main/java/io/dataease/controller/message/MsgController.java index ec52740417..1eac98e43d 100644 --- a/backend/src/main/java/io/dataease/controller/message/MsgController.java +++ b/backend/src/main/java/io/dataease/controller/message/MsgController.java @@ -8,10 +8,7 @@ import io.dataease.base.domain.SysMsgType; import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.PageUtils; import io.dataease.commons.utils.Pager; -import io.dataease.controller.message.dto.MsgGridDto; -import io.dataease.controller.message.dto.MsgRequest; -import io.dataease.controller.message.dto.MsgSettingRequest; -import io.dataease.controller.message.dto.SettingTreeNode; +import io.dataease.controller.message.dto.*; import io.dataease.service.message.SysMsgService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -90,4 +87,10 @@ public class MsgController { List sysMsgTypes = sysMsgService.queryMsgTypes(); return sysMsgTypes; } + + @PostMapping("/batchUpdate") + public void batchUpdate(@RequestBody BatchSettingRequest request) { + Long userId = AuthUtils.getUser().getUserId(); + sysMsgService.batchUpdate(request, userId); + } } diff --git a/backend/src/main/java/io/dataease/controller/message/dto/BatchSettingRequest.java b/backend/src/main/java/io/dataease/controller/message/dto/BatchSettingRequest.java new file mode 100644 index 0000000000..56497cbba0 --- /dev/null +++ b/backend/src/main/java/io/dataease/controller/message/dto/BatchSettingRequest.java @@ -0,0 +1,16 @@ +package io.dataease.controller.message.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class BatchSettingRequest implements Serializable { + + private List typeIds; + + private Long channelId; + + private Boolean enable; +} 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 a711fc54d8..95dbc38e4e 100644 --- a/backend/src/main/java/io/dataease/service/message/SysMsgService.java +++ b/backend/src/main/java/io/dataease/service/message/SysMsgService.java @@ -176,9 +176,28 @@ public class SysMsgService { SysMsgSettingExample example = new SysMsgSettingExample(); example.createCriteria().andUserIdEqualTo(userId); List sysMsgSettings = sysMsgSettingMapper.selectByExample(example); + sysMsgSettings = addDefault(sysMsgSettings); return sysMsgSettings; } + public List defaultSettings() { + Long userId = AuthUtils.getUser().getUserId(); + SysMsgSetting sysMsgSetting1 = new SysMsgSetting(); + sysMsgSetting1.setTypeId(2L); + sysMsgSetting1.setChannelId(1L); + sysMsgSetting1.setEnable(true); + // sysMsgSetting1.setUserId(userId); + SysMsgSetting sysMsgSetting2 = new SysMsgSetting(); + sysMsgSetting2.setTypeId(6L); + sysMsgSetting2.setChannelId(1L); + sysMsgSetting2.setEnable(true); + //sysMsgSetting2.setUserId(userId); + List lists = new ArrayList<>(); + lists.add(sysMsgSetting1); + lists.add(sysMsgSetting2); + return lists; + } + /** * 修改了订阅信息 需要清除缓存 * @param request @@ -200,14 +219,42 @@ public class SysMsgService { }); return; } + SysMsgSetting sysMsgSetting = new SysMsgSetting(); - sysMsgSetting.setEnable(true); + sysMsgSetting.setChannelId(channelId); sysMsgSetting.setTypeId(typeId); + + List defaultSettings = defaultSettings(); + + sysMsgSetting.setEnable(!defaultSettings.stream().anyMatch(setting -> setting.match(sysMsgSetting))); + sysMsgSetting.setUserId(userId); + sysMsgSettingMapper.insert(sysMsgSetting); } + + @Transactional + @CacheEvict(value = SysMsgConstants.SYS_MSG_USER_SUBSCRIBE, key = "#userId") + public void batchUpdate(BatchSettingRequest request, Long userId) { + // 先删除 + SysMsgSettingExample example = new SysMsgSettingExample(); + example.createCriteria().andUserIdEqualTo(userId).andChannelIdEqualTo(request.getChannelId()).andTypeIdIn(request.getTypeIds()); + sysMsgSettingMapper.deleteByExample(example); + // 再写入 + List settings = request.getTypeIds().stream().map(typeId -> { + SysMsgSetting sysMsgSetting = new SysMsgSetting(); + sysMsgSetting.setUserId(userId); + sysMsgSetting.setTypeId(typeId); + sysMsgSetting.setChannelId(request.getChannelId()); + sysMsgSetting.setEnable(request.getEnable()); + return sysMsgSetting; + }).collect(Collectors.toList()); + + extSysMsgMapper.batchInsert(settings); + } + public void sendMsg(Long userId, Long typeId, Long channelId, String content, String param) { SysMsg sysMsg = new SysMsg(); sysMsg.setUserId(userId); @@ -229,6 +276,9 @@ public class SysMsgService { SysMsgSettingExample example = new SysMsgSettingExample(); example.createCriteria().andUserIdEqualTo(userId).andEnableEqualTo(true); List sysMsgSettings = sysMsgSettingMapper.selectByExample(example); + // 添加默认订阅 + sysMsgSettings = addDefault(sysMsgSettings); + // sysMsgSettings.addAll(defaultSettings()); List resultLists = sysMsgSettings.stream().map(item -> { SubscribeNode subscribeNode = new SubscribeNode(); subscribeNode.setTypeId(item.getTypeId()); @@ -238,4 +288,15 @@ public class SysMsgService { return resultLists; } + public List addDefault(List sourceLists) { + List defaultSettings = defaultSettings(); + + defaultSettings.forEach(setting -> { + if (!sourceLists.stream().anyMatch(item -> item.match(setting))){ + sourceLists.add(setting); + } + }); + return sourceLists; + } + } diff --git a/frontend/src/api/system/msg.js b/frontend/src/api/system/msg.js index bf13395a41..d84dba9cb9 100644 --- a/frontend/src/api/system/msg.js +++ b/frontend/src/api/system/msg.js @@ -59,6 +59,15 @@ export function updateSetting(data) { }) } +export function batchUpdate(data) { + return request({ + url: '/api/sys_msg/batchUpdate', + method: 'post', + loading: true, + data + }) +} + export function allTypes(data) { return request({ url: '/api/sys_msg/types', diff --git a/frontend/src/views/msg/setting.vue b/frontend/src/views/msg/setting.vue index 730cd3d858..efe74081a4 100644 --- a/frontend/src/views/msg/setting.vue +++ b/frontend/src/views/msg/setting.vue @@ -21,18 +21,15 @@ {{ $t('webmsg.' + data.name) }} - + @@ -44,7 +41,7 @@