275 lines
8.3 KiB
PHP
Executable File
275 lines
8.3 KiB
PHP
Executable File
<?php
|
|
|
|
namespace app\controller\api;
|
|
|
|
use app\model\AccountRecord;
|
|
use app\model\Disease;
|
|
use app\repository\ArchivesRepository;
|
|
use Exception;
|
|
use think\db\exception\DataNotFoundException;
|
|
use think\db\exception\DbException;
|
|
use think\db\exception\ModelNotFoundException;
|
|
use think\response\Json;
|
|
use app\exception\RepositoryException;
|
|
|
|
class Archives extends Base
|
|
{
|
|
protected $noNeedLogin = ['course', 'detail'];
|
|
|
|
/**
|
|
* 病种列表
|
|
*
|
|
* @return Json
|
|
* @throws DataNotFoundException
|
|
* @throws DbException
|
|
* @throws ModelNotFoundException
|
|
*/
|
|
public function disease(): Json
|
|
{
|
|
$data = Disease::getListByPid();
|
|
|
|
return $this->json(0, 'success', $data);
|
|
}
|
|
|
|
/**
|
|
* 病种问题文章列表 分类问题
|
|
*
|
|
* @return Json
|
|
*/
|
|
public function diseaseQuestion(): Json
|
|
{
|
|
$diseaseId = input('disease_id/d', 0);
|
|
|
|
try {
|
|
$data = ArchivesRepository::getInstance()->diseaseQuestion($diseaseId);
|
|
|
|
return $this->json(0, 'success', $data);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
} catch (Exception $e) {
|
|
ArchivesRepository::log($e->getMessage(), $e);
|
|
return $this->json(5000, '操作失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 恒美小课堂
|
|
*
|
|
* @return Json
|
|
* @throws Exception
|
|
*/
|
|
public function course(): Json
|
|
{
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
$courseId = input('course_id/d', 0);
|
|
$page = input('page/d', 1);
|
|
$size = input('size/d', 20);
|
|
|
|
try {
|
|
$data = ArchivesRepository::getInstance()->course($accountId, $courseId, $page, $size);
|
|
|
|
return $this->json(0, 'success', $data);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
} catch (Exception $e) {
|
|
ArchivesRepository::log($e->getMessage(), $e);
|
|
return $this->json(5000, '操作失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 热门推荐
|
|
*
|
|
* @return Json
|
|
* @throws Exception
|
|
*/
|
|
public function hot(): Json
|
|
{
|
|
$categoryId = input('category_id/d', 0);
|
|
$page = input('page/d', 1);
|
|
$size = input('size/d', 20);
|
|
$keyword = input('keyword/s', '');
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
|
|
try {
|
|
$where[] = ['hot', '=', 1];
|
|
if (!empty($keyword)) {
|
|
|
|
$keyword = trim($keyword);
|
|
$where[] = ['title|subtitle|disease_name|doctor_name', 'like', '%'.$keyword.'%'];
|
|
AccountRecord::saveSearch($accountId, $keyword);
|
|
}
|
|
|
|
$order = ['sort' => 'desc'];
|
|
$data = ArchivesRepository::getInstance()->category($accountId, $categoryId, $where, $page, $size, $order);
|
|
|
|
return $this->json(0, 'success', $data);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
} catch (Exception $e) {
|
|
ArchivesRepository::log($e->getMessage(), $e);
|
|
return $this->json(5000, '操作失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取指定栏目内容列表
|
|
*
|
|
* @return Json
|
|
* @throws Exception
|
|
*/
|
|
public function category(): Json
|
|
{
|
|
$categoryId = input('category_id/d', 0);
|
|
$page = input('page/d', 1);
|
|
$size = input('size/d', 20);
|
|
$keyword = input('keyword/s', '');
|
|
$diseaseIds = input('disease_id/s', '');//病种 多个用逗号分隔
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
|
|
try {
|
|
$where = [];
|
|
if (!empty($keyword)) {
|
|
$keyword = trim($keyword);
|
|
$where[] = ['title|subtitle|disease_name|doctor_name', 'like', '%'.$keyword.'%'];
|
|
AccountRecord::saveSearch($accountId, $keyword);
|
|
}
|
|
|
|
if (!empty($diseaseIds)) {
|
|
$where[] = ['disease_id', 'in', explode(',', $diseaseIds)];
|
|
}
|
|
|
|
$order = ['sort' => 'desc'];
|
|
$data = ArchivesRepository::getInstance()->category($accountId, $categoryId, $where, $page, $size, $order);
|
|
return $this->json(0, 'success', $data);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
} catch (Exception $e) {
|
|
ArchivesRepository::log($e->getMessage(), $e);
|
|
return $this->json(5000, '操作失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取关于我们栏目内容列表
|
|
*
|
|
* @return Json
|
|
* @throws Exception
|
|
*/
|
|
public function about(): Json
|
|
{
|
|
$categoryId = input('category_id/d', 0);
|
|
$page = input('page/d', 1);
|
|
$size = input('size/d', 20);
|
|
$exceptId = input('except_id/d', 0);
|
|
$keyword = input('keyword/s', '');
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
|
|
try {
|
|
$where = [];
|
|
if (!empty($keyword)) {
|
|
$keyword = trim($keyword);
|
|
$where[] = ['title|subtitle|disease_name|doctor_name', 'like', '%'.$keyword.'%'];
|
|
AccountRecord::saveSearch($accountId, $keyword);
|
|
}
|
|
|
|
if ($exceptId > 0) {
|
|
$where[] = ['id', '<>', $exceptId];
|
|
}
|
|
|
|
$order = ['published_at' => 'desc'];
|
|
|
|
$data = ArchivesRepository::getInstance()->about($accountId, $categoryId, $where, $page, $size, $order);
|
|
return $this->json(0, 'success', $data);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
} catch (Exception $e) {
|
|
ArchivesRepository::log($e->getMessage(), $e);
|
|
return $this->json(5000, '操作失败');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 内容详情
|
|
*
|
|
* @return Json
|
|
* @throws Exception
|
|
*/
|
|
public function detail(): Json
|
|
{
|
|
$id = input('id/d', 0);
|
|
$shareId = input('share_id/d', 0);//分享人ID
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
|
|
try {
|
|
$data = ArchivesRepository::getInstance()->detail($id, $accountId, $shareId);
|
|
return $this->json(0, 'success', $data);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
} catch (Exception $e) {
|
|
ArchivesRepository::log($e->getMessage(), $e);
|
|
return $this->json(5000, '获取详情失败');
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 点赞、收藏
|
|
*/
|
|
public function record(): Json
|
|
{
|
|
if (!$this->request->isPost()) {
|
|
return $this->json(4000, '无效请求');
|
|
}
|
|
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
$archiveId = $this->request->param('archive_id/d', 0);
|
|
$action = $this->request->param('action/s', '');
|
|
|
|
try {
|
|
ArchivesRepository::getInstance()->record($accountId, $archiveId, $action);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
}
|
|
|
|
return $this->json();
|
|
}
|
|
|
|
/**
|
|
* 取消 点赞、收藏
|
|
*/
|
|
public function unRecord(): Json
|
|
{
|
|
if (!$this->request->isPost()) {
|
|
return $this->json(4000, '无效请求');
|
|
}
|
|
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
$archiveId = $this->request->param('archive_id/d', 0);
|
|
$action = $this->request->param('action/s', '');
|
|
|
|
try {
|
|
ArchivesRepository::getInstance()->unRecord($accountId, $archiveId, $action);
|
|
} catch (RepositoryException $e) {
|
|
return $this->json(4001, $e->getMessage());
|
|
}
|
|
|
|
return $this->json();
|
|
}
|
|
|
|
/**
|
|
* 用户内容收藏列表
|
|
*/
|
|
public function collects(): Json
|
|
{
|
|
$accountId = $this->request->user['user_id'] ?? 0;
|
|
$categoryId = $this->request->param('category_id/d', 0);
|
|
$page = $this->request->param('page/d', 1);
|
|
$size = $this->request->param('size/d', 10);
|
|
|
|
$page = $page <= 0 ? 1 : $page;
|
|
$size = $size <= 0 ? 10 : $size;
|
|
$data = ArchivesRepository::getInstance()->accountCollects($accountId, $categoryId, $page, $size);
|
|
return $this->json(0, 'success', $data);
|
|
}
|
|
} |