package com.platform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.platform.entity.BrandEntity;
import com.platform.entity.Result;
import com.platform.entity.SceneEntity;
import com.platform.vo.BrandBindUserVo;

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

/**
 * Service接口
 *
 * @author lipengjun
 * @email 939961241@qq.com
 * @date 2017-08-19 17:59:15
 */
public interface BrandService {

    /**
     * 根据主键查询实体
     *
     * @param id 主键
     * @return 实体
     */
    BrandEntity queryObject(Integer id);

    /**
     * 分页查询
     *
     * @param map 参数
     * @return list
     */
    List<BrandEntity> queryList(Map<String, Object> map);



    /**
     * 分页统计总数
     *
     * @param map 参数
     * @return 总数
     */
    int queryTotal(Map<String, Object> map);

    IPage<BrandEntity> queryBrandList(Long pageNum , Long pageSize , String key);

    IPage<BrandEntity> queryBrandBindList(Long pageNum , Long pageSize ,  String sceneName,String brandName,
                                                 List<Long> deptIdList ,Integer type,Long userId,Integer livestreamStatus,String orderBy);

    /**
     * 保存实体
     *
     * @param brand 实体
     * @return 保存条数
     */
    int save(BrandEntity brand,Boolean checkName);

    /**
     * 根据主键更新实体
     *
     * @param brand 实体
     * @return 更新条数
     */
    Result update(BrandEntity brand);

    /**
     * 根据主键更新实体
     *
     * @param brand 实体
     * @return 更新条数
     */
    Result updateWithoutCheck(BrandEntity brand);

    /**
     * 根据主键删除
     *
     * @param id
     * @return 删除条数
     */
    int delete(Integer id);

    /**
     * 根据主键批量删除
     *
     * @param ids
     * @return 删除条数
     */
    int deleteBatch(Integer[] ids);

    Integer queryIdByScene(String sceneNum);


    BrandEntity queryByScene(String sceneNum);

    List<String> queryAllLiveSceneNum();

    String generalWxShareQrCode(BrandEntity brand , boolean needUpdate);

    Result sendDataToApi(BrandEntity brandEntity);

    BrandEntity generateDefaultLiveRoom(SceneEntity requestScene);

    void bindUsers(Integer brandId,List<BrandBindUserVo> brandBindUserVoList);

    void bindUser(Long userId,Integer brandId,Integer canShow);

    void unbindUser(Long userId,Integer brandId);
}
