package com.fs.qw.mapper; import com.fs.qw.domain.QwGroupMsg; import com.fs.qw.param.QwGroupMsgDetailsParam; import com.fs.qw.vo.QwGroupMsgDetailsVO; import com.fs.qw.vo.QwGroupMsgVO; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.HashMap; import java.util.List; /** * 客户群发记录主Mapper接口 * * @author fs * @date 2024-06-20 */ @Repository public interface QwGroupMsgMapper { /** * 查询客户群发记录主 * * @param id 客户群发记录主主键 * @return 客户群发记录主 */ public QwGroupMsg selectQwGroupMsgById(Long id); @Select("SELECT qgm.*,gmi.* FROM qw_group_msg qgm left join qw_group_msg_item gmi on qgm.id=gmi.group_msg_id " + "where qgm.id=#{id}") public QwGroupMsgVO selectQwGroupMsgByIdVO(@Param("id") Long id); /** * 查询客户群发记录主列表 * * @param qwGroupMsg 客户群发记录主 * @return 客户群发记录主集合 */ @Select("") public List selectQwGroupMsgListVO(@Param("map") QwGroupMsg qwGroupMsg); @Select("") public List selectQwGroupMsgListMyVO(@Param("map") QwGroupMsg qwGroupMsg); @Select("") public List getCountGroupMsgUserDetails(@Param("map") QwGroupMsgDetailsParam qwGroupMsgDetailsParam); /** 统计数据详情,已发送,未发送,已接收,未接收等 */ @Select("SELECT " + " COALESCE(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS '未发送成员', " + " COALESCE(SUM(CASE WHEN send_status = '0' THEN 1 ELSE 0 END), 0) AS '未送达客户', " + " COALESCE(SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END), 0) AS '已发送成员', " + " COALESCE(SUM(CASE WHEN send_status = '1' THEN 1 ELSE 0 END), 0) AS '送达客户', " + " COALESCE(SUM(CASE WHEN send_status = '2' THEN 1 ELSE 0 END), 0) AS '不是好友发送失败', " + " COALESCE(SUM(CASE WHEN send_status = '3' THEN 1 ELSE 0 END), 0) AS '接收已达上限' " + "FROM qw_group_msg_user where group_msg_id=#{groupMsgId}") public HashMap getCountGroupMsgUser(@Param("groupMsgId") Long groupMsgId); @Select("SELECT " + " COALESCE(SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END), 0) AS '未发送群主', " + " COALESCE(SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END), 0) AS '已发送群主', " + " COALESCE(SUM(CASE WHEN send_status = '1' THEN 1 ELSE 0 END), 0) AS '送达群聊' " + "FROM qw_group_msg_user where group_msg_id=#{groupMsgId}") public HashMap getCountGroupMsgBaseUser(@Param("groupMsgId") Long groupMsgId); /** * 新增客户群发记录主 * * @param qwGroupMsg 客户群发记录主 * @return 结果 */ public int insertQwGroupMsg(QwGroupMsg qwGroupMsg); /** * 修改客户群发记录主 * * @param qwGroupMsg 客户群发记录主 * @return 结果 */ public int updateQwGroupMsg(QwGroupMsg qwGroupMsg); /** * 删除客户群发记录主 * * @param id 客户群发记录主主键 * @return 结果 */ public int deleteQwGroupMsgById(Long id); /** * 批量删除客户群发记录主 * * @param ids 需要删除的数据主键集合 * @return 结果 */ public int deleteQwGroupMsgByIds(Long[] ids); @Select("SELECT qgm.*,gmi.id as itemId, gmi.group_msg_id, gmi.msg_id, gmi.msg_type, gmi.media_id, gmi.media_pic_url, gmi.title, " + "gmi.picurl, gmi.description, gmi.url, gmi.miniprogram_pic_media_id, gmi.miniprogram_pic_url, gmi.miniprogram_appid, " + "gmi.miniprogram_title, gmi.miniprogram_page, gmi.video_media_id, gmi.video_url, gmi.file_media_id, gmi.file_url " + "FROM qw_group_msg qgm " + "LEFT JOIN qw_group_msg_item gmi ON qgm.id = gmi.group_msg_id " + "WHERE " + "qgm.is_send = 3 " + "AND qgm.is_timer_send = 1 " + "AND timer_send <= NOW()") public List getQwGroupMsgTask(); }