package com.microservices.cms.project.service;

import com.alibaba.fastjson2.JSONObject;
import com.microservices.cms.project.domain.CmsProject;
import com.microservices.system.api.domain.SysDept;

import java.util.List;

/**
 * 专区对应项目Service接口
 *
 * @author otto
 * @date 2023-03-27
 */
public interface ICmsProjectService {
    /**
     * 查询专区对应项目
     *
     * @param id 专区对应项目主键
     * @return 专区对应项目
     */
    public CmsProject selectCmsProjectById(Long id);

    /**
     * 查询专区对应项目列表
     *
     * @param cmsProject 专区对应项目
     * @return 专区对应项目集合
     */
    public List<CmsProject> selectCmsProjectList(CmsProject cmsProjectInput);

    /**
     * 新增专区对应项目
     *
     * @param cmsProject 专区对应项目
     * @return 结果
     */
    public int insertCmsProject(CmsProject cmsProject);

    /**
     * 修改专区对应项目
     *
     * @param cmsProject 专区对应项目
     * @return 结果
     */
    public int updateCmsProject(CmsProject cmsProject);

    /**
     * 通过组织Id批量删除专区对应项目
     *
     * @param deptIds 需要删除的专区对应项目主键集合
     * @return 结果
     */
    public int deleteCmsProjectByIds(Long[] deptIds);

    /**
     * 删除专区对应项目信息
     *
     * @param id 专区对应项目主键
     * @return 结果
     */
    public int deleteCmsProjectByDeptId(Long deptId);

    /**
     * 通过组织创建特色专区的新闻动态项目
     *
     * @param deptId
     * @return
     */
    Long insertZoneCmsProjectByDept(Long deptId);

    CmsProject selectCmsProjectByDeptId(Long deptId);

    Boolean changeUserRole(Long userId, Long oldDeptId, Long newDeptId, Long oldRoleId, Long newRoleId);

    JSONObject getDeptProjectList();

    Boolean updateCmsProjectByDept(SysDept dept);

    boolean operateProtectedBranchByZoneAuditSetting(String userName, String identifier, Long deptId, String operationType);
}
