package com.pcloud.book.applet.biz;

import com.pcloud.book.applet.dto.AppletTaskDTO;
import com.pcloud.book.applet.dto.CollectionTypeNameAndCountDTO;
import com.pcloud.book.applet.dto.ServeCollectDTO;
import com.pcloud.book.applet.entity.ServeCollect;
import com.pcloud.common.page.PageBeanNew;

import java.util.ArrayList;
import java.util.List;

/**
 * (ServeCollect)表服务接口
 *
 * @author makejava
 * @since 2020-09-10 10:44:31
 */
public interface ServeCollectBiz {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ServeCollect getById(Long id);

    /**
     * 分页查询
     */
    PageBeanNew getList(Long wechatUserId, Integer currentPage, Integer numPerPage, String typeCode, Long officialAccountsId);

    /**
     * 新增数据
     *
     * @param serveCollect 实例对象
     * @return 主键
     */
    String insert(ServeCollect serveCollect);

    /**
     * 修改数据
     *
     * @param serveCollect 实例对象
     */
    void update(ServeCollect serveCollect);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    void deleteById(Long id);

    /**
     * 批量取消关注
     */
    void cancelCollect(List<Long> ids);

    /**
     * 删除无效的资讯
     * @param newArrayList
     */
    void deleteInvalidNews(List<Long> newArrayList);

    /**
     * 查询是否是否存在
     * @param serveCollects
     * @return
     */
    List<ServeCollect> getList4RightsSetting(List<ServeCollect> serveCollects);


    /**
     * 获取所有的收藏id
     * @param wechatUserId
     * @return
     */
    List<Long> getAllCollect(Long wechatUserId,String typeCode, Long officialAccountsId);

    /**
     * 查询收藏情况
     * @param serveCollects
     * @return
     */
    List<ServeCollectDTO> getList4Collect(List<ServeCollectDTO> serveCollects);

    List<ServeCollect> getList4RightsSettingByWechatUserId(Long wechatUserId);

    /**
     * 获取收藏中的所有服务种类及其对应的条数
     * @param wechatUserId
     * @return
     */
    List<CollectionTypeNameAndCountDTO> getTypeNameAndCountByWechatId(Long wechatUserId, Long officialAccountsId);

    /**
     * 分类分页查询
     * @param typeName
     * @param wechatUserId
     * @param currentPage
     * @param numPerPage
     * @return
     */
    PageBeanNew getListByTypeNameAndWechatUserId(String typeName,Long wechatUserId , Integer currentPage, Integer numPerPage);

    /**
     * 根据查询单挑数据是否被收藏
     * @param wechatUserId
     * @param serverId
     * @return
     */
    ServeCollectDTO  isCollected (Long wechatUserId,Long serverId);

    /**
     * 填充TypeName
     */
    void processingData();

    /**
     * 填充收藏TypeCode和TypeName
     */
    void processingData2TypeCode();

    /**
     * 取消收藏
     * @param serveCollect
     */
    void cancel(ServeCollect serveCollect);

    /**
     * 获取收藏状态 true 收藏 false  未收藏
     * @param wechatUserId
     * @param serverId
     * @param serveType
     * @return
     */
    Boolean getCollectState(Long wechatUserId, Long serverId, Integer serveType);
}