Skip to content

Commit

Permalink
feat(core): 增加 At 我的接口列表( #337 )
Browse files Browse the repository at this point in the history
  • Loading branch information
medz committed Aug 14, 2018
1 parent 9e980ae commit 0b53c78
Show file tree
Hide file tree
Showing 4 changed files with 179 additions and 0 deletions.
62 changes: 62 additions & 0 deletions app/API2/Controllers/User/Message/At.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

declare(strict_types=1);

/*
* +----------------------------------------------------------------------+
* | ThinkSNS Plus |
* +----------------------------------------------------------------------+
* | Copyright (c) 2018 Chengdu ZhiYiChuangXiang Technology Co., Ltd. |
* +----------------------------------------------------------------------+
* | This source file is subject to version 2.0 of the Apache license, |
* | that is bundled with this package in the file LICENSE, and is |
* | available through the world-wide-web at the following url: |
* | http://www.apache.org/licenses/LICENSE-2.0.html |
* +----------------------------------------------------------------------+
* | Author: Slim Kit Group <master@zhiyicx.com> |
* | Homepage: www.thinksns.com |
* +----------------------------------------------------------------------+
*/

namespace Zhiyi\Plus\API2\Controllers\User\Message;

use Illuminate\Http\Response;
use Zhiyi\Plus\API2\Controllers\Controller;
use Zhiyi\Plus\Models\AtMessage as AtMessageModel;
use Zhiyi\Plus\API2\Requests\User\Message\ListAtMessageLine;
use Zhiyi\Plus\API2\Resources\User\Message\AtMessage as AtMessageResource;

class At extends Controller
{
/**
* Create the at message controller instance.
*/
public function __construct()
{
$this->middleware('auth:api');
}

public function __invoke(ListAtMessageLine $request, AtMessageModel $model)
{
$direction = $request->query('direction', 'desc');
$collection = $model
->query()
->when($index = $request->query('index'), function ($query) use ($index, $direction) {
return $query->where('id', $direction === 'asc' ? '>' : '<', $index);
})
->where('user_id', $request->user()->id)
->limit($request->query('limit', 15))
->orderBy('id', $direction)
->get();

// 暂不提供支持,动态付费内容难以处理!代码请不要删除!
// $relationships = array_filter(explode(',', $request->query('load')));
// if ($relationships) {
// $collection->load($relationships);
// }

return AtMessageResource::collection($collection)
->toResponse($request)
->setStatusCode(Response::HTTP_OK);
}
}
56 changes: 56 additions & 0 deletions app/API2/Requests/User/Message/ListAtMessageLine.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

declare(strict_types=1);

/*
* +----------------------------------------------------------------------+
* | ThinkSNS Plus |
* +----------------------------------------------------------------------+
* | Copyright (c) 2018 Chengdu ZhiYiChuangXiang Technology Co., Ltd. |
* +----------------------------------------------------------------------+
* | This source file is subject to version 2.0 of the Apache license, |
* | that is bundled with this package in the file LICENSE, and is |
* | available through the world-wide-web at the following url: |
* | http://www.apache.org/licenses/LICENSE-2.0.html |
* +----------------------------------------------------------------------+
* | Author: Slim Kit Group <master@zhiyicx.com> |
* | Homepage: www.thinksns.com |
* +----------------------------------------------------------------------+
*/

namespace Zhiyi\Plus\API2\Requests\User\Message;

use Zhiyi\Plus\API2\Requests\Request;

class ListAtMessageLine extends Request
{
/**
* Get the validate rules.
* @return array
*/
public function rules(): array
{
return [
'limit' => 'nullable|integer|min:1|max:100',
'index' => 'nullable|integer|min:0',
'direction' => 'nullable|in:asc,desc',
'load' => 'nullable|string',
];
}

/**
* Get the validate error messages.
* @return array
*/
public function messages(): array
{
return [
'limit.integer' => 'limit 参数非法',
'limit.min' => '最少获取一条数据',
'limit.max' => '最多获取 100 条数据',
'index.integer' => 'index 参数非法',
'inde.min' => 'index 参数不得低于 0',
'direction.in' => '方向只允许 `asc` 或者 `desc`',
];
}
}
37 changes: 37 additions & 0 deletions app/API2/Resources/User/Message/AtMessage.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

declare(strict_types=1);

namespace Zhiyi\Plus\API2\Resources\User\Message;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Resources\Json\JsonResource;
use Zhiyi\Plus\Utils\DateTimeToIso8601ZuluString;

class AtMessage extends JsonResource
{
use DateTimeToIso8601ZuluString;

/**
* The resource to array.
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request): array
{
return [
'id' => $this->id,
'user_id' => $this->user_id,
'resourceable' => [
'type' => $this->resourceable_type,
'id' => $this->resourceable_id,
],
$this->mergeWhen($request->query('load'), [
'resource' => ['暂不提供数据支持']
]),
'created_at' => $this->dateTimeToIso8601ZuluString(
$this->{Model::CREATED_AT}
),
];
}
}
24 changes: 24 additions & 0 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -734,4 +734,28 @@
* @Response::header('Status', 204, 'No Content')
*/
$api->put('user/report-feed-topics/{topic}', \Zhiyi\Plus\API2\Controllers\Feed\TopicReport::class);

/*
* List at me messages.
*
* @Get /api/v2/user/message/atme
* @Param::query('limit', 'integer', 'The query data limit.')
* @Param::query('index', 'integer', 'The query start index.')
* @param::query('direction', 'enum:asc,desc', 'The data order by id direction.')
* @Response::header('Sttaus', 200, 'OK')
* @response::json('<pre>
* [
* {
* "id": 1,
* "user_id": 1,
* "resourceable" => {
* "type": "feeds",
* "id": "id"
* },
* "created_at": "2018-08-13T08:06:54Z"
* }
* ]
* </pre>')
*/
$api->get('user/message/atme', \Zhiyi\Plus\API2\Controllers\User\Message\At::class);
});

0 comments on commit 0b53c78

Please sign in to comment.