package com.fs.qw.mapper;


import com.fs.qw.domain.QwUser;
import com.fs.qw.vo.QwUserVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 企微功能账号管理Mapper接口
 *
 * @author fs
 * @date 2023-08-23
 */
public interface QwUserMapper
{
    /**
     * 查询企微账号信息
     *
     * @param userId 企微账号信息ID
     * @return 企微账号信息
     */
    public QwUser selectQwUserById(@Param("userId") Long userId);

    /**
     * 查询企微账号信息列表
     *
     * @param qwUser 企微账号信息
     * @return 企微账号信息集合
     */
    public List<QwUser> selectQwUserList(QwUser qwUser);

    /**
     * 新增企微账号信息
     *
     * @param qwUser 企微账号信息
     * @return 结果
     */
    public int insertQwUser(QwUser qwUser);

    /**
     * 修改企微账号信息
     *
     * @param qwUser 企微账号信息
     * @return 结果
     */
    public int updateQwUser(QwUser qwUser);

    /**
     * 删除企微账号信息
     *
     * @param userId 企微账号信息ID
     * @return 结果
     */
    public int deleteQwUserById(Long userId);

    /**
     * 批量删除企微账号信息
     *
     * @param userIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteQwUserByIds(Long[] userIds);

    @Select("select count(*) from qw_user where device_id = #{deviceId}")
    int selectBangDingDeviceId(String deviceId);

    @Select({"<script> " +
            "select u.*,a.account from qw_user u left join qw_account a on a.device_id = u.device_id  " +
            "where u.device_id = #{deviceId} " +
            "</script>"})
    QwUserVO selectQwUserByDeviceId(String deviceId);

    @Select("select user_id from qw_user where device_id = #{deviceId}")
    Long selectUserIdByDeviceId(String deviceId);

    @Select("select avatar from qw_user where user_id = #{userId}")
    String selectAvatarByUserId(Long userId);

    @Select("select * from qw_user where user_id = #{userId}")
    QwUser selectQwUserByUserId(Long userId);

    @Update("update qw_user set device_id = #{deviceId} where user_id = #{userId}")
    void updateUserDevice(@Param("userId") Long userId,@Param("deviceId") String deviceId);
}
