package com.hzs.system.config.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.config.BdNoticeConfig;
import com.hzs.common.domain.system.sys.SysRole;
import com.hzs.system.config.param.BdNoticeConfigParam;
import com.hzs.system.config.vo.BdNoticeConfigSecondCategoryVO;
import com.hzs.system.config.vo.BdNoticeConfigTopCategoryVO;
import com.hzs.system.config.vo.BdNoticeConfigVO;

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

/**
 * <p>
 * 公告配置表 服务类
 * </p>
 *
 * @author hzs
 * @since 2023-02-02
 */
public interface IBdNoticeConfigService extends IService<BdNoticeConfig> {

    /**
     * 保存公告配置
     *
     * @param noticeConfigVO
     * @return Integer
     */
    Boolean saveNoticeConfig(BdNoticeConfigVO noticeConfigVO);

    /**
     * 保存后台公告配置信息
     *
     * @param secondCategoryVOList 公告配置信息
     * @param pkCountry            国家ID
     * @param pkMember             会员ID
     * @return
     */
    Boolean saveAdminNoticeConfig(List<BdNoticeConfigSecondCategoryVO> secondCategoryVOList, Integer pkCountry, Long pkMember);

    /**
     * 更新前台公告配置信息
     *
     * @param noticeConfigVO 配置信息
     * @return Boolean
     */
    Boolean updateMemberNoticeConfig(BdNoticeConfigVO noticeConfigVO);

    /**
     * 更新后台公告配置信息
     *
     * @param secondCategoryVOList 配置信息
     * @param pkCountry            国家ID
     * @param pkMember             会员ID
     * @return Boolean
     */
    Boolean updateAdminNoticeConfig(List<BdNoticeConfigSecondCategoryVO> secondCategoryVOList, Integer pkCountry, Long pkMember);

    /**
     * 初始化后台配置信息
     *
     * @param pkCountry 国家ID
     * @return List<SysUser>
     */
    List<SysRole> showAdminList(Integer pkCountry);

    /**
     * 查询公告列表
     *
     * @param noticeConfigVO 公告配置信息
     * @return BdNoticeConfigTopCategoryVO
     */
    List<BdNoticeConfigTopCategoryVO> getNoticeConfig(BdNoticeConfigVO noticeConfigVO);

    /**
     * 查询后台公告配置列表信息
     *
     * @param pkCountry 国家ID
     * @return List<BdNoticeConfigSecondCategoryVO>
     */
    List<BdNoticeConfigSecondCategoryVO> getAdminNoticeConfig(Integer pkCountry);

    /**
     * 根据角色、用户更新公告信息
     *
     * @param noticeConfigVO 公告信息
     * @return Integer
     */
    Integer updateNoticeConfigByContent(BdNoticeConfigVO noticeConfigVO);

    /**
     * 根据分类查询公告信息
     *
     * @param param 分类信息
     * @return List<String>
     */
    String getBdNoticeConfigListByCategroy(BdNoticeConfigParam param);


    /**
     * 获取公告的角色、用户权限
     *
     * @param param 入参
     * @return List<Map<String, String>>
     */
    List<Map<String, String>> getNoticeRoleAndUser(BdNoticeConfigParam param);

}
