|
@@ -3,11 +3,16 @@ package com.dragon.tj.portal.service.impl;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.dragon.tj.portal.auth.model.LoginUser;
|
|
|
|
+import com.dragon.tj.portal.auth.web.service.SysDeptService;
|
|
import com.dragon.tj.portal.common.base.R;
|
|
import com.dragon.tj.portal.common.base.R;
|
|
import com.dragon.tj.portal.common.constants.BusinessConstants;
|
|
import com.dragon.tj.portal.common.constants.BusinessConstants;
|
|
|
|
+import com.dragon.tj.portal.common.convert.MessageReqConvert;
|
|
import com.dragon.tj.portal.common.dto.message.MessageInfoReq;
|
|
import com.dragon.tj.portal.common.dto.message.MessageInfoReq;
|
|
import com.dragon.tj.portal.common.dto.message.MessageInfoSend;
|
|
import com.dragon.tj.portal.common.dto.message.MessageInfoSend;
|
|
|
|
+import com.dragon.tj.portal.common.enums.MessageInfoErrorEnums;
|
|
import com.dragon.tj.portal.common.enums.ScopeEnums;
|
|
import com.dragon.tj.portal.common.enums.ScopeEnums;
|
|
|
|
+import com.dragon.tj.portal.component.exception.message.MessageInfoException;
|
|
import com.dragon.tj.portal.component.message.KafkaInitialConfiguration;
|
|
import com.dragon.tj.portal.component.message.KafkaInitialConfiguration;
|
|
import com.dragon.tj.portal.component.message.MessageProducer;
|
|
import com.dragon.tj.portal.component.message.MessageProducer;
|
|
import com.dragon.tj.portal.entity.MessageInfo;
|
|
import com.dragon.tj.portal.entity.MessageInfo;
|
|
@@ -40,8 +45,14 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
|
|
@Autowired
|
|
@Autowired
|
|
private MessageInfoScopeService messageInfoScopeService;
|
|
private MessageInfoScopeService messageInfoScopeService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private SysDeptService sysDeptService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private MessageReqConvert messageReqConvert;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
- public R push(MessageInfoReq messageInfoReq) {
|
|
|
|
|
|
+ public R push(MessageInfoReq messageInfoReq, LoginUser loginUser) {
|
|
return R.ok(this.doMessage(messageInfoReq));
|
|
return R.ok(this.doMessage(messageInfoReq));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -58,59 +69,84 @@ public class MessageInfoServiceImpl extends ServiceImpl<MessageInfoMapper, Messa
|
|
|
|
|
|
/**
|
|
/**
|
|
* @author huey China.
|
|
* @author huey China.
|
|
- * @Description : TODO 跟进选中范围 填充不同信息类型的用户标识messageClientIds
|
|
|
|
|
|
+ * @Description :
|
|
* @Date Created in 2023/6/16 11:44
|
|
* @Date Created in 2023/6/16 11:44
|
|
*/
|
|
*/
|
|
private boolean transferIds(MessageInfoReq messageInfoReq) {
|
|
private boolean transferIds(MessageInfoReq messageInfoReq) {
|
|
-
|
|
|
|
|
|
+ // 120101510000 120000450200
|
|
|
|
+ //120222197001010001 120222197001010002
|
|
boolean isSend = false;
|
|
boolean isSend = false;
|
|
Integer messageType = messageInfoReq.getMessageType();
|
|
Integer messageType = messageInfoReq.getMessageType();
|
|
Set<String> scopeIds = messageInfoReq.getScopeIds();
|
|
Set<String> scopeIds = messageInfoReq.getScopeIds();
|
|
|
|
+ Set<String> messageClientIds = this.getMessageClientIds(messageType, scopeIds);
|
|
|
|
|
|
- //登录人标识
|
|
|
|
- Set<String> messageClientIds = Sets.newHashSet();
|
|
|
|
-
|
|
|
|
- //测试联系人1
|
|
|
|
- if (messageType.equals(BusinessConstants.DICT_ITEM_ID_2) && scopeIds.contains("1")) {
|
|
|
|
- messageClientIds.add("c1");
|
|
|
|
- messageClientIds.add("c2");
|
|
|
|
|
|
+ if (CollUtil.isNotEmpty(messageClientIds)) {
|
|
|
|
+ MessageInfoSend messageInfoSend = this.doSaveMessageInfo(messageInfoReq, messageClientIds);
|
|
|
|
+ isSend = producer.send(KafkaInitialConfiguration.sseTopic, JSON.toJSONString(messageInfoSend));
|
|
}
|
|
}
|
|
|
|
+ return isSend;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private MessageInfoSend doSaveMessageInfo(MessageInfoReq messageInfoReq, Set<String> messageClientIds) {
|
|
|
|
+ Integer messageType = messageInfoReq.getMessageType();
|
|
ScopeEnums scopeEnums = ScopeEnums.ofMessageType(messageType);
|
|
ScopeEnums scopeEnums = ScopeEnums.ofMessageType(messageType);
|
|
- if (CollUtil.isNotEmpty(messageClientIds)) {
|
|
|
|
|
|
+ List<MessageInfoScope> insertList = Lists.newArrayList();
|
|
|
|
+ MessageInfoSend messageInfoSend = new MessageInfoSend();
|
|
|
|
+ messageInfoSend.setMessageInfoReq(messageInfoReq);
|
|
|
|
+ messageInfoSend.setClientIds(messageClientIds);
|
|
|
|
+ messageClientIds.forEach(e -> {
|
|
|
|
+ MessageInfoScope messageInfoScope = new MessageInfoScope();
|
|
|
|
+ messageInfoScope.setScopeId(e);
|
|
|
|
+ messageInfoScope.setScopeType(scopeEnums.value());
|
|
|
|
+ //messageInfoScope.setScopeLevel("");
|
|
|
|
+ insertList.add(messageInfoScope);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ MessageInfo messageInfo = messageReqConvert.reqToInfo(messageInfoReq);
|
|
|
|
+ // 存储
|
|
|
|
+ boolean isSaveBatchSuccess = false;
|
|
|
|
+ try {
|
|
|
|
+ isSaveBatchSuccess = this.save(messageInfo);
|
|
|
|
+ isSaveBatchSuccess = messageInfoScopeService.saveBatch(insertList);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.warn("消息中心 saveBatch 存储失败 {}");
|
|
|
|
+ }
|
|
|
|
|
|
- List<MessageInfoScope> insertList = Lists.newArrayList();
|
|
|
|
- MessageInfoSend messageInfoSend = new MessageInfoSend();
|
|
|
|
- messageInfoSend.setMessageInfoReq(messageInfoReq);
|
|
|
|
- messageInfoSend.setClientIds(messageClientIds);
|
|
|
|
- messageClientIds.forEach(e->{
|
|
|
|
- MessageInfoScope messageInfoScope = new MessageInfoScope();
|
|
|
|
- messageInfoScope.setScopeId(e);
|
|
|
|
- messageInfoScope.setScopeType(scopeEnums.value());
|
|
|
|
- //messageInfoScope.setScopeLevel("");
|
|
|
|
- insertList.add(messageInfoScope);
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // 存储
|
|
|
|
- boolean isSaveBatchSuccess = false;
|
|
|
|
|
|
+ // 批量存储失败,则逐个存储
|
|
|
|
+ if (!isSaveBatchSuccess) {
|
|
try {
|
|
try {
|
|
|
|
+ this.save(messageInfo);
|
|
|
|
+ insertList.forEach(e -> {
|
|
|
|
+ messageInfoScopeService.save(e);
|
|
|
|
+ });
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
- log.warn("消息中心 saveBatch 存储失败 {}");
|
|
|
|
|
|
+ log.warn("消息中心 存储失败 {}");
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+ return messageInfoSend;
|
|
|
|
+ }
|
|
|
|
|
|
- // 批量存储失败,则逐个存储
|
|
|
|
- if (!isSaveBatchSuccess) {
|
|
|
|
- try {
|
|
|
|
-
|
|
|
|
- } catch (Exception e) {
|
|
|
|
- log.warn("消息中心 存储失败 {}");
|
|
|
|
- }
|
|
|
|
|
|
+ private Set<String> getMessageClientIds(Integer messageType, Set<String> scopeIds) {
|
|
|
|
+ //登录人标识
|
|
|
|
+ Set<String> messageClientIds = Sets.newHashSet();
|
|
|
|
+ if (CollUtil.isEmpty(scopeIds)) {
|
|
|
|
+ if (messageType.equals(BusinessConstants.DICT_ITEM_ID_2)) {
|
|
|
|
+ throw new MessageInfoException(MessageInfoErrorEnums.Code.MESSAGE_CONTRACTS_EMPTY);
|
|
|
|
+ } else {
|
|
|
|
+ throw new MessageInfoException(MessageInfoErrorEnums.Code.MESSAGE_DEPT_EMPTY);
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
- isSend = producer.send(KafkaInitialConfiguration.sseTopic, JSON.toJSONString(messageInfoSend));
|
|
|
|
}
|
|
}
|
|
- return isSend;
|
|
|
|
|
|
+ //测试联系人1
|
|
|
|
+ if (messageType.equals(BusinessConstants.DICT_ITEM_ID_2) && scopeIds.contains("1")) {
|
|
|
|
+ messageClientIds.add("c1");
|
|
|
|
+ messageClientIds.add("c2");
|
|
|
|
+ } else {
|
|
|
|
+ Set<String> allUserIds = sysDeptService.getAllUserIds(scopeIds, false);
|
|
|
|
+ if (CollUtil.isNotEmpty(allUserIds)) {
|
|
|
|
+ messageClientIds.addAll(allUserIds);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return messageClientIds;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|