package com.nbclass.activity.service;

import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.nbclass.activity.model.*;

/**
 *
 * @author Leon
 * @datetime 2020年5月28日 下午4:42:15
 */
public interface ContentService {

	/**
	 * 添加
	 * @param entity
	 */
	public void add(Content entity);

	/**
	 * 修改
	 * @param entity
	 */
	public void update(Content entity);

	/**
	 * 删除
	 * @param ids
	 */
	public void delete(List<Long> ids);

    /**
     * 根据id查询
     * @param id
     * @return entity
     */
	public Content findById(Long id);

	/**
	 * 根据条件查询列表
	 * @param entity
	 * @return
	 */
	public List<Content> getList(Content entity);

	/**
	 * 根据条件查询列表 - 前端页面查询
	 * @param entity
	 * @return
	 */
	public List<Content> getListByFront(Content entity);

    /**
     * 添加点赞数阅读数
     * @param type [view, like]
     * @param id 案例ID
     */
    public int updateContentNum(String type, Long id);

    /**
     * 同步数据库数据到ES
     * @param entity
     * @param isReBuild 是否重建，true：删除所有文档重建
     */
    public long syncEsData(Content entity, boolean isReBuild);

	/**
	 * 查询案例标题和评论数和点赞数
	 * @return
	 */
	PageInfo<Content> getCaseTitle(Integer page,Integer pageSize);

	/**
	 * 标签关联案例
	 * @param contentTags
	 */
	void addContentTags(ContentTags contentTags);

	/**
	 * 获取自定义标签列表
	 * @return
	 */
	List<DataDictItem> getOtherLabels();

	/**
	 * 取消案例关联标签的关系
	 * @param idList
	 */
	void deleteContentTags(List<Long> idList);

	/**
	 * 案例索引标签反馈次数+1
	 * @param contentId
	 */
	void updateLabelFeedback(Long contentId);

	/**
	 * 根据条件查询列表
	 * @param entity
	 * @return
	 */
    List<Content> getList2(Content entity);

	/**
	 * 更新案例总评论数
	 * @param contentId
	 */
	void updateComments(Long contentId);

	/**
	 * 添加案例评分
	 * @param userId
	 * @param contentId
	 * @param score
	 */
    void saveScore(Long userId, Long contentId, Double score);

	/**
	 * 查看用户是否已经打过分
	 * @param userId
	 * @param contentId
	 * @return
	 */
	int getScore(Long userId, Long contentId);

	/**
	 * 根据案例id查询案例详情
	 * @param contentId
	 * @return
	 */
	Content getEditContent(Long contentId);

	/**
	 * 提交审核申请单
	 * @param application
	 */
	void saveApplication(Application application);

	/**
	 * 查询案例是否已提交过审核
	 * @param contentId
	 * @return
	 */
	int getApplicationCount(Long contentId);

	/**
	 * 删除案例审核申请
	 * @param applicationId
	 */
	void deleteApplication(Long applicationId);

	/**
	 * 更新审核申请单状态
	 * @param applicationId
	 */
	void updateApplicationStatus(Long contentId,Long applicationId);

	/**
	 * 获取审核列表
	 * @param entity
	 * @return
	 */
	List<Content> getContentApplication(Content entity);

	/**
	 * 审核案例
	 * @param check
	 * @param userId
	 */
	void updateApplication(Check check, Long userId);

	/**
	 * 根据userId获取微信用户信息
	 * @param username
	 * @return
	 */
	WxUser getQyWxUser(String username);

	/**
	 * 根据部门id获取用户领导
	 * @param department
	 * @return
	 */
	List<Check> getUserLeader(String department);

	/**
	 * 下线案例
	 * @param contentId
	 */
	void deleteRelease(Long contentId);

	List<Census> getCensus(Integer type);
}
