package com.microservices.zone.specialProject.service;

import com.alibaba.fastjson2.JSONObject;
import com.microservices.common.core.web.page.GenericsTableDataInfo;
import com.microservices.zone.project.domain.vo.ZoneProjectSearchVo;
import com.microservices.zone.resource.domain.ZoneResource;
import com.microservices.zone.specialProject.domain.ZoneSpecialProjectRelevancy;
import com.microservices.zone.specialProject.domain.vo.CommonTypeVo;
import com.microservices.zone.specialProject.domain.vo.ZoneSpecialProjectRelevancyInputVo;
import com.microservices.zone.specialProject.domain.vo.ZoneSpecialProjectRelevancyUpdateVo;

import java.util.List;

/**
 * 特色专区专项项目关联关系Service接口
 *
 * @author otto
 * @date 2024-10-26
 */
public interface IZoneSpecialProjectRelevancyService {
    /**
     * 查询特色专区专项项目关联关系
     *
     * @param id 特色专区专项项目关联关系主键
     * @return 特色专区专项项目关联关系
     */
    public ZoneSpecialProjectRelevancy selectZoneSpecialProjectRelevancyById(Long id);

    /**
     * 查询特色专区专项项目关联关系列表
     *
     * @param zoneSpecialProjectRelevancy 特色专区专项项目关联关系
     * @return 特色专区专项项目关联关系集合
     */
    public List<ZoneSpecialProjectRelevancy> selectZoneSpecialProjectRelevancyList(ZoneSpecialProjectRelevancy zoneSpecialProjectRelevancy);

    /**
     * 新增特色专区专项项目关联关系
     *
     * @param zoneSpecialProjectRelevancyInputVo 特色专区专项项目关联关系
     * @return 结果
     */
    public int insertZoneSpecialProjectRelevancy(ZoneSpecialProjectRelevancyInputVo zoneSpecialProjectRelevancyInputVo);

    /**
     * 修改特色专区专项项目关联关系
     *
     * @param zoneSpecialProjectRelevancyUpdateVo 特色专区专项项目关联关系
     * @return 结果
     */
    public int updateZoneSpecialProjectRelevancy(ZoneSpecialProjectRelevancyUpdateVo zoneSpecialProjectRelevancyUpdateVo);

    /**
     * 批量删除特色专区专项项目关联关系
     *
     * @param ids 需要删除的特色专区专项项目关联关系主键集合
     * @return 结果
     */
    public int deleteZoneSpecialProjectRelevancyByIds(Long[] ids);

    /**
     * 删除特色专区专项项目关联关系信息
     *
     * @param id 特色专区专项项目关联关系主键
     * @return 结果
     */
    public int deleteZoneSpecialProjectRelevancyById(Long id);

    void deleteZoneSpecialProjectRelevancyBySpecialProjectId(Long specialProjectId);

    List<CommonTypeVo> selectZoneSpecialProjectRelevancyTypeList();

    void deleteZoneSpecialProjectRelevancyByProjectId(Long projectId);

    void deleteZoneSpecialProjectRelevancyByResourceId(Long resourceId);

    GenericsTableDataInfo<JSONObject> selectZoneResourceList(Long specialProjectId, ZoneResource zoneResource);

    GenericsTableDataInfo<JSONObject> selectZoneProjectList(Long specialProjectId, ZoneProjectSearchVo zoneProjectSearchVo, boolean isOpen);
}
