package shop.alien.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import shop.alien.entity.store.LifeFeedback;
import shop.alien.entity.store.vo.LifeFeedbackDetailVo;
import shop.alien.entity.store.vo.LifeFeedbackListVo;
import shop.alien.entity.store.vo.LifeFeedbackVo;

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

/**
 * 意见反馈 Mapper 接口
 */
@Mapper
public interface LifeFeedbackMapper extends BaseMapper<LifeFeedback> {

    /**
     * 查询用户反馈列表(带工作人员名称)
     * @param page 分页对象
     * @param userId 用户ID
     * @param feedbackSource 反馈来源
     * @param feedbackWay 反馈方式
     * @param handleStatus 处理状态
     * @return 反馈列表
     */
    IPage<LifeFeedbackVo> selectFeedbackListWithStaff(
            Page<LifeFeedbackVo> page,
            @Param("userId") Integer userId,
            @Param("feedbackSource") Integer feedbackSource,
            @Param("feedbackWay") Integer feedbackWay,
            @Param("handleStatus") Integer handleStatus
    );

    /**
     * 查询反馈详情(带工作人员名称)
     * @param feedbackId 反馈ID
     * @return 反馈详情
     */
    LifeFeedbackVo selectFeedbackDetail(@Param("feedbackId") Integer feedbackId);

    /**
     * 统计待处理反馈数量
     * @param feedbackSource 反馈来源
     * @return 待处理数量
     */
    Integer countPendingFeedback(@Param("feedbackSource") Integer feedbackSource);

    /**
     * 查询平台回复列表
     * @param userId 用户ID
     * @param feedbackSource 反馈来源
     * @param startTime 开始时间
     * @return 平台回复列表
     */
    List<LifeFeedbackVo> selectPlatformReplies(
            @Param("userId") Integer userId,
            @Param("feedbackSource") Integer feedbackSource,
            @Param("startTime") Date startTime
    );

    // ==================== Web中台接口 ====================

    /**
     * 中台-查询意见反馈列表
     * @param page 分页对象
     * @param feedbackType 反馈类型
     * @param handleStatus 处理状态
     * @param feedbackSource 反馈来源
     * @param feedbackWay 反馈方式
     * @return 反馈列表
     */
    List<LifeFeedbackListVo> selectWebFeedbackList(
            @Param("feedbackType") Integer feedbackType,
            @Param("handleStatus") Integer handleStatus,
            @Param("feedbackSource") Integer feedbackSource,
            @Param("feedbackWay") Integer feedbackWay
    );

    /**
     * 中台-查询反馈详情
     * @param feedbackId 反馈ID
     * @return 反馈详情
     */
    LifeFeedbackDetailVo selectWebFeedbackDetail(@Param("feedbackId") Integer feedbackId);
}

