Merge remote-tracking branch 'origin/master'

This commit is contained in:
buerjun
2023-07-03 16:51:08 +08:00
8 changed files with 127 additions and 83 deletions

View File

@@ -269,7 +269,7 @@ public class CasesRecommendApi extends ApiBaseController {
if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) { if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) {
throw new RuntimeException("缺少必要参数"); throw new RuntimeException("缺少必要参数");
} }
iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo); iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo,getCurrent().getAccountId());
return success(true); return success(true);
} }

View File

@@ -32,6 +32,6 @@ public interface ICasesRecommendService {
* 撤回或者重新推送 * 撤回或者重新推送
* @param casesRecommendPushVo * @param casesRecommendPushVo
*/ */
void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo); void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo,String userId);
} }

View File

@@ -217,6 +217,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
message.setIsRead(false); message.setIsRead(false);
message.setMsgTime(LocalDateTime.now()); message.setMsgTime(LocalDateTime.now());
message.setRefId(pushRecords.get(0).getRecommendId()); message.setRefId(pushRecords.get(0).getRecommendId());
message.setBatchId(pushRecords.get(0).getRecommendId());
message.setRefType("99"); message.setRefType("99");
message.setSendName(pushRecords.get(0).getSysCreateBy()); message.setSendName(pushRecords.get(0).getSysCreateBy());
message.setSendType(1); message.setSendType(1);
@@ -258,6 +259,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
message.setIsRead(false); message.setIsRead(false);
message.setMsgTime(LocalDateTime.now()); message.setMsgTime(LocalDateTime.now());
message.setRefId(casesRecommendPushRecord.getId()); message.setRefId(casesRecommendPushRecord.getId());
message.setBatchId(casesRecommendPushRecord.getRecommendId());
message.setRefType("99"); message.setRefType("99");
message.setSendName(casesRecommendPushRecord.getSysCreateBy()); message.setSendName(casesRecommendPushRecord.getSysCreateBy());
message.setSendType(1); message.setSendType(1);

View File

