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)
private Long sortNewId;
@TableField(exist = false)
private Integer unreadCount;
}

View File

@ -101,6 +101,9 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
@Override
public List<SysMessage> getMsgOverview(SysMessage sysMessage) {
if (!SecurityUtils.isAdmin()) {
sysMessage.setReceiver(SecurityUtils.getUserId());
}
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
*
FROM
(
t.*,
IFNULL(s.unread_count, 0) AS unread_count
FROM (
SELECT
`imei`,
`receiver`,
`title`,
`msg_type`,
`read_status`,
`content`,
`rich_content`,
`img_url`,
`link_url`,
`create_time`, -- 必须加
`id`, -- 必须加
imei, receiver, title, 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
FROM
sys_message d
sys_message
WHERE
-- 正确写法:包含今天所有时间
d.create_time &gt;= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
AND d.create_time &lt; DATE_ADD(CURDATE(), INTERVAL 1 DAY)
create_time &gt;= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
AND create_time &lt; DATE_ADD(CURDATE(), INTERVAL 1 DAY)
and receiver = #{receiver}
) t
WHERE
t.rn = 1;
LEFT JOIN (
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>
</mapper>