package com.willalp.msg.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.willalp.msg.domain.HsAppUserMsg;
import org.springframework.scheduling.annotation.Async;

import java.util.Date;
import java.util.List;

/**
 * APP用户消息Service接口
 *
 * @author willalp
 * @date 2022-10-26
 */
public interface IHsAppUserMsgService extends IService<HsAppUserMsg>
{
    /**
     * 查询APP用户消息列表
     *
     * @param hsAppUserMsg APP用户消息
     * @return APP用户消息集合
     */
    public List<HsAppUserMsg> selectHsAppUserMsgList(HsAppUserMsg hsAppUserMsg);

    /**
     * 未读消息总信息推送 改变【APP】端未读显示（对所有用户主动推送）
     *
     */
    void pushMsgSum();

    /**
     * 已读回执校验推送 同步【APP】端清除已读显示（对正在进行已读操作的用户主动推送）
     *
     * @param userCode
     */
    void readReceiptVerify(String userCode);

    /**
     * 按照ID 已读（DB中）
     *
     * @param taskId
     * @param userCode
     */
    void readMsgByTaskId(String taskId,String userCode);

    /**
     * 按照ID 已读
     *
     * @param id
     */
    void readMsgById(String id);


    /**
     * 按照ID集合 已读
     *
     * @param uc
     */
    void allReadMsgByUserCode(String uc);

    /**
     * 保存审批消息并推送
     * @param msgType
     * @param title
     * @param content
     * @param taskId
     * @param sendUser
     * @param applyUn
     * @param createTime
     */
    @Async("threadPoolTaskExecutor")
    void saveApprovalMsgAndPush(String msgType,String title, String content, String taskId, String sendUser, String applyUn, Date createTime);
}
