NIMSDK-AOS  10.10.13
V2NIMSearchTeamMemberParams.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.v2.team.params;
2 
5 import java.util.ArrayList;
6 import java.util.List;
7 
8 /**
9  * 搜索群成员参数类
10  * <p>
11  * 该类用于配置搜索群成员的各种参数,包括关键字列表、匹配类型、目标群组等。
12  * 支持在指定群组中搜索成员,也支持全局搜索所有群成员。
13  * </p>
14  *
15  */
17 
18  /**
19  * 关键字列表
20  * <p>
21  * 用于搜索的关键字列表,最多支持5个关键字。
22  * null和size==0都表示为空,将返回参数错误。
23  * </p>
24  */
25  private List<String> keywordList;
26 
27  /**
28  * 关键字匹配类型
29  * <p>
30  * 指定关键字列表的匹配类型:
31  * <ul>
32  * <li>V2NIM_SEARCH_KEYWORD_MATH_TYPE_OR: "或"关系搜索</li>
33  * <li>V2NIM_SEARCH_KEYWORD_MATH_TYPE_AND: "与"关系搜索</li>
34  * </ul>
35  * 默认为"或"关系搜索。当关键字列表为空或数量为1时,该字段无效。
36  * </p>
37  */
38  private V2NIMSearchKeywordMathType keywordMatchType;
39 
40  /**
41  * 群组引用列表
42  * <p>
43  * 需要检索的群ID列表,设置后将检索对应群组包含的群成员。
44  * 该参数为空时,检索全部群成员。
45  * 最大50个,超过50返回参数错误。
46  * </p>
47  */
48  private List<V2NIMTeamRefer> teamRefers;
49 
50  /**
51  * 是否搜索用户账号
52  * <p>
53  * 默认不启动搜索。由于大部分场景账号ID都是无实际业务意义标识串,
54  * 因此默认不会对该字段构建索引,减少空间消耗。
55  * 如果需要同时检索该字段,需要在应用首次使用时配置
56  * 初始化字段:searchAccountIdEnabled为true。
57  * </p>
58  */
59  private boolean searchAccountId;
60 
61  /**
62  * 是否同时搜索群昵称
63  * <p>
64  * 默认为true。searchAccountId和searchTeamNick不能同时为false,
65  * 否则返回参数错误。
66  * </p>
67  */
68  private boolean searchTeamNick;
69 
70  /**
71  * 单次检索返回的数量
72  * <p>
73  * 默认20,本地可以设置INT.MAXVALUE返回所有检索结果。
74  * 必须为正数,云端检索不建议超过100。
75  * 小于等于0返回参数错误。
76  * 该参数仅服务器有效。
77  * </p>
78  */
79  private int limit;
80 
81  /**
82  * 起始位置标记
83  * <p>
84  * 首次传空字符串"",后续传上次返回的nextToken。
85  * 该参数仅服务器有效。
86  * </p>
87  */
88  private String nextToken;
89 
90  /**
91  * 默认构造方法
92  * <p>
93  * 初始化默认值:
94  * <ul>
95  * <li>keywordMatchType: V2NIM_SEARCH_KEYWORD_MATH_TYPE_OR</li>
96  * <li>searchAccountId: false</li>
97  * <li>searchTeamNick: true</li>
98  * <li>limit: 20</li>
99  * <li>nextToken: ""</li>
100  * </ul>
101  * </p>
102  */
105  this.searchAccountId = false;
106  this.searchTeamNick = true;
107  this.limit = 20;
108  this.nextToken = "";
109  }
110 
111  /**
112  * 获取关键字列表
113  *
114  * @return 关键字列表,可能为null
115  */
116  public List<String> getKeywordList() {
117  return keywordList;
118  }
119 
120  /**
121  * 设置关键字列表
122  *
123  * @param keywordList 关键字列表,最多5个,不能为null或空
124  */
125  public void setKeywordList(List<String> keywordList) {
126  this.keywordList = keywordList;
127  }
128 
129  /**
130  * 获取关键字匹配类型
131  *
132  * @return 关键字匹配类型
133  */
135  return keywordMatchType;
136  }
137 
138  /**
139  * 设置关键字匹配类型
140  *
141  * @param keywordMatchType 关键字匹配类型
142  */
143  public void setKeywordMatchType(V2NIMSearchKeywordMathType keywordMatchType) {
144  this.keywordMatchType = keywordMatchType;
145  }
146 
147  /**
148  * 获取群组引用列表
149  *
150  * @return 群组引用列表,可能为null
151  */
152  public List<V2NIMTeamRefer> getTeamRefers() {
153  return teamRefers;
154  }
155 
156  /**
157  * 设置群组引用列表
158  *
159  * @param teamRefers 群组引用列表,最多50个
160  */
161  public void setTeamRefers(List<V2NIMTeamRefer> teamRefers) {
162  this.teamRefers = teamRefers;
163  }
164 
165  /**
166  * 是否搜索用户账号
167  *
168  * @return true表示搜索用户账号,false表示不搜索
169  */
170  public boolean isSearchAccountId() {
171  return searchAccountId;
172  }
173 
174  /**
175  * 设置是否搜索用户账号
176  *
177  * @param searchAccountId true表示搜索用户账号,false表示不搜索
178  */
179  public void setSearchAccountId(boolean searchAccountId) {
180  this.searchAccountId = searchAccountId;
181  }
182 
183  /**
184  * 是否搜索群昵称
185  *
186  * @return true表示搜索群昵称,false表示不搜索
187  */
188  public boolean isSearchTeamNick() {
189  return searchTeamNick;
190  }
191 
192  /**
193  * 设置是否搜索群昵称
194  *
195  * @param searchTeamNick true表示搜索群昵称,false表示不搜索
196  */
197  public void setSearchTeamNick(boolean searchTeamNick) {
198  this.searchTeamNick = searchTeamNick;
199  }
200 
201  /**
202  * 获取单次检索返回的数量限制
203  *
204  * @return 数量限制
205  */
206  public int getLimit() {
207  return limit;
208  }
209 
210  /**
211  * 设置单次检索返回的数量限制
212  * 仅服务器有效
213  *
214  * @param limit 数量限制,必须为正数
215  */
216  public void setLimit(int limit) {
217  this.limit = limit;
218  }
219 
220  /**
221  * 获取起始位置标记
222  *
223  * @return 起始位置标记
224  */
225  public String getNextToken() {
226  return nextToken;
227  }
228 
229  /**
230  * 设置起始位置标记
231  * 仅服务器有效
232  *
233  * @param nextToken 起始位置标记
234  */
235  public void setNextToken(String nextToken) {
236  this.nextToken = nextToken;
237  }
238 
239  /**
240  * 验证参数有效性
241  *
242  * @return true表示参数有效,false表示参数无效
243  */
244  @SuppressWarnings("java:S1126")
245  public boolean isValid() {
246  // 关键字列表不能为空
247  if (keywordList == null || keywordList.isEmpty()) {
248  return false;
249  }
250 
251  // 关键字列表最多5个
252  if (keywordList.size() > 5) {
253  return false;
254  }
255 
256  // searchAccountId和searchTeamNick不能同时为false
257  if (!searchAccountId && !searchTeamNick) {
258  return false;
259  }
260 
261  // teamRefers最多50个
262  if (teamRefers != null && teamRefers.size() > 50) {
263  return false;
264  }
265 
266  return true;
267  }
268 
269  /**
270  * 验证参数有效性
271  *
272  * @return true表示参数有效,false表示参数无效
273  */
274  public String isValidWithErrorMsg() {
275  // 关键字列表不能为空
276  if (keywordList == null || keywordList.isEmpty()) {
277  return "keywordList is null or empty";
278  }
279 
280  // 关键字列表最多5个
281  if (keywordList.size() > 5) {
282  return "keywordList size > 5";
283  }
284 
285  // searchAccountId和searchTeamNick不能同时为false
286  if (!searchAccountId && !searchTeamNick) {
287  return "searchAccountId and searchTeamNick are both false";
288  }
289 
290  // teamRefers最多50个
291  if (teamRefers != null && teamRefers.size() > 50) {
292  return "teamRefers size > 50";
293  }
294 
295  return null;
296  }
297 
298  /**
299  * V2NIMSearchTeamMemberParams的Builder类
300  * <p>
301  * 用于构建V2NIMSearchTeamMemberParams对象,提供流式API。
302  * </p>
303  */
304  public static class Builder {
305  private V2NIMSearchTeamMemberParams params;
306 
307  /**
308  * 构造Builder
309  */
310  public Builder() {
311  this.params = new V2NIMSearchTeamMemberParams();
312  }
313 
314  /**
315  * 设置关键字列表
316  *
317  * @param keywordList 关键字列表
318  * @return Builder对象
319  */
320  public Builder keywordList(List<String> keywordList) {
321  params.setKeywordList(keywordList);
322  return this;
323  }
324 
325  /**
326  * 添加单个关键字
327  *
328  * @param keyword 关键字
329  * @return Builder对象
330  */
331  public Builder addKeyword(String keyword) {
332  if (params.getKeywordList() == null) {
333  params.setKeywordList(new ArrayList<>());
334  }
335  params.getKeywordList().add(keyword);
336  return this;
337  }
338 
339  /**
340  * 设置关键字匹配类型
341  *
342  * @param keywordMatchType 关键字匹配类型
343  * @return Builder对象
344  */
345  public Builder keywordMatchType(V2NIMSearchKeywordMathType keywordMatchType) {
346  params.setKeywordMatchType(keywordMatchType);
347  return this;
348  }
349 
350  /**
351  * 设置群组引用列表
352  *
353  * @param teamRefers 群组引用列表
354  * @return Builder对象
355  */
356  public Builder teamRefers(List<V2NIMTeamRefer> teamRefers) {
357  params.setTeamRefers(teamRefers);
358  return this;
359  }
360 
361  /**
362  * 添加单个群组引用
363  *
364  * @param teamRefer 群组引用
365  * @return Builder对象
366  */
367  public Builder addTeamRefer(V2NIMTeamRefer teamRefer) {
368  if (params.getTeamRefers() == null) {
369  params.setTeamRefers(new ArrayList<>());
370  }
371  params.getTeamRefers().add(teamRefer);
372  return this;
373  }
374 
375  /**
376  * 设置是否搜索用户账号
377  *
378  * @param searchAccountId 是否搜索用户账号
379  * @return Builder对象
380  */
381  public Builder searchAccountId(boolean searchAccountId) {
382  params.setSearchAccountId(searchAccountId);
383  return this;
384  }
385 
386  /**
387  * 设置是否搜索群昵称
388  *
389  * @param searchTeamNick 是否搜索群昵称
390  * @return Builder对象
391  */
392  public Builder searchTeamNick(boolean searchTeamNick) {
393  params.setSearchTeamNick(searchTeamNick);
394  return this;
395  }
396 
397  /**
398  * 设置单次检索返回的数量限制
399  *
400  * @param limit 数量限制
401  * @return Builder对象
402  */
403  public Builder limit(int limit) {
404  params.setLimit(limit);
405  return this;
406  }
407 
408  /**
409  * 设置起始位置标记
410  *
411  * @param nextToken 起始位置标记
412  * @return Builder对象
413  */
414  public Builder nextToken(String nextToken) {
415  params.setNextToken(nextToken);
416  return this;
417  }
418 
419  /**
420  * 构建V2NIMSearchTeamMemberParams对象
421  *
422  * @return V2NIMSearchTeamMemberParams对象
423  * @throws IllegalArgumentException 当参数无效时
424  */
425  public V2NIMSearchTeamMemberParams build() {
426  return params;
427  }
428  }
429 
430  @Override
431  public String toString() {
432  return "V2NIMSearchTeamMemberParams{" +
433  "keywordList=" + keywordList +
434  ", keywordMatchType=" + keywordMatchType +
435  ", teamRefers=" + teamRefers +
436  ", searchAccountId=" + searchAccountId +
437  ", searchTeamNick=" + searchTeamNick +
438  ", limit=" + limit +
439  ", nextToken='" + nextToken + '\'' +
440  '}';
441  }
442 }
void setTeamRefers(List< V2NIMTeamRefer > teamRefers)
设置群组引用列表
void setLimit(int limit)
设置单次检索返回的数量限制 仅服务器有效
void setNextToken(String nextToken)
设置起始位置标记 仅服务器有效
void setKeywordList(List< String > keywordList)
设置关键字列表
V2NIMSearchKeywordMathType getKeywordMatchType()
获取关键字匹配类型
void setKeywordMatchType(V2NIMSearchKeywordMathType keywordMatchType)
设置关键字匹配类型
void setSearchTeamNick(boolean searchTeamNick)
设置是否搜索群昵称
void setSearchAccountId(boolean searchAccountId)
设置是否搜索用户账号