package org.jeecg.modules.system.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.model.SysUserSysDepartModel;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*
* 用户表 服务类
*
*
* @Author scott
* @since 2018-12-20
*/
public interface ISysUserService extends IService {
/**
* 重置密码
*
* @param username
* @param oldpassword
* @param newpassword
* @param confirmpassword
* @return
*/
public Result> resetPassword(String username, String oldpassword, String newpassword, String confirmpassword);
/**
* 修改密码
*
* @param sysUser
* @return
*/
public Result> changePassword(SysUser sysUser);
/**
* 删除用户
* @param userId
* @return
*/
public boolean deleteUser(String userId);
/**
* 批量删除用户
* @param userIds
* @return
*/
public boolean deleteBatchUsers(String userIds);
public SysUser getUserByName(String username);
/**
* 添加用户和用户角色关系
* @param user
* @param roles
*/
public void addUserWithRole(SysUser user,String roles);
/**
* 修改用户和用户角色关系
* @param user
* @param roles
*/
public void editUserWithRole(SysUser user,String roles);
/**
* 获取用户的授权角色
* @param username
* @return
*/
public List getRole(String username);
/**
* 查询用户信息包括 部门信息
* @param username
* @return
*/
public SysUserCacheInfo getCacheUser(String username);
/**
* 根据部门Id查询
* @param
* @return
*/
public IPage getUserByDepId(Page page, String departId, String username);
/**
* 根据部门Ids查询
* @param
* @return
*/
public IPage getUserByDepIds(Page page, List departIds, String username);
/**
* 根据 userIds查询,查询用户所属部门的名称(多个部门名逗号隔开)
* @param
* @return
*/
public Map getDepNamesByUserIds(List userIds);
/**
* 根据部门 Id 和 QueryWrapper 查询
*
* @param page
* @param departId
* @param queryWrapper
* @return
*/
public IPage getUserByDepartIdAndQueryWrapper(Page page, String departId, QueryWrapper queryWrapper);
/**
* 根据 orgCode 查询用户,包括子部门下的用户
*
* @param orgCode
* @param userParams 用户查询条件,可为空
* @param page 分页参数
* @return
*/
IPage queryUserByOrgCode(String orgCode, SysUser userParams, IPage page);
/**
* 根据角色Id查询
* @param
* @return
*/
public IPage getUserByRoleId(Page page,String roleId, String username);
/**
* 通过用户名获取用户角色集合
*
* @param username 用户名
* @return 角色集合
*/
Set getUserRolesSet(String username);
/**
* 通过用户名获取用户权限集合
*
* @param username 用户名
* @return 权限集合
*/
Set getUserPermissionsSet(String username);
/**
* 根据用户名设置部门ID
* @param username
* @param orgCode
*/
void updateUserDepart(String username,String orgCode);
/**
* 根据手机号获取用户名和密码
*/
public SysUser getUserByPhone(String phone);
/**
* 根据邮箱获取用户
*/
public SysUser getUserByEmail(String email);
/**
* 添加用户和用户部门关系
* @param user
* @param selectedParts
*/
void addUserWithDepart(SysUser user, String selectedParts);
/**
* 编辑用户和用户部门关系
* @param user
* @param departs
*/
void editUserWithDepart(SysUser user, String departs);
/**
* 校验用户是否有效
* @param sysUser
* @return
*/
Result checkUserIsEffective(SysUser sysUser);
/**
* 查询被逻辑删除的用户
*/
List queryLogicDeleted();
/**
* 查询被逻辑删除的用户(可拼装查询条件)
*/
List queryLogicDeleted(LambdaQueryWrapper wrapper);
/**
* 还原被逻辑删除的用户
*/
boolean revertLogicDeleted(List userIds, SysUser updateEntity);
/**
* 彻底删除被逻辑删除的用户
*/
boolean removeLogicDeleted(List userIds);
/**
* 更新手机号、邮箱空字符串为 null
*/
@Transactional(rollbackFor = Exception.class)
boolean updateNullPhoneEmail();
/**
* 保存第三方用户信息
* @param sysUser
*/
void saveThirdUser(SysUser sysUser);
/**
* 根据部门Ids查询
* @param
* @return
*/
List queryByDepIds(List departIds, String username);
/**
* 保存用户
* @param user 用户
* @param selectedRoles 选择的角色id,多个以逗号隔开
* @param selectedDeparts 选择的部门id,多个以逗号隔开
*/
void saveUser(SysUser user, String selectedRoles, String selectedDeparts);
/**
* 编辑用户
* @param user 用户
* @param roles 选择的角色id,多个以逗号隔开
* @param departs 选择的部门id,多个以逗号隔开
*/
void editUser(SysUser user, String roles, String departs);
/** userId转为username */
List userIdToUsername(Collection userIdList);
}