From f1126da256f422cc46060e6f62acbe9020e66e81 Mon Sep 17 00:00:00 2001 From: Guava Date: Mon, 3 Jul 2023 20:17:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AF=BB=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/boecase/api/CasesRecommendApi.java | 5 ++ .../ICasesRecommendPushRecordService.java | 7 ++ .../CasesRecommendPushRecordServiceImpl.java | 12 ++++ .../user/service/impl/MessageServiceImpl.java | 69 ++++++++++++------- 4 files changed, 70 insertions(+), 23 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index aea2acee..504a4efa 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -177,6 +177,11 @@ public class CasesRecommendApi extends ApiBaseController { return success(iCasesRecommendPushRecordService.startRead(caseRecommendId)); } + @GetMapping("/endRead") + public JsonResponse endRead(String caseRecommendId) { + return success(iCasesRecommendPushRecordService.startRead(caseRecommendId)); + } + /** * 发起推送 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java index ac5d6909..e9206467 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java @@ -41,4 +41,11 @@ public interface ICasesRecommendPushRecordService { * @return */ boolean startRead(String caseRecommendId); + + /** + * 结束读 + * @param caseRecommendId + * @return + */ + boolean endRead(String caseRecommendId); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index 32b4dc37..33ec7ee4 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -318,4 +318,16 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR .addFilter(FieldFilters.eq("id", caseRecommendId)) .builder()) > 0; } + + @Override + public boolean endRead(String caseRecommendId) { + CasesRecommendPushRecord casesRecommendPushRecord = casesRecommendPushRecordDao.get(caseRecommendId); + if (casesRecommendPushRecord.getReadEndTime() != null) { + return true; + } + return casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) + .addUpdateField("readEndTime", new Date()) + .addFilter(FieldFilters.eq("id", caseRecommendId)) + .builder()) > 0; + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java index c8f8c3e0..814a8384 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/system/user/service/impl/MessageServiceImpl.java @@ -1,8 +1,10 @@ package com.xboe.system.user.service.impl; +import cn.hutool.core.util.StrUtil; import com.xboe.common.OrderCondition; import com.xboe.common.PageList; import com.xboe.core.orm.FieldFilters; +import com.xboe.core.orm.IFieldFilter; import com.xboe.core.orm.QueryBuilder; import com.xboe.core.orm.UpdateBuilder; import com.xboe.module.boecase.dao.CasesRecommendPushRecordDao; @@ -15,10 +17,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 消息 @@ -75,14 +75,6 @@ public class MessageServiceImpl implements IMessageService { Message message = dao.get(id); if (!message.getIsRead()) { dao.updateFieldById(id, "isRead", true); - - if ("99".equals(message.getRefType())) { - casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) - .addUpdateField("readFlag", 1) - .addUpdateField("readStartTime", new Date()) - .addFilter(FieldFilters.eq("id", message.getRefId())) - .builder()); - } } return message; } @@ -108,22 +100,13 @@ public class MessageServiceImpl implements IMessageService { if (CollectionUtils.isEmpty(ids)) { return; } - //更新最后读时间 - for (String id : ids) { - Message message = dao.get(id); - if ("99".equals(message.getRefType())) { - casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) - .addUpdateField("readEndTime", new Date()) - .addFilter(FieldFilters.eq("id", message.getRefId())) - .builder()); - } - } - dao.update(UpdateBuilder.from(Message.class) .addUpdateField("isRead", true) .addFilter(FieldFilters.in("id", ids)) .builder()); + markCommendCaseStartRead(null, ids); + } @Override @@ -161,8 +144,48 @@ public class MessageServiceImpl implements IMessageService { @Transactional public void setReadByAcceptId(String aid) { dao.update("Update " + Message.class.getSimpleName() + " set isRead=?1 where acceptId=?2 and isRead=?3", true, aid, false); + markCommendCaseStartRead(aid, null); } + + private void markCommendCaseStartRead(String aid, List ids) { + List fieldFilters = new ArrayList<>(); + if (StrUtil.isNotBlank(aid)) { + fieldFilters.add(FieldFilters.eq("acceptId", aid)); + } + if (CollectionUtils.isNotEmpty(ids)) { + fieldFilters.add(FieldFilters.in("id", ids)); + } + fieldFilters.add(FieldFilters.eq("refType", "99")); + List caseList = dao.findList(fieldFilters.toArray(new IFieldFilter[0])); + if (CollectionUtils.isEmpty(caseList)) { + return; + } + //单条推送 + List singleList = caseList.stream().filter(message -> StrUtil.isNotBlank(message.getRefId()) && !message.getRefId().equals(message.getBatchId())) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(singleList)) { + List commendRecordIds = singleList.stream().map(Message::getRefId).collect(Collectors.toList()); + + casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) + .addUpdateField("readStartTime", new Date()) + .addUpdateField("readEndTime", new Date()) + .addFilter(FieldFilters.in("id", commendRecordIds)) + .builder()); + } + + List mixList = caseList.stream().filter(message -> StrUtil.isNotBlank(message.getRefId()) && message.getRefId().equals(message.getBatchId())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(mixList)) { + List commendIds = mixList.stream().map(Message::getRefId).collect(Collectors.toList()); + casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) + .addUpdateField("readStartTime", new Date()) + .addUpdateField("readEndTime", new Date()) + .addFilter(FieldFilters.in("recommendId", commendIds)) + .builder()); + } + } + + @Override @Transactional public void cleanByAcceptId(String aid) {