package com.bonus.system.basic.service;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.system.basic.domain.SysOrg;
import com.bonus.system.basic.domain.SysTree;
import com.bonus.system.basic.domain.vo.TreeSelect;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 组织 业务层
 *
 * @author bonus
 */
public interface SysOrgService {

	/**
	 * 查询组织列表
	 *
	 * @param sysOrg 组织信息
	 * @return 菜单列表
	 */
	List<SysOrg> selectOrgList(SysOrg sysOrg);

	List<SysOrg> selectOrgListAll(SysOrg sysOrg);

	/**
	 * 根据组织编号获取详细信息
	 * @param orgId 组织编号
	 * @return bean
	 */
	SysOrg selectOrgById(Long orgId);

	/**
	 * 构建前端所需要下拉树结构
	 * @param menus 菜单
	 * @return list bean
	 */
	List<TreeSelect> buildOrgTreeSelect(List<SysOrg> menus);

	/**
	 * 新增组织
	 * @param org 组织对象
	 * @return 1|0
	 */
	int insertOrg(SysOrg org);

	/**
	 * 校验组织名称是否唯一
	 * @param org 组织信息
	 * @return true|false
	 */
	Boolean checkOrgNameUnique(SysOrg org);

	/**
	 * 修改组织
	 * @param org 组织信息
	 * @return 1|0
	 */
	int updateOrg(SysOrg org);

	/**
	 * 查询组织是否有父子级
	 * @param orgId 组织编号
	 * @return true|false
	 */
	boolean hasChildByOrgId(Long orgId);

	/**
	 * 检查组织是否绑定用户
	 * @param orgId 组织编号
	 * @return true|false
	 */
	boolean checkOrgExistUser(Long orgId);

	/**
	 * 删除组织
	 * @param orgId 组织编号
	 * @return 1|0
	 */
	int deleteOrgById(Long orgId);

	/**
	 * 查询组织人员
	 * @return
	 */
	List<SysTree> orgPersonSelect();

	/**
	 * 导入组织
	 * @param file 文件
	 * @return 1|0
	 */
	String importData(MultipartFile file) throws Exception;

	/**
	 * 导ru1组织
	 * @param file
	 * @param request
	 * @param response
	 * @return
	 */
	AjaxResult orgUpload(MultipartFile file, HttpServletRequest request, HttpServletResponse response);
}
