add gao user notify

This commit is contained in:
Timi
2026-08-25 22:55:18 +08:00
parent 9f884e2b74
commit d747a0fdae
14 changed files with 520 additions and 34 deletions
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.imyeyu.api.modules.common.mapper.NotifyMapper">
<select id="selectManagementPage" resultType="com.imyeyu.api.modules.common.vo.NotifyManagementItem">
SELECT
n.`id`,
n.`created_by`,
n.`created_at`,
n.`updated_at`,
MAX(detail.`subject`) AS `subject`,
MAX(detail.`content`) AS `content`,
MAX(detail.`content_type`) AS `content_type`,
MAX(detail.`send_at`) AS `send_at`,
COUNT(detail.`id`) AS `recipient_count`,
COUNT(CASE WHEN detail.`read_at` IS NOT NULL THEN 1 END) AS `read_count`,
COUNT(CASE WHEN detail.`status` = 'WAITING' THEN 1 END) AS `waiting_count`,
COUNT(CASE WHEN detail.`status` = 'REMINDED' THEN 1 END) AS `reminded_count`,
COUNT(CASE WHEN detail.`status` = 'TIMEOUT' THEN 1 END) AS `timeout_count`,
COUNT(CASE WHEN detail.`status` = 'CANCEL' THEN 1 END) AS `cancel_count`,
COUNT(CASE WHEN detail.`status` = 'FAIL' THEN 1 END) AS `fail_count`
FROM `notify` n
INNER JOIN `notify_detail` detail
ON detail.`notify_id` = n.`id`
AND detail.`msg_type` = 'INTERNAL'
AND detail.`deleted_at` IS NULL
WHERE n.`deleted_at` IS NULL
AND (
n.`created_by` = #{userId}
OR EXISTS (
SELECT 1
FROM `notify_detail` owner_detail
WHERE owner_detail.`notify_id` = n.`id`
AND owner_detail.`send_from` = #{userId}
AND owner_detail.`deleted_at` IS NULL
)
)
GROUP BY n.`id`, n.`created_by`, n.`created_at`, n.`updated_at`
ORDER BY n.`created_at` DESC
LIMIT #{offset}, #{limit}
</select>
<select id="countManagement" resultType="long">
SELECT COUNT(*)
FROM `notify` n
WHERE n.`deleted_at` IS NULL
AND (
n.`created_by` = #{userId}
OR EXISTS (
SELECT 1
FROM `notify_detail` owner_detail
WHERE owner_detail.`notify_id` = n.`id`
AND owner_detail.`send_from` = #{userId}
AND owner_detail.`deleted_at` IS NULL
)
)
AND EXISTS (
SELECT 1
FROM `notify_detail` detail
WHERE detail.`notify_id` = n.`id`
AND detail.`msg_type` = 'INTERNAL'
AND detail.`deleted_at` IS NULL
)
</select>
<select id="selectManagement" resultType="com.imyeyu.api.modules.common.entity.Notify">
SELECT n.*
FROM `notify` n
WHERE n.`id` = #{notifyId}
AND n.`deleted_at` IS NULL
AND (
n.`created_by` = #{userId}
OR EXISTS (
SELECT 1
FROM `notify_detail` owner_detail
WHERE owner_detail.`notify_id` = n.`id`
AND owner_detail.`send_from` = #{userId}
AND owner_detail.`deleted_at` IS NULL
)
)
LIMIT 1
</select>
</mapper>