package com.ylx.massage.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ylx.common.core.domain.model.LoginUser;
import com.ylx.home.category.domain.dto.ProjectRecommendDTO;
import com.ylx.massage.domain.MaProject;
import com.ylx.massage.domain.dto.MaProjectAuditQueryDTO;
import com.ylx.massage.domain.dto.MaProjectAuditSubmitDTO;
import com.ylx.massage.domain.dto.MaProjectUpdateEnableDTO;
import com.ylx.home.category.domain.dto.MerchantsDto;
import com.ylx.massage.domain.vo.MaProjectAuditListVO;
import com.ylx.massage.domain.vo.MaProjectListVo;
import com.ylx.massage.domain.vo.MaProjectOpenServiceVO;
import com.ylx.massage.domain.vo.MaProjectSaveVo;
import com.ylx.home.category.domain.vo.MerchantsVo;
import com.ylx.home.category.domain.vo.ProjectRecommendVo;
import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;

/**
 * 服务项目Service接口
 *
 * @author ylx
 * @date 2024-03-20
 */
public interface IMaProjectService extends IService<MaProject> {
    /**
     * 查询服务项目
     *
     * @param id 服务项目主键
     * @return 服务项目
     */
    public MaProjectListVo selectMaProjectById(Long id);

    /**
     * 查询服务项目列表
     *
     * @param maProject 服务项目
     * @return 服务项目集合
     */
    public List<MaProjectListVo> selectMaProjectList(MaProject maProject);

    /**
     * 查询技能审核列表
     *
     * @param page 分页参数
     * @param dto  查询条件
     * @return 技能审核分页列表
     */
    Page<MaProjectAuditListVO> selectProjectAuditList(Page<MaProjectAuditListVO> page,
                                                      MaProjectAuditQueryDTO dto);

    /**
     * 查询商户申请开通的项目列表
     *
     * @param merchantId 商户ID
     * @return 商户申请开通项目列表
     */
    List<MaProjectOpenServiceVO> selectMerchantOpenProjectList(Long merchantId);

    /**
     * 审核商户申请开通的项目
     *
     * @param projectAuditId 技能审核记录ID
     * @param dto            审核提交参数
     * @param loginUser      当前登录用户
     * @return 影响行数
     */
    int submitProjectAudit(Long projectAuditId, MaProjectAuditSubmitDTO dto, LoginUser loginUser);

    /**
     * 是否上下架商户申请开通的项目
     * @param dto
     * @return int 影响行数
     */
    int updateProjectEnable(MaProjectUpdateEnableDTO dto);

    /**
     * 新增服务项目
     *
     * @param maProject 服务项目
     * @return 结果
     */
    public int insertMaProject(MaProjectSaveVo maProject, LoginUser loginUser);

    /**
     * 修改服务项目
     *
     * @param maProject 服务项目
     * @return 结果
     */
    public int updateMaProject(MaProject maProject);

    /**
     * 批量删除服务项目
     *
     * @param ids 需要删除的服务项目主键集合
     * @return 结果
     */
    public int deleteMaProjectByIds(String[] ids);

    /**
     * 删除服务项目信息
     *
     * @param id 服务项目主键
     * @return 结果
     */
    public int deleteMaProjectById(Long id);

    Page<ProjectRecommendVo> getProjectRecommend(Page<ProjectRecommendVo> page, ProjectRecommendDTO dto);

    Page<MerchantsVo> getMerchants(Page<MerchantsVo> page, MerchantsDto dto);

    Page<BookMerchantVO> selectMerchantList(Page<BookMerchantVO> page, BookMerchantDTO dto);
}
