|
|
@ -1,19 +1,28 @@ |
|
|
|
package com.yxt.messagecenter.biz.message; |
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
|
import com.yxt.common.base.utils.JPushServer; |
|
|
|
import com.yxt.common.base.utils.PagerUtil; |
|
|
|
import com.yxt.common.core.query.PagerQuery; |
|
|
|
import com.yxt.common.core.result.ResultBean; |
|
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
|
import com.yxt.messagecenter.api.message.*; |
|
|
|
import com.yxt.messagecenter.api.messagelist.MessageListDto; |
|
|
|
import com.yxt.messagecenter.api.messagetype.MessageTypeVo; |
|
|
|
import com.yxt.messagecenter.biz.messagelist.MessageListService; |
|
|
|
import com.yxt.messagecenter.biz.messagetype.MessageTypeService; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.ExecutorService; |
|
|
|
import java.util.concurrent.Executors; |
|
|
|
import java.util.concurrent.Future; |
|
|
|
|
|
|
|
/** |
|
|
|
* Project: message-center(消息中心) <br/> |
|
|
@ -30,141 +39,216 @@ import java.util.UUID; |
|
|
|
*/ |
|
|
|
@Service |
|
|
|
public class MessageService extends MybatisBaseService<MessageMapper, Message> { |
|
|
|
public PagerVo<Message> listPage(PagerQuery<MessageQuery> pq) { |
|
|
|
MessageQuery query = pq.getParams(); |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
IPage<Message> page = PagerUtil.queryToPage(pq); |
|
|
|
IPage<Message> pagging = baseMapper.selectPage(page, qw); |
|
|
|
PagerVo<Message> p = PagerUtil.pageToVo(pagging, null); |
|
|
|
return p; |
|
|
|
} |
|
|
|
public List<Message> listAll(MessageQuery query) { |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
return baseMapper.selectList(qw); |
|
|
|
} |
|
|
|
private QueryWrapper<Message> createQueryWrapper(MessageQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
|
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
|
|
|
|
QueryWrapper<Message> qw = new QueryWrapper<>(); |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgType())) { |
|
|
|
qw.eq("msgType", query.getMsgType()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgTitle())) { |
|
|
|
qw.eq("msgTitle", query.getMsgTitle()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgContent())) { |
|
|
|
qw.eq("msgContent", query.getMsgContent()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgSource())) { |
|
|
|
qw.eq("msgSource", query.getMsgSource()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderSid())) { |
|
|
|
qw.eq("senderSid", query.getSenderSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderName())) { |
|
|
|
qw.eq("senderName", query.getSenderName()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderDeptSid())) { |
|
|
|
qw.eq("senderDeptSid", query.getSenderDeptSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderDeptName())) { |
|
|
|
qw.eq("senderDeptName", query.getSenderDeptName()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getBusinessSid())) { |
|
|
|
qw.eq("businessSid", query.getBusinessSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getModuleSid())) { |
|
|
|
qw.eq("moduleSid", query.getModuleSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getModuleAction())) { |
|
|
|
qw.eq("moduleAction", query.getModuleAction()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getArgs_json())) { |
|
|
|
qw.eq("args_json", query.getArgs_json()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getH5_url())) { |
|
|
|
qw.eq("h5_url", query.getH5_url()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getXcx_url())) { |
|
|
|
qw.eq("xcx_url", query.getXcx_url()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgTargetUri())) { |
|
|
|
qw.eq("msgTargetUri", query.getMsgTargetUri()); |
|
|
|
} |
|
|
|
return qw; |
|
|
|
} |
|
|
|
|
|
|
|
public PagerVo<MessageVo> listPageVo(PagerQuery<MessageQuery> pq) { |
|
|
|
MessageQuery query = pq.getParams(); |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
IPage<Message> page = PagerUtil.queryToPage(pq); |
|
|
|
IPage<MessageVo> pagging = baseMapper.selectPageVo(page, qw); |
|
|
|
PagerVo<MessageVo> p = PagerUtil.pageToVo(pagging, null); |
|
|
|
return p; |
|
|
|
} |
|
|
|
|
|
|
|
public List<MessageVo> listAllVo(MessageQuery query) { |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
return baseMapper.selectListAllVo(qw); |
|
|
|
} |
|
|
|
|
|
|
|
public List<MessageVo> listVo() { |
|
|
|
return baseMapper.selectListVo(); |
|
|
|
} |
|
|
|
|
|
|
|
public void saveOrUpdateDto(MessageDto dto){ |
|
|
|
Message entity = new Message(); |
|
|
|
dto.fillEntity(entity); |
|
|
|
this.saveOrUpdate(entity); |
|
|
|
} |
|
|
|
|
|
|
|
public MessageVo fetchByIdVo(String id){ |
|
|
|
Message entity = this.fetchById(id); |
|
|
|
MessageVo vo = new MessageVo(); |
|
|
|
BeanUtil.copyProperties(entity, vo); |
|
|
|
return vo; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 手机端保存/修改消息体 |
|
|
|
* @param dto |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public ResultBean<String> saveOrUpdateAppMessage(AppMessageDto dto) { |
|
|
|
if (StringUtils.isBlank(dto.getSid())) { // 新增
|
|
|
|
Message message = new Message(); |
|
|
|
dto.fillEntity(message); |
|
|
|
message.setSid(UUID.randomUUID().toString()); |
|
|
|
Boolean flag = save(message); |
|
|
|
if (flag) { |
|
|
|
return new ResultBean().success().setMsg("保存成功").setData(message.getSid()); |
|
|
|
} else { |
|
|
|
return new ResultBean().fail().setMsg("保存失败"); |
|
|
|
} |
|
|
|
} else { // 修改
|
|
|
|
Message message = fetchBySid(dto.getSid()); |
|
|
|
BeanUtil.copyProperties(dto, message); |
|
|
|
Boolean flag = updateById(message); |
|
|
|
if (flag) { |
|
|
|
return new ResultBean().success().setMsg("修改成功").setData(message.getSid()); |
|
|
|
} else { |
|
|
|
return new ResultBean().fail().setMsg("修改失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private MessageTypeService messageTypeService; |
|
|
|
@Autowired |
|
|
|
private MessageListService messageListService; |
|
|
|
|
|
|
|
public PagerVo<Message> listPage(PagerQuery<MessageQuery> pq) { |
|
|
|
MessageQuery query = pq.getParams(); |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
IPage<Message> page = PagerUtil.queryToPage(pq); |
|
|
|
IPage<Message> pagging = baseMapper.selectPage(page, qw); |
|
|
|
PagerVo<Message> p = PagerUtil.pageToVo(pagging, null); |
|
|
|
return p; |
|
|
|
} |
|
|
|
|
|
|
|
public List<Message> listAll(MessageQuery query) { |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
return baseMapper.selectList(qw); |
|
|
|
} |
|
|
|
|
|
|
|
private QueryWrapper<Message> createQueryWrapper(MessageQuery query) { |
|
|
|
// todo: 这里根据具体业务调整查询条件
|
|
|
|
// 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName()));
|
|
|
|
QueryWrapper<Message> qw = new QueryWrapper<>(); |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgType())) { |
|
|
|
qw.eq("msgType", query.getMsgType()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgTitle())) { |
|
|
|
qw.eq("msgTitle", query.getMsgTitle()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgContent())) { |
|
|
|
qw.eq("msgContent", query.getMsgContent()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgSource())) { |
|
|
|
qw.eq("msgSource", query.getMsgSource()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderSid())) { |
|
|
|
qw.eq("senderSid", query.getSenderSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderName())) { |
|
|
|
qw.eq("senderName", query.getSenderName()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderDeptSid())) { |
|
|
|
qw.eq("senderDeptSid", query.getSenderDeptSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getSenderDeptName())) { |
|
|
|
qw.eq("senderDeptName", query.getSenderDeptName()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getBusinessSid())) { |
|
|
|
qw.eq("businessSid", query.getBusinessSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getModuleSid())) { |
|
|
|
qw.eq("moduleSid", query.getModuleSid()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getModuleAction())) { |
|
|
|
qw.eq("moduleAction", query.getModuleAction()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getArgs_json())) { |
|
|
|
qw.eq("args_json", query.getArgs_json()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getH5_url())) { |
|
|
|
qw.eq("h5_url", query.getH5_url()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getXcx_url())) { |
|
|
|
qw.eq("xcx_url", query.getXcx_url()); |
|
|
|
} |
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(query.getMsgTargetUri())) { |
|
|
|
qw.eq("msgTargetUri", query.getMsgTargetUri()); |
|
|
|
} |
|
|
|
return qw; |
|
|
|
} |
|
|
|
|
|
|
|
public PagerVo<MessageVo> listPageVo(PagerQuery<MessageQuery> pq) { |
|
|
|
MessageQuery query = pq.getParams(); |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
IPage<Message> page = PagerUtil.queryToPage(pq); |
|
|
|
IPage<MessageVo> pagging = baseMapper.selectPageVo(page, qw); |
|
|
|
PagerVo<MessageVo> p = PagerUtil.pageToVo(pagging, null); |
|
|
|
return p; |
|
|
|
} |
|
|
|
|
|
|
|
public List<MessageVo> listAllVo(MessageQuery query) { |
|
|
|
QueryWrapper<Message> qw = createQueryWrapper(query); |
|
|
|
return baseMapper.selectListAllVo(qw); |
|
|
|
} |
|
|
|
|
|
|
|
public List<MessageVo> listVo() { |
|
|
|
return baseMapper.selectListVo(); |
|
|
|
} |
|
|
|
|
|
|
|
public void saveOrUpdateDto(MessageDto dto) { |
|
|
|
Message entity = new Message(); |
|
|
|
dto.fillEntity(entity); |
|
|
|
this.saveOrUpdate(entity); |
|
|
|
} |
|
|
|
|
|
|
|
public MessageVo fetchByIdVo(String id) { |
|
|
|
Message entity = this.fetchById(id); |
|
|
|
MessageVo vo = new MessageVo(); |
|
|
|
BeanUtil.copyProperties(entity, vo); |
|
|
|
return vo; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 手机端保存/修改消息体 |
|
|
|
* |
|
|
|
* @param dto |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
public ResultBean<String> saveOrUpdateAppMessage(AppMessageDto dto) { |
|
|
|
if (StringUtils.isBlank(dto.getSid())) { // 新增
|
|
|
|
Message message = new Message(); |
|
|
|
dto.fillEntity(message); |
|
|
|
message.setSid(UUID.randomUUID().toString()); |
|
|
|
Boolean flag = save(message); |
|
|
|
if (flag) { |
|
|
|
return new ResultBean().success().setMsg("保存成功").setData(message.getSid()); |
|
|
|
} else { |
|
|
|
return new ResultBean().fail().setMsg("保存失败"); |
|
|
|
} |
|
|
|
} else { // 修改
|
|
|
|
Message message = fetchBySid(dto.getSid()); |
|
|
|
BeanUtil.copyProperties(dto, message); |
|
|
|
Boolean flag = updateById(message); |
|
|
|
if (flag) { |
|
|
|
return new ResultBean().success().setMsg("修改成功").setData(message.getSid()); |
|
|
|
} else { |
|
|
|
return new ResultBean().fail().setMsg("修改失败"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean<String> getMessage(MessageFlowableDto dto) { |
|
|
|
ResultBean<String> rb = ResultBean.fireFail(); |
|
|
|
String msgTitle = dto.getMsgTitle(); |
|
|
|
String msgContent = dto.getMsgContent(); |
|
|
|
List<String> list = dto.getList(); |
|
|
|
List<String> receiveIdList = dto.getReceiveIdList(); |
|
|
|
// 1、保存消息体
|
|
|
|
AppMessageDto messageDto = new AppMessageDto(); |
|
|
|
List<MessageTypeVo> messageBean = messageTypeService.selectMsgTypeList("0002"); |
|
|
|
messageBean.removeAll(Collections.singleton(null)); |
|
|
|
if (!messageBean.isEmpty()) { |
|
|
|
for (MessageTypeVo message : messageBean) { |
|
|
|
if (message.getMsgType().equals("审批中心")) { |
|
|
|
messageDto.setMsgTypeSid(message.getMsgTypeSid()); |
|
|
|
messageDto.setMsgType(message.getMsgType()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
messageDto.setMsgTitle(msgTitle); |
|
|
|
messageDto.setMsgContent(msgContent); |
|
|
|
messageDto.setMsgSource("审批中心"); |
|
|
|
messageDto.setApp_type(dto.getApp_type()); |
|
|
|
messageDto.setModuleSid(dto.getModuleSid()); |
|
|
|
//将json与appMap中的参数融合
|
|
|
|
Map<String, Object> jsonMap = BeanUtil.beanToMap(dto.getJson()); |
|
|
|
jsonMap.putAll(dto.getJson().getAppMap()); |
|
|
|
messageDto.setArgs_json(JSONObject.toJSONString(jsonMap)); |
|
|
|
messageDto.setMsgTargetUri(dto.getModuleAction()); |
|
|
|
String msgSid = saveOrUpdateAppMessage(messageDto).getData(); |
|
|
|
String msgTypeSid = messageDto.getMsgTypeSid(); |
|
|
|
// 2、保存至消息列表
|
|
|
|
// 使用多线程保存
|
|
|
|
List<Future<?>> futures = new ArrayList<Future<?>>(); |
|
|
|
ExecutorService executor = Executors.newFixedThreadPool(4); |
|
|
|
for (String receverSid : list) { |
|
|
|
Future<?> f = executor.submit(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
try { |
|
|
|
System.out.println("run start-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); |
|
|
|
MessageListDto messageList = new MessageListDto(); |
|
|
|
messageList.setMsgSid(msgSid); |
|
|
|
messageList.setRDelStatus(0); |
|
|
|
messageList.setSDelStatus(0); |
|
|
|
messageList.setReceiverSid(receverSid); |
|
|
|
messageListService.saveOrUpdateDto(messageList); |
|
|
|
System.out.println("run end-----------------" + System.currentTimeMillis() + ":" + Thread.currentThread().getName()); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
futures.add(f); |
|
|
|
} |
|
|
|
executor.shutdown(); |
|
|
|
//标题、内容、消息类别key、消息类别名称、
|
|
|
|
for (int i = 0; i < receiveIdList.size(); i++) { |
|
|
|
/** |
|
|
|
* msgTitle:排产申请 |
|
|
|
* content:xxx的排产申请 |
|
|
|
*/ |
|
|
|
JPushServer.sendPushAlias(msgTitle, dto.getCreateName() + "的" + dto.getModuleName(), msgTypeSid, "审批中心", receiveIdList.get(i)); |
|
|
|
} |
|
|
|
return rb.success().setData(msgSid); |
|
|
|
} |
|
|
|
} |