package com.xhkjedu.sapi.mapper.system;

import com.xhkjedu.base.TkMapper;
import com.xhkjedu.sapi.model.system.TModule;
import com.xhkjedu.sapi.model.system.TModuledefault;
import com.xhkjedu.sapi.vo.system.ModuleSelVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
 * @ClassName ModuleMapper
 * Description 模块
 * Author WN
 * Date 2020/6/11 16:13
 **/
@Repository
public interface ModuleMapper extends TkMapper<TModule> {

    /**
     *功能描述 所有模块
     * @author WN
     * @date 2020/6/11
     * @return java.util.List<com.xhkjedu.model.system.TModule>
     */
    List<TModule> listModules(@Param("module") TModule module);

    //获取第一层模块
    List<ModuleSelVo> listLevelModule(@Param("schoolid") Integer schoolid, @Param("belong") Integer belong);


    /**
     * 修改模块排序
     * @Param [module]
     * @Author ywx
     * @Date 2020/8/31 16:24
     * @return void
     **/
    void updateOrder(@Param("module") TModule module);

    /**
     * 模块上移
     * @Param [modules]
     * @Author ywx
     * @Date 2020/8/31 16:28
     * @return void
     **/
    void moveUp(@Param("list") List<TModule> modules);

    //模块选择列表
    List<Map> listForSel2(@Param("schoolid") Integer schoolid, @Param("belong") Integer belong, @Param("belongcode")Integer belongcode);

    //删除默认模块关联的学校模块
    void deleteByDefaultId(String defaultid);

    //批量保存
    void batchSave(@Param("modules") List<TModule> modules);

    //修改模块状态
    void updateModuleDisplay(@Param("moduleid") String moduleid, @Param("display") Integer display);

    // 根据分组更改模块状态
    void updateBatchModuleDisplayForLevel(@Param("moduleid") String moduleid, @Param("display") Integer display);

    //根据学校id获取管理员角色id
    Integer getRoleIdBySchoolId(@Param("schoolid") Integer schoolid);

    //取指定模块对应的模块码
    List<TModule> listModulesByModuleIds(@Param("list") List<String> list);

    //根据默认模块修改模块隐藏
    void updateUnDisplayByDefaultid(@Param("moduleid") String moduleid);
    //批量修改学校模块隐藏
    void updateBatchUnDisplayForLevel(@Param("moduleid") String moduleid);

    //根据默认模块修改模块显示
    void updateDisplayByDefaultid(@Param("moduleid") String moduleid);

    //批量修改学校模块显示
    void updateBatchDisplayForLevel(@Param("moduleid") String moduleid);

    //根据默认模块更改应用名称
    void updateBatchModulename(@Param("moduleid") String moduleid,@Param("modulename") String modulename,@Param("newmodulename") String newmodulename);

    //根据默认模块更改应用图标
    void updateBatchModuleico(@Param("moduleid") String moduleid,@Param("newmoduleico") String newmoduleico);

     //根据默认模块更改固定值：适用终端、站内应用、应用地址、应用编码、应用描述
    void updateBatchFixed(@Param("module") TModuledefault module);

    //区域更改终端类型时，更改角色模块对应类型
    void updateBatchBelongcode(@Param("module") TModuledefault module);

    //学校修改终端类型时，更改对应模块角色终端类型
    void updateBelongcodeByModuleid(@Param("module") TModule module);

}
