回复crd
This commit is contained in:
parent
22501cc89a
commit
200fbdfc0a
50
app/Http/Controllers/Api/RepliesController.php
Normal file
50
app/Http/Controllers/Api/RepliesController.php
Normal file
@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Requests\Api\ReplyRequest;
|
||||
use App\Models\Reply;
|
||||
use App\Models\Topic;
|
||||
use App\Models\User;
|
||||
use App\Transformers\ReplyTransformer;
|
||||
|
||||
class RepliesController extends Controller
|
||||
{
|
||||
public function store(ReplyRequest $request, Topic $topic, Reply $reply)
|
||||
{
|
||||
$reply->content = $request->get('content');
|
||||
$reply->topic_id = $topic->id;
|
||||
$reply->user_id = $this->user()->id;
|
||||
$reply->save();
|
||||
return $this->response->item($reply, new ReplyTransformer())->setStatusCode(201);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Reply $reply
|
||||
* @return \Dingo\Api\Http\Response
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
* @throws \Throwable
|
||||
*/
|
||||
public function destroy(Reply $reply)
|
||||
{
|
||||
$this->authorize('destroy', $reply);
|
||||
$reply->delete();
|
||||
return $this->response->noContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Topic $topic
|
||||
* @return \Dingo\Api\Http\Response
|
||||
*/
|
||||
public function index(Topic $topic)
|
||||
{
|
||||
$replies = $topic->replies()->recent()->paginate(20);
|
||||
return $this->response->paginator($replies, new ReplyTransformer());
|
||||
}
|
||||
|
||||
public function userIndex(User $user)
|
||||
{
|
||||
$replies = $user->replies()->recent()->paginate(20);
|
||||
return $this->response->paginator($replies, new ReplyTransformer());
|
||||
}
|
||||
}
|
@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class AuthorizationRequest extends FormRequest
|
||||
{
|
||||
|
@ -2,19 +2,9 @@
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class CaptchaRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
|
30
app/Http/Requests/Api/FormRequest.php
Normal file
30
app/Http/Requests/Api/FormRequest.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest as BaseFormRequest;
|
||||
|
||||
class FormRequest extends BaseFormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
//
|
||||
];
|
||||
}
|
||||
}
|
@ -2,19 +2,9 @@
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class ImageRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
|
33
app/Http/Requests/Api/ReplyRequest.php
Normal file
33
app/Http/Requests/Api/ReplyRequest.php
Normal file
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
/**
|
||||
* Class ReplyRequest
|
||||
* @property string content
|
||||
* @package App\Http\Requests\Api
|
||||
*/
|
||||
class ReplyRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'content' => 'required|min:2',
|
||||
];
|
||||
}
|
||||
}
|
@ -2,19 +2,8 @@
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class SocialAuthorizationRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
/**
|
||||
* Class TopicRequest
|
||||
@ -13,15 +12,6 @@ use Illuminate\Foundation\Http\FormRequest;
|
||||
*/
|
||||
class TopicRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function rules()
|
||||
{
|
||||
|
@ -2,19 +2,9 @@
|
||||
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class VerificationCodeRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
|
@ -2,6 +2,17 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
/**
|
||||
* Class Reply
|
||||
* @property int id
|
||||
* @property string content
|
||||
* @property string created_at
|
||||
* @property string updated_at
|
||||
* @property int user_id
|
||||
* @property int topic_id
|
||||
* @property User user
|
||||
* @package App\Models
|
||||
*/
|
||||
class Reply extends Model
|
||||
{
|
||||
protected $fillable = ['content'];
|
||||
|
36
app/Transformers/ReplyTransformer.php
Normal file
36
app/Transformers/ReplyTransformer.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: xing
|
||||
* Date: 2018/6/10
|
||||
* Time: 21:52
|
||||
*/
|
||||
|
||||
namespace App\Transformers;
|
||||
|
||||
|
||||
use App\Models\Reply;
|
||||
use Carbon\Carbon;
|
||||
use League\Fractal\TransformerAbstract;
|
||||
|
||||
class ReplyTransformer extends TransformerAbstract
|
||||
{
|
||||
protected $availableIncludes = ['user'];
|
||||
|
||||
public function transform(Reply $reply)
|
||||
{
|
||||
return [
|
||||
'id' => (int)$reply->id,
|
||||
'user_id' => (int)$reply->user_id,
|
||||
'topic_id' => (int)$reply->topic_id,
|
||||
'content' => $reply->content,
|
||||
'created_at' => $reply->created_at instanceof Carbon ? $reply->created_at->toDateTimeString() : $reply->created_at,
|
||||
'updated_at' => $reply->updated_at instanceof Carbon ? $reply->updated_at->toDateTimeString() : $reply->updated_at,
|
||||
];
|
||||
}
|
||||
|
||||
public function includeUser(Reply $reply)
|
||||
{
|
||||
return $this->item($reply->user, new UserTransformer());
|
||||
}
|
||||
}
|
@ -76,7 +76,17 @@ $api->version('v1', [
|
||||
$api->patch('topics/{topic}', 'TopicsController@update')->name('api.topics.update');
|
||||
//删除话题
|
||||
$api->delete('topics/{topic}', 'TopicsController@destroy')->name('api.topics.destroy');
|
||||
|
||||
// 发布回复
|
||||
$api->post('topics/{topic}/replies', 'RepliesController@store')
|
||||
->name('api.topics.replies.store');
|
||||
//删除回复
|
||||
$api->delete('replies/{reply}', 'RepliesController@destroy')->name('api.replies.destroy');
|
||||
// 话题回复列表
|
||||
$api->get('topics/{topic}/replies', 'RepliesController@index')
|
||||
->name('api.topics.replies.index');
|
||||
//某个用户的回复列表
|
||||
$api->get('users/{user}/replies', 'RepliesController@userIndex')
|
||||
->name('api.users.replies.index');
|
||||
});
|
||||
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user