Commit c8e66a0a68eab665e56337dff8661e3fe744e577

Authored by xp.Huang
2 parents 9bdae601 2a807973

Merge branch 'localhost-cxy' into 'master'

fix: 修改通知删除,相应的我的通知消息也一并删除

See merge request huang/thingsboard3.3.2!19
... ... @@ -34,7 +34,7 @@ public class SysNoticeDTO extends TenantDTO {
34 34 private String receiverType;
35 35
36 36 @ApiModelProperty(value = "根据receiverType不同变化,0:传null,1:组织id,2:部门id,3:用户id",required = true)
37   - private List<String> pointId;
  37 + private String pointId;
38 38
39 39 @ApiModelProperty(value = "发送状态(字典值draft_status) 0:草稿 1:已发布")
40 40 private String status;
... ...
... ... @@ -7,6 +7,7 @@ import org.thingsboard.server.common.data.yunteng.constant.ModelConstants;
7 7 import org.thingsboard.server.common.data.yunteng.enums.SysNoticeTypeEnum;
8 8
9 9 import java.time.LocalDateTime;
  10 +import java.util.List;
10 11
11 12 /**
12 13 * @author: 徐浩然
... ... @@ -25,12 +26,14 @@ public class SysNotice extends TenantBaseEntity {
25 26 private String title;
26 27 /** 内容 */
27 28 private String content;
28   - /** 接收者(字典值receiver_type) 0:全部 1:组织 2:部门 3:个人 */
  29 + /** 接收者(字典值receiver_type) 0:全部 1:组织 2:部门 3:个人 */
29 30 private String receiverType;
30   - /** 发送状态(字典值draft_status) 0:草稿 1:已发布 */
  31 + /** 发送状态(字典值draft_status) 0:草稿 1:已发布 */
31 32 private String status;
32 33 /** 发送者 */
33 34 private String senderName;
34 35 /** 发送时间 */
35 36 private LocalDateTime senderDate;
  37 + /** 组织id */
  38 + private String pointId;
36 39 }
... ...
... ... @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4 import com.baomidou.mybatisplus.core.metadata.IPage;
5 5 import lombok.RequiredArgsConstructor;
6 6 import lombok.extern.slf4j.Slf4j;
  7 +import org.apache.commons.lang3.StringUtils;
7 8 import org.springframework.stereotype.Service;
8 9 import org.springframework.transaction.annotation.Transactional;
9 10 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
... ... @@ -22,9 +23,7 @@ import org.thingsboard.server.dao.yunteng.service.SysNoticeUserService;
22 23 import org.thingsboard.server.dao.yunteng.service.UserOrganizationMappingService;
23 24
24 25 import java.time.LocalDateTime;
25   -import java.util.List;
26   -import java.util.Map;
27   -import java.util.Set;
  26 +import java.util.*;
