mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-25 02:32:57 +08:00
zcwy-dev
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 移动端
|
||||
* 消息页面,按用户分组返回 暂时不用
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -61,7 +61,14 @@ public interface IMessageService {
|
||||
* @return
|
||||
*/
|
||||
void cleanByAcceptId(String aid);
|
||||
|
||||
|
||||
/**
|
||||
* 清楚消息排除推荐消息
|
||||
* @param aid
|
||||
* @return
|
||||
*/
|
||||
Integer clearMessageNotCase(String aid);
|
||||
|
||||
/**
|
||||
* 批量设置已读
|
||||
* */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user