package com.xindazhou.business.service.community.post;

import com.xindazhou.business.controller.app.community.post.vo.PostCreateReqVO;
import com.xindazhou.business.controller.app.community.post.vo.PostPageReqVO;
import com.xindazhou.business.controller.app.community.post.vo.PostRespVO;
import com.xindazhou.business.controller.app.community.post.vo.PostUpdateReqVO;
import com.xindazhou.business.controller.admin.community.post.vo.PostUpdateStatusReqVO;
import com.xindazhou.framework.common.pojo.PageResult;

/**
 * 帖子 Service 接口
 *
 * @author xindazhou
 */
public interface PostService {

    /**
     * 创建帖子
     *
     * @param createReqVO 创建信息
     * @return 帖子ID
     */
    Long createPost(PostCreateReqVO createReqVO);

    /**
     * 更新帖子
     *
     * @param updateReqVO 更新信息
     */
    void updatePost(PostUpdateReqVO updateReqVO);

    /**
     * 删除帖子
     *
     * @param id 帖子ID
     */
    void deletePost(Long id);

    /**
     * 获得帖子
     *
     * @param id 帖子ID
     * @return 帖子
     */
    PostRespVO getPost(Long id);

    /**
     * 获得帖子分页列表
     *
     * @param reqVO 分页条件
     * @return 分页列表
     */
    PageResult<PostRespVO> getPostPage(PostPageReqVO reqVO);

    /**
     * 增加浏览数
     *
     * @param id 帖子ID
     */
    void incrementViewCount(Long id);

    // ========== 管理后台方法 ==========

    /**
     * 获得帖子分页列表（管理后台）
     *
     * @param reqVO 分页条件
     * @return 分页列表
     */
    PageResult<com.xindazhou.business.controller.admin.community.post.vo.PostRespVO> getPostPageAdmin(com.xindazhou.business.controller.admin.community.post.vo.PostPageReqVO reqVO);

    /**
     * 更新帖子状态（管理后台）
     *
     * @param updateReqVO 更新信息
     */
    void updatePostStatus(PostUpdateStatusReqVO updateReqVO);

    /**
     * 删除帖子（管理后台）
     *
     * @param id 帖子ID
     */
    void deletePostAdmin(Long id);

}
