package com.iailab.module.system.service.user; import cn.hutool.core.collection.CollUtil; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.collection.CollectionUtils; import com.iailab.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; import com.iailab.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; import com.iailab.module.system.controller.admin.user.vo.user.UserImportExcelVO; import com.iailab.module.system.controller.admin.user.vo.user.UserImportRespVO; import com.iailab.module.system.controller.admin.user.vo.user.UserPageReqVO; import com.iailab.module.system.controller.admin.user.vo.user.UserSaveReqVO; import com.iailab.module.system.dal.dataobject.user.AdminUserDO; import javax.validation.Valid; import java.io.InputStream; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 后台用户 Service 接口 * * @author iailab */ public interface AdminUserService { /** * 创建用户 * * @param createReqVO 用户信息 * @return 用户编号 */ Long createUser(@Valid UserSaveReqVO createReqVO); /** * 修改用户 * * @param updateReqVO 用户信息 */ void updateUser(@Valid UserSaveReqVO updateReqVO); /** * 更新用户的最后登陆信息 * * @param id 用户编号 * @param loginIp 登陆 IP */ void updateUserLogin(Long id, String loginIp); /** * 修改用户个人信息 * * @param id 用户编号 * @param reqVO 用户个人信息 */ void updateUserProfile(Long id, @Valid UserProfileUpdateReqVO reqVO); /** * 修改用户个人密码 * * @param id 用户编号 * @param reqVO 更新用户个人密码 */ void updateUserPassword(Long id, @Valid UserProfileUpdatePasswordReqVO reqVO); /** * 更新用户头像 * * @param id 用户 id * @param avatarFile 头像文件 */ String updateUserAvatar(Long id, InputStream avatarFile) throws Exception; /** * 修改密码 * * @param id 用户编号 * @param password 密码 */ void updateUserPassword(Long id, String password); /** * 修改状态 * * @param id 用户编号 * @param status 状态 */ void updateUserStatus(Long id, Integer status); /** * 删除用户 * * @param id 用户编号 */ void deleteUser(Long id); /** * 通过用户名查询用户 * * @param username 用户名 * @return 用户对象信息 */ AdminUserDO getUserByUsername(String username); /** * 通过手机号获取用户 * * @param mobile 手机号 * @return 用户对象信息 */ AdminUserDO getUserByMobile(String mobile); /** * 获得用户分页列表 * * @param reqVO 分页条件 * @return 分页列表 */ PageResult getUserPage(UserPageReqVO reqVO); /** * 通过用户 ID 查询用户 * * @param id 用户ID * @return 用户对象信息 */ AdminUserDO getUser(Long id); /** * 获得指定部门的用户数组 * * @param deptIds 部门数组 * @return 用户数组 */ List getUserListByDeptIds(Collection deptIds); /** * 获得指定岗位的用户数组 * * @param postIds 岗位数组 * @return 用户数组 */ List getUserListByPostIds(Collection postIds); /** * 获得用户列表 * * @param ids 用户编号数组 * @return 用户列表 */ List getUserList(Collection ids); /** * 校验用户们是否有效。如下情况,视为无效: * 1. 用户编号不存在 * 2. 用户被禁用 * * @param ids 用户编号数组 */ void validateUserList(Collection ids); /** * 获得用户 Map * * @param ids 用户编号数组 * @return 用户 Map */ default Map getUserMap(Collection ids) { if (CollUtil.isEmpty(ids)) { return new HashMap<>(); } return CollectionUtils.convertMap(getUserList(ids), AdminUserDO::getId); } /** * 获得用户列表,基于昵称模糊匹配 * * @param nickname 昵称 * @return 用户列表 */ List getUserListByNickname(String nickname); /** * 批量导入用户 * * @param importUsers 导入用户列表 * @param isUpdateSupport 是否支持更新 * @return 导入结果 */ UserImportRespVO importUserList(List importUsers, boolean isUpdateSupport); /** * 获得指定状态的用户们 * * @param status 状态 * @return 用户们 */ List getUserListByStatus(Integer status); /** * 判断密码是否匹配 * * @param rawPassword 未加密的密码 * @param encodedPassword 加密后的密码 * @return 是否匹配 */ boolean isPasswordMatch(String rawPassword, String encodedPassword); }