Browse Source

feat(user): 新增稿件接收记录功能

- 在投稿记录中增加 media_id 字段以关联媒体资源
- 创建稿件接收记录控制器和对应的服务类
- 实现列表查询接口,支持按媒体名称、标题、状态及时间筛选
- 配置路由规则,新增 /index 接口用于访问稿件记录列表
- 添加与在线媒体模型的关联关系,便于获取媒体信息
- 引入分页与排序参数处理工具,优化数据展示逻辑
master
zhangf@suq.cn 4 hours ago
parent
commit
a62661e9ff
  1. 21
      app/controller/user/CreationArticleReceiveRecordsController.php
  2. 5
      app/model/user/CreationArticleReceiveRecords.php
  3. 3
      app/route/route.php
  4. 52
      app/service/admin/CreationArticleReceiveRecordsService.php
  5. 1
      app/service/user/ApiService.php

21
app/controller/user/CreationArticleReceiveRecordsController.php

@ -0,0 +1,21 @@
<?php
namespace app\controller\user;
use app\service\admin\CreationArticleReceiveRecordsService;
use support\Response;
class CreationArticleReceiveRecordsController
{
public function index(CreationArticleReceiveRecordsService $service): Response
{
$params = requestOnly([
'media_name' => '',
'title' => '',
'status' => '',
'begin_time' => '',
'end_time' => ''
]);
return success($service->listData($params));
}
}

5
app/model/user/CreationArticleReceiveRecords.php

@ -2,6 +2,7 @@
namespace app\model\user;
use app\model\admin\OnlineMedias;
use plugin\piadmin\app\base\BaseModel;
/**
@ -30,4 +31,8 @@ class CreationArticleReceiveRecords extends BaseModel
*/
public $timestamps = true;
public function media()
{
return $this->belongsTo(OnlineMedias::class, 'media_id', 'id')->field('id,name');
}
}

3
app/route/route.php

@ -5,6 +5,7 @@ use app\controller\admin\OnlineMediasController;
use app\controller\user\AiCommandController;
use app\controller\user\ArticleCategoryController;
use app\controller\user\CreationArticleController;
use app\controller\user\CreationArticleReceiveRecordsController;
use app\controller\user\CreationTaskController;
use app\controller\user\DistillationQuestionsController;
use app\controller\user\DistillationWordController;
@ -187,6 +188,8 @@ Route::group('/service/v1', function () {
Route::post('/resource', [OnlineMediasController::class, 'index'])->setParams(['perm' => ['contributionResource']]);
//投稿
Route::post('/receive', [OnlineMediasController::class, 'receive'])->setParams(['perm' => ['contributionReceive']]);
//稿件记录
Route::get('/index', [CreationArticleReceiveRecordsController::class, 'index'])->setParams(['perm' => ['contributionIndex']]);
});
//全局代理IP

52
app/service/admin/CreationArticleReceiveRecordsService.php

@ -0,0 +1,52 @@
<?php
namespace app\service\admin;
use app\dao\admin\OnlineMediasDao;
use app\dao\user\CreationArticleReceiveRecordsDao;
use plugin\piadmin\app\base\BaseService;
use plugin\piadmin\app\utils\RequestUtils;
class CreationArticleReceiveRecordsService extends BaseService
{
protected $onlineMediaDao;
public function __construct()
{
$this->dao = app()->make(CreationArticleReceiveRecordsDao::class);
$this->onlineMediaDao = app()->make(OnlineMediasDao::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 (isNotBlank($params['media_name'])) {
$mids = $this->onlineMediaDao->getColumn([['name', 'like', '%' . $params['media_name'] . '%']], 'id');
$query[] = ['media_id', 'in', $mids];
}
if (isNotBlank($params['title'])) {
$query[] = ['title', 'like', '%' . $params['title'] . '%'];
}
if (isNotBlank($params['status'])) {
$query[] = ['status', '=', $params['status']];
}
if (isNotBlank($params['begin_time'])) {
$query[] = ['create_time', '>=', strtotime($params['begin_time'])];
}
if (isNotBlank($params['end_time'])) {
$query[] = ['create_time', '<=', strtotime($params['end_time'] . ' 23:59:59')];
}
$list = $this->dao->getList($query, 'id,model_id,media_id,title,price_assign,status,create_time', $page, $limit, "$sortField $sortRule", ['media']);
$count = $this->dao->getCount($query);
return compact('list', 'count');
}
}

1
app/service/user/ApiService.php

@ -34,6 +34,7 @@ class ApiService extends BaseService
//保存投稿记录
$record = $this->creationArticleReceiveRecordsDao->save([
'model_id' => $media['model_id'],
'media_id' => $media['id'],
'article_id' => $article['id'],
'title' => $article['title'],
'content' => $article['content'],

Loading…
Cancel
Save