提交读标记

This commit is contained in:
Guava
2023-07-03 20:17:23 +08:00
parent c0830d7eea
commit f1126da256
4 changed files with 70 additions and 23 deletions

View File

@@ -177,6 +177,11 @@ public class CasesRecommendApi extends ApiBaseController {
return success(iCasesRecommendPushRecordService.startRead(caseRecommendId));
}
@GetMapping("/endRead")
public JsonResponse<Boolean> endRead(String caseRecommendId) {
return success(iCasesRecommendPushRecordService.startRead(caseRecommendId));
}
/**
* 发起推送

View File

@@ -41,4 +41,11 @@ public interface ICasesRecommendPushRecordService {
* @return
*/
boolean startRead(String caseRecommendId);
/**
* 结束读
* @param caseRecommendId
* @return
*/
boolean endRead(String caseRecommendId);
}

View File

@@ -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;
}
}

View File

@@ -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<String> ids) {
List<IFieldFilter> 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<Message> caseList = dao.findList(fieldFilters.toArray(new IFieldFilter[0]));
if (CollectionUtils.isEmpty(caseList)) {
return;
}
//单条推送
List<Message> singleList = caseList.stream().filter(message -> StrUtil.isNotBlank(message.getRefId()) && !message.getRefId().equals(message.getBatchId()))
.collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(singleList)) {
List<String> 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<Message> mixList = caseList.stream().filter(message -> StrUtil.isNotBlank(message.getRefId()) && message.getRefId().equals(message.getBatchId())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(mixList)) {
List<String> 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) {