增加给全部的企业端用户发送站内消息的功能

This commit is contained in:
liangqitao
2021-12-15 17:06:49 +08:00
parent 44acf33164
commit 62f8184399
4 changed files with 135 additions and 0 deletions
@@ -0,0 +1,125 @@
package com.jero.system.controller;
import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.common.ProjectCommon;
import com.jero.common.constant.CommonConstant;
import com.jero.common.constant.WebsocketConst;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.modules.message.websocket.WebSocket;
import com.jero.modules.system.entity.SysAnnouncement;
import com.jero.modules.system.entity.SysAnnouncementSend;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysAnnouncementSendService;
import com.jero.modules.system.service.ISysAnnouncementService;
import com.jero.modules.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @Description: 发送站内消息
* @Author: jeecg-boot
* @Date: 2021-09-24
* @Version: V1.0
*/
@Api(tags="发送站内消息")
@RestController
@RequestMapping("/send/message")
@Slf4j
public class SystemSendMessageController {
@Resource
private IPayContactsManagementService payContactsManagementService;
@Resource
private ISysUserService sysUserService;
@Resource
private ISysAnnouncementSendService sysAnnouncementSendService;
@Resource
private WebSocket webSocket;
@Resource
private Environment env;
@Resource
private ISysAnnouncementService sysAnnouncementService;
/**
* 发送站内消息
*
* @return
*/
@AutoLog(value = "发送站内消息",operateType = 2)
@ApiOperation(value="发送站内消息", notes="发送站内消息")
@PostMapping(value = "/sendAllUserMessage")
// @RequiresPermissions("system:dept:save")
public Result<?> sendAllUserMessage(@RequestParam("content") String content) {
List<PayContactsManagement> listPayContactsManagement = payContactsManagementService.list();
if(!CollectionUtils.isEmpty(listPayContactsManagement)){
listPayContactsManagement.parallelStream().forEach(p->{
try {
String toUser = PasswordUtil.decrypt(p.getPhone());
SysAnnouncement announcement = new SysAnnouncement();
announcement.setTitile(ProjectCommon.ALERT12);
announcement.setMsgContent(content);
announcement.setSender(env.getProperty("message.systemEmailUser"));
announcement.setPriority(CommonConstant.PRIORITY_M);
announcement.setMsgType(CommonConstant.MSG_TYPE_UESR);
announcement.setSendStatus(CommonConstant.HAS_SEND);
announcement.setSendTime(new Date());
announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2);
announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
sysAnnouncementService.save(announcement);
// 2.插入用户通告阅读标记表记录
String[] userIds = toUser.split(",");
String anntId = announcement.getId();
for (String id : userIds) {
if (oConvertUtils.isNotEmpty(id)) {
LoginUser user = new LoginUser();
SysUser sysUser = sysUserService.getUserByName(id);
if (Objects.isNull(sysUser)) {
com.jero.modules.pay.company.entity.PayContactsManagement contactsManagement = sysUserService.getPayContactsManagementByPhone(PasswordUtil.encrypt(id));
if (contactsManagement == null) {
continue;
} else {
BeanUtils.copyProperties(contactsManagement, user);
}
} else {
BeanUtils.copyProperties(sysUser, user);
}
SysAnnouncementSend announcementSend = new SysAnnouncementSend();
announcementSend.setAnntId(anntId);
announcementSend.setUserId(user.getId());
announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG);
sysAnnouncementSendService.save(announcementSend);
JSONObject obj = new JSONObject();
obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER);
obj.put(WebsocketConst.MSG_USER_ID, user.getId());
obj.put(WebsocketConst.MSG_ID, announcement.getId());
obj.put(WebsocketConst.MSG_TXT, ProjectCommon.ALERT12);
webSocket.sendMessage(user.getId(), obj.toJSONString());
}
}
}catch (Exception e){
log.error("发送消息异常",e);
throw new JeroBootException("消息发送失败!");
}
});
}
return Result.OK("操作成功");
}
}