28 27 import java.util.stream.Collectors;
29 28
30 29 /**
... ... @@ -56,7 +55,10 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
56 55 }
57 56
58 57 @Override
  58 + @Transactional
59 59 public boolean delete(Set<String> ids, String tenantId) {
  60 + //删除前先删除通知用户
  61 + sysNoticeUserService.deleteNoticUserByNoticeId(new ArrayList<>(ids));
60 62 return baseMapper.delete(
61 63 new LambdaQueryWrapper<SysNotice>()
62 64 .in(SysNotice::getId, ids)
... ... @@ -65,16 +67,17 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
65 67 }
66 68
67 69 @Override
  70 + @Transactional
68 71 public SysNoticeDTO save(SysNoticeDTO sysNoticeDTO, String tenantId) {
69 72 SysNotice sysNotice = sysNoticeDTO.getEntity(SysNotice.class);
70 73 // 设置为草稿
71 74 sysNotice.setTenantId(tenantId);
  75 + // 接收者字典值判断
72 76 if (sysNoticeDTO.getReceiverType() == null
73 77 || (!sysNoticeDTO.getReceiverType().equals(FastIotConstants.ReceiverType.ALL)
74   - && sysNoticeDTO.getPointId() == null)) {
  78 + && StringUtils.isEmpty(sysNoticeDTO.getPointId()))) {
75 79 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
76 80 }
77   -
78 81 List<String> userList;
79 82 switch (sysNotice.getReceiverType()) {
80 83 case FastIotConstants.ReceiverType.ALL:
... ... @@ -90,13 +93,14 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
90 93 break;
91 94 case FastIotConstants.ReceiverType.ORGANIZATION:
92 95 // 判断传入的集合id是否为空
93   - if (sysNoticeDTO.getPointId() == null || sysNoticeDTO.getPointId().size() == 0) {
  96 + if (StringUtils.isEmpty(sysNoticeDTO.getPointId())) {
94 97 throw new EntityCreationException(ErrorMessage.GET_CURRENT_USER_EXCEPTION.name());
95 98 }
96 99 // 获取当前组织下的所有用户
  100 + //把拿到的数据用,分割成数组
97 101 userList =
98 102 userOrganizationMappingService.getUserIdByOrganizationIds(
99   - tenantId, sysNoticeDTO.getPointId().toArray(String[]::new));
  103 + tenantId, sysNoticeDTO.getPointId().split(","));
100 104 break;
101 105 default:
102 106 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
... ... @@ -104,6 +108,7 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S
104 108 if (userList.isEmpty()) {
105 109 throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.name());
106 110 }
  111 + //sysNotice.setPointId(String.join(",", sysNoticeDTO.getPointId()));
107 112 // 如果为空,则新增
108 113 if (sysNotice.getId() == null) {
109 114 baseMapper.insert(sysNotice);
... ...
... ... @@ -71,16 +71,17 @@ public class SysNoticeUserServiceImpl
71 71 public void saveSysNoticeUser(
72 72 List<String> userIds, String tenantId, String noticeId, String status) {
73 73 List<SysNoticeUser> sysNoticeUserList = new ArrayList<>();
74   - userIds.forEach(userId ->{
75   - SysNoticeUser sysNoticeUser = new SysNoticeUser();
76   - sysNoticeUser.setNoticeId(noticeId);
77   - sysNoticeUser.setStatus(status);
78   - sysNoticeUser.setTenantId(tenantId);
79   - sysNoticeUser.setReadStatus(FastIotConstants.ReadState.UNREAD);
80   - sysNoticeUser.setReceiverId(userId);
81   - sysNoticeUserList.add(sysNoticeUser);
82   - });
83   - insertBatch(sysNoticeUserList,sysNoticeUserList.size());
  74 + userIds.forEach(
  75 + userId -> {
  76 + SysNoticeUser sysNoticeUser = new SysNoticeUser();
  77 + sysNoticeUser.setNoticeId(noticeId);
  78 + sysNoticeUser.setStatus(status);
  79 + sysNoticeUser.setTenantId(tenantId);
  80 + sysNoticeUser.setReadStatus(FastIotConstants.ReadState.UNREAD);
  81 + sysNoticeUser.setReceiverId(userId);
  82 + sysNoticeUserList.add(sysNoticeUser);
  83 + });
  84 + insertBatch(sysNoticeUserList, sysNoticeUserList.size());
84 85 }
85 86
86 87 @Override
... ... @@ -104,6 +105,14 @@ public class SysNoticeUserServiceImpl
104 105 return baseMapper.updateSysNoticeUsersStatusByNoticeId(id, status);
105 106 }
106 107
  108 + @Override
  109 + public boolean deleteNoticUserByNoticeId(List<String> noticeId) {
  110 +
  111 + return baseMapper.delete(
  112 + new LambdaQueryWrapper<SysNoticeUser>().in(SysNoticeUser::getNoticeId, noticeId))
  113 + > 0;
  114 + }
  115 +
107 116 private YtPageData<SysNoticeUserDTO> getPage(Map<String, Object> queryMap) {
108 117 IPage<SysNoticeUser> page = getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, true);
109 118 IPage<SysNoticeUserDTO> pageDto = baseMapper.page(page, queryMap);
... ...
... ... @@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 4 import com.baomidou.mybatisplus.core.metadata.IPage;
5 5 import org.apache.ibatis.annotations.Mapper;
6 6 import org.apache.ibatis.annotations.Param;
  7 +import org.springframework.validation.annotation.Validated;
  8 +import org.thingsboard.server.common.data.yunteng.dto.DeleteDTO;
7 9 import org.thingsboard.server.common.data.yunteng.dto.SysNoticeDTO;
8 10 import org.thingsboard.server.dao.yunteng.entities.SysNotice;
9 11
10 12 import java.util.Map;
  13 +import java.util.Set;
11 14
12 15 /**
13 16 * @author: 徐浩然
... ... @@ -28,4 +31,7 @@ public interface SysNoticeMapper extends BaseMapper<SysNotice> {
28 31 * @return 消息详情
29 32 */
30 33 SysNoticeDTO get(@Param("id") String id, @Param("tenantId") String tenantId);
  34 +
  35 +
  36 +
31 37 }
... ...
... ... @@ -31,4 +31,6 @@ public interface SysNoticeUserMapper extends BaseMapper<SysNoticeUser> {
31 31 SysNoticeUserDTO get(@Param("id") String id, @Param("tenantId") String tenantId);
32 32
33 33 boolean updateSysNoticeUsersStatusByNoticeId(@Param("noticeId")String noticeId, @Param("status")String status);
  34 +
  35 +
34 36 }
... ...
... ... @@ -25,4 +25,6 @@ public interface SysNoticeUserService {
25 25 List<String> getSysNoticeUserIdsByNoticeId(String noticeId);
26 26
27 27 boolean updateSysNoticeUsersStatusByNoticeId(String noticeId, String status);
  28 +
  29 + boolean deleteNoticUserByNoticeId(List<String> noticeId);
28 30 }
... ...
... ... @@ -16,6 +16,7 @@
16 16 <result property="createTime" column="create_time"/>
17 17 <result property="updateTime" column="update_time"/>
18 18 <result property="tenantId" column="tenant_id"/>
  19 + <result property="pointId" column="point_id"/>
19 20 </resultMap>
20 21
21 22 <sql id="dict">
... ... @@ -45,7 +46,8 @@
45 46 sn.updater updater,
46 47 sn.create_time create_time,
47 48 sn.update_time update_time,
48   - sn.tenant_id tenant_id
  49 + sn.tenant_id tenant_id,
  50 + sn.point_id point_id
49 51 FROM sys_notice sn
50 52 </sql>
51 53 <select id="page" resultMap="sysNotice">
... ... @@ -62,4 +64,5 @@
62 64 sn.tenant_id = #{tenantId}
63 65 AND sn.id = #{id}
64 66 </select>
  67 +
65 68 </mapper>
... ...