权限分配调整接口

消息调整添加微服务支持
添加sweb通知处理队列
yun-zuoyi
yunhao.wang 6 years ago
parent b37acbfcab
commit 3f7643f0e8

@ -4,6 +4,7 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -55,7 +56,6 @@ public class SysMessageController extends CoreBaseController {
@ApiOperation(value = "新增消息",notes = "新增消息")
public ResultBean insertSysMessage(SysMessage sysMessage){
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 条件校验
ValidatorBean.beginValid(sysMessage)
.notNull("messageTitle",sysMessage.getMessageTitle())
@ -64,18 +64,27 @@ public class SysMessageController extends CoreBaseController {
.notNull("messageReceiversId",sysMessage.getMessageReceiversId());
// 设置发件人名称
sysMessage.setMessageSenderId(getSessionUser().getUser().getId());
sysMessage.setMessageSenderNameRdd(getSessionUser().getUserName());
sysMessage.setMessageSendTime(sdf.format(new Date()));
sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue());
sysMessage.setMessageReceiverType(ImppEnumUtil.MESSAGE_RECEIVER_TYPE.INTERNAL.getValue());
if(sysMessage.getMessageSenderId() == null || sysMessage.getMessageSenderNameRdd() == null){
sysMessage.setMessageSenderId(getSessionUser().getUser().getId());
sysMessage.setMessageSenderNameRdd(getSessionUser().getUserName());
}
// 设置收件人名称
String[] messageReceiver = sysMessage.getMessageReceiversId().split(",");
String receiversName = sysUserService.findSysUserByIds(StringTool.getArrayLong(messageReceiver))
.stream().map(e -> e.getUserName()).collect(Collectors.joining(","));
if(sysMessage.getMessageReceiversNameRdd() == null){
String[] messageReceiver = sysMessage.getMessageReceiversId().split(",");
String receiversName = sysUserService.findSysUserByIds(StringTool.getArrayLong(messageReceiver))
.stream().map(e -> e.getUserName()).collect(Collectors.joining(","));
sysMessage.setMessageReceiversNameRdd(receiversName);
}
// 设置接收人类型
if(sysMessage.getMessageReceiverType() == null){
sysMessage.setMessageReceiverType(ImppEnumUtil.MESSAGE_RECEIVER_TYPE.INTERNAL.getValue());
}
sysMessage.setMessageReceiversNameRdd(receiversName);
sysMessage.setMessageSendTime(TimeTool.getNowTime(true));
sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue());
sysMessageService.doSendSysMessage(sysMessage);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
@ -106,9 +115,6 @@ public class SysMessageController extends CoreBaseController {
@ApiOperation(value = "修改信息",notes = "修改信息")
public ResultBean updateSysMessage(SysMessage sysMessage){
try {
// 登录用户
SessionUser user = AuthUtil.getSessionUser();
// 条件校验
ValidatorBean.beginValid(sysMessage)
.notNull("messageTitle",sysMessage.getMessageTitle())
@ -208,7 +214,7 @@ public class SysMessageController extends CoreBaseController {
@GetMapping(value = "/user-message/query-outbox")
@ApiOperation(value = "查询用户发件箱,分页,排序")
public ResultBean querySysRefUserMessageByPager(SysMessage sysMessage,Pager pager){
public ResultBean queryOutboxByPager(SysMessage sysMessage,Pager pager){
try {
// 发件人为当前用户
sysMessage.setMessageType(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue());
@ -307,7 +313,7 @@ public class SysMessageController extends CoreBaseController {
@PostMapping(value = "/user-message/insert")
@ApiOperation(value = "用户新增消息",notes = "用户新增消息")
public ResultBean insertUserMessage(SysMessage sysMessage){
public ResultBean insertUserMessage(SysMessage sysMessage) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 条件校验
@ -333,4 +339,16 @@ public class SysMessageController extends CoreBaseController {
}
}
@GetMapping(value = "/user-message/query")
@ApiOperation(value = "消息复杂查询,分页,排序",notes = "消息复杂查询,分页,排序")
public ResultBean querySysRefUserMessageByPager(SysRefUserMessage sysRefUserMessage, Pager pager){
try {
ListPager sysMessageListPager = sysMessageService.querySysRefUserMessageByPager(sysRefUserMessage, pager);
return ResultBean.success("操作成功").setListPager(sysMessageListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -0,0 +1,94 @@
package cn.estsh.i3plus.core.apiservice.mq;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserMessage;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.rabbitmq.client.Channel;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @Description : SWEB
* @Reference :
* @Author : yunhao
* @CreateDate : 2018-11-15 22:15
* @Modify:
**/
@ConditionalOnExpression("'${impp.mq.queue.sweb.notice}' == 'true'")
@Component
public class MessageSWebNoticeQueueReceiver {
private static final Logger LOGGER = LoggerFactory.getLogger(MessageSWebNoticeQueueReceiver.class);
@Autowired
private ISysMessageService sysMessageService;
/**
* SWEB
*
* @param msg
* @param channel
* @param message
*/
@RabbitListener(queues = PlatformConstWords.SWEB_NOTICE_QUEUE)
public void processImppMail(SysMessage msg, Channel channel, Message message) {
LOGGER.info("【MQ-{}】 数据接收成功:{}", PlatformConstWords.SWEB_NOTICE_QUEUE, msg);
try {
msg = sysMessageService.insertSysMessage(msg);
if (StringUtils.isNotBlank(msg.getMessageReceiversId())) {
// 获取供应商信息 由string转换为json对象
JSONObject userJsonObject = JSON.parseObject(msg.getMessageReceiversId());
List<SysRefUserMessage> insertList = new ArrayList<>(userJsonObject.size());
SysRefUserMessage refUserMessage;
for (String user : userJsonObject.keySet()) {
refUserMessage = new SysRefUserMessage();
refUserMessage.setMessageId(msg.getId());
refUserMessage.setMessageSoftType(CommonEnumUtil.SOFT_TYPE.SWEB.getValue());
refUserMessage.setMessageTitleRdd(msg.getMessageTitle());
refUserMessage.setMessageTypeRdd(msg.getMessageType());
refUserMessage.setMessageSenderNameRdd(msg.getMessageSenderNameRdd());
refUserMessage.setReceiverId(Long.parseLong(user));
refUserMessage.setReceiverNameRdd(userJsonObject.get(user).toString());
refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue());
refUserMessage.setReceiverTime(TimeTool.getNowTime(true));
refUserMessage.setIsUrgent(msg.getIsUrgent());
insertList.add(refUserMessage);
}
sysMessageService.insertSysRefUserMessage(insertList);
}
// 消息处理完成
LOGGER.info("【MQ-{}】站内信{} DeliveryTag:{} 处理成功", PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE,
msg, message.getMessageProperties().getDeliveryTag());
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} catch (IOException e) {
try {
// 未成功处理,重新发送
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}

@ -1,9 +1,9 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService;
import cn.estsh.i3plus.core.apiservice.mq.I3CoreQueueConfig;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
@ -27,7 +27,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
/**
@ -107,9 +106,9 @@ public class SysMessageService implements ISysMessageService {
pager = PagerHelper.getPager(pager, sysMessageRDao.listCount());
return new ListPager(sysMessageRDao.listPager(pager),pager);
}else {
String hqlPack = CoreHqlPack.packHqlSysMessage(sysMessage);
DdlPackBean hqlPack = CoreHqlPack.packHqlSysMessage(sysMessage);
pager = PagerHelper.getPager(pager, sysMessageRDao.findByHqlWhereCount(hqlPack));
return new ListPager(sysMessageRDao.findByHqlWherePage(hqlPack + sysMessage.orderBy(),pager),pager);
return new ListPager(sysMessageRDao.findByHqlWherePage(hqlPack,pager),pager);
}
}
@ -172,13 +171,30 @@ public class SysMessageService implements ISysMessageService {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("数据不存在")
.setErrorDetail("用户消息不存在")
.build();
}
sysRefUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.READ.getValue());
sysRefUserMessageRDao.update(sysRefUserMessage);
return sysMessageRDao.getById(sysRefUserMessage.getMessageId());
SysMessage sysMessage = sysMessageRDao.getById(sysRefUserMessage.getMessageId());
if (sysMessage == null){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("消息主体不存在")
.build();
}
// 更新状态消息状态以及阅读数量
if(sysRefUserMessage.getMessageStatusValue() == ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue()) {
sysRefUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.READ.getValue());
sysRefUserMessageRDao.update(sysRefUserMessage);
// 阅读数累加1
sysMessage.setReadCount(sysMessage.getReadCount() + 1);
sysMessageRDao.update(sysMessage);
}
return sysMessage;
}
@Override

Loading…
Cancel
Save