feat: 解决消息通知bug

1.查询会漏掉全部消息
2.返回给前端id为long丢失精度,导致已读时对不上
3.解决read_flag为空,字段直接不返回问题
pull/1/head
shuliYao 1 year ago
parent 74e83c4c96
commit dbda330be8

@ -1,5 +1,6 @@
package cn.jyjz.xiaoyao.ocr.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.jyjz.xiaoyao.common.base.service.UserTokenService;
import cn.jyjz.xiaoyao.common.base.util.RequestBaseUtil;
import cn.jyjz.xiaoyao.common.base.vo.ResultVo;
@ -9,6 +10,7 @@ import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsg;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsgRead;
import cn.jyjz.xiaoyao.ocr.service.IOcrMsgService;
import cn.jyjz.xiaoyao.ocr.util.PageRequest;
import cn.jyjz.xiaoyao.ocr.vo.OcrMsgVO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiOperation;
@ -69,7 +71,8 @@ public class OcrMsgReadController {
pageQuery.setPageSize(pageSize);
PageInfo<List<Map<Object, String>>> findPage = iocrmsgservice.selectPage(pageQuery,userToken.getUserid(),msgCategory);
PageInfo<OcrMsgVO> findPage = iocrmsgservice.selectPage(pageQuery,userToken.getUserid(),msgCategory);
//执行查询方法
// return new ResponseEntity<Object>(findPage, HttpStatus.OK);
@ -121,9 +124,9 @@ public class OcrMsgReadController {
UserToken userToken = this.userTokenService.getUserToken(RequestBaseUtil.getToken(request));
QueryWrapper<OcrMsg> wrapperlist = new QueryWrapper<>();
wrapperlist.select("id").eq("msg_category",msgCategory).eq("send_status","1").apply(" FIND_IN_SET('"+userToken.getUserid()+"',receive_user_ids)");
wrapperlist.select("id").eq("msg_category",msgCategory).eq("send_status","1").and(wrapper->{
wrapper.eq("receive_user_type",2).or().apply(" FIND_IN_SET('"+userToken.getUserid()+"',receive_user_ids)");
});
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSSS");

@ -19,7 +19,7 @@ import java.util.Map;
*/
@Mapper
public interface OcrMsgMapper extends BaseMapper<OcrMsg> {
List<List<Map<Object, String>>> selectPage(@Param("userid")String userid,@Param("msgCategory")String msgCategory);
List<Map<Object, String>> selectPage(@Param("userid")String userid,@Param("msgCategory")String msgCategory);
Map<Object, String> selectone(@Param("id")String id);

@ -2,6 +2,7 @@ package cn.jyjz.xiaoyao.ocr.service;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsg;
import cn.jyjz.xiaoyao.ocr.vo.OcrMsgVO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import cn.jyjz.xiaoyao.ocr.util.PageRequest;
@ -28,7 +29,7 @@ public interface IOcrMsgService extends IService<OcrMsg> {
* @param pageRequest
* @return PageResult
*/
PageInfo<List<Map<Object,String>>> selectPage(PageRequest pageRequest,String userid, String msgCategory);
PageInfo<OcrMsgVO> selectPage(PageRequest pageRequest, String userid, String msgCategory);
Map<Object, String> selectone(String id);

@ -1,8 +1,10 @@
package cn.jyjz.xiaoyao.ocr.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.jyjz.xiaoyao.ocr.dataDao.OcrMsgMapper;
import cn.jyjz.xiaoyao.ocr.dataobject.OcrMsg;
import cn.jyjz.xiaoyao.ocr.service.IOcrMsgService;
import cn.jyjz.xiaoyao.ocr.vo.OcrMsgVO;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.jyjz.xiaoyao.ocr.util.PageRequest;
import com.github.pagehelper.PageHelper;
@ -30,12 +32,13 @@ public class OcrMsgServiceImpl extends ServiceImpl<OcrMsgMapper, OcrMsg> impleme
@Override
public PageInfo<List<Map<Object,String>>> selectPage(PageRequest pageRequest,String userid, String msgCategory) {
public PageInfo<OcrMsgVO> selectPage(PageRequest pageRequest,String userid, String msgCategory) {
int pageNum = pageRequest.getPageNum();
int pageSize = pageRequest.getPageSize();
PageHelper.startPage(pageNum, pageSize);
List<List<Map<Object, String>>> selectPage = ocrmsgmapper.selectPage(userid,msgCategory);
return new PageInfo<List<Map<Object,String>>>(selectPage);
List<Map<Object, String>> selectPage = ocrmsgmapper.selectPage(userid,msgCategory);
List<OcrMsgVO> resultList= BeanUtil.copyToList(selectPage, OcrMsgVO.class);
return new PageInfo<>(resultList);
}
@Override

@ -0,0 +1,39 @@
package cn.jyjz.xiaoyao.ocr.vo;
import lombok.Data;
/**
*
*
* @author hugh(shuli.yao) 1397940314@qq.com
* @version 1.0
* @date 2024/3/24 21:16
*/
@Data
public class OcrMsgVO {
/**
* id
*/
private String id;
/**
* json
*/
private String busJson;
/**
*
*/
private String userName;
/**
*
*/
private Long sendTime;
/**
* 1 0
*/
private Integer readFlag;
}

@ -29,45 +29,20 @@
</sql>
<select id="selectPage" resultType="map">
<if test='msgCategory == "2" '>
SELECT
m.id as id,
m.titile as titile,
"系统管理员" AS userName,
<if test='msgCategory == "2" '>"系统管理员" AS userName,</if>
m.bus_json AS busJson,
r.read_flag as readFlag,
m.send_time AS sendTime
FROM
ocr_msg m LEFT JOIN ocr_msg_read r ON m.id = r.msg_id
WHERE
m.msg_category = '2'
AND m.receive_user_type IN(1,2)
AND m.send_status = '1'
AND FIND_IN_SET( '${userid}', m.receive_user_ids )
order by m.create_time desc
</if>
<if test='msgCategory == "1" '>
SELECT
m.id as id,
m.titile as titile,
m.bus_json as busJson,
r.read_flag as readFlag,
m.send_time as sendTime
FROM
ocr_msg m LEFT JOIN s_user_t u ON m.sender=u.ID
LEFT JOIN ocr_msg_read r ON m.id = r.msg_id
WHERE
m.msg_category = '1'
AND
m.receive_user_type IN(1,2)
m.msg_category = #{msgCategory}
AND m.send_status = '1'
AND FIND_IN_SET( '${userid}', m.receive_user_ids )
AND (m.receive_user_type = 2 or FIND_IN_SET('${userid}', m.receive_user_ids))
order by m.create_time desc
</if>
</select>
<select id="selectone" resultType="map">

Loading…
Cancel
Save