package com.microservices.dms.achievementLibrary.service;

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

import com.microservices.dms.achievementLibrary.domain.*;
import com.microservices.dms.behaviorImage.domain.AchievementBehaviorSumVo;
import com.microservices.dms.resourceLibrary.domain.CompetitionResourceLibrary;
import com.microservices.dms.resourceLibrary.domain.TaskResourceLibrary;
import com.microservices.dms.resourceLibrary.domain.vo.KeyValVo;

/**
 * 成果Service接口
 *
 * @author microservices
 * @date 2025-04-02
 */
public interface IAchievementsService {
    /**
     * 查询成果
     *
     * @param id 成果主键
     * @return 成果
     */
    public Achievements selectAchievementsById(Long id);

    /**
     * 查询成果列表
     *
     * @param achievements 成果
     * @return 成果集合
     */
    public List<Achievements> selectAchievementsList(Achievements achievements);

    /**
     * 新增成果
     *
     * @param achievements 成果
     * @return 结果
     */
    public int insertAchievements(Achievements achievements);

    /**
     * 修改成果
     *
     * @param achievements 成果
     * @return 结果
     */
    public int updateAchievements(Achievements achievements);

    /**
     * 批量删除成果
     *
     * @param ids 需要删除的成果主键集合
     * @return 结果
     */
    public int deleteAchievementsByIds(Long[] ids);

    /**
     * 删除成果信息
     *
     * @param id 成果主键
     * @return 结果
     */
    public int deleteAchievementsById(Long id);

    String buildFileInfoByIdents(String aStr, String source);

    List<Achievements> selectAchievementsFrontList(Achievements achievements);

    List<Achievements> getChoiceImport();

    List<KeyValueVo> getTjBySources();

    List<KeyValueVo> getTjByAreas();

    List<Achievements> getAllResult(AchQueryVo achQueryVo);

    Map<String, Object> getUerActionData();

    List<HotAchVo> getHotAchievement();

    List<KeyValVo<String, Long>> get7DayAdd(AchQueryVo achQueryVo);

    Map<String,Long> indexProjectStatistic();

    Map<String,Object> indexTaskStatistic();

    Map<String,Long> indexCompetitionStatistic();

    Map<String,Long> indexSchoolEnterpriseStatistic();

    Map<String,Long> indexExpertStatistic();

    List<KeyValueVo> getAreasByName(String areaName);

    AchievementBehaviorSumVo getActDataStatisticById(Long id);

    List<KeyValVo<String, Long>> get7AddClickById(String id, String clickType);

    AchievementBehaviorSumVo getWatchFavoriteStatusById(Long id, Long userId);

    List<AreaStatisticVo> getAreaStatistic(String areaKey);

    List<AchRelatedResult> getRelatedAch(Long id, Long sourceId);

    int getSearchResult(String achName, Long userId);

    List<KeyValueVo> getProjectAreasByName(String areaName);

    List<String> getExpertAreasByName(String areaName);

    List<AchRelatedResult> getRelatedAchCompetition(Long id, Long sourceId);

    List<AchRelatedResult> getRelatedAchTask(Long id, Long sourceId);

    List<TaskResourceLibrary> getRelatedAchTaskOfExpert(Long id);

    List<CompetitionResourceLibrary> getRelatedAchCompetitionOfExpert(Long id);

    List<TokenListVo> projectTokenList();

}
