2026-03-25 02:48:30 +08:00
|
|
|
<?php
|
|
|
|
|
namespace app\api\controller;
|
|
|
|
|
use app\model\User as UserModel;
|
|
|
|
|
use app\model\Collection as CollectionModel;
|
|
|
|
|
use support\Request;
|
|
|
|
|
use support\Response;
|
|
|
|
|
use support\think\Db;
|
|
|
|
|
use hg\apidoc\annotation as Apidoc;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 收藏
|
|
|
|
|
*/
|
|
|
|
|
class CollectionController extends BaseController{
|
|
|
|
|
/**
|
|
|
|
|
* 不需要鉴权的方法
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
public $noNeedAuth = ['*'];
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 无需登录及鉴权的方法
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
public $noNeedLogin = [];
|
|
|
|
|
/**
|
|
|
|
|
* @Apidoc\Title("列表")
|
|
|
|
|
* @Apidoc\Method("GET")
|
|
|
|
|
* @Apidoc\Query("content_type", type="string", require=false, desc="内容类型 enum('text', 'image', 'file', 'video', 'link','audio')")
|
|
|
|
|
* @Apidoc\Query("kw", type="string", require=false, desc="关键字")
|
|
|
|
|
* @Apidoc\Query("page", type="int", require=true, desc="页码",default=1)
|
|
|
|
|
* @Apidoc\Query("limit", type="int", require=true, desc="分页大小",default=10)
|
|
|
|
|
*/
|
|
|
|
|
function list(Request $request): Response
|
|
|
|
|
{
|
|
|
|
|
$user = \support\Jwt::getUser();
|
|
|
|
|
$page = (int)Input('page', 1);
|
|
|
|
|
$content_type = Input('content_type');
|
|
|
|
|
$kw = Input('kw');
|
|
|
|
|
$limit = (int)Input('limit', 10);
|
|
|
|
|
$query = CollectionModel::where('status', 1)
|
|
|
|
|
->whereIn('user_id',$user->id)
|
|
|
|
|
->order('created_at', 'desc');
|
|
|
|
|
if($content_type){
|
|
|
|
|
$query->where('content_type',$content_type);
|
|
|
|
|
}
|
|
|
|
|
if($kw){
|
|
|
|
|
$query->whereLike('content','%'.$kw.'%');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$list = $query->paginate([
|
|
|
|
|
'list_rows' => $limit,
|
|
|
|
|
'page' => $page,
|
|
|
|
|
]);
|
|
|
|
|
return $this->success('ok', $list);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 创建收藏
|
|
|
|
|
* @Apidoc\Param("content_type", type="string",require=true, desc="内容类型 enum('text', 'image', 'file', 'video', 'link','audio')")
|
|
|
|
|
* @Apidoc\Param("content", type="string",require=true, desc="json结构化收藏内容本体")
|
|
|
|
|
* @Apidoc\Param("tags", type="string",require=true, desc="用户自定义标签,多个用逗号隔开,或者使用数组")
|
|
|
|
|
* @Apidoc\Param("is_pinned", type="int",require=true, desc="是否置顶")
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return Response
|
|
|
|
|
*/
|
|
|
|
|
function create(Request $request): Response
|
|
|
|
|
{
|
|
|
|
|
$user = \support\Jwt::getUser();
|
|
|
|
|
$content = $request->post('content');
|
|
|
|
|
$content_type = $request->post('content_type', '');
|
|
|
|
|
$tags = $request->post('tags', '');
|
|
|
|
|
$is_pinned = $request->post('is_pinned', 0);
|
|
|
|
|
// 验证内容
|
|
|
|
|
if (empty($content_type)) {
|
|
|
|
|
return $this->fail(__('The field %field% must be not empty. ',['field'=>'content_type']));
|
|
|
|
|
}
|
|
|
|
|
if (empty($content)) {
|
|
|
|
|
return $this->fail(__('The field %field% must be not empty. ',['field'=>'content']));
|
|
|
|
|
}
|
|
|
|
|
if(is_array($content)) {
|
|
|
|
|
$content = json_encode($content);
|
|
|
|
|
}
|
|
|
|
|
// 创建朋友圈动态
|
|
|
|
|
$collection = CollectionModel::create([
|
|
|
|
|
'user_id' => $user->id,
|
|
|
|
|
'content_type' => $content_type,
|
|
|
|
|
'content' => $content,
|
|
|
|
|
'tags' => $tags,
|
|
|
|
|
'is_pinned' => $is_pinned
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
return $this->success('发布成功', ['collection' => $collection]);
|
|
|
|
|
}
|
2026-04-04 08:52:59 +08:00
|
|
|
/**
|
|
|
|
|
* 删除收藏
|
|
|
|
|
* @Apidoc\Param("id", type="int",require=true, desc="收藏id")
|
|
|
|
|
* @param Request $request
|
|
|
|
|
* @return Response
|
|
|
|
|
*/
|
|
|
|
|
function delete(Request $request): Response
|
|
|
|
|
{
|
|
|
|
|
$user = \support\Jwt::getUser();
|
|
|
|
|
$id = $request->post('id');
|
|
|
|
|
CollectionModel::where('id',$id)->where('user_id',$user->id)->delete();
|
|
|
|
|
return $this->success('删除成功');
|
|
|
|
|
}
|
2026-03-25 02:48:30 +08:00
|
|
|
}
|