package com.xjrsoft.module.organization.service;

import com.github.yulichang.base.MPJBaseService;
import com.xjrsoft.common.page.PageOutput;
import com.xjrsoft.module.organization.dto.AddUserDto;
import com.xjrsoft.module.organization.dto.BindOpenidDto;
import com.xjrsoft.module.organization.dto.ResetPasswordDto;
import com.xjrsoft.module.organization.dto.UpdatePasswordDto;
import com.xjrsoft.module.organization.dto.UpdateUserDto;
import com.xjrsoft.module.organization.dto.UserPageDto;
import com.xjrsoft.module.organization.dto.WeChatPageDto;
import com.xjrsoft.module.organization.entity.User;
import com.xjrsoft.module.organization.vo.ResetUserPageVo;
import com.xjrsoft.module.organization.vo.UserInfoVo;
import com.xjrsoft.module.organization.vo.WeChatPageVO;

import java.util.List;

/**
 * <p>
 * 用户 服务类
 * </p>
 *
 * @author tzx
 * @since 2022-03-02
 */
public interface IUserService extends MPJBaseService<User> {

    boolean add(AddUserDto dto);

    boolean update(UpdateUserDto dto);

    boolean deleteBatch(List<Long> ids);

    /**
     * 修改密码
     * @param dto
     * @return
     */
    boolean updatePassword(UpdatePasswordDto dto);

    /**
     * 重置密码
     * @param dto
     * @return
     */
    boolean resetPassword(ResetPasswordDto dto);

    boolean batchResetPassword(List<Long> ids);

    /**
     * 绑定微信 Openid
     * @param dto
     * @return
     */
    boolean bindOpenid(BindOpenidDto dto);

    /**
     * 取消绑定微信 UnionId
     * @return
     */
    boolean unbindOpenid(Long id);

    /**
     * 批量获取用户信息
     *
     * @param ids
     * @return 用户信息
     */
    List<UserInfoVo> getUsersInfo(String ids);

    /**
     * 获取微信分页
     * @param dto
     * @return
     */
    PageOutput<WeChatPageVO> getPage(WeChatPageDto dto);

    PageOutput<ResetUserPageVo> getResetUserPage(UserPageDto dto);
}
