通知bug

This commit is contained in:
mx 2024-11-06 17:29:01 +08:00
parent 73c0951ff5
commit 3972ae9b80

View File

@ -31,6 +31,8 @@ import com.pusong.system.mapper.SysUserMapper;
import com.pusong.system.service.ISysNoticeService;
import com.pusong.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.web.socket.WebSocketSession;
@ -48,6 +50,7 @@ import java.util.stream.Collectors;
@Service
public class SysNoticeServiceImpl implements ISysNoticeService {
private static final Logger logger = LoggerFactory.getLogger(SysNoticeServiceImpl.class);
private final SysNoticeMapper baseMapper;
private final SysUserMapper userMapper;
private final DictService dictService;
@ -109,57 +112,64 @@ public class SysNoticeServiceImpl implements ISysNoticeService {
}
@Override
public int sendNotice(SysNoticeBo bo) {
String type = dictService.getDictLabel("sys_notice_type", bo.getNoticeType());
List<SysNotice> insertData = new ArrayList<>();
List<Long> uids = new ArrayList<>();
try {
String type = dictService.getDictLabel("sys_notice_type", bo.getNoticeType());
List<SysNotice> insertData = new ArrayList<>();
List<Long> uids = new ArrayList<>();
if (bo.getRecMenuRole() != null){
QueryWrapper<SysMenu> qw = Wrappers.query();
qw.eq("menu.path", bo.getRecMenuRole());
List<SysRoleVo> sysRoleVos = roleMapper.selectRoleByMenuPath(qw);
List<String> roleKeyList = sysRoleVos.stream().map(SysRoleVo::getRoleKey).toList();
bo.setRecRole(roleKeyList);
}
if (bo.getRecMenuRole() != null){
QueryWrapper<SysMenu> qw = Wrappers.query();
qw.eq("menu.path", bo.getRecMenuRole());
List<SysRoleVo> sysRoleVos = roleMapper.selectRoleByMenuPath(qw);
List<String> roleKeyList = sysRoleVos.stream().map(SysRoleVo::getRoleKey).toList();
bo.setRecRole(roleKeyList);
}
if (bo.getRecRole() != null){
SysUserBo query = new SysUserBo();
query.setRoleKey(bo.getRecRole());
PageQuery pageQuery = new PageQuery();
pageQuery.setPageSize(999);
TableDataInfo<SysUserVo> sysUserVoTableDataInfo = userService.selectAllocatedList(query, pageQuery);
for (SysUserVo row : sysUserVoTableDataInfo.getRows()) {
uids.add(row.getUserId());
if (bo.getRecRole() != null){
SysUserBo query = new SysUserBo();
query.setRoleKey(bo.getRecRole());
PageQuery pageQuery = new PageQuery();
pageQuery.setPageSize(999);
TableDataInfo<SysUserVo> sysUserVoTableDataInfo = userService.selectAllocatedList(query, pageQuery);
for (SysUserVo row : sysUserVoTableDataInfo.getRows()) {
uids.add(row.getUserId());
SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class);
sysNoticeBo.setRecUid(row.getUserId());
insertData.add(sysNoticeBo);
}
}else if (bo.getRecUid() != null){
uids.add(bo.getRecUid());
SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class);
sysNoticeBo.setRecUid(row.getUserId());
sysNoticeBo.setRecUid(bo.getRecUid());
insertData.add(sysNoticeBo);
}else{
//全员
SysUserBo user = new SysUserBo();
PageQuery pageQuery = new PageQuery();
pageQuery.setPageSize(100000);
TableDataInfo<SysUserVo> sysUserVoTableDataInfo = userService.selectPageUserList(user, pageQuery);
for (SysUserVo row : sysUserVoTableDataInfo.getRows()) {
uids.add(row.getUserId());
SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class);
sysNoticeBo.setRecUid(row.getUserId());
insertData.add(sysNoticeBo);
}
}
}else if (bo.getRecUid() != null){
uids.add(bo.getRecUid());
SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class);
sysNoticeBo.setRecUid(bo.getRecUid());
insertData.add(sysNoticeBo);
}else{
//全员
SysUserBo user = new SysUserBo();
PageQuery pageQuery = new PageQuery();
pageQuery.setPageSize(100000);
TableDataInfo<SysUserVo> sysUserVoTableDataInfo = userService.selectPageUserList(user, pageQuery);
for (SysUserVo row : sysUserVoTableDataInfo.getRows()) {
uids.add(row.getUserId());
SysNotice sysNoticeBo = MapstructUtils.convert(bo, SysNotice.class);
sysNoticeBo.setRecUid(row.getUserId());
insertData.add(sysNoticeBo);
}
}
SysNoticeVo vo = MapstructUtils.convert(bo, SysNoticeVo.class);
WebSocketMessageDto webSocketMessage = new WebSocketMessageDto();
baseMapper.insertBatch(insertData);
SysNoticeVo vo = MapstructUtils.convert(MapstructUtils.convert(bo, SysNotice.class), SysNoticeVo.class);
WebSocketMessageDto webSocketMessage = new WebSocketMessageDto();
// webSocketMessage.setMessage(bo.getNoticeContent());
webSocketMessage.setMessage(JsonUtils.toJsonString(vo));
webSocketMessage.setSessionKeys(uids);
WebSocketUtils.publishMessage(webSocketMessage);
webSocketMessage.setMessage(JsonUtils.toJsonString(vo));
webSocketMessage.setSessionKeys(uids);
WebSocketUtils.publishMessage(webSocketMessage);
baseMapper.insertBatch(insertData);
return 1;
return 1;
}catch (Exception e){
logger.error("sendNotice error", e);
}
return 0;
}
/**
* 修改公告