121 lines
3.5 KiB
PHP
121 lines
3.5 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | YwxApp [ WE CAN DO IT JUST THINK ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Author: ywxapp<admin@ywxapp.cn>
|
|
// +----------------------------------------------------------------------
|
|
declare (strict_types = 1);
|
|
|
|
namespace app\Api\Controller\V1;
|
|
|
|
use think\facade\Validate;
|
|
use ywxapp\controller\ApiController;
|
|
use addon\articles\model\Article as ArticleModel;
|
|
|
|
class Article extends ApiController
|
|
{
|
|
protected $noNeedLogin = ['*'];
|
|
protected $needRight = ['*'];
|
|
|
|
|
|
public function initialize()
|
|
{
|
|
$this->model = new ArticleModel();
|
|
}
|
|
|
|
/**
|
|
* 文章列表
|
|
*/
|
|
public function index()
|
|
{
|
|
$page = $this->request->param('page/d', 1);
|
|
$limit = $this->request->param('limit/d', 15);
|
|
$list = $this->model->with(['category'])->page($page, $limit)->order('id', 'desc')->select();
|
|
$this->result->success($list);
|
|
}
|
|
|
|
/**
|
|
* 创建文章
|
|
*/
|
|
public function create(\think\Request $request)
|
|
{
|
|
$data = $request->post();
|
|
if (empty($data['title'])) {
|
|
$this->result->error('标题不能为空', 404);
|
|
}
|
|
$res = $this->model->create($data);
|
|
if ($res) {
|
|
event('article_create_after', $res);
|
|
$this->result->success($res, '创建成功');
|
|
}
|
|
$this->result->error('创建失败');
|
|
}
|
|
|
|
/**
|
|
* 文章详情
|
|
* @route GET /detail, method:GET
|
|
* @param int $uid 文章ID
|
|
*/
|
|
public function detail(\think\Request $request, int $uid= 0 ) {
|
|
if (!$uid)
|
|
$this->result->error('Invalid parameters', 404);
|
|
$info = $this->model->with(['category', 'tags'])->find($uid);
|
|
if (! $info) {
|
|
$this->result->error('文章不存在', 404);
|
|
}
|
|
$this->result->success($info);
|
|
}
|
|
|
|
/**
|
|
* 更新文章
|
|
* @route PUT /update, method:PUT
|
|
* @param int $uid 文章ID
|
|
*/
|
|
public function update(\think\Request $request, int $uid= 0 ) {
|
|
if (!$uid)
|
|
$this->result->error('Invalid parameters', 404);
|
|
$info = $this->model->find($uid);
|
|
if (! $info) {
|
|
$this->result->error('文章不存在', 404);
|
|
}
|
|
$data = $request->only(
|
|
['title', 'cover_image', 'summary', 'content', 'author', 'cid', 'status'],
|
|
'put'
|
|
);
|
|
$info->save($data);
|
|
event('article_update_after', $info);
|
|
$this->result->success($info, '更新成功');
|
|
}
|
|
|
|
/**
|
|
* 删除文章(软删除)
|
|
* @route DELETE /update, method:DELETE
|
|
* @param int $uid 文章ID
|
|
*/
|
|
public function delete(\think\Request $request, int $uid= 0 ) {
|
|
if (!$uid)
|
|
$this->result->error('Invalid parameters', 404);
|
|
$info = $this->model->find($uid);
|
|
if (! $info) {
|
|
$this->result->error('文章不存在', 404);
|
|
}
|
|
$info->delete();
|
|
event('article_delete_after', $info);
|
|
$this->result->success('', '删除成功');
|
|
}
|
|
|
|
|
|
private function getEncryptPassword($password, $salt = '')
|
|
{
|
|
return md5(md5($password) . $salt);
|
|
}
|
|
|
|
|
|
public function init()
|
|
{
|
|
return json(['message' => 'This is version 1 of the API']);
|
|
}
|
|
}
|