|
@@ -1069,8 +1069,14 @@ public class OpenIMServiceImpl implements OpenIMService {
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 忽略null字段
|
|
|
|
|
|
- //查询需要发送的人
|
|
|
- List<String> userIds = this.getRecvIds(batchSendCourseDTO);
|
|
|
+ //获取需要发送的人
|
|
|
+ List<String> userIds;
|
|
|
+ if(!batchSendCourseDTO.getUserIds().isEmpty()){
|
|
|
+ userIds = batchSendCourseDTO.getUserIds().stream().map(v -> "U" + v).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ userIds = this.getRecvIds(batchSendCourseDTO);
|
|
|
+ }
|
|
|
+
|
|
|
//注册和添加好友
|
|
|
for (String userId : userIds) {
|
|
|
String uId = userId.substring(1);
|
|
@@ -1112,7 +1118,7 @@ public class OpenIMServiceImpl implements OpenIMService {
|
|
|
openImBatchMsgDTO.setIsOnlineOnly(false);
|
|
|
openImBatchMsgDTO.setNotOfflinePush(false);
|
|
|
long planSendTimeStamp;
|
|
|
- if(batchSendCourseDTO.getSendTime() != null){
|
|
|
+ if(batchSendCourseDTO.getSendTime() != null && batchSendCourseDTO.getSendTime().compareTo(new Date()) > 0){
|
|
|
planSendTimeStamp = batchSendCourseDTO.getSendTime().getTime();
|
|
|
} else {
|
|
|
planSendTimeStamp = System.currentTimeMillis();
|
|
@@ -1132,13 +1138,15 @@ public class OpenIMServiceImpl implements OpenIMService {
|
|
|
OpenImBatchResponseDataDTO openImBatchResponseDataDTO = JSON.parseObject(JSON.toJSONString(data), OpenImBatchResponseDataDTO.class);
|
|
|
List<OpenImBatchResponseDataDTO.Results> results = openImBatchResponseDataDTO.getResults();
|
|
|
|
|
|
+ // 生成发送记录
|
|
|
+ this.batchInsertSendLogs(openImBatchMsgDTO, openImResponseDTO, openImBatchResponseDataDTO, planSendTimeStamp);
|
|
|
+
|
|
|
// 生成看课记录
|
|
|
this.batchInsertWatchLogs(batchSendCourseDTO, results, fsUserCourse);
|
|
|
|
|
|
- // 生成发送记录
|
|
|
- this.batchInsertSendLogs(openImBatchMsgDTO, results, planSendTimeStamp);
|
|
|
-
|
|
|
} else {
|
|
|
+ // 生成发送记录
|
|
|
+ this.batchInsertSendLogs(openImBatchMsgDTO, openImResponseDTO, null, planSendTimeStamp);
|
|
|
log.error("发送消息失败,结果:{}", openImResponseDTO);
|
|
|
throw new ServiceException("发送消息失败");
|
|
|
}
|
|
@@ -1158,29 +1166,52 @@ public class OpenIMServiceImpl implements OpenIMService {
|
|
|
return fsUserCompanyUsers.stream().map(v -> "U" + v.getUserId()).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
- private void batchInsertSendLogs(OpenImBatchMsgDTO openImBatchMsgDTO, List<OpenImBatchResponseDataDTO.Results> results, long planSendTimeStamp) {
|
|
|
+ private void batchInsertSendLogs(OpenImBatchMsgDTO openImBatchMsgDTO, OpenImResponseDTO openImResponseDTO, OpenImBatchResponseDataDTO openImBatchResponseDataDTO, long planSendTimeStamp) {
|
|
|
List<ImSendLog> list = new LinkedList<>();
|
|
|
- for (OpenImBatchResponseDataDTO.Results result : results) {
|
|
|
- ImSendLog imSendLog = new ImSendLog();
|
|
|
- imSendLog.setSendId(openImBatchMsgDTO.getSendID());
|
|
|
- imSendLog.setRecvId(result.getRecvID());
|
|
|
- imSendLog.setSendTitle(openImBatchMsgDTO.getOfflinePushInfo() != null ? openImBatchMsgDTO.getOfflinePushInfo().getTitle() : null);
|
|
|
- imSendLog.setPlanSendTime(new Date(planSendTimeStamp));
|
|
|
- imSendLog.setActualSendTime(new Date(result.getSendTime()));
|
|
|
- if(planSendTimeStamp == result.getSendTime()){
|
|
|
- imSendLog.setSendType(2);
|
|
|
- } else {
|
|
|
- imSendLog.setSendType(1);
|
|
|
- }
|
|
|
- imSendLog.setParamJson(JSON.toJSONString(openImBatchMsgDTO));
|
|
|
- imSendLog.setStatus(0);
|
|
|
- imSendLog.setResultMessage(JSON.toJSONString(results));
|
|
|
-// imSendLog.setExceptionInfo();
|
|
|
+ if(openImResponseDTO.getErrCode() != 0){
|
|
|
+ ImSendLog imSendLog = createImsendLog(openImBatchMsgDTO, planSendTimeStamp);
|
|
|
+ imSendLog.setStatus(1);
|
|
|
+ imSendLog.setResultMessage(JSON.toJSONString(openImResponseDTO.getErrMsg()));
|
|
|
+ imSendLog.setExceptionInfo(JSON.toJSONString(openImResponseDTO.getErrDlt()));
|
|
|
list.add(imSendLog);
|
|
|
+ } else {
|
|
|
+ if(openImBatchResponseDataDTO.getFailedUserIDs() != null) {
|
|
|
+ for (String failedUserID : openImBatchResponseDataDTO.getFailedUserIDs()) {
|
|
|
+ ImSendLog imSendLog = createImsendLog(openImBatchMsgDTO, planSendTimeStamp);
|
|
|
+ imSendLog.setRecvId(failedUserID);
|
|
|
+ imSendLog.setStatus(1);
|
|
|
+ imSendLog.setResultMessage(JSON.toJSONString(openImBatchResponseDataDTO.getResults()));
|
|
|
+ list.add(imSendLog);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (OpenImBatchResponseDataDTO.Results result : openImBatchResponseDataDTO.getResults()) {
|
|
|
+ ImSendLog imSendLog = createImsendLog(openImBatchMsgDTO, planSendTimeStamp);
|
|
|
+ imSendLog.setRecvId(result.getRecvID());
|
|
|
+ imSendLog.setActualSendTime(new Date(result.getSendTime()));
|
|
|
+ if(planSendTimeStamp == result.getSendTime()){
|
|
|
+ imSendLog.setSendType(2);
|
|
|
+ } else {
|
|
|
+ imSendLog.setSendType(1);
|
|
|
+ }
|
|
|
+ imSendLog.setStatus(0);
|
|
|
+ imSendLog.setResultMessage(JSON.toJSONString(openImBatchResponseDataDTO.getResults()));
|
|
|
+ list.add(imSendLog);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
imSendLogMapper.insertImSendLogBatch(list);
|
|
|
}
|
|
|
|
|
|
+ private static ImSendLog createImsendLog(OpenImBatchMsgDTO openImBatchMsgDTO, long planSendTimeStamp) {
|
|
|
+ ImSendLog imSendLog = new ImSendLog();
|
|
|
+ imSendLog.setSendId(openImBatchMsgDTO.getSendID());
|
|
|
+ imSendLog.setSendTitle(openImBatchMsgDTO.getOfflinePushInfo() != null ? openImBatchMsgDTO.getOfflinePushInfo().getTitle() : null);
|
|
|
+ imSendLog.setPlanSendTime(new Date(planSendTimeStamp));
|
|
|
+ imSendLog.setParamJson(JSON.toJSONString(openImBatchMsgDTO));
|
|
|
+
|
|
|
+ return imSendLog;
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional
|
|
|
public void batchInsertWatchLogs(BatchSendCourseDTO batchSendCourseDTO, List<OpenImBatchResponseDataDTO.Results> results, FsUserCourse fsUserCourse) {
|
|
|
List<FsCourseWatchLog> watchLogsInsertList = new LinkedList<>();
|