Browse Source

feat(api): 支持自媒体投稿功能

- 新增 SelfMediasDao 和 SelfMediasService 类
- 在 ApiService 中增加 model_id 判断逻辑以支持不同媒体类型
- 修改 OnlineMediasConfigController 以传递 module_id 参数
- 更新路由配置区分网媒与自媒体接口
- 调整 OnlineMediasController 以适配新逻辑并实例化 SelfMediasService
master
zhangf@suq.cn 20 hours ago
parent
commit
9c0b320f4f
  1. 5
      app/controller/admin/OnlineMediasConfigController.php
  2. 7
      app/controller/admin/OnlineMediasController.php
  3. 13
      app/route/route.php
  4. 5
      app/service/admin/OnlineMediasConfigService.php
  5. 43
      app/service/admin/SelfMediasService.php
  6. 10
      app/service/user/ApiService.php

5
app/controller/admin/OnlineMediasConfigController.php

@ -43,7 +43,10 @@ class OnlineMediasConfigController
public function index(OnlineMediasConfigService $service): Response
{
return success($service->listData());
$params = requestOnly([
'module_id' => 1,
]);
return success($service->listData($params));
}
public function read(OnlineMediasConfigService $service): Response

7
app/controller/admin/OnlineMediasController.php

@ -2,6 +2,7 @@
namespace app\controller\admin;
use app\service\admin\OnlineMediasService;
use app\service\admin\SelfMediasService;
use app\service\user\ApiService;
use app\service\admin\ApiService as AdminApiService;
use support\Response;
@ -11,11 +12,16 @@ class OnlineMediasController
public function index(OnlineMediasService $service): Response
{
$params = requestOnly([
'model_id' => 1,
'wheres' => [],
'name' => ''
]);
if ($params['model_id'] == 1) {
return success($service->listData($params));
}
$selfMediasService = app()->make(SelfMediasService::class);
return success($selfMediasService->listData($params));
}
/**
* 投稿
@ -23,6 +29,7 @@ class OnlineMediasController
public function receive(ApiService $service)
{
$params = requestOnly([
'model_id' => 1,
'media_id' => '',
'article_id' => ''
]);

13
app/route/route.php

@ -207,11 +207,18 @@ Route::group('/service/v1', function () {
//投稿
Route::group('/contribution', function () {
//选项
Route::get('/options', [OnlineMediasConfigController::class, 'index'])->setParams(['perm' => ['contributionOptions']]);
//网媒
Route::group(function () {
//媒体资源
Route::post('/resource', [OnlineMediasController::class, 'index'])->setParams(['perm' => ['contributionResource']]);
//投稿
});
//自媒体
Route::group(function () {
});
//通用选项
Route::get('/options', [OnlineMediasConfigController::class, 'index'])->setParams(['perm' => ['contributionOptions']]);
//通用投稿
Route::post('/receive', [OnlineMediasController::class, 'receive'])->setParams(['perm' => ['contributionReceive']]);
//稿件记录
Route::get('/index', [CreationArticleReceiveRecordsController::class, 'index'])->setParams(['perm' => ['contributionIndex']]);

5
app/service/admin/OnlineMediasConfigService.php

@ -61,10 +61,11 @@ class OnlineMediasConfigService extends BaseService
* @param array $params
* @return array
*/
public function listData(): array
public function listData($params): array
{
$query = [
'delete_time' => 0
'delete_time' => 0,
'module_id' => $params['module_id']
];
$list = $this->dao->selectList($query)->toArray();
return TreeUtils::toTree($list);

43
app/service/admin/SelfMediasService.php

@ -0,0 +1,43 @@
<?php
namespace app\service\admin;
use app\dao\admin\SelfMediasDao;
use plugin\piadmin\app\base\BaseService;
use plugin\piadmin\app\utils\RequestUtils;
class SelfMediasService extends BaseService
{
public function __construct()
{
$this->dao = app()->make(SelfMediasDao::class);
}
/**
* 列表数据
* @param array $params
* @return array
*/
public function listData(array $params): array
{
[$page, $limit] = RequestUtils::getPageParameter();
[$sortRule, $sortField] = RequestUtils::getSortParameter();
$query = [
'delete_time' => 0
];
if (sizeof($params['wheres']) > 0) {
foreach ($params['wheres'] as $value) {
if (isNotBlank($value['value'])) {
$query[] = [$value['name'], '=', $value['value']];
}
}
}
if (isNotBlank($params['name'])) {
$query[] = ['name', 'like', "%{$params['name']}%"];
}
$list = $this->dao->getList($query, '*', $page, $limit, "$sortField $sortRule");
$count = $this->dao->getCount($query);
return compact('list', 'count');
}
}

10
app/service/user/ApiService.php

@ -3,6 +3,7 @@
namespace app\service\user;
use app\dao\admin\OnlineMediasDao;
use app\dao\admin\SelfMediasDao;
use app\dao\user\CreationArticleDao;
use app\dao\user\CreationArticleReceiveRecordsDao;
use plugin\piadmin\app\base\BaseService;
@ -15,12 +16,14 @@ class ApiService extends BaseService
protected $appkey = 'de06270f3515bad109aa1fd2c023dd41';
protected $onlineMediasDao;
protected $selfMediasDao;
protected $creationArticleDao;
protected $creationArticleReceiveRecordsDao;
public function __construct()
{
$this->onlineMediasDao = app()->make(OnlineMediasDao::class);
$this->selfMediasDao = app()->make(SelfMediasDao::class);
$this->creationArticleDao = app()->make(CreationArticleDao::class);
$this->creationArticleReceiveRecordsDao = app()->make(CreationArticleReceiveRecordsDao::class);
}
@ -28,7 +31,14 @@ class ApiService extends BaseService
public function receive($params)
{
$article = $this->creationArticleDao->get($params['article_id']);
if ($params['model_id'] == 1) {
$media = $this->onlineMediasDao->get($params['media_id']);
} elseif ($params['model_id'] == 2) {
$media = $this->selfMediasDao->get($params['media_id']);
} else {
throw new ApiException('投稿失败');
}
$time_out = 60;
$url = $this->url;
//保存投稿记录

Loading…
Cancel
Save