package com.mcwl.communityCenter.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.BaseEntity;
import com.mcwl.common.core.domain.R;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.dto.*;
import com.mcwl.communityCenter.domain.vo.PublishVo;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;

public interface PublishService extends IService<Publish> {

    PublishVo getDetail(PublishDetailRes publishDetailRes);

    /**
     * 发布
     * @param publishRes 发布对象
     */
    R<Object> publish(PublishRes publishRes);

    TableDataInfo getPublishList(PublishPageRes publishPageRes);

    TableDataInfo publishImage(@Valid PublishPageRes publishPageRes);

    TableDataInfo publishFile(@Valid PublishPageRes publishPageRes);

    R<Object> elitePublish(Long tenantId, Long communityId, Long publishId);

    TableDataInfo publishList(PublishPageRes publishPageRes);

    TableDataInfo myPublishList(MyPublishPageRes myPublishPageRes);

    void collectPublish(@Valid PublishCollectRes publishCollectRes);

    TableDataInfo getPersonHomeList(@Valid PersonHomePageRes personHomePageRes);

    void reportPublish(@Valid PublishReportRes publishReportRes);

    Publish getLastPublish(Long tenantId, Long communityId);

    R<Object> removePublish(@Valid PublishRemoveRes publishRemoveRes);
}
