func AcceptFriendRequestHandler(c *gin.Context) { userID := c.PostForm("user_id") friendID := c.PostForm("friend_id") _, err := logic.AcceptFriendRequest(userID, friendID) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error(), }) return } c.JSON(http.StatusOK, gin.H{ "message": "好友请求已被接受", }) } // 拒绝好友请求 func RejectFriendRequestHandler(c *gin.Context) { userID := c.PostForm("user_id") friendID := c.PostForm("friend_id") err := logic.RejectFriendRequest(userID, friendID) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error(), }) return } c.JSON(http.StatusOK, gin.H{ "message": "好友请求已被拒绝", }) }代码中的AcceptFriendRequest和RejectFriendRequest这两个代码帮我实现他写出代码来
时间: 2024-02-05 12:14:14 浏览: 73
golang sqlx err missing destination name id in *main.User
以下是AcceptFriendRequest和RejectFriendRequest的代码实现:
```
// AcceptFriendRequest 接受好友请求
func AcceptFriendRequest(userID, friendID string) error {
// 根据 userID 和 friendID 获取好友关系
friend, err := model.GetFriend(userID, friendID)
if err != nil {
return err
}
// 判断好友关系是否为待接受状态
if friend.Status != model.FriendRequest {
return errors.New("好友请求已处理")
}
// 更新好友关系状态为已接受
friend.Status = model.FriendAccepted
err = model.UpdateFriend(friend)
if err != nil {
return err
}
return nil
}
// RejectFriendRequest 拒绝好友请求
func RejectFriendRequest(userID, friendID string) error {
// 根据 userID 和 friendID 获取好友关系
friend, err := model.GetFriend(userID, friendID)
if err != nil {
return err
}
// 判断好友关系是否为待接受状态
if friend.Status != model.FriendRequest {
return errors.New("好友请求已处理")
}
// 更新好友关系状态为已拒绝
friend.Status = model.FriendRejected
err = model.UpdateFriend(friend)
if err != nil {
return err
}
return nil
}
```
这里的 `model.GetFriend()` 和 `model.UpdateFriend()` 是根据具体的数据模型实现的方法,需要替换成你所使用的数据模型的对应方法。同时,`model.FriendRequest`、`model.FriendAccepted` 和 `model.FriendRejected` 是表示好友关系状态的常量,也需要根据具体的业务逻辑进行定义。
阅读全文