package cn.wisenergy.service;

import cn.wisenergy.model.app.WorkUser;
import cn.wisenergy.model.dto.*;
import cn.wisenergy.model.vo.GetUserListVo;

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

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author chenqi
 * @since 2021-01-19
 */
public interface WorkUserService {

    /**
     * 用户登录
     *
     * @param loginName 登录名
     * @param password  密码
     * @param source    登录来源
     * @return
     */
    ResultUser login(String loginName, String password, String source);

    /**
     * 获取用户基础信息
     *
     * @param id 用户主键
     * @return
     */
    ResultUser getResultUserById(Integer id);

    WorkUser getById(Integer id);

    WorkUser getDeptManagerByIds(List<Integer> ids);

    /**
     * 将用户旧密码修改为新密码
     *
     * @param userId      用户主键
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 用户传输对象
     */
    ResultUser changePassword(Integer userId, String oldPassword, String newPassword);

    List<OrganizationStructureDto> getOrganizationStructureDtos();

    /**
     * 获取组织架构
     * @return
     */
    OrganizationDto getOrganizationStructure();

    AllRoleAndUserRoleDto getUserRoleDto(GetUserListVo getUserListVo);

    Boolean modifyRole(Integer userId, List<Integer> roleIds,Integer status,Integer submitOrder);

    Boolean reSetPassword(Integer userId);

    List<WorkUser> getByMap(Map<String, Object> map);

    /**
     * 微信登录
     * @param code
     * @return
     */
    ResultUser weChatLogin( String code);

    /**
     * 绑定用户和微信登录
     * @param userId
     * @param code
     * @return
     */
    boolean bindWeChat(Integer userId, String code);

    /**
     * 微信登录处理，将数据库中的wx_id中存储的openid置为null
     * @param userId
     */
    void wxLogout(Integer userId);
}
