开发文档:置顶、取消置顶、取消关注用户功能实现
文章目录
概述
本文档详细描述了用户关注好友及置顶、取消置顶、取消关注功能的实现。用户关注好友后,默认情况下不置顶。用户可以选择置顶好友,置顶操作会修改数据库中的相应字段,影响“查询已关注的用户”功能的返回。取消关注功能则完全删除关注关系。
功能需求
- 置顶用户:用户可以将已关注的好友置顶。
- 取消置顶:用户可以取消置顶好友。
- 取消关注:用户可以取消对好友的关注。
数据库表结构
在实现这些功能之前,首先需要了解数据库表 user_follow
的结构。该表用于存储用户关注关系,包含以下字段:
表 user_follow
用于存储用户与其关注好友之间的关系。字段说明如下:
user_id
:用户ID。follow_user_id
:被关注用户ID。pin
:置顶状态,1表示置顶,0表示不置顶。
CREATE TABLE `user_follow` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键,自增长',
`user_id` int NULL DEFAULT NULL COMMENT '外键,关联用户信息表',
`follow_user_id` int NULL DEFAULT NULL COMMENT '外键,关联用户信息表',
`pin` tinyint NULL DEFAULT 0 COMMENT '置顶,0为未置顶,1为置顶。默认为0',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
功能描述
置顶用户
用户关注好友后,默认不置顶用户。只有用户点击置顶用户后,才会修改数据库关系,将对应字段 pin
设置为 1
,表示置顶。
取消置顶用户
用户可以取消置顶操作,将对应字段 pin
设置为 0
,表示不置顶。
取消关注用户
用户可以取消对某个用户的关注,删除对应的关注关系记录。
代码实现
以下是具体的 SQL 语句和 MyBatis 配置,用于实现上述功能。
置顶用户
<update id="pinUser" parameterType="Map">
UPDATE user_follow
SET pin = 1
WHERE user_id = #{userId} AND follow_user_id = #{followUserId};
</update>
该SQL语句用于将用户关注的好友设置为置顶。通过用户ID (userId
) 和被关注用户ID (followUserId
) 确定唯一记录,并将 pin
字段设置为1。
取消置顶用户
<update id="unPinUser" parameterType="Map">
UPDATE user_follow
SET pin = 0
WHERE user_id = #{userId} AND follow_user_id = #{followUserId};
</update>
该SQL语句用于取消用户对好友的置顶设置。通过用户ID (userId
) 和被关注用户ID (followUserId
) 确定唯一记录,并将 pin
字段设置为0。
取消关注用户
<delete id="unsubscribe" parameterType="Map">
DELETE FROM user_follow
WHERE user_id = #{userId} AND follow_user_id = #{followUserId};
</delete>
该SQL语句用于取消用户对好友的关注。通过用户ID (userId
) 和被关注用户ID (followUserId
) 确定唯一记录,并将其从 user_follow
表中删除。
详细解释
置顶用户
用户选择置顶某个关注的好友时,前端会发送包含 userId
和 followUserId
的请求。后端接收到请求后,调用 pinUser
方法,该方法将用户ID和关注用户ID封装成一个Map,传递给 UserFollowMapper
的 pinUser
方法。 pinUser
方法执行对应的SQL语句,将 user_follow
表中相应记录的 pin
字段设置为1。
取消置顶
用户选择取消置顶某个好友时,前端会发送包含 userId
和 followUserId
的请求。后端接收到请求后,调用 unPinUser
方法,该方法将用户ID和关注用户ID封装成一个Map,传递给 UserFollowMapper
的 unPinUser
方法。 unPinUser
方法执行对应的SQL语句,将 user_follow
表中相应记录的 pin
字段设置为0。
取消关注
用户选择取消关注某个好友时,前端会发送包含 userId
和 followUserId
的请求。后端接收到请求后,调用 unsubscribe
方法,该方法将用户ID和关注用户ID封装成一个Map,传递给 UserFollowMapper
的 unsubscribe
方法。 unsubscribe
方法执行对应的SQL语句,删除 user_follow
表中相应的记录。
功能实现的好处
- 用户体验:
- 用户可以根据自己的喜好将重要的好友置顶,便于快速找到和互动。
- 提供了灵活的关注管理功能,让用户可以自由地置顶和取消置顶好友。
- 系统性能:
- 数据库操作简单直接,性能较高,适合大规模用户使用。
- 使用索引优化查询,可以在大数据量情况下保持良好的查询性能。
- 可维护性:
- SQL语句清晰,易于理解和维护。
- 通过封装在Service层中,业务逻辑和数据访问层分离,提高了代码的可维护性和可扩展性。
Base URLs:
POST 取消关注
POST /user/unsubscribe
根据userId和followUserId取消关注
Body 请求参数
{
"userId": 5,
"followUserId": 4
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
token | header | string | 否 | none |
body | body | object | 否 | none |
» userId | body | integer | 是 | none |
» followUserId | body | integer | 是 | none |
返回示例
成功
{
"msg": "success",
"code": 200
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none |
POST 置顶关注的用户
POST /user/pinUser
置顶关注过的用户
Body 请求参数
{
"userId": 5,
"followUserId": 4
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
token | header | string | 否 | none |
body | body | object | 否 | none |
» userId | body | integer | 是 | none |
» followUserId | body | integer | 是 | none |
返回示例
成功
{
"msg": "success",
"code": 200
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none |
POST 取消置顶关注的用户
POST /user/unPinUser
Body 请求参数
{
"userId": 5,
"followUserId": 4
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
token | header | string | 否 | none |
body | body | object | 否 | none |
» userId | body | integer | 是 | none |
» followUserId | body | integer | 是 | none |
返回示例
成功
{
"msg": "success",
"code": 200
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
状态码 200
名称 | 类型 | 必选 | 约束 | 中文名 | 说明 |
---|---|---|---|---|---|
» code | integer | true | none | none | |
» msg | string | true | none | none |
结论
通过上述开发思路和具体实现代码,我们可以高效地实现用户关注好友后的置顶、取消置顶以及取消关注功能。这些功能不仅提升了用户体验,还简化了数据管理,具有很高的实用价值。