package cn.iocoder.yudao.module.im.enums.friend; import cn.iocoder.yudao.framework.common.core.ArrayValuable; import lombok.Getter; import lombok.RequiredArgsConstructor; import java.util.Arrays; import java.util.Objects; /** * IM 好友关系状态(合并「是否好友」+「是否拉黑」两态) *

* 用 state 而非 status:避免和 ImFriendDO 的 status 物理字段(CommonStatusEnum:ENABLE / DISABLE)混淆。 *

* 用于 ImFriendService.getFriendState 返回值与 FRIEND_STATE 缓存值:私聊发送热点路径下,sender 调缓存即可同时判定「能否发」和「是否屏蔽接收方」 * * @author 芋道源码 */ @RequiredArgsConstructor @Getter public enum ImFriendStateEnum implements ArrayValuable { NONE(0, "非好友 / 已删除"), FRIEND(1, "好友"), BLOCKED(2, "好友且已被对方拉黑"); public static final Integer[] ARRAYS = Arrays.stream(values()).map(ImFriendStateEnum::getState).toArray(Integer[]::new); /** * 状态值 */ private final Integer state; /** * 名字 */ private final String name; @Override public Integer[] array() { return ARRAYS; } public static boolean isNone(Integer state) { return Objects.equals(NONE.state, state); } public static boolean isFriend(Integer state) { return Objects.equals(FRIEND.state, state); } public static boolean isBlocked(Integer state) { return Objects.equals(BLOCKED.state, state); } }