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 e67453f4..aea2acee 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 @@ -269,7 +269,7 @@ public class CasesRecommendApi extends ApiBaseController { if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) { throw new RuntimeException("缺少必要参数"); } - iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo); + iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo,getCurrent().getAccountId()); return success(true); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java index 5ea6e659..72b32837 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java @@ -32,6 +32,6 @@ public interface ICasesRecommendService { * 撤回或者重新推送 * @param casesRecommendPushVo */ - void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo); + void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo,String userId); } 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 35ed5dd3..32b4dc37 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 @@ -217,6 +217,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR message.setIsRead(false); message.setMsgTime(LocalDateTime.now()); message.setRefId(pushRecords.get(0).getRecommendId()); + message.setBatchId(pushRecords.get(0).getRecommendId()); message.setRefType("99"); message.setSendName(pushRecords.get(0).getSysCreateBy()); message.setSendType(1); @@ -258,6 +259,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR message.setIsRead(false); message.setMsgTime(LocalDateTime.now()); message.setRefId(casesRecommendPushRecord.getId()); + message.setBatchId(casesRecommendPushRecord.getRecommendId()); message.setRefType("99"); message.setSendName(casesRecommendPushRecord.getSysCreateBy()); message.setSendType(1); diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java index 8680b44e..2b131e59 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java @@ -12,6 +12,7 @@ import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.service.ICasesRecommendService; import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendVo; +import com.xboe.system.user.dao.MessageDao; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,19 +26,22 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService { @Resource private CasesRecommendDao casesRecommendDao; + + @Resource + private MessageDao messageDao; @Resource private ICasesRecommendPushRecordService iCasesRecommendPushRecordService; @Override public PageList page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) { - QueryBuilder query=QueryBuilder.from(CasesRecommend.class); - query.addFilter(FieldFilters.eq("deleted",false)); - if(StringUtils.isNotBlank(casesRecommendVo.getRecommendName())){ + QueryBuilder query = QueryBuilder.from(CasesRecommend.class); + query.addFilter(FieldFilters.eq("deleted", false)); + if (StringUtils.isNotBlank(casesRecommendVo.getRecommendName())) { query.addFilter(FieldFilters.like("recommend_by", LikeMatchMode.ANYWHERE, casesRecommendVo.getRecommendName())); } - if(!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())){ - query.addFilter(FieldFilters.ge("recommend_time",casesRecommendVo.getRecommendTimeList().get(0))); - query.addFilter(FieldFilters.le("recommend_time",casesRecommendVo.getRecommendTimeList().get(1))); + if (!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())) { + query.addFilter(FieldFilters.ge("recommend_time", casesRecommendVo.getRecommendTimeList().get(0))); + query.addFilter(FieldFilters.le("recommend_time", casesRecommendVo.getRecommendTimeList().get(1))); } query.addOrder(OrderCondition.desc("sys_create_time")); @@ -58,19 +62,22 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService { } @Override - public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo) { + public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo, String userId) { // 查询 CasesRecommend db = casesRecommendDao.get(casesRecommendPushVo.getCasesRecommendId()); if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress()) || CasesPushStatusEnum.WAIT_PUSH.getStatus().equals(db.getPushProgress()) || CasesPushStatusEnum.PUSH_ING.getStatus().equals(db.getPushProgress()) - ){ + ) { // 当为推送成功时为 iCasesRecommendPushRecordService.rePushOrWithdraw(true, db); db.setPushProgress(CasesPushStatusEnum.PUSH_REVOKE.getStatus()); casesRecommendDao.update(db); - }else if (CasesPushStatusEnum.PUSH_FAIL.getStatus().equals(db.getPushProgress()) - || CasesPushStatusEnum.PUSH_REVOKE.getStatus().equals(db.getPushProgress())){ + messageDao.deleteByFilter(FieldFilters.eq("acceptId", userId), FieldFilters.eq("refType", "99"), + 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); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/system/user/api/MessageApi.java b/servers/boe-server-all/src/main/java/com/xboe/system/user/api/MessageApi.java index f52ee15e..ca1149dc 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/system/user/api/MessageApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/system/user/api/MessageApi.java @@ -1,18 +1,5 @@ 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 +11,14 @@ 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.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 @RestController @@ -227,6 +220,23 @@ public class MessageApi extends ApiBaseController { } + @GetMapping("/clearMessageNotCase") + public JsonResponse 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()); + } + } + + /** * 移动端 * 消息页面,按用户分组返回 暂时不用 diff --git a/servers/boe-server-all/src/main/java/com/xboe/system/user/entity/Message.java b/servers/boe-server-all/src/main/java/com/xboe/system/user/entity/Message.java index 93dc6c68..b8d47986 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/system/user/entity/Message.java +++ b/servers/boe-server-all/src/main/java/com/xboe/system/user/entity/Message.java @@ -1,18 +1,16 @@ 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; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import java.time.LocalDateTime; + @Data @EqualsAndHashCode(callSuper = false) @@ -120,4 +118,10 @@ public class Message extends IdEntity { @Column(name = "is_read") private Boolean isRead; + /** + * 批次号 + */ + @Column(name = "batch_id") + private String batchId; + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/system/user/service/IMessageService.java b/servers/boe-server-all/src/main/java/com/xboe/system/user/service/IMessageService.java index 8e7692fe..f0d01748 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/system/user/service/IMessageService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/system/user/service/IMessageService.java @@ -1,11 +1,10 @@ package com.xboe.system.user.service; -import java.util.List; -import java.util.Map; - import com.xboe.common.PageList; 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 */ void cleanByAcceptId(String aid); + + /** + * 清楚消息排除推荐消息 + * @param aid + * @return + */ + Integer clearMessageNotCase(String aid); /** * 批量设置已读 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 b68b83ea..c8f8c3e0 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 @@ -21,8 +21,8 @@ import java.util.List; import java.util.Map; /** -* 消息 -* */ + * 消息 + */ @Service public class MessageServiceImpl implements IMessageService { @@ -38,9 +38,9 @@ public class MessageServiceImpl implements IMessageService { 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 list = dao.findPage(builder.builder()); return list; @@ -52,12 +52,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 list = dao.findPage(builder.builder()); return list; @@ -66,21 +66,21 @@ public class MessageServiceImpl implements IMessageService { @Override @Transactional public void delete(List 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); - if("99".equals(message.getRefType())){ + if ("99".equals(message.getRefType())) { casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) - .addUpdateField("readFlag",1) - .addUpdateField("readStartTime",new Date()) - .addFilter(FieldFilters.eq("id",message.getRefId())) + .addUpdateField("readFlag", 1) + .addUpdateField("readStartTime", new Date()) + .addFilter(FieldFilters.eq("id", message.getRefId())) .builder()); } } @@ -96,8 +96,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 page = dao.findPage(builder.builder()); return page.getCount(); } @@ -105,23 +105,23 @@ public class MessageServiceImpl implements IMessageService { @Override @Transactional public void updateIsRead(List ids) { - if(CollectionUtils.isEmpty(ids)){ + if (CollectionUtils.isEmpty(ids)) { return; } //更新最后读时间 - for (String id:ids){ + for (String id : ids) { Message message = dao.get(id); - if("99".equals(message.getRefType())){ + if ("99".equals(message.getRefType())) { casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) - .addUpdateField("readEndTime",new Date()) - .addFilter(FieldFilters.eq("id",message.getRefId())) + .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)) + .addUpdateField("isRead", true) + .addFilter(FieldFilters.in("id", ids)) .builder()); } @@ -130,52 +130,67 @@ public class MessageServiceImpl implements IMessageService { public Map messGroup(String aid) { Map 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 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 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 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); + } - @Override - public void cleanByAcceptId(String aid) { - dao.deleteByField("acceptId", aid); + @Override + @Transactional + public void cleanByAcceptId(String aid) { + dao.deleteByField("acceptId", aid); - } + } - @Override - @Transactional - public void batchSave(List list) { + @Override + @Transactional + public Integer clearMessageNotCase(String aid) { + List caseList = dao.findList(FieldFilters.eq("acceptId", aid), FieldFilters.eq("refType", "99")); + List 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 list) { // for(Message msg : list) { // // } - dao.saveList(list); - } + dao.saveList(list); + } }