package com.ylx.order.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ylx.common.core.domain.model.WxLoginUser;
import com.ylx.merchant.domain.dto.MerchantCommentDTO;
import com.ylx.merchant.domain.vo.MerchantCommentVO;
import com.ylx.order.domain.TCommentUser;
import com.ylx.order.domain.dto.MerchantMyCommentQueryDTO;
import com.ylx.order.domain.dto.OrderCommentDTO;
import com.ylx.order.domain.vo.MerchantCompositeScoreVO;
import com.ylx.order.domain.vo.MerchantMyCommentVO;
import com.ylx.order.domain.vo.TCommentUserAuditStatusCountVO;

/**
 * 用户评论表(TCommentUser)表服务接口
 *
 * @author makejava
 * @since 2024-08-08 10:32:07
 */
public interface TCommentUserService extends IService<TCommentUser> {

    /**
     * 新增评论
     * @param comment
     * @param wxLoginUser
     * @return Boolean
     */
    Boolean saveComment(TCommentUser comment, WxLoginUser wxLoginUser);


    /**
     * 分页查询用户评论
     * @param page
     * @param tCommentUser
     * @return Page<TCommentUser>
     */
     Page<TCommentUser> selectAll(Page<TCommentUser> page, TCommentUser tCommentUser);

    /**
     * 查询用户评论审核状态统计。
     *
     * @param tCommentUser 查询参数
     * @return 用户评论审核状态统计
     */
    TCommentUserAuditStatusCountVO selectAuditStatusCount(TCommentUser tCommentUser);

    /**
     * 提交评论（入库+生成审核记录）
     * @param dto 评论DTO
     */
    void submitComment(OrderCommentDTO dto);

    Page<MerchantCommentVO> getMerchantComment(MerchantCommentDTO dto);

    /**
     * 商户端查询我的评分列表。
     *
     * @param dto 分页参数
     * @return 我的评分分页列表
     */
    Page<MerchantMyCommentVO> getMerchantMyCommentPage(MerchantMyCommentQueryDTO dto);

    /**
     * 查询当前登录商户综合评分。
     *
     * @return 商户综合评分
     */
    MerchantCompositeScoreVO getMerchantCompositeScore();
}
