houzhongjian
2024-09-14 818a0170d8f2950d52cc7300a302356bbc523236
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.system.service.user;
H 2
3 import cn.hutool.core.collection.CollUtil;
4 import com.iailab.framework.common.pojo.PageResult;
5 import com.iailab.framework.common.util.collection.CollectionUtils;
6 import com.iailab.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
7 import com.iailab.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
8 import com.iailab.module.system.controller.admin.user.vo.user.UserImportExcelVO;
9 import com.iailab.module.system.controller.admin.user.vo.user.UserImportRespVO;
10 import com.iailab.module.system.controller.admin.user.vo.user.UserPageReqVO;
11 import com.iailab.module.system.controller.admin.user.vo.user.UserSaveReqVO;
12 import com.iailab.module.system.dal.dataobject.user.AdminUserDO;
13
14 import javax.validation.Valid;
15 import java.io.InputStream;
16 import java.util.Collection;
17 import java.util.HashMap;
18 import java.util.List;
19 import java.util.Map;
20
21 /**
22  * 后台用户 Service 接口
23  *
24  * @author iailab
25  */
26 public interface AdminUserService {
27
28     /**
29      * 创建用户
30      *
31      * @param createReqVO 用户信息
32      * @return 用户编号
33      */
34     Long createUser(@Valid UserSaveReqVO createReqVO);
35
36     /**
37      * 修改用户
38      *
39      * @param updateReqVO 用户信息
40      */
41     void updateUser(@Valid UserSaveReqVO updateReqVO);
42
43     /**
44      * 更新用户的最后登陆信息
45      *
46      * @param id 用户编号
47      * @param loginIp 登陆 IP
48      */
49     void updateUserLogin(Long id, String loginIp);
50
51     /**
52      * 修改用户个人信息
53      *
54      * @param id 用户编号
55      * @param reqVO 用户个人信息
56      */
57     void updateUserProfile(Long id, @Valid UserProfileUpdateReqVO reqVO);
58
59     /**
60      * 修改用户个人密码
61      *
62      * @param id 用户编号
63      * @param reqVO 更新用户个人密码
64      */
65     void updateUserPassword(Long id, @Valid UserProfileUpdatePasswordReqVO reqVO);
66
67     /**
68      * 更新用户头像
69      *
70      * @param id         用户 id
71      * @param avatarFile 头像文件
72      */
73     String updateUserAvatar(Long id, InputStream avatarFile) throws Exception;
74
75     /**
76      * 修改密码
77      *
78      * @param id       用户编号
79      * @param password 密码
80      */
81     void updateUserPassword(Long id, String password);
82
83     /**
84      * 修改状态
85      *
86      * @param id     用户编号
87      * @param status 状态
88      */
89     void updateUserStatus(Long id, Integer status);
90
91     /**
92      * 删除用户
93      *
94      * @param id 用户编号
95      */
96     void deleteUser(Long id);
97
98     /**
99      * 通过用户名查询用户
100      *
101      * @param username 用户名
102      * @return 用户对象信息
103      */
104     AdminUserDO getUserByUsername(String username);
105
106     /**
107      * 通过手机号获取用户
108      *
109      * @param mobile 手机号
110      * @return 用户对象信息
111      */
112     AdminUserDO getUserByMobile(String mobile);
113
114     /**
115      * 获得用户分页列表
116      *
117      * @param reqVO 分页条件
118      * @return 分页列表
119      */
120     PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO);
121
122     /**
123      * 通过用户 ID 查询用户
124      *
125      * @param id 用户ID
126      * @return 用户对象信息
127      */
128     AdminUserDO getUser(Long id);
129
130     /**
131      * 获得指定部门的用户数组
132      *
133      * @param deptIds 部门数组
134      * @return 用户数组
135      */
136     List<AdminUserDO> getUserListByDeptIds(Collection<Long> deptIds);
137
138     /**
139      * 获得指定岗位的用户数组
140      *
141      * @param postIds 岗位数组
142      * @return 用户数组
143      */
144     List<AdminUserDO> getUserListByPostIds(Collection<Long> postIds);
145
146     /**
147      * 获得用户列表
148      *
149      * @param ids 用户编号数组
150      * @return 用户列表
151      */
152     List<AdminUserDO> getUserList(Collection<Long> ids);
153
154     /**
155      * 校验用户们是否有效。如下情况,视为无效:
156      * 1. 用户编号不存在
157      * 2. 用户被禁用
158      *
159      * @param ids 用户编号数组
160      */
161     void validateUserList(Collection<Long> ids);
162
163     /**
164      * 获得用户 Map
165      *
166      * @param ids 用户编号数组
167      * @return 用户 Map
168      */
169     default Map<Long, AdminUserDO> getUserMap(Collection<Long> ids) {
170         if (CollUtil.isEmpty(ids)) {
171             return new HashMap<>();
172         }
173         return CollectionUtils.convertMap(getUserList(ids), AdminUserDO::getId);
174     }
175
176     /**
177      * 获得用户列表,基于昵称模糊匹配
178      *
179      * @param nickname 昵称
180      * @return 用户列表
181      */
182     List<AdminUserDO> getUserListByNickname(String nickname);
183
184     /**
185      * 批量导入用户
186      *
187      * @param importUsers     导入用户列表
188      * @param isUpdateSupport 是否支持更新
189      * @return 导入结果
190      */
191     UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport);
192
193     /**
194      * 获得指定状态的用户们
195      *
196      * @param status 状态
197      * @return 用户们
198      */
199     List<AdminUserDO> getUserListByStatus(Integer status);
200
201     /**
202      * 判断密码是否匹配
203      *
204      * @param rawPassword 未加密的密码
205      * @param encodedPassword 加密后的密码
206      * @return 是否匹配
207      */
208     boolean isPasswordMatch(String rawPassword, String encodedPassword);
209
210 }