feat: 扩展收藏功能,支持消息类型的收藏

- 在 UserFavorite 模型中添加消息类型常量
- 更新 UsersController,支持消息的收藏、切换和状态检查
- 修改前端 Vue 组件以实现消息的收藏操作和状态显示
- 优化收藏管理界面,支持消息类型的展示与处理
This commit is contained in:
kuaifan
2025-09-23 09:48:06 +08:00
parent 18a922b5cd
commit 73ca4b1ea5
6 changed files with 149 additions and 17 deletions

View File

@@ -2835,7 +2835,7 @@ class UsersController extends AbstractController
* @apiGroup users
* @apiName favorites
*
* @apiParam {String} [type] 收藏类型过滤 (task/project/file)
* @apiParam {String} [type] 收藏类型过滤 (task/project/file/message)
* @apiParam {Number} [page=1] 页码
* @apiParam {Number} [pagesize=20] 每页数量
*
@@ -2852,7 +2852,7 @@ class UsersController extends AbstractController
$pageSize = min(intval(Request::input('pagesize', 20)), 100);
//
// 验证收藏类型
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE];
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE, UserFavorite::TYPE_MESSAGE];
if ($type && !in_array($type, $allowedTypes)) {
return Base::retError('无效的收藏类型');
}
@@ -2870,7 +2870,7 @@ class UsersController extends AbstractController
* @apiGroup users
* @apiName favorite__toggle
*
* @apiParam {String} type 收藏类型 (task/project/file)
* @apiParam {String} type 收藏类型 (task/project/file/message)
* @apiParam {Number} id 收藏对象ID
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
@@ -2889,7 +2889,7 @@ class UsersController extends AbstractController
}
//
// 验证收藏类型
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE];
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE, UserFavorite::TYPE_MESSAGE];
if (!in_array($type, $allowedTypes)) {
return Base::retError('无效的收藏类型');
}
@@ -2914,6 +2914,12 @@ class UsersController extends AbstractController
return Base::retError('文件不存在');
}
break;
case UserFavorite::TYPE_MESSAGE:
$object = WebSocketDialogMsg::whereId($id)->first();
if (!$object) {
return Base::retError('消息不存在');
}
break;
}
//
$result = UserFavorite::toggleFavorite($user->userid, $type, $id);
@@ -2930,7 +2936,7 @@ class UsersController extends AbstractController
* @apiGroup users
* @apiName favorites__clean
*
* @apiParam {String} [type] 收藏类型 (task/project/file),不传则清理全部
* @apiParam {String} [type] 收藏类型 (task/project/file/message),不传则清理全部
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
@@ -2944,7 +2950,7 @@ class UsersController extends AbstractController
//
// 验证收藏类型
if ($type) {
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE];
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE, UserFavorite::TYPE_MESSAGE];
if (!in_array($type, $allowedTypes)) {
return Base::retError('无效的收藏类型');
}
@@ -2964,7 +2970,7 @@ class UsersController extends AbstractController
* @apiGroup users
* @apiName favorite__check
*
* @apiParam {String} type 收藏类型 (task/project/file)
* @apiParam {String} type 收藏类型 (task/project/file/message)
* @apiParam {Number} id 收藏对象ID
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
@@ -2983,7 +2989,7 @@ class UsersController extends AbstractController
}
//
// 验证收藏类型
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE];
$allowedTypes = [UserFavorite::TYPE_TASK, UserFavorite::TYPE_PROJECT, UserFavorite::TYPE_FILE, UserFavorite::TYPE_MESSAGE];
if (!in_array($type, $allowedTypes)) {
return Base::retError('无效的收藏类型');
}