package com.dgtly.wxportal.service;

import com.dgtly.common.core.domain.Ztree;
import com.dgtly.system.domain.SysMenu;
import com.dgtly.system.domain.SysRole;
import com.dgtly.system.domain.SysUser;
import com.dgtly.wxportal.domain.HomeIconConfig;
import com.dgtly.wxportal.domain.WxMagnet;
import com.fasterxml.jackson.core.JsonProcessingException;

import java.awt.*;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 菜单 业务层
 *
 * @author dgtly
 */
public interface IWxMagnetService
{

    /**
     * 查询H5磁贴列表
     *
     * @param wxMagnet 磁贴信息
     * @param userId 用户ID
     * @return 磁贴列表
     */
    List<WxMagnet> selectMagnetList(WxMagnet wxMagnet);

    List<WxMagnet>  selectTileMagnetList(WxMagnet wxMagnet);

    /**
     * 查询磁贴使用数量
     *
     * @param magnetId 菜单ID
     * @return 结果
     */
    Integer selectCountRoleMagnetByMagnetId(Long magnetId);

    /**
     * 删除磁贴管理信息
     *
     * @param magnetId 磁贴ID
     * @return 结果
     */
    int deleteMagnetById(Long magnetId);

    /**
     * 根据磁铁ID查询信息
     *
     * @param magnetId 磁铁ID
     * @return 菜单信息
     */
    WxMagnet selectMagnetById(Long magnetId);
    /**
     * 校验菜磁贴名称是否唯一
     *
     * @param wxMagnet 磁贴信息
     * @return 结果
     */
    String checkMagnetNameUnique(WxMagnet wxMagnet);

    /**
     * 新增保存磁贴信息
     *
     * @param wxMagnet 磁贴信息
     * @return 结果
     */
    int insertMagnet(WxMagnet wxMagnet);


    /**
     * 修改保存磁贴信息
     *
     * @param wxMagnet 磁贴信息
     * @return 结果
     */
    int updateMagnet(WxMagnet wxMagnet);

    /**
     * 根据角色ID查询磁贴
     *
     * @param role 角色对象
     * @return 磁贴列表
     */
    List<Ztree> roleMagnetTreeData(SysRole role, SysUser user);


    /**
     * 根据角色权限查询磁贴列表
     * @param wxMagnet
     * @param user
     * @return
     */
    List<WxMagnet> selectMagnetListByRole(WxMagnet wxMagnet, SysUser user);

    /**
     * 根据角色id更新磁贴权限表
     * @param roleId
     * @param magnetIds
     * @return
     */
    int upDateRoleMagnet(String roleId, String magnetIds);

    /**
     * 根据用户id查询所拥有的的磁贴
     * @param userId
     * @return
     */
    List<WxMagnet> selectMagnetByUserId(String userId, String cw, String salesLevel,String loginType);

    List<WxMagnet> selectWxMagnetRoleByUserId(Long userId,String magnetName);

    void updateHomeIcon(HomeIconConfig homeIconConfig);

    Map<String, Object> selectHomeIconInfoById() throws JsonProcessingException;
}
