This commit is contained in:
lims1@hunktimes.com
2023-08-01 16:02:57 +08:00
96 changed files with 4185 additions and 325 deletions

View File

@@ -3,16 +3,8 @@ package com.xboe.system.user.api;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
import com.xboe.common.utils.IDGenerator;
@@ -24,8 +16,9 @@ import com.xboe.system.user.entity.Message;
import com.xboe.system.user.service.IMessageService;
import com.xboe.system.user.service.MessageSender;
import com.xboe.system.user.vo.BatchMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@@ -227,6 +220,23 @@ public class MessageApi extends ApiBaseController {
}
@GetMapping("/clearMessageNotCase")
public JsonResponse<Integer> clearMessageNotCase(){
String aid=getCurrent().getAccountId();
if(StringUtils.isBlank(aid)) {
return badRequest("获取用户信息异常");
}
try {
Integer type = service.clearMessageNotCase(aid);
return success(type);
} catch (Exception e) {
log.error("清空消息错误",e);
return error("清空消息失败",e.getMessage());
}
}
/**
* 移动端
* 消息页面,按用户分组返回 暂时不用

View File

@@ -1,15 +1,12 @@
package com.xboe.system.user.entity;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xboe.core.SysConstant;
import com.xboe.core.orm.IdEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -120,4 +117,10 @@ public class Message extends IdEntity {
@Column(name = "is_read")
private Boolean isRead;
/**
* 批次号
*/
@Column(name = "batch_id")
private String batchId;
}

View File

