膳逸:置顶、取消置顶、取消关注用户功能实现

开发文档:置顶、取消置顶、取消关注用户功能实现

概述

本文档详细描述了用户关注好友及置顶、取消置顶、取消关注功能的实现。用户关注好友后,默认情况下不置顶。用户可以选择置顶好友,置顶操作会修改数据库中的相应字段,影响“查询已关注的用户”功能的返回。取消关注功能则完全删除关注关系。

功能需求

  1. 置顶用户:用户可以将已关注的好友置顶。
  2. 取消置顶:用户可以取消置顶好友。
  3. 取消关注:用户可以取消对好友的关注。

数据库表结构

在实现这些功能之前,首先需要了解数据库表 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 表中删除。

详细解释

置顶用户

用户选择置顶某个关注的好友时,前端会发送包含 userIdfollowUserId 的请求。后端接收到请求后,调用 pinUser 方法,该方法将用户ID和关注用户ID封装成一个Map,传递给 UserFollowMapperpinUser 方法。 pinUser 方法执行对应的SQL语句,将 user_follow 表中相应记录的 pin 字段设置为1。

取消置顶

用户选择取消置顶某个好友时,前端会发送包含 userIdfollowUserId 的请求。后端接收到请求后,调用 unPinUser 方法,该方法将用户ID和关注用户ID封装成一个Map,传递给 UserFollowMapperunPinUser 方法。 unPinUser 方法执行对应的SQL语句,将 user_follow 表中相应记录的 pin 字段设置为0。

取消关注

用户选择取消关注某个好友时,前端会发送包含 userIdfollowUserId 的请求。后端接收到请求后,调用 unsubscribe 方法,该方法将用户ID和关注用户ID封装成一个Map,传递给 UserFollowMapperunsubscribe 方法。 unsubscribe 方法执行对应的SQL语句,删除 user_follow 表中相应的记录。

功能实现的好处

  1. 用户体验
    • 用户可以根据自己的喜好将重要的好友置顶,便于快速找到和互动。
    • 提供了灵活的关注管理功能,让用户可以自由地置顶和取消置顶好友。
  2. 系统性能
    • 数据库操作简单直接,性能较高,适合大规模用户使用。
    • 使用索引优化查询,可以在大数据量情况下保持良好的查询性能。
  3. 可维护性
    • SQL语句清晰,易于理解和维护。
    • 通过封装在Service层中,业务逻辑和数据访问层分离,提高了代码的可维护性和可扩展性。

Base URLs:

POST 取消关注

POST /user/unsubscribe

根据userId和followUserId取消关注

Body 请求参数

{
  "userId": 5,
  "followUserId": 4
}

请求参数

名称位置类型必选说明
tokenheaderstringnone
bodybodyobjectnone
» userIdbodyintegernone
» followUserIdbodyintegernone

返回示例

成功

{
  "msg": "success",
  "code": 200
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

状态码 200

名称类型必选约束中文名说明
» codeintegertruenonenone
» msgstringtruenonenone

POST 置顶关注的用户

POST /user/pinUser

置顶关注过的用户

Body 请求参数

{
  "userId": 5,
  "followUserId": 4
}

请求参数

名称位置类型必选说明
tokenheaderstringnone
bodybodyobjectnone
» userIdbodyintegernone
» followUserIdbodyintegernone

返回示例

成功

{
  "msg": "success",
  "code": 200
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

状态码 200

名称类型必选约束中文名说明
» codeintegertruenonenone
» msgstringtruenonenone

POST 取消置顶关注的用户

POST /user/unPinUser

Body 请求参数

{
  "userId": 5,
  "followUserId": 4
}

请求参数

名称位置类型必选说明
tokenheaderstringnone
bodybodyobjectnone
» userIdbodyintegernone
» followUserIdbodyintegernone

返回示例

成功

{
  "msg": "success",
  "code": 200
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

状态码 200

名称类型必选约束中文名说明
» codeintegertruenonenone
» msgstringtruenonenone

结论

通过上述开发思路和具体实现代码,我们可以高效地实现用户关注好友后的置顶、取消置顶以及取消关注功能。这些功能不仅提升了用户体验,还简化了数据管理,具有很高的实用价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值