package com.gic.haoban.manage.service.dao.mapper;

import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface WxEnterpriseMapper {

    int insertSelective(TabHaobanWxEnterprise record);

    TabHaobanWxEnterprise selectByPrimaryKey(String wxEnterpriseId);
    
    TabHaobanWxEnterprise selectByWxaAppid(@Param("appid")String appid);
    
    int updateByPrimaryKeySelective(TabHaobanWxEnterprise record);

    Page<TabHaobanWxEnterprise> list(@Param("keyword") String keyword,
                                     @Param("enterpriseIds") List<String> enterpriseIds,
                                     @Param("gicContactFlag") Integer gicContactFlag,
                                     @Param("version") String version,
                                     @Param("enterpriseIdsNotIn") List<String> enterpriseIdsNotIn,
                                     @Param("appType") Integer appType);

    List<TabHaobanWxEnterprise> listAll();

    List<TabHaobanWxEnterprise> listByIds(@Param("enterpriseIds") Set<String> wxEnterpriseIds);

    /**
     * 得到企业bycorpid
     *
     * @param corpId     公司标识
     * @param statusFlag 状态标志
     * @return {@link TabHaobanWxEnterprise }
     * @author mozhu
     * @date 2021-12-03 16:04:31
     */
    TabHaobanWxEnterprise getEnterpriseBycorpId(@Param("corpId") String corpId, @Param("statusFlag") Integer statusFlag);

    /**
     * 更新是否转化外部联系人
     *
     * @param externalFlag   外部标志
     * @param wxEnterpriseId wx企业标识
     * @return int
     * @author mozhu
     * @date 2021-12-30 20:40:59
     */
    int updateExternalFlagById(@Param("externalFlag") Integer externalFlag, @Param("wxEnterpriseId") String wxEnterpriseId);


    /**
     * 更新是否开启自动激活
     *
     * @param autoActiveFlag
     * @param wxEnterpriseId wx企业标识
     * @return int
     * @author mozhu
     * @date 2022-08-03 17:27:13
     */
    int updateAutoActiveFlagById(@Param("autoActiveFlag") Integer autoActiveFlag, @Param("wxEnterpriseId") String wxEnterpriseId);
    
    
    void updateWxSecurityType(@Param("wxEnterpriseId") String wxEnterpriseId , @Param("wxSecurityType") Integer wxSecurityType) ;
    
    /**
     * 列出所有企业（与gic关联）
     *
     */
    List<WxEnterpriseDTO> listAllEnterprise();

    /**
     * 查询GIC企业下关联的所有企微
     * @param enterpriseId
     * @return
     */
    List<String> queryWxEnterpriseByEnterpriseId(@Param("enterpriseId") String enterpriseId);
    /**
     * 根据appidList查询appidList
     */
    List<String> getWxAppidListByList(@Param("wxAppidList")List<String> wxAppidList);
    /**
     * 根据好办app类型所有企业微信
     *
     * @return
     */
    List<TabHaobanWxEnterprise> listAllByWxSecurityType(@Param("wxSecurityType") Integer wxSecurityType);
    void updateWxaAppid(@Param("wxEnterpriseId") String wxEnterpriseId,@Param("wxaAppid")String wxaAppid);
    /**
     * 根据是否配置回调地址查询所有企业微信
     * @return
     */
    List<String> listWxEnterpriseByCallbackFlag(@Param("callbackFlag")Integer callbackFlag);

    List<String> getWxEnterpriseIdByName(@Param("corpName")String corpName);

    /**
     * 查询所有非自建的
     * @return
     */
    List<TabHaobanWxEnterprise> listAllNotSelf() ;
}