@@ -61,7 +61,14 @@ public interface IMessageService {
* @return
*/
void cleanByAcceptId(String aid);
/**
* 清楚消息排除推荐消息
* @param aid
* @return
*/
Integer clearMessageNotCase(String aid);
/**
* 批量设置已读
* */

View File

@@ -1,16 +1,15 @@
package com.xboe.system.user.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import cn.hutool.core.util.StrUtil;
import javax.annotation.Resource;
import com.xboe.core.orm.IFieldFilter;
import com.xboe.common.OrderCondition;
import com.xboe.core.orm.FilterCheckValue;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.xboe.module.boecase.dao.CasesRecommendPushRecordDao;
import com.xboe.module.boecase.entity.CasesRecommendPushRecord;
import com.xboe.common.PageList;
import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.QueryBuilder;
@@ -19,6 +18,8 @@ import com.xboe.system.user.dao.MessageDao;
import com.xboe.system.user.entity.Message;
import com.xboe.system.user.service.IMessageService;
import com.xboe.system.user.vo.BatchMessage;
import org.apache.commons.collections4.CollectionUtils;
import java.util.stream.Collectors;
/**
* 消息
@@ -29,15 +30,18 @@ public class MessageServiceImpl implements IMessageService {
@Resource
private MessageDao dao;
@Resource
private CasesRecommendPushRecordDao casesRecommendPushRecordDao;
@Override
public PageList<Message> query(int pageIndex, int pageSize, String aid, Boolean isRead) {
QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addOrder(OrderCondition.desc("id"));
builder.setPageIndex(pageIndex);
builder.setPageSize(pageSize);
builder.addFilter(FieldFilters.eq("acceptId",aid));
if(isRead!=null){
builder.addFilter(FieldFilters.eq("isRead",isRead));
builder.addFilter(FieldFilters.eq("acceptId", aid));
if (isRead != null) {
builder.addFilter(FieldFilters.eq("isRead", isRead));
}
PageList<Message> list = dao.findPage(builder.builder());
return list;
@@ -49,12 +53,12 @@ public class MessageServiceImpl implements IMessageService {
builder.addOrder(OrderCondition.desc("id"));
builder.setPageIndex(pageIndex);
builder.setPageSize(pageSize);
builder.addFilter(FieldFilters.eq("acceptId",aid));
builder.addFilter(FieldFilters.ne("refType","3"));
builder.addFilter(FieldFilters.ne("refType","6"));
builder.addFilter(FieldFilters.eq("acceptId", aid));
builder.addFilter(FieldFilters.ne("refType", "3"));
builder.addFilter(FieldFilters.ne("refType", "6"));
// builder.addFilter(FieldFilters.ne("refType","3", FilterCheckValue.NONE));
if(isRead!=null){
builder.addFilter(FieldFilters.eq("isRead",isRead));
if (isRead != null) {
builder.addFilter(FieldFilters.eq("isRead", isRead));
}
PageList<Message> list = dao.findPage(builder.builder());
return list;
@@ -63,15 +67,15 @@ public class MessageServiceImpl implements IMessageService {
@Override
@Transactional
public void delete(List<String> ids) {
dao.deleteByFilter(FieldFilters.in("id",ids));
dao.deleteByFilter(FieldFilters.in("id", ids));
}
@Override
@Transactional
public Message detail(String id) {
Message message = dao.get(id);
if(!message.getIsRead()){
dao.updateFieldById(id,"isRead",true);
if (!message.getIsRead()) {
dao.updateFieldById(id, "isRead", true);
}
return message;
}
@@ -85,8 +89,8 @@ public class MessageServiceImpl implements IMessageService {
@Override
public Integer isRead(String aid) {
QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addFilter(FieldFilters.eq("isRead",false));
builder.addFilter(FieldFilters.eq("acceptId",aid));
builder.addFilter(FieldFilters.eq("isRead", false));
builder.addFilter(FieldFilters.eq("acceptId", aid));
PageList<Message> page = dao.findPage(builder.builder());
return page.getCount();
}
@@ -94,63 +98,122 @@ public class MessageServiceImpl implements IMessageService {
@Override
@Transactional
public void updateIsRead(List<String> ids) {
if (CollectionUtils.isEmpty(ids)) {
return;
}
dao.update(UpdateBuilder.from(Message.class)
.addUpdateField("isRead",true)
.addFilter(FieldFilters.in("id",ids))
.addUpdateField("isRead", true)
.addFilter(FieldFilters.in("id", ids))
.builder());
markCommendCaseStartRead(null, ids);
}
@Override
public Map<String, Object> messGroup(String aid) {
Map<String, Object> map = new HashMap<>();
QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addFilter(FieldFilters.eq("acceptId",aid));
builder.addFilter(FieldFilters.eq("acceptId", aid));
builder.addGroupBy("acceptId");
List<Message> list = dao.findList(builder.builder());
map.put("mess",list);
map.put("mess", list);
//在查出未读消息数
String sql="select count(1) from boe_message where is_read=false and acceptId=?1";
String sql = "select count(1) from boe_message where is_read=false and acceptId=?1";
int count = dao.sqlCount(sql, aid);
map.put("count",count);
map.put("count", count);
return map;
}
@Override
@Transactional
public void remove(String aid) {
dao.deleteByFilter(FieldFilters.eq("acceptId",aid));
dao.deleteByFilter(FieldFilters.eq("acceptId", aid));
}
@Override
public List<Message> userMess(String aid) {
QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addFilter(FieldFilters.eq("acceptId",aid));
builder.addFilter(FieldFilters.eq("acceptId", aid));
builder.addGroupBy("acceptId");
builder.addOrder(OrderCondition.desc("msgTime"));
List<Message> list = dao.findList(builder.builder());
return list;
}
@Override
@Transactional
public void setReadByAcceptId(String aid) {
dao.update("Update "+Message.class.getSimpleName()+" set isRead=?1 where acceptId=?2 and isRead=?3", true,aid,false);
}
@Override
@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 Integer clearMessageNotCase(String aid) {
List<Message> caseList = dao.findList(FieldFilters.eq("acceptId", aid), FieldFilters.eq("refType", "99"));
List<Message> notCaseList = dao.findList(FieldFilters.eq("acceptId", aid), FieldFilters.ne("refType", "99"));
dao.deleteByFilter(FieldFilters.eq("acceptId", aid), FieldFilters.ne("refType", "99"));
if (CollectionUtils.isNotEmpty(caseList) && CollectionUtils.isEmpty(notCaseList)) {
return 1;
} else if (CollectionUtils.isEmpty(caseList) && CollectionUtils.isNotEmpty(notCaseList)) {
return 2;
}
return 3;
}
@Override
@Transactional
public void cleanByAcceptId(String aid) {
dao.deleteByField("acceptId", aid);
}
@Override
@Transactional
public void batchSave(List<Message> list) {
// for(Message msg : list) {
//
// }
dao.saveList(list);
}
dao.saveList(list);
}
}