package org.jeecg.modules.system.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.LoginUser;
import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.modules.system.entity.SysRoleIndex;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.model.SysUserSysDepartModel;
import org.jeecg.modules.system.vo.UserSelector;
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);
/**
* 根据用户名查询
* @param username 用户名
* @return SysUser
*/
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
* @param version 前端UI版本
* @return
*/
public SysRoleIndex getDynamicIndexByUserRole(String username,String version);
/**
* 查询用户信息包括 部门信息
* @param username
* @return
*/
@Deprecated
public SysUserCacheInfo getCacheUser(String username);
/**
* 根据部门Id查询
* @param page
* @param departId 部门id
* @param username 用户账户名称
* @return
*/
public IPage getUserByDepId(Page page, String departId, String username);
/**
* 根据部门Ids查询
* @param page
* @param departIds 部门id集合
* @param username 用户账户名称
* @return
*/
public IPage getUserByDepIds(Page page, List departIds, String username);
/**
* 根据 userIds查询,查询用户所属部门的名称(多个部门名逗号隔开)
* @param userIds
* @return
*/
public Map getDepNamesByUserIds(List userIds);
/**
* 根据部门 Id 和 QueryWrapper 查询
*
* @param page
* @param departId
* @param queryWrapper
* @return
*/
//update-begin-author:taoyan date:2022-9-13 for: VUEN-2245【漏洞】发现新漏洞待处理20220906 ----sql注入 方法没有使用,注掉
// public IPage getUserByDepartIdAndQueryWrapper(Page page, String departId, QueryWrapper queryWrapper);
//update-end-author:taoyan date:2022-9-13 for: VUEN-2245【漏洞】发现新漏洞待处理20220906 ----sql注入 方法没有使用,注掉
/**
* 根据 orgCode 查询用户,包括子部门下的用户
*
* @param orgCode
* @param userParams 用户查询条件,可为空
* @param page 分页参数
* @return
*/
IPage queryUserByOrgCode(String orgCode, SysUser userParams, IPage page);
/**
* 根据角色Id查询
* @param page
* @param roleId 角色id
* @param username 用户账户名称
* @return
*/
public IPage getUserByRoleId(Page page,String roleId, String username);
/**
* 根据设备车间管理Id查询
* @param page
* @param baseFactoryId 设备车间管理Id
* @return
*/
public IPage getUserByworkShopDepartId(Page page,String baseFactoryId,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);
/**
* 根据手机号获取用户名和密码
* @param phone 手机号
* @return SysUser
*/
public SysUser getUserByPhone(String phone);
/**
* 根据邮箱获取用户
* @param email 邮箱
* @return SysUser
*/
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);
/**
* 查询被逻辑删除的用户
* @return List
*/
List queryLogicDeleted();
/**
* 查询被逻辑删除的用户(可拼装查询条件)
* @param wrapper
* @return List
*/
List queryLogicDeleted(LambdaQueryWrapper wrapper);
/**
* 还原被逻辑删除的用户
* @param userIds 存放用户id集合
* @param updateEntity
* @return boolean
*/
boolean revertLogicDeleted(List userIds, SysUser updateEntity);
/**
* 彻底删除被逻辑删除的用户
* @param userIds 存放用户id集合
* @return boolean
*/
boolean removeLogicDeleted(List userIds);
/**
* 更新手机号、邮箱空字符串为 null
* @return boolean
*/
@Transactional(rollbackFor = Exception.class)
boolean updateNullPhoneEmail();
/**
* 保存第三方用户信息
* @param sysUser
*/
void saveThirdUser(SysUser sysUser);
/**
* 根据部门Ids查询
* @param departIds 部门id集合
* @param username 用户账户名称
* @return
*/
List queryByDepIds(List departIds, String username);
/**
* 保存用户
* @param user 用户
* @param selectedRoles 选择的角色id,多个以逗号隔开
* @param selectedDeparts 选择的部门id,多个以逗号隔开
* @param selectedProductions 选择的产线id,多个以逗号隔开
*/
void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String selectedProductions);
/**
* 编辑用户
* @param user 用户
* @param roles 选择的角色id,多个以逗号隔开
* @param departs 选择的部门id,多个以逗号隔开
* @param productions 选择的产线id,多个以逗号隔开
*/
void editUser(SysUser user, String roles, String departs, String productions);
/**
* userId转为username
* @param userIdList
* @return List
*/
List userIdToUsername(Collection userIdList);
/**
* 获取用户信息 字段信息是加密后的 【加密用户信息】
* @param username
* @return
*/
LoginUser getEncodeUserInfo(String username);
/**
* 根据 userIds查询,查询用户所属产线的名称(多个产线名逗号隔开)
*/
Map getProNamesByUserIds(List userIds);
/**
* 根据角色Id查询该角色下的所有用户信息,不分页
*
* @param
* @return
*/
public List getAllUsersByRoleId(String roleId);
List getUserByRoleCode(String roleCode);
List getUserByRoleCodeList(List roleCodeList);
List getEquipmentAdmin(String roleCode, String equipmentId);
/**
* 选择用户
* @param equipmentCode 选择的设备ID
* @param productionId 选择的车间ID
* @param positionCode 岗位编号
* @return
*/
List selectOperatorList(String equipmentCode, String productionId, String positionCode);
/**
* 选择用户
* @param positionCode 岗位编号
* @return
*/
List selectOperatorList( String positionCode);
}