package com.ruoyi.frequency.works.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.controller.req.WorksPageReq;
import com.ruoyi.controller.resp.OrderWorksPricePage;
import com.ruoyi.controller.resp.WorksDetailResp;
import com.ruoyi.controller.resp.WorksPageResp;
import com.ruoyi.frequency.works.entity.Works;
import com.ruoyi.frequency.works.model.result.WorksCount;
import com.ruoyi.vo.UserVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 作品Mapper接口
 *
 * @author zj
 * @date 2023-09-22
 */
public interface WorksMapper  extends BaseMapper<Works>
{
    /**
     * 查询作品
     *
     * @param id 作品主键
     * @return 作品
     */
    public Works selectWorksById(Long id);

    /**
     * 查询作品列表
     *
     * @param works 作品
     * @return 作品集合
     */
    public List<Works> selectWorksList(Works works);

    /**
     * 新增作品
     *
     * @param works 作品
     * @return 结果
     */
    public int insertWorks(Works works);

    /**
     * 修改作品
     *
     * @param works 作品
     * @return 结果
     */
    public int updateWorks(Works works);

    /**
     * 删除作品
     *
     * @param id 作品主键
     * @return 结果
     */
    public int deleteWorksById(Long id);

    /**
     * 批量删除作品
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteWorksByIds(Long[] ids);

    Page<WorksPageResp> worksPage(@Param("page") Page<Object> objectPage,@Param("req") WorksPageReq req,@Param("userVo") UserVo userVo);

    WorksDetailResp worksDetail(@Param("id") Long id, @Param("userVo") UserVo userVo);

    Page<OrderWorksPricePage> orderWorksPriceList(@Param("page") Page<Object> objectPage,@Param("orderId") Long orderId);

    WorksCount statistics(@Param("list") List<Long> workIdList);
}
