message概览

master
lld 2026-04-02 02:29:46 +08:00
parent b14c1d6c6d
commit e5b0ff6fc0
3 changed files with 27 additions and 20 deletions

View File

@ -82,4 +82,7 @@ public class SysMessage extends BaseEntity
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
private Long sortNewId; private Long sortNewId;
@TableField(exist = false)
private Integer unreadCount;
} }

View File

@ -101,6 +101,9 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
@Override @Override
public List<SysMessage> getMsgOverview(SysMessage sysMessage) { public List<SysMessage> getMsgOverview(SysMessage sysMessage) {
if (!SecurityUtils.isAdmin()) {
sysMessage.setReceiver(SecurityUtils.getUserId());
}
return baseMapper.getMsgOverview(sysMessage); return baseMapper.getMsgOverview(sysMessage);
} }
} }

View File

@ -126,30 +126,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getMsgOverview" parameterType="SysMessage" resultMap="SysMessageResult"> <select id="getMsgOverview" parameterType="SysMessage" resultMap="SysMessageResult">
SELECT SELECT
* t.*,
FROM IFNULL(s.unread_count, 0) AS unread_count
( FROM (
SELECT SELECT
`imei`, imei, receiver, title, msg_type, read_status,
`receiver`, content, rich_content, img_url, link_url,
`title`, create_time, id,
`msg_type`,
`read_status`,
`content`,
`rich_content`,
`img_url`,
`link_url`,
`create_time`, -- 必须加
`id`, -- 必须加
ROW_NUMBER() OVER (PARTITION BY msg_type ORDER BY create_time DESC, id DESC) AS rn ROW_NUMBER() OVER (PARTITION BY msg_type ORDER BY create_time DESC, id DESC) AS rn
FROM FROM
sys_message d sys_message
WHERE WHERE
-- 正确写法:包含今天所有时间 create_time &gt;= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
d.create_time &gt;= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND create_time &lt; DATE_ADD(CURDATE(), INTERVAL 1 DAY)
AND d.create_time &lt; DATE_ADD(CURDATE(), INTERVAL 1 DAY) and receiver = #{receiver}
) t ) t
WHERE LEFT JOIN (
t.rn = 1; SELECT msg_type, COUNT(*) AS unread_count
FROM sys_message
WHERE read_status = 0
AND create_time &gt;= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
AND create_time &lt; DATE_ADD(CURDATE(), INTERVAL 1 DAY)
and receiver = #{receiver}
GROUP BY msg_type
) s ON t.msg_type = s.msg_type
WHERE t.rn = 1;
</select> </select>
</mapper> </mapper>