package com.hotent.orgext.dao;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.hotent.orgext.model.OrgAuthExt;
import com.hotent.orgext.vo.AppModelVo;
import com.hotent.orgext.vo.SysAppVo;
import com.hotent.uc.model.Role;
import org.apache.ibatis.annotations.Param;

/**
 * 分级组织和角色/菜单/应用授权表
 * @author: 梁宏锦
 * @date: 2024/07/13
 **/
public interface OrgAuthExtDao extends BaseMapper<OrgAuthExt> {

    /**
     * 根据类型批量删除 组织关系
     * @param orgId
     * @param authType
     */
    void removeByOrgIdAndType(@Param("orgId") String orgId, @Param("authType") String authType);
    /**
     * 根据类型批量删除 应用关系
     * @param appId
     * @param authType
     */
    void removeByAppIdAndType(@Param("appId") String appId, @Param("authType") String authType);

    void removeByOrgIdAndRoleId(@Param("orgId") String orgId, @Param("roleId") String roleId);

    IPage<Role> queryRoleAuthExt(IPage<Role> convert2iPage, @Param(Constants.WRAPPER) Wrapper<Role> convert2Wrapper);

    IPage<SysAppVo> getSysAppAuthExtPage(IPage<SysAppVo> convert2iPage, @Param(Constants.WRAPPER) Wrapper<SysAppVo> convert2Wrapper);

    IPage<SysAppVo> querySysAppExtListFirst(IPage<SysAppVo> convert2iPage, @Param(Constants.WRAPPER) Wrapper<SysAppVo> convert2Wrapper, @Param("extOrgId") String extOrgId);

    IPage<SysAppVo> querySysAppExtListOther(IPage<SysAppVo> convert2iPage, @Param(Constants.WRAPPER) Wrapper<SysAppVo> convert2Wrapper,
                                            @Param("extParentOrgId") String extParentOrgId, @Param("extOrgId") String extOrgId);

    IPage<AppModelVo> getMobileAppAuthExtPage(IPage<AppModelVo> convert2iPage, @Param(Constants.WRAPPER) Wrapper<AppModelVo> convert2Wrapper);

    IPage<AppModelVo> queryMobileAppExtListFirst(IPage<AppModelVo> convert2iPage, @Param(Constants.WRAPPER) Wrapper<AppModelVo> convert2Wrapper, @Param("extOrgId") String extOrgId);

    IPage<AppModelVo> queryMobileAppExtListOther(IPage<AppModelVo> convert2iPage, @Param(Constants.WRAPPER) Wrapper<AppModelVo> convert2Wrapper,
                                            @Param("extParentOrgId") String extParentOrgId, @Param("extOrgId") String extOrgId);
}
