增加给全部的企业端用户发送站内消息的功能
This commit is contained in:
+125
@@ -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("操作成功");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user