package shop.alien.storeplatform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.storeplatform.entity.StorePlatformDiscussion;
import shop.alien.storeplatform.vo.StorePlatformDiscussionReplyVo;
import shop.alien.storeplatform.vo.StorePlatformDiscussionUserVo;

import java.util.List;

/**
 * 店铺讨论表 服务类
 *
 * @author alien
 * @since 2025-12-30
 */
public interface StorePlatformDiscussionService extends IService<StorePlatformDiscussion> {

    /**
     * 分页查询店铺一级讨论
     * @param storeId 店铺ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param tags 搜索标签
     * @param sortMode 排序方式: 1-相关度降序, 2-点赞数降序, 3-时间升序, 4-时间降序
     * @return 分页结果
     */
    IPage<StorePlatformDiscussionUserVo> pageRootDiscussions(Integer storeId, Integer pageNum, Integer pageSize, String tags, Integer sortMode);

    /**
     * 分页查询某条一级讨论下的所有回复
     * @param rootId 一级讨论ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @param tags 搜索标签
     * @param sortMode 排序方式
     * @return 包含主贴信息的回复分页对象
     */
    StorePlatformDiscussionReplyVo pageRepliesByRootId(Integer rootId, Integer pageNum, Integer pageSize, String tags, Integer sortMode);

    /**
     * 根据店铺ID查询讨论列表
     * @param storeId 店铺ID
     * @param tags 搜索标签
     * @param sortMode 排序方式
     * @return 讨论列表
     */
    List<StorePlatformDiscussionUserVo> listByStoreId(Integer storeId, String tags, Integer sortMode);

    /**
     * 发布一级讨论 (主贴)
     * @param discussion 讨论信息 (带 storeId, content)
     * @return 是否成功
     */
    boolean postTopic(StorePlatformDiscussion discussion);

    /**
     * 回复讨论
     * @param discussion 讨论信息 (带 parentId, content)
     * @return 是否成功
     */
    boolean postReply(StorePlatformDiscussion discussion);

    /**
     * 点赞
     * @param id 讨论ID
     * @return 是否成功
     */
    boolean likeDiscussion(Integer id);

    /**
     * 删除问答讨论
     * @param id 讨论ID
     * @return 是否成功
     */
    boolean deleteDiscussion(Integer id);
}