@@ -12,6 +12,7 @@ import com.xboe.module.boecase.service.ICasesRecommendPushRecordService;
import com.xboe.module.boecase.service.ICasesRecommendService; import com.xboe.module.boecase.service.ICasesRecommendService;
import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendPushVo;
import com.xboe.module.boecase.vo.CasesRecommendVo; import com.xboe.module.boecase.vo.CasesRecommendVo;
import com.xboe.system.user.dao.MessageDao;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -25,19 +26,22 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
@Resource @Resource
private CasesRecommendDao casesRecommendDao; private CasesRecommendDao casesRecommendDao;
@Resource
private MessageDao messageDao;
@Resource @Resource
private ICasesRecommendPushRecordService iCasesRecommendPushRecordService; private ICasesRecommendPushRecordService iCasesRecommendPushRecordService;
@Override @Override
public PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) { public PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) {
QueryBuilder query=QueryBuilder.from(CasesRecommend.class); QueryBuilder query = QueryBuilder.from(CasesRecommend.class);
query.addFilter(FieldFilters.eq("deleted",false)); query.addFilter(FieldFilters.eq("deleted", false));
if(StringUtils.isNotBlank(casesRecommendVo.getRecommendName())){ if (StringUtils.isNotBlank(casesRecommendVo.getRecommendName())) {
query.addFilter(FieldFilters.like("recommend_by", LikeMatchMode.ANYWHERE, casesRecommendVo.getRecommendName())); query.addFilter(FieldFilters.like("recommend_by", LikeMatchMode.ANYWHERE, casesRecommendVo.getRecommendName()));
} }
if(!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())){ if (!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())) {
query.addFilter(FieldFilters.ge("recommend_time",casesRecommendVo.getRecommendTimeList().get(0))); query.addFilter(FieldFilters.ge("recommend_time", casesRecommendVo.getRecommendTimeList().get(0)));
query.addFilter(FieldFilters.le("recommend_time",casesRecommendVo.getRecommendTimeList().get(1))); query.addFilter(FieldFilters.le("recommend_time", casesRecommendVo.getRecommendTimeList().get(1)));
} }
query.addOrder(OrderCondition.desc("sys_create_time")); query.addOrder(OrderCondition.desc("sys_create_time"));
@@ -58,19 +62,22 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
} }
@Override @Override
public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo) { public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo, String userId) {
// 查询 // 查询
CasesRecommend db = casesRecommendDao.get(casesRecommendPushVo.getCasesRecommendId()); CasesRecommend db = casesRecommendDao.get(casesRecommendPushVo.getCasesRecommendId());
if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress()) if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress())
|| CasesPushStatusEnum.WAIT_PUSH.getStatus().equals(db.getPushProgress()) || CasesPushStatusEnum.WAIT_PUSH.getStatus().equals(db.getPushProgress())
|| CasesPushStatusEnum.PUSH_ING.getStatus().equals(db.getPushProgress()) || CasesPushStatusEnum.PUSH_ING.getStatus().equals(db.getPushProgress())
){ ) {
// 当为推送成功时为 // 当为推送成功时为
iCasesRecommendPushRecordService.rePushOrWithdraw(true, db); iCasesRecommendPushRecordService.rePushOrWithdraw(true, db);
db.setPushProgress(CasesPushStatusEnum.PUSH_REVOKE.getStatus()); db.setPushProgress(CasesPushStatusEnum.PUSH_REVOKE.getStatus());
casesRecommendDao.update(db); casesRecommendDao.update(db);
}else if (CasesPushStatusEnum.PUSH_FAIL.getStatus().equals(db.getPushProgress()) messageDao.deleteByFilter(FieldFilters.eq("acceptId", userId), FieldFilters.eq("refType", "99"),
|| CasesPushStatusEnum.PUSH_REVOKE.getStatus().equals(db.getPushProgress())){ FieldFilters.eq("batchId", casesRecommendPushVo.getCasesRecommendId()));
} else if (CasesPushStatusEnum.PUSH_FAIL.getStatus().equals(db.getPushProgress())
|| CasesPushStatusEnum.PUSH_REVOKE.getStatus().equals(db.getPushProgress())) {
// 推送失败或者已撤回时 // 推送失败或者已撤回时
iCasesRecommendPushRecordService.rePushOrWithdraw(false, db); iCasesRecommendPushRecordService.rePushOrWithdraw(false, db);
} }

View File

@@ -1,18 +1,5 @@
package com.xboe.system.user.api; 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.PageList;
import com.xboe.common.Pagination; import com.xboe.common.Pagination;
import com.xboe.common.utils.IDGenerator; import com.xboe.common.utils.IDGenerator;
@@ -24,8 +11,14 @@ import com.xboe.system.user.entity.Message;
import com.xboe.system.user.service.IMessageService; import com.xboe.system.user.service.IMessageService;
import com.xboe.system.user.service.MessageSender; import com.xboe.system.user.service.MessageSender;
import com.xboe.system.user.vo.BatchMessage; import com.xboe.system.user.vo.BatchMessage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@RestController @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,18 +1,16 @@
package com.xboe.system.user.entity; 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.fasterxml.jackson.annotation.JsonFormat;
import com.xboe.core.SysConstant; import com.xboe.core.SysConstant;
import com.xboe.core.orm.IdEntity; import com.xboe.core.orm.IdEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.time.LocalDateTime;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@@ -120,4 +118,10 @@ public class Message extends IdEntity {
@Column(name = "is_read") @Column(name = "is_read")
private Boolean isRead; private Boolean isRead;
/**
* 批次号
*/
@Column(name = "batch_id")
private String batchId;
} }

View File

