Skip to content

好友关系、好友申请 ​

这篇解决什么 ​

互加好友怎么存两行、申请状态机怎么走。读完能对上 im_friend / im_friend_request,以及 yudao.im.friend.auto-accept。

默认端口 48080。先开模块见 IM 功能设计。

示意图:默认要对方同意。自动通过打开后,申请会立刻落成好友。

从哪改 ​

名称说明仓库路径
C 端好友@RequestMapping("/im/friend")ruoyi-office/yudao-module-im/.../friend/ImFriendController.java
C 端申请/im/friend-requestImFriendRequestController
运营关系/im/manager/friendImFriendManagerController
运营申请/im/manager/friend-requestImFriendRequestManagerController
关系表im_friendImFriendDO
申请表im_friend_requestImFriendRequestDO

用户页:views/im/home/pages/contact/、friend-add-dialog.vue。运营页:views/im/manager/friend/。

申请:POST /apply,PUT /agree,PUT /refuse。列表 GET /list(maxId 游标),离线补偿 GET /pull。

A、B 互为好友存两行:(userId=A, friendUserId=B) 和反过来。silent / pinned / blocked 都是单边。拉黑必须先是好友。status 用 CommonStatusEnum:0 正常,1 已删除(同时写 deleteTime)。

ImFriendRequestHandleResultEnum:0 未处理,1 同意,2 拒绝。同意后发起方 displayName、addSource 写入 A 侧好友行,B 侧备注不动。

ImFriendAddSourceEnum:1 搜索,2 群聊,3 扫码,4 名片。当前入口主要是搜索和群成员主页;扫码 / 名片枚举已占位。

yudao.im.friend.auto-accept 默认 false。打开后所有申请立即同意,适合全员开放部署。

字段 ​

名称说明仓库路径
userId / friendUserId关系两端ImFriendDO
displayName / addSource备注、来源同上
silent / pinned / blocked免打扰、置顶、拉黑同上
fromUserId / toUserId申请双方ImFriendRequestDO
applyContent / handleResult理由、结果同上

删好友不是物理删行

status=1 且写 deleteTime。不要按「查不到行」判断从未加过。

自动通过是全局开关

没有按用户的机器人字段。要只放行部分账号,得在 applyFriend 里自己加短路,配置类注释也是这么写的。

按本仓库 DO 生成的 ER。通过后才出现两行好友。

配置与操作 ​

用户页在 views/im/home/pages/contact/,申请 POST /im/friend-request/apply,对方 PUT /agree 或 /refuse。运营看 views/im/manager/friend/。互为好友存两行。silent / pinned / blocked 都是单边。YAML yudao.im.friend.auto-accept 默认 false,打开后所有申请立即同意。

保存后同意侧写入 im_friend。删好友是 status=1 并写 deleteTime,不是物理删行。拉黑必须先是好友。没有按用户的自动通过字段。运营台账在 好友列表(7520,/im/private/friend)。开启见 IM 功能设计。

好友列表

本系统截图:IM 即时通讯 → 私聊管理 → 好友列表。互加两行落 im_friend。

相关篇 ​

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版