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();
}