package com.cool.store.service;

import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.notice.NoticeDTO;
import com.cool.store.request.notice.*;
import com.cool.store.response.bigdata.ApiResponse;
import com.cool.store.vo.PartnerUserInfoVO;
import com.cool.store.vo.notice.*;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Author suzhuhong
 * @Date 2025/7/25 9:58
 * @Version 1.0
 */
public interface MessageTemplateService {


    /**
     * 新增消息模版
     * @param request
     * @param user
     * @return
     */
    Boolean addMessageTemplate(MessageTemplateAddRequest request , LoginUserInfo user);

    /**
     * 编辑消息模版
     * @param request
     * @param user
     * @return
     */
    Boolean editMessageTemplate(MessageTemplateAddRequest request , LoginUserInfo user);


    /**
     * 获取详情
     * @param id
     * @return
     */
    MessageTemplateDetailVO getMessageTemplateDetail(Long id);

    /**
     * 批量删除 未发布可以删除
     * @param request
     * @return
     */
    Boolean batchDeleteMessageTemplate(BatchDeletedRequest request, LoginUserInfo user);

    /**
     * batch 批量发布
     * @param request
     * @param userId
     * @return
     */
    Boolean batchPublishMessageTemplate(BatchPublishRequest request, String userId);

    /**
     * thirdMatterHandle 第三方接口处理
     * @param thirdMatterRequest
     * @return
     */
    ApiResponse<Boolean> thirdMatterHandle(ThirdMatterRequest thirdMatterRequest);

    /**
     * 获取列表
     * @param request
     * @return
     */
    PageInfo<NoticeDTO> getMessageTemplateList(MessageTemplateQueryRequest request);


    PageInfo<StoreMessageDetailVO>  getStoreMessageListByTemplateId(StoreMessageRequest request);


    /**
     * 批量撤销
     * @param request
     * @param user
     * @return
     */
    Boolean batchRevokeNotice(BatchRevokeRequest request, LoginUserInfo user);

    /**
     * 撤销单个门店通知
     * @param id
     * @param user
     * @return
     */
    Boolean revokeById(Long id, LoginUserInfo user);

    List<ModuleAndMatterVO> getModuleList(String storeId,String mobile);

    PageInfo<StoreMessageVO> getStorePendingList(StoreMessagePendingRequest request);

    MessageDetailVO getMessageDetail(Long id);

    Boolean readMessage(Long id, String mobile);

    Boolean handleMessage(Long id, String userName,String mobile);


    ApiResponse<Boolean> thirdHandleMessage(ThirdHandleMessageRequest request);
}
