package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.result.R;
import shop.alien.entity.store.LifeFeedback;
import shop.alien.entity.store.dto.*;
import shop.alien.entity.store.vo.LifeFeedbackDetailVo;
import shop.alien.entity.store.vo.LifeFeedbackListVo;
import shop.alien.entity.store.dto.LifeFeedbackDto;
import shop.alien.entity.store.dto.UserReplyDto;
import shop.alien.entity.store.vo.LifeFeedbackVo;

/**
 * 意见反馈 Service
 */
public interface LifeFeedbackService extends IService<LifeFeedback> {

    /**
     * 提交反馈
     * @param dto 反馈信息
     * @return 反馈结果
     */
    R<String> submitFeedback(LifeFeedbackDto dto);

    /**
     * 查询用户历史反馈列表
     * @param userId 用户ID
     * @param feedbackSource 反馈来源
     * @param page 页码
     * @param size 每页数量
     * @return 反馈列表
     */
    IPage<LifeFeedbackVo> getFeedbackList(Integer userId, Integer feedbackSource, int page, int size);

    /**
     * 查询反馈详情
     * @param feedbackId 反馈ID
     * @return 反馈详情
     */
    R<LifeFeedbackVo> getFeedbackDetail(Integer feedbackId);

    /**
     * 用户回复
     * @param dto 用户回复信息
     * @return 回复结果
     */
    R<String> userReply(UserReplyDto dto);

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

    /**
     * 中台-查询意见反馈列表
     * @param queryDto 查询条件
     * @return 反馈列表
     */
    R<IPage<LifeFeedbackListVo>> getWebFeedbackList(LifeFeedbackQueryDto queryDto);

    /**
     * 中台-查询反馈详情
     * @param feedbackId 反馈ID
     * @return 反馈详情
     */
    R<LifeFeedbackDetailVo> getWebFeedbackDetail(Integer feedbackId);

    /**
     * 中台-回复用户
     * @param replyDto 回复信息
     * @return 回复结果
     */
    R<String> webReplyUser(LifeFeedbackReplyWebDto replyDto);

    /**
     * 中台-更新反馈处理状态
     * @param statusDto 状态信息
     * @return 更新结果
     */
    R<String> updateWebFeedbackStatus(LifeFeedbackStatusDto statusDto);
}