@@ -1,11 +1,10 @@
package com.xboe.system.user.service; package com.xboe.system.user.service;
import java.util.List;
import java.util.Map;
import com.xboe.common.PageList; import com.xboe.common.PageList;
import com.xboe.system.user.entity.Message; import com.xboe.system.user.entity.Message;
import com.xboe.system.user.vo.BatchMessage;
import java.util.List;
import java.util.Map;
/** /**
* 消息接口 * 消息接口
@@ -61,6 +60,13 @@ public interface IMessageService {
* @return * @return
*/ */
void cleanByAcceptId(String aid); void cleanByAcceptId(String aid);
/**
* 清楚消息排除推荐消息
* @param aid
* @return
*/
Integer clearMessageNotCase(String aid);
/** /**
* 批量设置已读 * 批量设置已读

View File

@@ -21,8 +21,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 消息 * 消息
* */ */
@Service @Service
public class MessageServiceImpl implements IMessageService { public class MessageServiceImpl implements IMessageService {
@@ -38,9 +38,9 @@ public class MessageServiceImpl implements IMessageService {
builder.addOrder(OrderCondition.desc("id")); builder.addOrder(OrderCondition.desc("id"));
builder.setPageIndex(pageIndex); builder.setPageIndex(pageIndex);
builder.setPageSize(pageSize); builder.setPageSize(pageSize);
builder.addFilter(FieldFilters.eq("acceptId",aid)); builder.addFilter(FieldFilters.eq("acceptId", aid));
if(isRead!=null){ if (isRead != null) {
builder.addFilter(FieldFilters.eq("isRead",isRead)); builder.addFilter(FieldFilters.eq("isRead", isRead));
} }
PageList<Message> list = dao.findPage(builder.builder()); PageList<Message> list = dao.findPage(builder.builder());
return list; return list;
@@ -52,12 +52,12 @@ public class MessageServiceImpl implements IMessageService {
builder.addOrder(OrderCondition.desc("id")); builder.addOrder(OrderCondition.desc("id"));
builder.setPageIndex(pageIndex); builder.setPageIndex(pageIndex);
builder.setPageSize(pageSize); builder.setPageSize(pageSize);
builder.addFilter(FieldFilters.eq("acceptId",aid)); builder.addFilter(FieldFilters.eq("acceptId", aid));
builder.addFilter(FieldFilters.ne("refType","3")); builder.addFilter(FieldFilters.ne("refType", "3"));
builder.addFilter(FieldFilters.ne("refType","6")); builder.addFilter(FieldFilters.ne("refType", "6"));
// builder.addFilter(FieldFilters.ne("refType","3", FilterCheckValue.NONE)); // builder.addFilter(FieldFilters.ne("refType","3", FilterCheckValue.NONE));
if(isRead!=null){ if (isRead != null) {
builder.addFilter(FieldFilters.eq("isRead",isRead)); builder.addFilter(FieldFilters.eq("isRead", isRead));
} }
PageList<Message> list = dao.findPage(builder.builder()); PageList<Message> list = dao.findPage(builder.builder());
return list; return list;
@@ -66,21 +66,21 @@ public class MessageServiceImpl implements IMessageService {
@Override @Override
@Transactional @Transactional
public void delete(List<String> ids) { public void delete(List<String> ids) {
dao.deleteByFilter(FieldFilters.in("id",ids)); dao.deleteByFilter(FieldFilters.in("id", ids));
} }
@Override @Override
@Transactional @Transactional
public Message detail(String id) { public Message detail(String id) {
Message message = dao.get(id); Message message = dao.get(id);
if(!message.getIsRead()){ if (!message.getIsRead()) {
dao.updateFieldById(id,"isRead",true); dao.updateFieldById(id, "isRead", true);
if("99".equals(message.getRefType())){ if ("99".equals(message.getRefType())) {
casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
.addUpdateField("readFlag",1) .addUpdateField("readFlag", 1)
.addUpdateField("readStartTime",new Date()) .addUpdateField("readStartTime", new Date())
.addFilter(FieldFilters.eq("id",message.getRefId())) .addFilter(FieldFilters.eq("id", message.getRefId()))
.builder()); .builder());
} }
} }
@@ -96,8 +96,8 @@ public class MessageServiceImpl implements IMessageService {
@Override @Override
public Integer isRead(String aid) { public Integer isRead(String aid) {
QueryBuilder builder = QueryBuilder.from(Message.class); QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addFilter(FieldFilters.eq("isRead",false)); builder.addFilter(FieldFilters.eq("isRead", false));
builder.addFilter(FieldFilters.eq("acceptId",aid)); builder.addFilter(FieldFilters.eq("acceptId", aid));
PageList<Message> page = dao.findPage(builder.builder()); PageList<Message> page = dao.findPage(builder.builder());
return page.getCount(); return page.getCount();
} }
@@ -105,23 +105,23 @@ public class MessageServiceImpl implements IMessageService {
@Override @Override
@Transactional @Transactional
public void updateIsRead(List<String> ids) { public void updateIsRead(List<String> ids) {
if(CollectionUtils.isEmpty(ids)){ if (CollectionUtils.isEmpty(ids)) {
return; return;
} }
//更新最后读时间 //更新最后读时间
for (String id:ids){ for (String id : ids) {
Message message = dao.get(id); Message message = dao.get(id);
if("99".equals(message.getRefType())){ if ("99".equals(message.getRefType())) {
casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class)
.addUpdateField("readEndTime",new Date()) .addUpdateField("readEndTime", new Date())
.addFilter(FieldFilters.eq("id",message.getRefId())) .addFilter(FieldFilters.eq("id", message.getRefId()))
.builder()); .builder());
} }
} }
dao.update(UpdateBuilder.from(Message.class) dao.update(UpdateBuilder.from(Message.class)
.addUpdateField("isRead",true) .addUpdateField("isRead", true)
.addFilter(FieldFilters.in("id",ids)) .addFilter(FieldFilters.in("id", ids))
.builder()); .builder());
} }
@@ -130,52 +130,67 @@ public class MessageServiceImpl implements IMessageService {
public Map<String, Object> messGroup(String aid) { public Map<String, Object> messGroup(String aid) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
QueryBuilder builder = QueryBuilder.from(Message.class); QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addFilter(FieldFilters.eq("acceptId",aid)); builder.addFilter(FieldFilters.eq("acceptId", aid));
builder.addGroupBy("acceptId"); builder.addGroupBy("acceptId");
List<Message> list = dao.findList(builder.builder()); 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); int count = dao.sqlCount(sql, aid);
map.put("count",count); map.put("count", count);
return map; return map;
} }
@Override @Override
@Transactional @Transactional
public void remove(String aid) { public void remove(String aid) {
dao.deleteByFilter(FieldFilters.eq("acceptId",aid)); dao.deleteByFilter(FieldFilters.eq("acceptId", aid));
} }
@Override @Override
public List<Message> userMess(String aid) { public List<Message> userMess(String aid) {
QueryBuilder builder = QueryBuilder.from(Message.class); QueryBuilder builder = QueryBuilder.from(Message.class);
builder.addFilter(FieldFilters.eq("acceptId",aid)); builder.addFilter(FieldFilters.eq("acceptId", aid));
builder.addGroupBy("acceptId"); builder.addGroupBy("acceptId");
builder.addOrder(OrderCondition.desc("msgTime")); builder.addOrder(OrderCondition.desc("msgTime"));
List<Message> list = dao.findList(builder.builder()); List<Message> list = dao.findList(builder.builder());
return list; return list;
} }
@Override @Override
@Transactional @Transactional
public void setReadByAcceptId(String aid) { public void setReadByAcceptId(String aid) {
dao.update("Update "+Message.class.getSimpleName()+" set isRead=?1 where acceptId=?2 and isRead=?3", true,aid,false); dao.update("Update " + Message.class.getSimpleName() + " set isRead=?1 where acceptId=?2 and isRead=?3", true, aid, false);
} }
@Override @Override
public void cleanByAcceptId(String aid) { @Transactional
dao.deleteByField("acceptId", aid); public void cleanByAcceptId(String aid) {
dao.deleteByField("acceptId", aid);
} }
@Override @Override
@Transactional @Transactional
public void batchSave(List<Message> list) { 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 batchSave(List<Message> list) {
// for(Message msg : list) { // for(Message msg : list) {
// //
// } // }
dao.saveList(list); dao.saveList(list);
} }
} }